From: Jiri Pirko <j...@mellanox.com> Signed-off-by: Jiri Pirko <j...@mellanox.com> --- devlink/devlink.c | 20 ++++++++++++++++++++ include/uapi/linux/devlink.h | 12 ++++++++++++ 2 files changed, 32 insertions(+)
diff --git a/devlink/devlink.c b/devlink/devlink.c index fa33684cb20a..df2c66dac1c7 100644 --- a/devlink/devlink.c +++ b/devlink/devlink.c @@ -1693,6 +1693,20 @@ static const char *port_type_name(uint32_t type) } } +static const char *port_flavour_name(uint16_t flavour) +{ + switch (flavour) { + case DEVLINK_PORT_FLAVOUR_PHYSICAL: + return "physical"; + case DEVLINK_PORT_FLAVOUR_CPU: + return "cpu"; + case DEVLINK_PORT_FLAVOUR_DSA: + return "dsa"; + default: + return "<unknown flavour>"; + } +} + static void pr_out_port(struct dl *dl, struct nlattr **tb) { struct nlattr *pt_attr = tb[DEVLINK_ATTR_PORT_TYPE]; @@ -1717,6 +1731,12 @@ static void pr_out_port(struct dl *dl, struct nlattr **tb) if (tb[DEVLINK_ATTR_PORT_IBDEV_NAME]) pr_out_str(dl, "ibdev", mnl_attr_get_str(tb[DEVLINK_ATTR_PORT_IBDEV_NAME])); + if (tb[DEVLINK_ATTR_PORT_FLAVOUR]) { + uint16_t port_flavour = + mnl_attr_get_u16(tb[DEVLINK_ATTR_PORT_FLAVOUR]); + + pr_out_str(dl, "flavour", port_flavour_name(port_flavour)); + } if (tb[DEVLINK_ATTR_PORT_SPLIT_GROUP]) pr_out_uint(dl, "split_group", mnl_attr_get_u32(tb[DEVLINK_ATTR_PORT_SPLIT_GROUP])); diff --git a/include/uapi/linux/devlink.h b/include/uapi/linux/devlink.h index 9f17286ec89f..23a3af6284b4 100644 --- a/include/uapi/linux/devlink.h +++ b/include/uapi/linux/devlink.h @@ -132,6 +132,16 @@ enum devlink_eswitch_encap_mode { DEVLINK_ESWITCH_ENCAP_MODE_BASIC, }; +enum devlink_port_flavour { + DEVLINK_PORT_FLAVOUR_PHYSICAL, /* Any kind of a port physically + * facing the user. + */ + DEVLINK_PORT_FLAVOUR_CPU, /* CPU port */ + DEVLINK_PORT_FLAVOUR_DSA, /* Distributed switch architecture + * interconnect port. + */ +}; + enum devlink_attr { /* don't change the order or add anything between, this is ABI! */ DEVLINK_ATTR_UNSPEC, @@ -224,6 +234,8 @@ enum devlink_attr { DEVLINK_ATTR_DPIPE_TABLE_RESOURCE_ID, /* u64 */ DEVLINK_ATTR_DPIPE_TABLE_RESOURCE_UNITS,/* u64 */ + DEVLINK_ATTR_PORT_FLAVOUR, /* u16 */ + /* add new attributes above here, update the policy in devlink.c */ __DEVLINK_ATTR_MAX, -- 2.14.3