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.

Problem of Ethernet tx buffer descriptor not

Other Parts Discussed in Thread: TMS320C6748

Hello,

I am using TMS320C6748 with the custom board and i have problem with sending packets when i try to send more than 3 packets with data size = MTU consecutively.

The program hangs in the sitaraif.c at the line below.

Any hint to resolve this.

/* Traverse till the end of packet is reached */
while(((curr_bd->flags_pktlen) & EMAC_BUF_DESC_EOP) != EMAC_BUF_DESC_EOP) {
curr_bd = curr_bd->next;

The comment says that 'make sure that transmission is over.' So how should i wait until transmission is over? Do we have any flag which i should check before sending next packet.

  • Hi,

    Thanks for your post.

    Usually, program execution "sometimes" hangs in infinite loop in sitaraif_tx_inthandler() function in sitaraif.c when running webserver,

    respectively it hangs in following condition

    /* Make sure that the transmission is over */

    while((curr_bd->flags_pktlen & EMAC_BUF_DESC_OWNER)

    == EMAC_BUF_DESC_OWNER);

    Thanks & regards,

    Sivaraj K

    -------------------------------------------------------------------------------------------------------

    Please click the Verify Answer button on this post if it answers your question.

    -------------------------------------------------------------------------------------------------------

  • Hello Sivraj,

    I understand that "sometimes" it hangs and in my case its "often" however i would like to get the solution/culprits/suspects/hints or at least a direction to solve this mystery.

    Just to throw some light to you:
    If you see my image, there is one thing you will find strange. i.e. netif value. It's a structure pointer and it can not be 2. So someone is messing with structure pointer or the register A4 is eaten by someone. Now there is no line in the program which edits the net if as such i have just one netif for whole session.

    Could you be able to guide me now?