net/ice fdir flow create/destroy failed with RTE_LIBRTE_ICE_16BYTE_RX_DESC defined
https://bugs.dpdk.org/show_bug.cgi?id=1145
Bug ID: 1145
Summary: net/ice fdir flow create/destroy failed with
RTE_LIBRTE_ICE_16BYTE_RX_DESC defined
Product: DPDK
Version: 21.11
Hardware: All
OS: All
Status: UNCONFIRMED
Severity: major
Priority: Normal
Component: ethdev
Assignee: [email protected]
Reporter: [email protected]Target Milestone: ---
Fdir rx queue use the same ice_rx_queue struct as packet rx queue. When RTE_LIBRTE_ICE_16BYTE_RX_DESC defined rxq->rx_ring type is ice_16b_rx_flex_desc.
#ifdef RTE_LIBRTE_ICE_16BYTE_RX_DESC
#define ice_rx_flex_desc ice_16b_rx_flex_desc
#else
#define ice_rx_flex_desc ice_32b_rx_flex_desc
#endif
But ice_check_fdir_programming_status check the rxdp assuming that rx_ring type is ice_32byte_rx_desc.
rxdp = (volatile union ice_32byte_rx_desc *)(&rxq->rx_ring[rxq->rx_tail]);
I think this patch will fix the bug, but not the best solution:
drivers/net/ice/ice_rxtx.c +2 -1
@@ -4481,9 +4481,10 @@uint32_t error;uint32_t id;int ret = -EAGAIN ; +volatile union ice_32byte_rx_desc *rx_ring = rxq->rx_ring; rxdp = (volatile union ice_32byte_rx_desc *) - (&rxq->rx_ring[rxq->rx_tail]); + (&rx_ring[rxq->rx_tail]); qword1 =rte_le_to_cpu_64 (rxdp->wb.qword1.status_error_len); rx_status = (qword1 &ICE_RXD_QW1_STATUS_M ) >>ICE_RXD_QW1_STATUS_S ;
Signature · 2 lines
You are receiving this mail because: You are the assignee for the bug.