]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
eth: dpaa2: migrate to new RXFH callbacks
authorJakub Kicinski <kuba@kernel.org>
Tue, 17 Jun 2025 01:48:47 +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-5-kuba@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c

index 74ef77cb70780c5f96b302e97be832dd28537940..00474ed11d53a32115c3018a146e1f8e4c1b4740 100644 (file)
@@ -719,13 +719,6 @@ static int dpaa2_eth_get_rxnfc(struct net_device *net_dev,
        int i, j = 0;
 
        switch (rxnfc->cmd) {
-       case ETHTOOL_GRXFH:
-               /* we purposely ignore cmd->flow_type for now, because the
-                * classifier only supports a single set of fields for all
-                * protocols
-                */
-               rxnfc->data = priv->rx_hash_fields;
-               break;
        case ETHTOOL_GRXRINGS:
                rxnfc->data = dpaa2_eth_queue_count(priv);
                break;
@@ -767,11 +760,6 @@ static int dpaa2_eth_set_rxnfc(struct net_device *net_dev,
        int err = 0;
 
        switch (rxnfc->cmd) {
-       case ETHTOOL_SRXFH:
-               if ((rxnfc->data & DPAA2_RXH_SUPPORTED) != rxnfc->data)
-                       return -EOPNOTSUPP;
-               err = dpaa2_eth_set_hash(net_dev, rxnfc->data);
-               break;
        case ETHTOOL_SRXCLSRLINS:
                err = dpaa2_eth_update_cls_rule(net_dev, &rxnfc->fs, rxnfc->fs.location);
                break;
@@ -785,6 +773,28 @@ static int dpaa2_eth_set_rxnfc(struct net_device *net_dev,
        return err;
 }
 
+static int dpaa2_eth_get_rxfh_fields(struct net_device *net_dev,
+                                    struct ethtool_rxfh_fields *rxnfc)
+{
+       struct dpaa2_eth_priv *priv = netdev_priv(net_dev);
+
+       /* we purposely ignore cmd->flow_type for now, because the
+        * classifier only supports a single set of fields for all
+        * protocols
+        */
+       rxnfc->data = priv->rx_hash_fields;
+       return 0;
+}
+
+static int dpaa2_eth_set_rxfh_fields(struct net_device *net_dev,
+                                    const struct ethtool_rxfh_fields *rxnfc,
+                                    struct netlink_ext_ack *extack)
+{
+       if ((rxnfc->data & DPAA2_RXH_SUPPORTED) != rxnfc->data)
+               return -EOPNOTSUPP;
+       return dpaa2_eth_set_hash(net_dev, rxnfc->data);
+}
+
 int dpaa2_phc_index = -1;
 EXPORT_SYMBOL(dpaa2_phc_index);
 
@@ -939,6 +949,8 @@ const struct ethtool_ops dpaa2_ethtool_ops = {
        .get_strings = dpaa2_eth_get_strings,
        .get_rxnfc = dpaa2_eth_get_rxnfc,
        .set_rxnfc = dpaa2_eth_set_rxnfc,
+       .get_rxfh_fields = dpaa2_eth_get_rxfh_fields,
+       .set_rxfh_fields = dpaa2_eth_set_rxfh_fields,
        .get_ts_info = dpaa2_eth_get_ts_info,
        .get_tunable = dpaa2_eth_get_tunable,
        .set_tunable = dpaa2_eth_set_tunable,