Currently to RX jumbo packets fails for NICs not supporting scatter.
Scatter is not strictly needed for jumbo RX support. This change fixes
the issue by only enabling scatter for NICs known to need it to
support jumbo RX. Add a quirk for "igb" while the PMD is fixed.

Reported-by: Louis Peens <louis.pe...@netronome.com>
Signed-off-by: Pablo Cascón <pablo.cas...@netronome.com>
Reviewed-by: Simon Horman <simon.hor...@netronome.com>
---

Changelog:
v3->v2:
   - only check for driver_name
   - tested with "nfp" and not with "igb"
 

 lib/netdev-dpdk.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c
index ee39cbe..02ed85b 100644
--- a/lib/netdev-dpdk.c
+++ b/lib/netdev-dpdk.c
@@ -694,11 +694,17 @@ dpdk_eth_dev_queue_setup(struct netdev_dpdk *dev, int 
n_rxq, int n_txq)
     int diag = 0;
     int i;
     struct rte_eth_conf conf = port_conf;
+    struct rte_eth_dev_info info;
 
-    /* For some NICs (e.g. Niantic), scatter_rx mode needs to be explicitly
-     * enabled. */
+    /* Quirk: as of DPDK 17.11.1 igb's PMD requires explicitly
+     * enabling scatter to support jumbo RX. Note: PMDs are not
+     * required to set the offload capabilities and so is not reliable
+     * info, only the driver_name is after testing the PMD/NIC */
     if (dev->mtu > ETHER_MTU) {
-        conf.rxmode.enable_scatter = 1;
+        rte_eth_dev_info_get(dev->port_id, &info);
+        if (!strcmp(info.driver_name, "igb")) {
+            conf.rxmode.enable_scatter = 1;
+        }
     }
 
     conf.rxmode.hw_ip_checksum = (dev->hw_ol_features &
-- 
2.7.4

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to