Hi Simon,

i have found the problem. It's an error in the "emacif.c" of the LwIP port, so you can sit back and relax :-)

The check of the number of required EMAC buffers had an error:

/* First check if the number of TX buffers are theoretically large enough
         * to hold this frame.
         */
        uiRequiredTxBufs = 0;
        for( q = p; q != NULL; q = q->next )
        {
            uiRequiredTxBufs += 1;
            uiLenLeft = q->len - ( q->len % ETH_TX_BUFFER_SIZE );
            uiRequiredTxBufs += uiLenLeft / ETH_TX_BUFFER_SIZE;
        }

this returned wrong buffer counts and the data was discarded as the following check meant there were not enough TX buffers left.

After correction of the calculation, the problem is solved.

/* First check if the number of TX buffers are theoretically large enough
         * to hold this frame.
         */
        uiRequiredTxBufs = 0;
        for( q = p; q != NULL; q = q->next )
        {
             uiRequiredTxBufs += ( q->len / ETH_TX_BUFFER_SIZE);
             if (q->len % ETH_TX_BUFFER_SIZE) uiRequiredTxBufs++;
        }


Marco

_______________________________________________
lwip-users mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/lwip-users

Reply via email to