diff options
author | Ido Schimmel <idosch@mellanox.com> | 2020-03-31 11:42:52 +0300 |
---|---|---|
committer | David Ahern <dsahern@gmail.com> | 2020-03-31 23:25:07 +0000 |
commit | 02a2a6683ff2df271c0f58e57a7fe6ff979c6de5 (patch) | |
tree | 244cc03a82c9573b2087104b4e96eb1a3a5308a0 | |
parent | a66af5569337b01a1aa11f929cf50ac04cae359e (diff) | |
download | iproute2-02a2a6683ff2df271c0f58e57a7fe6ff979c6de5.tar.gz |
devlink: Add ability to bind policer to trap group
Add ability to associate a policer with a trap group. The policer can be
unbound by using the 'nopolicer' keyword. In which case, the value
encoded in the 'DEVLINK_ATTR_TRAP_POLICER_ID' attribute will be '0'.
This is consistent with ip-link 'nomaster' keyword and the 'IFLA_MASTER'
attribute.
Example:
# devlink trap group set netdevsim/netdevsim10 group l3_drops policer 2
# devlink -jp trap group show netdevsim/netdevsim10 group l3_drops
{
"trap_group": {
"netdevsim/netdevsim10": [ {
"name": "l3_drops",
"generic": true,
"policer": 2
} ]
}
}
# devlink trap group set netdevsim/netdevsim10 group l3_drops nopolicer
# devlink -jp trap group show netdevsim/netdevsim10 group l3_drops
{
"trap_group": {
"netdevsim/netdevsim10": [ {
"name": "l3_drops",
"generic": true
} ]
}
}
Signed-off-by: Ido Schimmel <idosch@mellanox.com>
Reviewed-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David Ahern <dsahern@gmail.com>
-rw-r--r-- | devlink/devlink.c | 11 | ||||
-rw-r--r-- | man/man8/devlink-trap.8 | 12 |
2 files changed, 22 insertions, 1 deletions
diff --git a/devlink/devlink.c b/devlink/devlink.c index 9380792ad..6405d4be7 100644 --- a/devlink/devlink.c +++ b/devlink/devlink.c @@ -1507,6 +1507,11 @@ static int dl_argv_parse(struct dl *dl, uint64_t o_required, if (err) return err; o_found |= DL_OPT_TRAP_POLICER_ID; + } else if (dl_argv_match(dl, "nopolicer") && + (o_all & DL_OPT_TRAP_POLICER_ID)) { + dl_arg_inc(dl); + opts->trap_policer_id = 0; + o_found |= DL_OPT_TRAP_POLICER_ID; } else if (dl_argv_match(dl, "rate") && (o_all & DL_OPT_TRAP_POLICER_RATE)) { dl_arg_inc(dl); @@ -7068,6 +7073,7 @@ static void cmd_trap_help(void) pr_err("Usage: devlink trap set DEV trap TRAP [ action { trap | drop } ]\n"); pr_err(" devlink trap show [ DEV trap TRAP ]\n"); pr_err(" devlink trap group set DEV group GROUP [ action { trap | drop } ]\n"); + pr_err(" [ policer POLICER ] [ nopolicer ]\n"); pr_err(" devlink trap group show [ DEV group GROUP ]\n"); pr_err(" devlink trap policer set DEV policer POLICER [ rate RATE ] [ burst BURST ]\n"); pr_err(" devlink trap policer show DEV policer POLICER\n"); @@ -7125,6 +7131,9 @@ static void pr_out_trap_group(struct dl *dl, struct nlattr **tb, bool array) print_string(PRINT_ANY, "name", "name %s", mnl_attr_get_str(tb[DEVLINK_ATTR_TRAP_GROUP_NAME])); print_bool(PRINT_ANY, "generic", " generic %s", !!tb[DEVLINK_ATTR_TRAP_GENERIC]); + if (tb[DEVLINK_ATTR_TRAP_POLICER_ID]) + print_uint(PRINT_ANY, "policer", " policer %u", + mnl_attr_get_u32(tb[DEVLINK_ATTR_TRAP_POLICER_ID])); pr_out_stats(dl, tb[DEVLINK_ATTR_STATS]); pr_out_handle_end(dl); } @@ -7181,7 +7190,7 @@ static int cmd_trap_group_set(struct dl *dl) err = dl_argv_parse_put(nlh, dl, DL_OPT_HANDLE | DL_OPT_TRAP_GROUP_NAME, - DL_OPT_TRAP_ACTION); + DL_OPT_TRAP_ACTION | DL_OPT_TRAP_POLICER_ID); if (err) return err; diff --git a/man/man8/devlink-trap.8 b/man/man8/devlink-trap.8 index 113eda4ac..f01f83175 100644 --- a/man/man8/devlink-trap.8 +++ b/man/man8/devlink-trap.8 @@ -37,6 +37,10 @@ devlink-trap \- devlink trap configuration .ti -8 .BI "devlink trap group set " DEV " group " GROUP .RB "[ " action " { " trap " | " drop " } ]" +.br +.RB "[ " policer +.IB "POLICER " ] +.RB "[ " nopolicer " ]" .ti -8 .BI "devlink trap policer set " DEV " policer " POLICER @@ -109,6 +113,14 @@ packet trap action. The action is set for all the packet traps member in the trap group. The actions of non-drop traps cannot be changed and are thus skipped. +.TP +.BI policer " POLICER" +packet trap policer. The policer to bind to the packet trap group. + +.TP +.B nopolicer +Unbind packet trap policer from the packet trap group. + .SS devlink trap policer set - set attributes of packet trap policer .PP |