From: Petr Machata Date: Thu, 14 Mar 2024 14:52:15 +0000 (+0100) Subject: ip: ipnexthop: Allow toggling collection of nexthop group HW statistics X-Git-Tag: v6.10.0~10^2~16^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=69d1c2c4aae80cda3d642391709473f6b759ccf8;p=thirdparty%2Fiproute2.git ip: ipnexthop: Allow toggling collection of nexthop group HW statistics Besides SW datapath stats, the kernel also support collecting statistics from HW datapath, for nexthop groups offloaded to HW. Since collection of these statistics may consume HW resources, there is an interface to request that the HW stats be recorded. Add this toggle to "ip nexthop". Signed-off-by: Petr Machata Signed-off-by: David Ahern --- diff --git a/ip/ipnexthop.c b/ip/ipnexthop.c index 6c5d524b..8aa06de0 100644 --- a/ip/ipnexthop.c +++ b/ip/ipnexthop.c @@ -56,6 +56,7 @@ static void usage(void) " [ encap ENCAPTYPE ENCAPHDR ] |\n" " group GROUP [ fdb ] [ type TYPE [ TYPE_ARGS ] ] }\n" "GROUP := [ //... ]\n" + " [ hw_stats {off|on} ]\n" "TYPE := { mpath | resilient }\n" "TYPE_ARGS := [ RESILIENT_ARGS ]\n" "RESILIENT_ARGS := [ buckets BUCKETS ] [ idle_timer IDLE ]\n" @@ -1102,6 +1103,17 @@ static int ipnh_modify(int cmd, unsigned int flags, int argc, char **argv) if (rtnl_rtprot_a2n(&prot, *argv)) invarg("\"protocol\" value is invalid\n", *argv); req.nhm.nh_protocol = prot; + } else if (!strcmp(*argv, "hw_stats")) { + bool hw_stats; + int ret; + + NEXT_ARG(); + hw_stats = parse_on_off("hw_stats", *argv, &ret); + if (ret) + return ret; + + addattr32(&req.n, sizeof(req), NHA_HW_STATS_ENABLE, + hw_stats); } else if (strcmp(*argv, "help") == 0) { usage(); } else { diff --git a/man/man8/ip-nexthop.8 b/man/man8/ip-nexthop.8 index f81a5910..aad68696 100644 --- a/man/man8/ip-nexthop.8 +++ b/man/man8/ip-nexthop.8 @@ -68,6 +68,8 @@ ip-nexthop \- nexthop object management .BR fdb " ] | " .B group .IR GROUP " [ " +.BR hw_stats " { " +.BR on " | " off " } ] [ " .BR fdb " ] [ " .B type .IR TYPE " [ " TYPE_ARGS " ] ] }"