When setup RX queue, the rxdid would be changed if it's "IAVF_RXDID_LEGACY_0/1", that caused the scan hw ring used the wrong function 'iavf_rx_scan_hw_ring_flex_rxd()'.
Ignore the rxdid changed when equals "IAVF_RXDID_LEGACY_0/1". Fixes: 0ed16e01313e ("net/iavf: fix function pointer in multi-process") Cc: sta...@dpdk.org Signed-off-by: Steve Yang <stevex.y...@intel.com> --- drivers/net/iavf/iavf_rxtx.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/net/iavf/iavf_rxtx.c b/drivers/net/iavf/iavf_rxtx.c index 16e8d021f9..3b16609f7d 100644 --- a/drivers/net/iavf/iavf_rxtx.c +++ b/drivers/net/iavf/iavf_rxtx.c @@ -477,6 +477,8 @@ iavf_rxd_to_pkt_fields_by_comms_aux_v2(struct iavf_rx_queue *rxq, static const iavf_rxd_to_pkt_fields_t rxd_to_pkt_fields_ops[IAVF_RXDID_LAST + 1] = { + [IAVF_RXDID_LEGACY_0] = iavf_rxd_to_pkt_fields_by_comms_ovs, + [IAVF_RXDID_LEGACY_1] = iavf_rxd_to_pkt_fields_by_comms_ovs, [IAVF_RXDID_COMMS_AUX_VLAN] = iavf_rxd_to_pkt_fields_by_comms_aux_v1, [IAVF_RXDID_COMMS_AUX_IPV4] = iavf_rxd_to_pkt_fields_by_comms_aux_v1, [IAVF_RXDID_COMMS_AUX_IPV6] = iavf_rxd_to_pkt_fields_by_comms_aux_v1, @@ -521,6 +523,8 @@ iavf_select_rxd_to_pkt_fields_handler(struct iavf_rx_queue *rxq, uint32_t rxdid) rte_pmd_ifd_dynflag_proto_xtr_ipsec_crypto_said_mask; break; case IAVF_RXDID_COMMS_OVS_1: + case IAVF_RXDID_LEGACY_0: + case IAVF_RXDID_LEGACY_1: break; default: /* update this according to the RXDID for FLEX_DESC_NONE */ -- 2.27.0