[RFC PATCH v3 net-next 5/7] net: ethtool: add an extack parameter to new rxfh_context APIs
From: <hidden>
Date: 2023-09-12 14:22:40
Subsystem:
networking [ethtool], networking [general], the rest · Maintainers:
Andrew Lunn, Jakub Kicinski, "David S. Miller", Eric Dumazet, Paolo Abeni, Linus Torvalds
From: Edward Cree <ecree.xilinx@gmail.com> Currently passed as NULL, but will allow drivers to report back errors when ethnl support for these ops is added. Signed-off-by: Edward Cree <ecree.xilinx@gmail.com> --- include/linux/ethtool.h | 9 ++++++--- net/core/dev.c | 3 ++- net/ethtool/ioctl.c | 9 ++++++--- 3 files changed, 14 insertions(+), 7 deletions(-)
diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h
index 4fa2a7f6ed4c..8977aa8523e3 100644
--- a/include/linux/ethtool.h
+++ b/include/linux/ethtool.h@@ -927,14 +927,17 @@ struct ethtool_ops { int (*create_rxfh_context)(struct net_device *, struct ethtool_rxfh_context *ctx, const u32 *indir, const u8 *key, - const u8 hfunc, u32 rss_context); + const u8 hfunc, u32 rss_context, + struct netlink_ext_ack *extack); int (*modify_rxfh_context)(struct net_device *, struct ethtool_rxfh_context *ctx, const u32 *indir, const u8 *key, - const u8 hfunc, u32 rss_context); + const u8 hfunc, u32 rss_context, + struct netlink_ext_ack *extack); int (*remove_rxfh_context)(struct net_device *, struct ethtool_rxfh_context *ctx, - u32 rss_context); + u32 rss_context, + struct netlink_ext_ack *extack); int (*set_rxfh_context)(struct net_device *, const u32 *indir, const u8 *key, const u8 hfunc, u32 *rss_context, bool delete);
diff --git a/net/core/dev.c b/net/core/dev.c
index 6b8e5fd8691b..f12767466427 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c@@ -10869,7 +10869,8 @@ static void netdev_rss_contexts_free(struct net_device *dev) idr_remove(&dev->ethtool->rss_ctx, context); if (dev->ethtool_ops->create_rxfh_context) - dev->ethtool_ops->remove_rxfh_context(dev, ctx, context); + dev->ethtool_ops->remove_rxfh_context(dev, ctx, context, + NULL); else dev->ethtool_ops->set_rxfh_context(dev, indir, key, ctx->hfunc,
diff --git a/net/ethtool/ioctl.c b/net/ethtool/ioctl.c
index 4ce960a5ad4c..5b943db75974 100644
--- a/net/ethtool/ioctl.c
+++ b/net/ethtool/ioctl.c@@ -1385,14 +1385,17 @@ static noinline_for_stack int ethtool_set_rxfh(struct net_device *dev, if (create) ret = ops->create_rxfh_context(dev, ctx, indir, hkey, rxfh.hfunc, - rxfh.rss_context); + rxfh.rss_context, + NULL); else if (delete) ret = ops->remove_rxfh_context(dev, ctx, - rxfh.rss_context); + rxfh.rss_context, + NULL); else ret = ops->modify_rxfh_context(dev, ctx, indir, hkey, rxfh.hfunc, - rxfh.rss_context); + rxfh.rss_context, + NULL); } else { ret = ops->set_rxfh_context(dev, indir, hkey, rxfh.hfunc,