Hello,
I have an issue which ethernet commuination between client N(ICMP, UDP) and server 1(EMAC) in CM.
I have coded CM project by referring to the example in 'C2000Ware_2_00_00_03\driverlib\f2838x\examples\cm\ethernet\ethernet_ex10_lowlatency_interrupt.c'
The example is an example that EMAC and DMA channel 0 is initializing and then sending a packet and receiving the packet using rx interrupt.
and i directrly handle ARP, ICMP and UDP packet in rx interrupt handler.
The CM code works normally 1 : 1 (ICMP or UDP) : 1(EMAC)) communication. but a CRC, alignment and runt error occurs while N (ICMP, UDP, ...) : 1 (EMAC) communication.
When a CRC, alignment and runt error are occured, rx descriptor3 own bit(31) is 0 which means DMA not own descriptor in rx interrupt handler about N : 1 communication.
If the above case is repeated, eventually no rx interrupt occurs while N : 1 communication. and then RBU bit(7) set 1 in DMA_CH0_Status_Register, the count in Rx_FIFO_Overflow_Packets Register increases.
I assumed when EMAC sometimes receives an unrecognized packet, rx descriptor3 own bit(31) is 0 in rx interrupt. so I forcibly set own bit(31)in rx descriptor3 to 1 when rx packet that descriptor3 own bit(31) is 0 is received in rx interrupt.
The cm code works while N : 1 communication. but the order of responses about rx packet from other device is not correct. or other device missed response packet from EMAC.
In summary my question,
1. While N : 1 communication, what are some ways that the EMAC does not occur a CRC, alignment and runt error when receiving a packet?
2. Likewise the above while N : 1 communication, what are some ways that the EMAC only occurs rx interrupt when receving normal packet like own bit(31) set 1 in rx descriptor3?
3. If I forcibly set own bit(31) to 1 when receiving a packet about own bit(31) set 0 in rx descriptor3, what are some ways that EMAC send to packet about receving the packet in correct order?
I think, the question 3 is not correct way. the solution about question 1 and 2 looks like a fundamental solution.
Thanks,
Dev SSS