net/mlx5e: TC, refactor access to hash key
authorOz Shlomo <ozsh@nvidia.com>
Tue, 6 Jun 2023 07:12:16 +0000 (00:12 -0700)
committerSaeed Mahameed <saeedm@nvidia.com>
Wed, 7 Jun 2023 21:00:44 +0000 (14:00 -0700)
Currently, a temp object is filled and used as a key for rhashtable_lookup.
Lookups will only works while key remains the first attribute in the
relevant rhashtable node object.

Fix this by passing a key, instead of a object containing the key.

Signed-off-by: Oz Shlomo <ozsh@nvidia.com>
Reviewed-by: Paul Blakey <paulb@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act_stats.c

index 07c1895..7aa926e 100644 (file)
@@ -25,8 +25,8 @@ struct mlx5e_tc_act_stats {
 
 static const struct rhashtable_params act_counters_ht_params = {
        .head_offset = offsetof(struct mlx5e_tc_act_stats, hash),
-       .key_offset = 0,
-       .key_len = offsetof(struct mlx5e_tc_act_stats, counter),
+       .key_offset = offsetof(struct mlx5e_tc_act_stats, tc_act_cookie),
+       .key_len = sizeof_field(struct mlx5e_tc_act_stats, tc_act_cookie),
        .automatic_shrinking = true,
 };
 
@@ -169,14 +169,11 @@ mlx5e_tc_act_stats_fill_stats(struct mlx5e_tc_act_stats_handle *handle,
 {
        struct rhashtable *ht = &handle->ht;
        struct mlx5e_tc_act_stats *item;
-       struct mlx5e_tc_act_stats key;
        u64 pkts, bytes, lastused;
        int err = 0;
 
-       key.tc_act_cookie = fl_act->cookie;
-
        rcu_read_lock();
-       item = rhashtable_lookup(ht, &key, act_counters_ht_params);
+       item = rhashtable_lookup(ht, &fl_act->cookie, act_counters_ht_params);
        if (!item) {
                rcu_read_unlock();
                err = -ENOENT;