Hi Stefano,
thanks a lot for your reply. For some reasons I didn’t look up the project page….
I’m not sure id the fix you have described there is sufficient.
I modified the source at thres positions:
(1) in xEthInitialise():
/* SendCount must be initialized to 2 to ensure the Tx descriptor looks
as if its available (as if it has already been sent twice. */
[s]xTxDescriptor.SendCount = 2;[/s]
xTxDescriptor.SendCount = 1;
(2) in vMAC_ISR()
if (xTxDescriptor.SendCount == 0) {
/* Send again! */
(xTxDescriptor.SendCount)++;
[s] xTxDescriptor.Status = ETH_DMATxDesc_OWN | ETH_DMATxDesc_LS
| ETH_DMATxDesc_FS | ETH_DMATxDesc_TER | ETH_DMATxDesc_TCH
| ETH_DMATxDesc_IC;
ETH->DMASR = ETH_DMASR_TBUS;
ETH->DMATPDR = 0;
[/s] vReturnBuffer((unsigned char *) xTxDescriptor.Buffer1Addr);
} else {
(3) in vSendMACData()
[s]while ((xTxDescriptor.SendCount < 2) && (xTxDescriptor.Status & ETH_DMATxDesc_OWN) == ETH_DMATxDesc_OWN) {[/s]
while ((xTxDescriptor.SendCount < 1) && (xTxDescriptor.Status & ETH_DMATxDesc_OWN) == ETH_DMATxDesc_OWN) {
At least it seems to work and my peer server application is not longer confused about the duplicated packets ;-)
I will also try the patch to turn off the promiscuous mode; thanks again for the hint.
best regards,
Joerg