Message ID | 20180520081539.1372-3-jiri@resnulli.us |
---|---|
State | Changes Requested, archived |
Delegated to: | David Ahern |
Headers | show |
Series | devlink: add port flavours/number/split_subport | expand |
On 5/20/18 2:15 AM, Jiri Pirko wrote: > From: Jiri Pirko <jiri@mellanox.com> > > Signed-off-by: Jiri Pirko <jiri@mellanox.com> > --- > devlink/devlink.c | 6 ++++++ > include/uapi/linux/devlink.h | 2 ++ > 2 files changed, 8 insertions(+) > > diff --git a/devlink/devlink.c b/devlink/devlink.c > index df2c66dac1c7..b0ae17767dab 100644 > --- a/devlink/devlink.c > +++ b/devlink/devlink.c > @@ -1737,9 +1737,15 @@ static void pr_out_port(struct dl *dl, struct nlattr **tb) > > pr_out_str(dl, "flavour", port_flavour_name(port_flavour)); > } > + if (tb[DEVLINK_ATTR_PORT_NUMBER]) > + pr_out_uint(dl, "number", > + mnl_attr_get_u32(tb[DEVLINK_ATTR_PORT_NUMBER])); "number" is a label means nothing. "port" is more descriptive. # ./devlink port pci/0000:03:00.0/1: type eth netdev swp17 flavour physical number 17 pci/0000:03:00.0/3: type eth netdev swp18 flavour physical number 18 pci/0000:03:00.0/5: type eth netdev swp19 flavour physical number 19 pci/0000:03:00.0/7: type eth netdev swp20 flavour physical number 20 pci/0000:03:00.0/9: type eth netdev swp21 flavour physical number 21 ... pci/0000:03:00.0/61: type eth netdev swp1s0 flavour physical number 1 split_group 1 subport 0 pci/0000:03:00.0/62: type eth netdev swp1s1 flavour physical number 1 split_group 1 subport 1
Wed, May 23, 2018 at 10:05:49PM CEST, dsahern@gmail.com wrote: >On 5/20/18 2:15 AM, Jiri Pirko wrote: >> From: Jiri Pirko <jiri@mellanox.com> >> >> Signed-off-by: Jiri Pirko <jiri@mellanox.com> >> --- >> devlink/devlink.c | 6 ++++++ >> include/uapi/linux/devlink.h | 2 ++ >> 2 files changed, 8 insertions(+) >> >> diff --git a/devlink/devlink.c b/devlink/devlink.c >> index df2c66dac1c7..b0ae17767dab 100644 >> --- a/devlink/devlink.c >> +++ b/devlink/devlink.c >> @@ -1737,9 +1737,15 @@ static void pr_out_port(struct dl *dl, struct nlattr **tb) >> >> pr_out_str(dl, "flavour", port_flavour_name(port_flavour)); >> } >> + if (tb[DEVLINK_ATTR_PORT_NUMBER]) >> + pr_out_uint(dl, "number", >> + mnl_attr_get_u32(tb[DEVLINK_ATTR_PORT_NUMBER])); > >"number" is a label means nothing. "port" is more descriptive. That attribute name is "port_number". As the other attributes are named "port_something", and the "something" is printed out here, the "number" is consistent with it. Each line represents a port with a list of attributes. > ># ./devlink port >pci/0000:03:00.0/1: type eth netdev swp17 flavour physical number 17 >pci/0000:03:00.0/3: type eth netdev swp18 flavour physical number 18 >pci/0000:03:00.0/5: type eth netdev swp19 flavour physical number 19 >pci/0000:03:00.0/7: type eth netdev swp20 flavour physical number 20 >pci/0000:03:00.0/9: type eth netdev swp21 flavour physical number 21 >... >pci/0000:03:00.0/61: type eth netdev swp1s0 flavour physical number 1 >split_group 1 subport 0 >pci/0000:03:00.0/62: type eth netdev swp1s1 flavour physical number 1 >split_group 1 subport 1 >
On 5/24/18 12:39 AM, Jiri Pirko wrote: > Wed, May 23, 2018 at 10:05:49PM CEST, dsahern@gmail.com wrote: >> On 5/20/18 2:15 AM, Jiri Pirko wrote: >>> From: Jiri Pirko <jiri@mellanox.com> >>> >>> Signed-off-by: Jiri Pirko <jiri@mellanox.com> >>> --- >>> devlink/devlink.c | 6 ++++++ >>> include/uapi/linux/devlink.h | 2 ++ >>> 2 files changed, 8 insertions(+) >>> >>> diff --git a/devlink/devlink.c b/devlink/devlink.c >>> index df2c66dac1c7..b0ae17767dab 100644 >>> --- a/devlink/devlink.c >>> +++ b/devlink/devlink.c >>> @@ -1737,9 +1737,15 @@ static void pr_out_port(struct dl *dl, struct nlattr **tb) >>> >>> pr_out_str(dl, "flavour", port_flavour_name(port_flavour)); >>> } >>> + if (tb[DEVLINK_ATTR_PORT_NUMBER]) >>> + pr_out_uint(dl, "number", >>> + mnl_attr_get_u32(tb[DEVLINK_ATTR_PORT_NUMBER])); >> >> "number" is a label means nothing. "port" is more descriptive. > > That attribute name is "port_number". As the other attributes are > named "port_something", and the "something" is printed out here, the > "number" is consistent with it. Each line represents a port with a list > of attributes. The name of the attribute is not relevant here. That's an API that very few people will see. I am looking at this from a user perspective and the word "number" followed by a number is not clear. > >> >> # ./devlink port >> pci/0000:03:00.0/1: type eth netdev swp17 flavour physical number 17 >> pci/0000:03:00.0/3: type eth netdev swp18 flavour physical number 18 >> pci/0000:03:00.0/5: type eth netdev swp19 flavour physical number 19 >> pci/0000:03:00.0/7: type eth netdev swp20 flavour physical number 20 >> pci/0000:03:00.0/9: type eth netdev swp21 flavour physical number 21 >> ... >> pci/0000:03:00.0/61: type eth netdev swp1s0 flavour physical number 1 >> split_group 1 subport 0 >> pci/0000:03:00.0/62: type eth netdev swp1s1 flavour physical number 1 >> split_group 1 subport 1 >>
diff --git a/devlink/devlink.c b/devlink/devlink.c index df2c66dac1c7..b0ae17767dab 100644 --- a/devlink/devlink.c +++ b/devlink/devlink.c @@ -1737,9 +1737,15 @@ static void pr_out_port(struct dl *dl, struct nlattr **tb) pr_out_str(dl, "flavour", port_flavour_name(port_flavour)); } + if (tb[DEVLINK_ATTR_PORT_NUMBER]) + pr_out_uint(dl, "number", + mnl_attr_get_u32(tb[DEVLINK_ATTR_PORT_NUMBER])); if (tb[DEVLINK_ATTR_PORT_SPLIT_GROUP]) pr_out_uint(dl, "split_group", mnl_attr_get_u32(tb[DEVLINK_ATTR_PORT_SPLIT_GROUP])); + if (tb[DEVLINK_ATTR_PORT_SPLIT_SUBPORT_NUMBER]) + pr_out_uint(dl, "subport", + mnl_attr_get_u32(tb[DEVLINK_ATTR_PORT_SPLIT_SUBPORT_NUMBER])); pr_out_port_handle_end(dl); } diff --git a/include/uapi/linux/devlink.h b/include/uapi/linux/devlink.h index 23a3af6284b4..493f71fef7ee 100644 --- a/include/uapi/linux/devlink.h +++ b/include/uapi/linux/devlink.h @@ -235,6 +235,8 @@ enum devlink_attr { DEVLINK_ATTR_DPIPE_TABLE_RESOURCE_UNITS,/* u64 */ DEVLINK_ATTR_PORT_FLAVOUR, /* u16 */ + DEVLINK_ATTR_PORT_NUMBER, /* u32 */ + DEVLINK_ATTR_PORT_SPLIT_SUBPORT_NUMBER, /* u32 */ /* add new attributes above here, update the policy in devlink.c */