Using DPDK 20.11, our application will set Virtual MAC addresses on
interfaces.  This involves bringing the interface down, changing the MAC
address, and bringing the interface back up.  There is a
probability greater than zero that when this is done 20 times (~1
occurrence in 20 attempts), a port will come up in a bad rx state where all
of the received packets are rx_missed_errors (mpc).

When the interface is in this bad state, all calls to the rx_pkt_burst()
function which in our case is eth_igb_recv_scattered_pkts() return zero
packets available for processing.  The Receive Descriptor that is pointed
to by the tail index is showing that the Done Descriptor is not set, so it
returns immediately without reading out any packets.  Manually bringing the
interface down (ifconfig down) and then back up will usually clear this
condition.

My initial question is, has anyone seen this condition?  And if so, what
could be the likely cause?  And what are some things I should be checking
for to try to understand how the rx queue ring has gotten into this state
where HW thinks it cannot write anymore packet descriptors?

Thanks for any help.

Eric

Reply via email to