]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
eth: mvpp2: migrate to new RXFH callbacks
authorJakub Kicinski <kuba@kernel.org>
Tue, 17 Jun 2025 01:48:45 +0000 (18:48 -0700)
committerJakub Kicinski <kuba@kernel.org>
Wed, 18 Jun 2025 20:19:00 +0000 (13:19 -0700)
Migrate to new callbacks added by commit 9bb00786fc61 ("net: ethtool:
add dedicated callbacks for getting and setting rxfh fields").

Reviewed-by: Joe Damato <joe@dama.to>
Link: https://patch.msgid.link/20250617014848.436741-3-kuba@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.h
drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c

index 8ed83fb9886243a14bfdd60124bd678ec65b1444..44b201817d94c655fd76e3dfab0bc8228d57f14a 100644 (file)
@@ -1618,7 +1618,8 @@ int mvpp22_port_rss_ctx_indir_get(struct mvpp2_port *port, u32 port_ctx,
        return 0;
 }
 
-int mvpp2_ethtool_rxfh_set(struct mvpp2_port *port, struct ethtool_rxnfc *info)
+int mvpp2_ethtool_rxfh_set(struct mvpp2_port *port,
+                          const struct ethtool_rxfh_fields *info)
 {
        u16 hash_opts = 0;
        u32 flow_type;
@@ -1656,7 +1657,8 @@ int mvpp2_ethtool_rxfh_set(struct mvpp2_port *port, struct ethtool_rxnfc *info)
        return mvpp2_port_rss_hash_opts_set(port, flow_type, hash_opts);
 }
 
-int mvpp2_ethtool_rxfh_get(struct mvpp2_port *port, struct ethtool_rxnfc *info)
+int mvpp2_ethtool_rxfh_get(struct mvpp2_port *port,
+                          struct ethtool_rxfh_fields *info)
 {
        unsigned long hash_opts;
        u32 flow_type;
index 85c9c6e8067896a9aef53593eb926193b8f7de8e..caadf3aea95d7a826adbdb1245452f2000513fb7 100644 (file)
@@ -272,8 +272,10 @@ int mvpp22_port_rss_ctx_indir_set(struct mvpp2_port *port, u32 rss_ctx,
 int mvpp22_port_rss_ctx_indir_get(struct mvpp2_port *port, u32 rss_ctx,
                                  u32 *indir);
 
-int mvpp2_ethtool_rxfh_get(struct mvpp2_port *port, struct ethtool_rxnfc *info);
-int mvpp2_ethtool_rxfh_set(struct mvpp2_port *port, struct ethtool_rxnfc *info);
+int mvpp2_ethtool_rxfh_get(struct mvpp2_port *port,
+                          struct ethtool_rxfh_fields *info);
+int mvpp2_ethtool_rxfh_set(struct mvpp2_port *port,
+                          const struct ethtool_rxfh_fields *info);
 
 void mvpp2_cls_init(struct mvpp2 *priv);
 
index a7872d14a49d60af0c4474962536f136051b2a6c..8ebb985d2573f9f3ed301620a657e8f4f9a5fdbc 100644 (file)
@@ -5588,9 +5588,6 @@ static int mvpp2_ethtool_get_rxnfc(struct net_device *dev,
                return -EOPNOTSUPP;
 
        switch (info->cmd) {
-       case ETHTOOL_GRXFH:
-               ret = mvpp2_ethtool_rxfh_get(port, info);
-               break;
        case ETHTOOL_GRXRINGS:
                info->data = port->nrxqs;
                break;
@@ -5628,9 +5625,6 @@ static int mvpp2_ethtool_set_rxnfc(struct net_device *dev,
                return -EOPNOTSUPP;
 
        switch (info->cmd) {
-       case ETHTOOL_SRXFH:
-               ret = mvpp2_ethtool_rxfh_set(port, info);
-               break;
        case ETHTOOL_SRXCLSRLINS:
                ret = mvpp2_ethtool_cls_rule_ins(port, info);
                break;
@@ -5747,6 +5741,29 @@ static int mvpp2_ethtool_set_rxfh(struct net_device *dev,
        return mvpp2_modify_rxfh_context(dev, NULL, rxfh, extack);
 }
 
+static int mvpp2_ethtool_get_rxfh_fields(struct net_device *dev,
+                                        struct ethtool_rxfh_fields *info)
+{
+       struct mvpp2_port *port = netdev_priv(dev);
+
+       if (!mvpp22_rss_is_supported(port))
+               return -EOPNOTSUPP;
+
+       return mvpp2_ethtool_rxfh_get(port, info);
+}
+
+static int mvpp2_ethtool_set_rxfh_fields(struct net_device *dev,
+                                        const struct ethtool_rxfh_fields *info,
+                                        struct netlink_ext_ack *extack)
+{
+       struct mvpp2_port *port = netdev_priv(dev);
+
+       if (!mvpp22_rss_is_supported(port))
+               return -EOPNOTSUPP;
+
+       return mvpp2_ethtool_rxfh_set(port, info);
+}
+
 static int mvpp2_ethtool_get_eee(struct net_device *dev,
                                 struct ethtool_keee *eee)
 {
@@ -5813,6 +5830,8 @@ static const struct ethtool_ops mvpp2_eth_tool_ops = {
        .get_rxfh_indir_size    = mvpp2_ethtool_get_rxfh_indir_size,
        .get_rxfh               = mvpp2_ethtool_get_rxfh,
        .set_rxfh               = mvpp2_ethtool_set_rxfh,
+       .get_rxfh_fields        = mvpp2_ethtool_get_rxfh_fields,
+       .set_rxfh_fields        = mvpp2_ethtool_set_rxfh_fields,
        .create_rxfh_context    = mvpp2_create_rxfh_context,
        .modify_rxfh_context    = mvpp2_modify_rxfh_context,
        .remove_rxfh_context    = mvpp2_remove_rxfh_context,