[PATCH] net/ice: fix Rx of large packets

Bruce Richardson bruce.richardson at intel.com
Tue Apr 8 17:57:36 CEST 2025


The determination of whether or not the buffer size is less than the
packet MTU is made in the Rx queue start function in the ice driver.
This means that we cannot choose the Rx function before we have started
the queues. Move the Rx function section down in the code to fix this.

Fixes: 3c79a3d91d9d ("net/ice: fix mbuf cleanup function")
Cc: stable at dpdk.org

Signed-off-by: Bruce Richardson <bruce.richardson at intel.com>
---
 drivers/net/intel/ice/ice_ethdev.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/net/intel/ice/ice_ethdev.c b/drivers/net/intel/ice/ice_ethdev.c
index 21d3795954..2e163d706c 100644
--- a/drivers/net/intel/ice/ice_ethdev.c
+++ b/drivers/net/intel/ice/ice_ethdev.c
@@ -3965,7 +3965,7 @@ ice_dev_start(struct rte_eth_dev *dev)
 	ice_declare_bitmap(pmask, ICE_PROMISC_MAX);
 	ice_zero_bitmap(pmask, ICE_PROMISC_MAX);
 
-	ice_set_rx_function(dev);
+	/* choose vector Tx function before starting queues */
 	ice_set_tx_function(dev);
 
 	/* program Tx queues' context in hardware */
@@ -3996,6 +3996,9 @@ ice_dev_start(struct rte_eth_dev *dev)
 		}
 	}
 
+	/* we need to choose Rx fn after queue start, when we know if we need scattered Rx */
+	ice_set_rx_function(dev);
+
 	mask = RTE_ETH_VLAN_STRIP_MASK | RTE_ETH_VLAN_FILTER_MASK |
 			RTE_ETH_VLAN_EXTEND_MASK;
 	if (ice_is_dvm_ena(hw))
-- 
2.45.2



More information about the dev mailing list