Fetch the repository succeeded.
This action will force synchronization from src-openEuler/dpdk, which will overwrite any changes that you have made since you forked the repository, and can not be recovered!!!
Synchronous operation will process in the background and will refresh the page when finishing processing. Please be patient.
From c90a36013ccaeeb3baf258e4e23120253faee7aa Mon Sep 17 00:00:00 2001
From: Huisong Li <lihuisong@huawei.com>
Date: Tue, 15 Nov 2022 12:06:15 +0800
Subject: net/bonding: fix mbuf fast free handling
[ upstream commit b4924c0db589b5d4698abfab3ce60978d9df518b ]
The RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE offload can't be used in bonding
mode Broadcast and mode 8023AD. Currently, bonding driver forcibly removes
from the dev->data->dev_conf.txmode.offloads and processes as success in
bond_ethdev_configure(). But this still cause that rte_eth_dev_configure()
fails to execute because of the failure of validating Tx offload in the
eth_dev_validate_offloads(). So this patch moves the modification of txmode
offlaods to the stage of adding slave device to report the correct txmode
offloads.
Fixes: 18c41457cbae ("net/bonding: fix mbuf fast free usage")
Signed-off-by: Huisong Li <lihuisong@huawei.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
---
drivers/net/bonding/rte_eth_bond_api.c | 5 +++++
drivers/net/bonding/rte_eth_bond_pmd.c | 11 -----------
2 files changed, 5 insertions(+), 11 deletions(-)
diff --git a/drivers/net/bonding/rte_eth_bond_api.c b/drivers/net/bonding/rte_eth_bond_api.c
index b74477128a..1235573bf2 100644
--- a/drivers/net/bonding/rte_eth_bond_api.c
+++ b/drivers/net/bonding/rte_eth_bond_api.c
@@ -544,6 +544,11 @@ __eth_bond_slave_add_lock_free(uint16_t bonded_port_id, uint16_t slave_port_id)
return ret;
}
+ /* Bond mode Broadcast & 8023AD don't support MBUF_FAST_FREE offload. */
+ if (internals->mode == BONDING_MODE_8023AD ||
+ internals->mode == BONDING_MODE_BROADCAST)
+ internals->tx_offload_capa &= ~RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE;
+
bonded_eth_dev->data->dev_conf.rx_adv_conf.rss_conf.rss_hf &=
internals->flow_type_rss_offloads;
diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c
index 2bf28b829d..29871cf8a3 100644
--- a/drivers/net/bonding/rte_eth_bond_pmd.c
+++ b/drivers/net/bonding/rte_eth_bond_pmd.c
@@ -3600,7 +3600,6 @@ bond_ethdev_configure(struct rte_eth_dev *dev)
const char *name = dev->device->name;
struct bond_dev_private *internals = dev->data->dev_private;
struct rte_kvargs *kvlist = internals->kvlist;
- uint64_t offloads;
int arg_count;
uint16_t port_id = dev - rte_eth_devices;
uint32_t link_speeds;
@@ -3652,16 +3651,6 @@ bond_ethdev_configure(struct rte_eth_dev *dev)
}
}
- offloads = dev->data->dev_conf.txmode.offloads;
- if ((offloads & RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE) &&
- (internals->mode == BONDING_MODE_8023AD ||
- internals->mode == BONDING_MODE_BROADCAST)) {
- RTE_BOND_LOG(WARNING,
- "bond mode broadcast & 8023AD don't support MBUF_FAST_FREE offload, force disable it.");
- offloads &= ~RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE;
- dev->data->dev_conf.txmode.offloads = offloads;
- }
-
link_speeds = dev->data->dev_conf.link_speeds;
/*
* The default value of 'link_speeds' is zero. From its definition,
--
2.23.0
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。