numam-dpdk/drivers/net/fm10k
Xiao Wang af15ee640d net/fm10k: fix Rx descriptor read timing
We find that when traffic is light, a small number of packets will have
wrong metadata (e.g. packet type), however this issue will not happen
when traffic is heavy.

The root cause is some fields in fm10k_rx_desc are read at the wrong time,
since the descriptor (being 16-bytes big) is not read as a single atomic
operation. When the input speed is slower than software's capability,
fm10k scalar Rx function accesses descriptors at about the same time
as HW writes them, so the scenario can occur: some fields like pkt_info
in fm10k_rx_desc are read before HW writeback but some fields like DD bit
are read after HW writeback, this will lead to the later packet parsing
function using incorrect value.

This patch fixes this issue by reading and parsing Rx descriptor only after
first checking that the DD bit is set.

Fixes: 4b61d3bfa9 ("fm10k: add receive and tranmit")
Fixes: c82dd0a7bf ("fm10k: add scatter receive")

Signed-off-by: Wang Xiao W <xiao.w.wang@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
2016-07-05 11:43:49 +02:00
..
base fm10k/base: remove unused struct element 2016-03-16 18:51:44 +01:00
fm10k_ethdev.c drivers: update registration macro usage 2016-07-06 23:21:40 +02:00
fm10k_logs.h drivers: allow pruning log during build 2015-07-30 20:16:04 +02:00
fm10k_rxtx_vec.c net/mbuf: remove unused Rx error flags 2016-06-20 17:21:49 +02:00
fm10k_rxtx.c net/fm10k: fix Rx descriptor read timing 2016-07-05 11:43:49 +02:00
fm10k.h fm10k: enable FTAG based forwarding 2016-03-16 18:51:44 +01:00
Makefile mk: fix missing internal dependencies 2016-06-13 16:17:56 +02:00
rte_pmd_fm10k_version.map fm10k: move to drivers/net/ 2015-05-22 16:06:22 +02:00