net: nexthop: Add hardware statistics notifications
authorIdo Schimmel <idosch@nvidia.com>
Wed, 6 Mar 2024 12:49:19 +0000 (13:49 +0100)
committerDavid S. Miller <davem@davemloft.net>
Fri, 8 Mar 2024 10:35:47 +0000 (10:35 +0000)
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>
include/net/nexthop.h
net/ipv4/nexthop.c

index 6e6a36fee51e9d4dd2d902876c476c472bb95036..584c37120c204ba47090f965f81922eec929ba61 100644 (file)
@@ -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);
 };
 
index 3365c41eee9a2cfbbd4f1771300a8daf877d7a47..c0d14e16e9c8f82b9594736d6277b89700431926 100644 (file)
@@ -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];