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.

EVM6678L: POST ethernet test - packet not transmitted on the cable

Hi,

I'm trying to isolate the ethernet test of the post. I have exctracted the routine post_test_emac_loopback() and the minimum required functions to link and run it.

The first build, on the EVM, run successfully, but with an Ethernet monitor I cannot see packet going out. I try to change the loop-back configuration but if a set none or external the code hang waiting for the link to became up, that is CSL_SGMII_getStatus() always return bIsLinkUp==0.

I want to use the post to test the ehternet connection with an external test equipment (so far, a PC with WireShark).

Any suggestion?

  • Hi,

    It looks like you are trying to get the bare minimum code to get the packet transfer on ethernet so that you can add that to your POST, is my understanding correct?

    Before doing SGMII, are you configuring the SERDES? Also before configuring SERDES, are you enabling ethernet switch sub-system using PSC?

     

    Regards,

    Bhavin

  • Hi,

    Respect to the original POST code, I added SERDES initializitaion. Also I turn on the power of SGMII. I discovered that the original POST code send the packet to the port 0, while on the EVM the RJ45 is connected to the port 1. The link is never up on the port 0, but it is up on the port 1 and I can see a couple of packet on the cable.

    I have introduced a mistake somewhere I suppose, since the first two packet are sent, while the third is not sent and the tx descriptor is not returned to the TX queue.

  • Hello,

    Have you ever solved this problem? I have used a modified POST porject and just encountered the exactly same problem on port 1. I can only send out 2 packets, for the 3rd packet it will be held in queue 648 and not be returned.

  • River Liu said:

    Hello,

    Have you ever solved this problem? I have used a modified POST porject and just encountered the exactly same problem on port 1. I can only send out 2 packets, for the 3rd packet it will be held in queue 648 and not be returned.

    Yes and No: I solved the problem but on a driver version that is a mix of the POST code and the IBL driver code. I'm sorry, but so far I'm not able to say exactly which is the fix that have solve the problem.

  • Yes, I can send ethernet packets continously using IBL code, however I did not find out what makes the diffirence. I have compared all of the POST files to IBL but I can not find any problem. I will try one more day to see whether I can find it out.

    And I want to complain that there is no efficient debug method for QMSS&PktDMA. There is no regs to indicate what's wrong if the pushed queue is not transferred.

  • Here exists the error:

    #define BOOTBITMASK(x,y)      (   (   (  ((int)1 << (((unsigned int)x)-((int)y)+(int)1) ) - (int)1 )   )   <<  ((int)y)   )

    #define BOOT_READ_BITFIELD(z,x,y)   (((int)z) & BOOTBITMASK(x,y)) >> (y)

    #define BOOT_SET_BITFIELD(z,f,x,y)  (((int)z) & ~BOOTBITMASK(x,y)) | ( (((int)f) << (y)) & BOOTBITMASK(x,y) )

     

    All int type should be corrected to unsigned int, or the value of x,yz and might be changed because the original input data is unsigned int.

     

     

  • Hi Bhavin,

    Could you pass my above information to POST owner to make a modification in next release?