]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
net: ethtool: add an extack parameter to new rxfh_context APIs
authorEdward Cree <ecree.xilinx@gmail.com>
Thu, 27 Jun 2024 15:33:50 +0000 (16:33 +0100)
committerJakub Kicinski <kuba@kernel.org>
Sat, 29 Jun 2024 01:53:21 +0000 (18:53 -0700)
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>
Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
Link: https://patch.msgid.link/6e0012347d175fdd1280363d7bfa76a2f2777e17.1719502240.git.ecree.xilinx@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
include/linux/ethtool.h
net/core/dev.c
net/ethtool/ioctl.c

index 4292a25b2427922d7c0d6b79d3381f3345d2cc7e..9cdbc8e3ed5c7d966ef63fa96be63cef261e78fd 100644 (file)
@@ -1004,13 +1004,16 @@ struct ethtool_ops {
                            struct netlink_ext_ack *extack);
        int     (*create_rxfh_context)(struct net_device *,
                                       struct ethtool_rxfh_context *ctx,
-                                      const struct ethtool_rxfh_param *rxfh);
+                                      const struct ethtool_rxfh_param *rxfh,
+                                      struct netlink_ext_ack *extack);
        int     (*modify_rxfh_context)(struct net_device *,
                                       struct ethtool_rxfh_context *ctx,
-                                      const struct ethtool_rxfh_param *rxfh);
+                                      const struct ethtool_rxfh_param *rxfh,
+                                      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);
        void    (*get_channels)(struct net_device *, struct ethtool_channels *);
        int     (*set_channels)(struct net_device *, struct ethtool_channels *);
        int     (*get_dump_flag)(struct net_device *, struct ethtool_dump *);
index 8481dc4f2196f6883b3fcfa926c3a8091a661d2b..2daed4464c0847f016718e8c08f87a32dd494502 100644 (file)
@@ -11256,7 +11256,7 @@ static void netdev_rss_contexts_free(struct net_device *dev)
                xa_erase(&dev->ethtool->rss_ctx, context);
                if (dev->ethtool_ops->create_rxfh_context)
                        dev->ethtool_ops->remove_rxfh_context(dev, ctx,
-                                                             context);
+                                                             context, NULL);
                else
                        dev->ethtool_ops->set_rxfh(dev, &rxfh, NULL);
                kfree(ctx);
index 46b50ddde0132e49dfa1e4554f2be17577c60a4a..82c610e9e6b2697531871cf72ac5dc7e8aa32701 100644 (file)
@@ -1426,12 +1426,15 @@ static noinline_for_stack int ethtool_set_rxfh(struct net_device *dev,
 
        if (rxfh.rss_context && ops->create_rxfh_context) {
                if (create)
-                       ret = ops->create_rxfh_context(dev, ctx, &rxfh_dev);
+                       ret = ops->create_rxfh_context(dev, ctx, &rxfh_dev,
+                                                      extack);
                else if (rxfh_dev.rss_delete)
                        ret = ops->remove_rxfh_context(dev, ctx,
-                                                      rxfh.rss_context);
+                                                      rxfh.rss_context,
+                                                      extack);
                else
-                       ret = ops->modify_rxfh_context(dev, ctx, &rxfh_dev);
+                       ret = ops->modify_rxfh_context(dev, ctx, &rxfh_dev,
+                                                      extack);
        } else {
                ret = ops->set_rxfh(dev, &rxfh_dev, extack);
        }