Did you build the MAC with internal FIFOs? If yes then I believe the MAC will continue to send XOFF pause frames spaced according to the holdoff_quant register. But I could be wrong about that.I use the MAC with external FIFOs and use the xoff_gen and xon_gen pins to control pause frames manually. I monitor the Rx FIFO level myself and maintain my own timer for when to send another XOFF frame. I personally like having that control, plus easier to debug if things aren't working.
Thanks for reply.Yes i m using Altera TSE MAC with internal FIFO and i am using Ethernet tester to pump the data to my design. While debugging my design i observed that:- till the time data available in Rx_fifo of MAC is going up and down to set threshold value of rx_septy_value in command config register,ALTERA MAC is sending pause frames with PAUSE quanta value(0xffff) followed by PAUSE quanta value(0x0000) to the Ethernet tester . But if data available in Rx_fifo of MAC have croseed the rx_septy_value ,then mac will send one pause frame with PAUSE quanta value(0xffff) followed by PAUSE quanta value(0x0000) to the Ethernet tester.Ethernet tester will not send the data for the received pause quanta value.Moment this value will expire Ethernet tester will resume transmitting and if i have not read the rx_fifo of the mac during this time ,then data_available in rx_fifo of mac will cross the rx_almost_full value. So according to my observation this time ALTERA MAC is not sending PAUSE FRAMES.So my qusetion is:- ALTERA MAC will send pause frame only if data available in Rx_fifo of MAC is going up and down to set threshold value of rx_septy_value ,but if data available in rxfifo is continuously above rx_septy_value then ALTERA MAC will not be sending PAUSE FRAMES contiously????? Also i unable to understand the purpose of holdoff_quatna register purpose.What if i write 0x00000000 in the holdoff_quatna regiseter.??? Please relpy me.
XOFF pause frames have pause quanta value 0xffff. If you don't send another pause frame before the pause timer expires in the Ethernet tester then the tester will start transmitting again. You want to set holdoff_quant to something less than 0xffff, which is the default value. I would set it to something like 0x8000 and see how that works. With that setting the MAC should send an XOFF pause frame every 16ms (if running at 1Gbps) as long as the Rx FIFO stays above the rx_section_empty threshold.
Thanks for Reply.Further to our discussion ,First of all my ethernet speed is 100 Mbps and i have set the holdoff_quanta register to 0x006c and pause quanta value to 0xffff.So accoding to my understanding ALTERA MAC should send pause frames with pause quanta value 0xffff at every 552 us.I have used wireshark application to capture the ethernet frames and as per my observation MAC is sending pause frames if data availbale in rx_fifo is going up and downto rx_septy_value.But if rx_septy_value is not comming down then it is not sending pause frames as wireshark is not showing any pause frames. Anyhow as per your advice i will try to play with holdoff_quanta value and let u know. One more thing that i want to know:- As in your first reply you told:-you have used external fifos and generated pause frames by using XOFF pins available in ALTERA MAC.I want to know:-If i have to send continuos pause frames then for how much time i have to keep the signal asserted to xoff pin. For ex if want to send ten pause frames continuously then,do i have to keep the the signal asserted to xoff pin for ten clocks or something else.?????? Please reply me.
I assert xoff_gen for 4 Rx clock cycles. I don't remember how I came up with that but I know it works. I also know that if you keep it high, or set the corresponding register bit, the MAC will send constant pause frames (my software guy was at one point incorrectly setting the register bit and leaving it set).