[RFC 3/4] ethdev: omit all multicast config restore if not required
Dariusz Sosnowski
dsosnowski at nvidia.com
Wed Sep 18 11:22:00 CEST 2024
This patch adds a new device flag - RTE_ETH_DEV_ALLMULTI_FORCE_RESTORE.
If device driver sets this flag, then it requires that ethdev library
forcefully reapplies allmulticast configration,
after the port is started.
As a result, unnecessary work can be removed from rte_eth_dev_start()
for drivers which apply all available configuration in dev_start()
(such drivers do not set the flag).
If RFC is approved, then the next version of this patch
should set the new flag for all drivers to maintain the same behavior,
until drivers adjust and it can be safely cleared.
Signed-off-by: Dariusz Sosnowski <dsosnowski at nvidia.com>
---
lib/ethdev/rte_ethdev.c | 8 +++++---
lib/ethdev/rte_ethdev.h | 6 ++++++
2 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/lib/ethdev/rte_ethdev.c b/lib/ethdev/rte_ethdev.c
index ff08abd566..a08922a78a 100644
--- a/lib/ethdev/rte_ethdev.c
+++ b/lib/ethdev/rte_ethdev.c
@@ -1732,9 +1732,11 @@ eth_dev_config_restore(struct rte_eth_dev *dev,
return ret;
}
- ret = eth_dev_allmulticast_restore(dev, port_id);
- if (ret != 0)
- return ret;
+ if (*dev_info->dev_flags & RTE_ETH_DEV_ALLMULTI_FORCE_RESTORE) {
+ ret = eth_dev_allmulticast_restore(dev, port_id);
+ if (ret != 0)
+ return ret;
+ }
return 0;
}
diff --git a/lib/ethdev/rte_ethdev.h b/lib/ethdev/rte_ethdev.h
index 0fc23fb924..73405dd17d 100644
--- a/lib/ethdev/rte_ethdev.h
+++ b/lib/ethdev/rte_ethdev.h
@@ -2126,6 +2126,12 @@ struct rte_eth_dev_owner {
* after driver's dev_start() callback is called.
*/
#define RTE_ETH_DEV_PROMISC_FORCE_RESTORE RTE_BIT32(7)
+/**
+ * If this flag is set, then device driver requires that
+ * ethdev library forcefully reapplies allmulticast configuration,
+ * after driver's dev_start() callback is called.
+ */
+#define RTE_ETH_DEV_ALLMULTI_FORCE_RESTORE RTE_BIT32(8)
/**@}*/
/**
--
2.39.5
More information about the dev
mailing list