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 <petrm@nvidia.com>
Signed-off-by: David Ahern <dsahern@kernel.org>
This commit is contained in:
Petr Machata 2024-03-14 15:52:15 +01:00 committed by David Ahern
parent a50655e730
commit 69d1c2c4aa
2 changed files with 14 additions and 0 deletions

View File

@ -56,6 +56,7 @@ static void usage(void)
" [ encap ENCAPTYPE ENCAPHDR ] |\n"
" group GROUP [ fdb ] [ type TYPE [ TYPE_ARGS ] ] }\n"
"GROUP := [ <id[,weight]>/<id[,weight]>/... ]\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 {

View File

@ -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 " ] ] }"