On 10 Oct 2018, at 18:14, Ophir Munk wrote:
Before this commit setting scatter offload was based on checking
net_nfp device.
Since DPDK 17.11 more PMD drivers are reporting offload
capabilities. Therefore this commit removes the specific check
against net_nfp device and replaces it with a generic check of
device capabilities before setting the scatter offload.
Signed-off-by: Ophir Munk <[email protected]>
---
v1-v4
This patch was not included in version v1-v4 of the series
v5
Initial version
lib/netdev-dpdk.c | 18 ++++++++++++------
1 file changed, 12 insertions(+), 6 deletions(-)
diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c
index 4dd0ec3..ecca276 100644
--- a/lib/netdev-dpdk.c
+++ b/lib/netdev-dpdk.c
@@ -367,6 +367,7 @@ struct ingress_policer {
enum dpdk_hw_ol_features {
NETDEV_RX_CHECKSUM_OFFLOAD = 1 << 0,
NETDEV_RX_HW_CRC_STRIP = 1 << 1,
+ NETDEV_RX_HW_SCATTER = 1 << 2
};
/*
@@ -894,13 +895,11 @@ dpdk_eth_dev_port_config(struct netdev_dpdk
*dev, int n_rxq, int n_txq)
rte_eth_dev_info_get(dev->port_id, &info);
/* As of DPDK 17.11.1 a few PMDs require to explicitly enable
- * scatter to support jumbo RX. Checking the offload capabilities
- * is not an option as PMDs are not required yet to report
- * them. The only reliable info is the driver name and knowledge
- * (testing or code review). Listing all such PMDs feels harder
- * than highlighting the one known not to need scatter */
+ * scatter to support jumbo RX.
+ * Setting scatter for the device is done after checking for
+ * scatter support in the device capabilites. */
if (dev->mtu > ETHER_MTU) {
- if (strncmp(info.driver_name, "net_nfp", 7)) {
+ if (dev->hw_ol_features & NETDEV_RX_HW_SCATTER) {
conf.rxmode.offloads |= DEV_RX_OFFLOAD_SCATTER;
}
}
@@ -1035,6 +1034,13 @@ dpdk_eth_dev_init(struct netdev_dpdk *dev)
dev->hw_ol_features |= NETDEV_RX_CHECKSUM_OFFLOAD;
}
+ if (info.rx_offload_capa & DEV_RX_OFFLOAD_SCATTER) {
+ dev->hw_ol_features |= NETDEV_RX_HW_SCATTER;
+ } else {
+ /* Do not warn on lack of scatter support */
+ dev->hw_ol_features &= ~NETDEV_RX_HW_SCATTER;
Don’t think we need to clear it explicitly, none of the other
capabilities do this.
For the rest this patch look good to me.
+ }
+
n_rxq = MIN(info.max_rx_queues, dev->up.n_rxq);
n_txq = MIN(info.max_tx_queues, dev->up.n_txq);
--
1.8.3.1
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev