diff options
author | Ido Schimmel <idosch@nvidia.com> | 2024-03-06 13:49:19 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2024-03-08 10:35:47 +0000 |
commit | 5877786fcf52d1b255afcd61832753d1619f0738 (patch) | |
tree | 81bae497b1142102f9eac8ca930d9c412453a9cc | |
parent | 95fedd7685912f96304615efe50485588b1c3567 (diff) | |
download | linux-5877786fcf52d1b255afcd61832753d1619f0738.tar.gz linux-5877786fcf52d1b255afcd61832753d1619f0738.tar.bz2 linux-5877786fcf52d1b255afcd61832753d1619f0738.zip |
net: nexthop: Add hardware statistics notifications
Add hw_stats field to several notifier structures to communicate to the
drivers that HW statistics should be configured for nexthops within a given
group.
Signed-off-by: Ido Schimmel <idosch@nvidia.com>
Reviewed-by: David Ahern <dsahern@kernel.org>
Signed-off-by: Petr Machata <petrm@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | include/net/nexthop.h | 3 | ||||
-rw-r--r-- | net/ipv4/nexthop.c | 2 |
2 files changed, 5 insertions, 0 deletions
diff --git a/include/net/nexthop.h b/include/net/nexthop.h index 6e6a36fee51e..584c37120c20 100644 --- a/include/net/nexthop.h +++ b/include/net/nexthop.h @@ -130,6 +130,7 @@ struct nh_group { bool resilient; bool fdb_nh; bool has_v4; + bool hw_stats; struct nh_res_table __rcu *res_table; struct nh_grp_entry nh_entries[] __counted_by(num_nh); @@ -193,6 +194,7 @@ struct nh_notifier_grp_entry_info { struct nh_notifier_grp_info { u16 num_nh; bool is_fdb; + bool hw_stats; struct nh_notifier_grp_entry_info nh_entries[] __counted_by(num_nh); }; @@ -206,6 +208,7 @@ struct nh_notifier_res_bucket_info { struct nh_notifier_res_table_info { u16 num_nh_buckets; + bool hw_stats; struct nh_notifier_single_info nhs[] __counted_by(num_nh_buckets); }; diff --git a/net/ipv4/nexthop.c b/net/ipv4/nexthop.c index 3365c41eee9a..c0d14e16e9c8 100644 --- a/net/ipv4/nexthop.c +++ b/net/ipv4/nexthop.c @@ -141,6 +141,7 @@ static int nh_notifier_mpath_info_init(struct nh_notifier_info *info, info->nh_grp->num_nh = num_nh; info->nh_grp->is_fdb = nhg->fdb_nh; + info->nh_grp->hw_stats = nhg->hw_stats; for (i = 0; i < num_nh; i++) { struct nh_grp_entry *nhge = &nhg->nh_entries[i]; @@ -172,6 +173,7 @@ static int nh_notifier_res_table_info_init(struct nh_notifier_info *info, return -ENOMEM; info->nh_res_table->num_nh_buckets = num_nh_buckets; + info->nh_res_table->hw_stats = nhg->hw_stats; for (i = 0; i < num_nh_buckets; i++) { struct nh_res_bucket *bucket = &res_table->nh_buckets[i]; |