]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c
net/mlx5e: Move RSS params to a dedicated struct
[linux.git] / drivers / net / ethernet / mellanox / mlx5 / core / en_ethtool.c
index 3e770abfd80212d70e3b7952fa05ba57ae1490e1..e868d42c83cb7748967525bb5262223d03038371 100644 (file)
@@ -353,7 +353,7 @@ int mlx5e_ethtool_set_channels(struct mlx5e_priv *priv,
        new_channels.params = priv->channels.params;
        new_channels.params.num_channels = count;
        if (!netif_is_rxfh_configured(priv->netdev))
-               mlx5e_build_default_indir_rqt(new_channels.params.indirection_rqt,
+               mlx5e_build_default_indir_rqt(priv->rss_params.indirection_rqt,
                                              MLX5E_INDIR_RQT_SIZE, count);
 
        if (!test_bit(MLX5E_STATE_OPENED, &priv->state)) {
@@ -843,8 +843,7 @@ static int mlx5e_get_link_ksettings(struct net_device *netdev,
        ethtool_link_ksettings_add_link_mode(link_ksettings, supported,
                                             Autoneg);
 
-       err = get_fec_supported_advertised(mdev, link_ksettings);
-       if (err)
+       if (get_fec_supported_advertised(mdev, link_ksettings))
                netdev_dbg(netdev, "%s: FEC caps query failed: %d\n",
                           __func__, err);
 
@@ -932,7 +931,7 @@ static int mlx5e_set_link_ksettings(struct net_device *netdev,
 
 u32 mlx5e_ethtool_get_rxfh_key_size(struct mlx5e_priv *priv)
 {
-       return sizeof(priv->channels.params.toeplitz_hash_key);
+       return sizeof(priv->rss_params.toeplitz_hash_key);
 }
 
 static u32 mlx5e_get_rxfh_key_size(struct net_device *netdev)
@@ -958,50 +957,27 @@ static int mlx5e_get_rxfh(struct net_device *netdev, u32 *indir, u8 *key,
                          u8 *hfunc)
 {
        struct mlx5e_priv *priv = netdev_priv(netdev);
+       struct mlx5e_rss_params *rss = &priv->rss_params;
 
        if (indir)
-               memcpy(indir, priv->channels.params.indirection_rqt,
-                      sizeof(priv->channels.params.indirection_rqt));
+               memcpy(indir, rss->indirection_rqt,
+                      sizeof(rss->indirection_rqt));
 
        if (key)
-               memcpy(key, priv->channels.params.toeplitz_hash_key,
-                      sizeof(priv->channels.params.toeplitz_hash_key));
+               memcpy(key, rss->toeplitz_hash_key,
+                      sizeof(rss->toeplitz_hash_key));
 
        if (hfunc)
-               *hfunc = priv->channels.params.rss_hfunc;
+               *hfunc = rss->hfunc;
 
        return 0;
 }
 
-static void mlx5e_modify_tirs_hash(struct mlx5e_priv *priv, void *in, int inlen)
-{
-       void *tirc = MLX5_ADDR_OF(modify_tir_in, in, ctx);
-       struct mlx5_core_dev *mdev = priv->mdev;
-       int ctxlen = MLX5_ST_SZ_BYTES(tirc);
-       int tt;
-
-       MLX5_SET(modify_tir_in, in, bitmask.hash, 1);
-
-       for (tt = 0; tt < MLX5E_NUM_INDIR_TIRS; tt++) {
-               memset(tirc, 0, ctxlen);
-               mlx5e_build_indir_tir_ctx_hash(&priv->channels.params, tt, tirc, false);
-               mlx5_core_modify_tir(mdev, priv->indir_tir[tt].tirn, in, inlen);
-       }
-
-       if (!mlx5e_tunnel_inner_ft_supported(priv->mdev))
-               return;
-
-       for (tt = 0; tt < MLX5E_NUM_INDIR_TIRS; tt++) {
-               memset(tirc, 0, ctxlen);
-               mlx5e_build_indir_tir_ctx_hash(&priv->channels.params, tt, tirc, true);
-               mlx5_core_modify_tir(mdev, priv->inner_indir_tir[tt].tirn, in, inlen);
-       }
-}
-
 static int mlx5e_set_rxfh(struct net_device *dev, const u32 *indir,
                          const u8 *key, const u8 hfunc)
 {
        struct mlx5e_priv *priv = netdev_priv(dev);
+       struct mlx5e_rss_params *rss = &priv->rss_params;
        int inlen = MLX5_ST_SZ_BYTES(modify_tir_in);
        bool hash_changed = false;
        void *in;
@@ -1017,15 +993,14 @@ static int mlx5e_set_rxfh(struct net_device *dev, const u32 *indir,
 
        mutex_lock(&priv->state_lock);
 
-       if (hfunc != ETH_RSS_HASH_NO_CHANGE &&
-           hfunc != priv->channels.params.rss_hfunc) {
-               priv->channels.params.rss_hfunc = hfunc;
+       if (hfunc != ETH_RSS_HASH_NO_CHANGE && hfunc != rss->hfunc) {
+               rss->hfunc = hfunc;
                hash_changed = true;
        }
 
        if (indir) {
-               memcpy(priv->channels.params.indirection_rqt, indir,
-                      sizeof(priv->channels.params.indirection_rqt));
+               memcpy(rss->indirection_rqt, indir,
+                      sizeof(rss->indirection_rqt));
 
                if (test_bit(MLX5E_STATE_OPENED, &priv->state)) {
                        u32 rqtn = priv->indir_rqt.rqtn;
@@ -1033,7 +1008,7 @@ static int mlx5e_set_rxfh(struct net_device *dev, const u32 *indir,
                                .is_rss = true,
                                {
                                        .rss = {
-                                               .hfunc = priv->channels.params.rss_hfunc,
+                                               .hfunc = rss->hfunc,
                                                .channels  = &priv->channels,
                                        },
                                },
@@ -1044,10 +1019,9 @@ static int mlx5e_set_rxfh(struct net_device *dev, const u32 *indir,
        }
 
        if (key) {
-               memcpy(priv->channels.params.toeplitz_hash_key, key,
-                      sizeof(priv->channels.params.toeplitz_hash_key));
-               hash_changed = hash_changed ||
-                              priv->channels.params.rss_hfunc == ETH_RSS_HASH_TOP;
+               memcpy(rss->toeplitz_hash_key, key,
+                      sizeof(rss->toeplitz_hash_key));
+               hash_changed = hash_changed || rss->hfunc == ETH_RSS_HASH_TOP;
        }
 
        if (hash_changed)