This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

6678 emac flow control

hi,every one.

I'm using 6678 evm,and use it's GbE subsystem to communicate with pc through ethernet .Everything goes well at begin,but dsp 6678 send mac ctrl pause frame(the opcode is 1,and the pause_time is 0)again and again without end as time goes,then dsp cann't receive any packet from pc.what is then problem?what should i do to solve with flow control on.Thans!

  • Hi,

    Are you working on Processor SDK? If not, please download and use that latest SDK and try NDK examples in it.

    You can find the download link below my signature.

    Thank you.
  • My net project is based on GE,which is a ccs project shared by ti.What i want to understand is that why the pause time of mac control frame is zero?Can i init it to non zero value, how?Or what should i do to aviod sending pause frame again and agin?Thanks.

  • Hi,

    Please check with the KeyStone Architecture Gigabit Ethernet (GbESwitch Subsystem User Guide   www.ti.com/lit/pdf/sprugv9. From the C6678 point of view, you want to do Rx or Tx flow control?  if C6678 generates pause frame to your PC, C6678 wants the PC to send less traffic to it. Look at section 2.3.2.1.5 IEEE 802.3X Based Receive Flow Control,

    When receive flow control is enabled and triggered, the port transmits a pause frame to request that the sending station stop transmitting for the period indicated within the transmitted pause frame. ...

    When issuing a pause frame, the frame contains 0xFFFF, which is the maximum possible pause time value. The MAC module counts the receive pause frame time, decrementing 0xFF00 down to 0, and retransmits an outgoing pause frame if the count reaches 0. When the flow control request is removed, the MAC module transmits a pause frame with a zero pause time to cancel the pause request.

    So you can't set the pause time, and 0 pause time means the cancel the pause request. Also look at 3.5.3.6 Receive Pause Timer Register (RX_PAUSE).

    Regards, Eric

  • What confused me is that the first pause frame captured by wireshark is a pause frame with a zero pause time send by dsp,but pc don't send any pause frame to dsp first.What's worse is that the dsp send pause frame to pc again and again without end,all of these pause frames are totally the same as the first pause frame.The pause frame captured by wirkshark is: 01 80 C2 00 00 01, 02 00 00 88 88 88, 88 08, 00 01, FF FF 00 00, 00 00, 00 00 00...
    Thank you!
  • Hi,

    In what network condition you saw this behavior? What is the SW running on the DSP side? And what tool generates the heavy traffic from PC towards EVM? Can this behavior be easily reproduced with a PC and 6678 EVM?

    Regards, Eric
  • The SW running on the dsp is ucosiii(a small embedded os) and lwip(a light weight tcp/ip stack.I just execute a bat file like start /c ping 192.168.0.100 -n 10000,which opens 128 cmd windows(under windows 7),to ping between dsp and pc.About 80 minutes later,it happens.At that time,wireshark has captured 1,084,770frames.But some times,it happens only about 40 minutes later.

    Thank you!

  • Hi,

    The ping -n 10000 just sends packet at 1 second interval for 10000 times, this is very low bandwidth, how this can cause network congestion? For the DSP side, we used the NDK helloworld example in the past, and ping from PC to DSP overnight (In Win 7 PC, open a command window and type something like "ping 192.168.1.4 -t") and we didn't experience any issue. What do you mean "I just execute a bat file like start /c"? Thanks!

    Regards, Eric
  • I write a xx.bat file,which start 128 processs for cmd.exe,to execute the command ping 192.168.0.100 in parallel.The network usage showed by taskmgr is about 0.1% when pause frame is not captured by wireshark.Since pause frame has been captured by wireshark,the network usage showed by taskmgr is 0,it rises sharply to 99% every few minutes and down to 0 again within a few seconds.As i check the statistical module B,it shows dsp receives 3 pause frames,the value of RXPAUSEFRAME register didn't change any more while TXPAUSEFRAME increased all the time.But wireshark didn't capture any pause frame sended by pc.

    Thank you.