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