diff options
-rw-r--r-- | drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c | 2 | ||||
-rw-r--r-- | drivers/net/ethernet/mellanox/mlxsw/core.c | 3 | ||||
-rw-r--r-- | drivers/net/ethernet/netronome/nfp/nfp_devlink.c | 2 | ||||
-rw-r--r-- | include/net/devlink.h | 8 | ||||
-rw-r--r-- | net/core/devlink.c | 16 | ||||
-rw-r--r-- | net/dsa/dsa2.c | 2 |
6 files changed, 26 insertions, 7 deletions
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c index ab6fd05c462b..36ec4cb45276 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c | |||
@@ -230,7 +230,7 @@ int bnxt_dl_register(struct bnxt *bp) | |||
230 | } | 230 | } |
231 | 231 | ||
232 | devlink_port_attrs_set(&bp->dl_port, DEVLINK_PORT_FLAVOUR_PHYSICAL, | 232 | devlink_port_attrs_set(&bp->dl_port, DEVLINK_PORT_FLAVOUR_PHYSICAL, |
233 | bp->pf.port_id, false, 0); | 233 | bp->pf.port_id, false, 0, NULL, 0); |
234 | rc = devlink_port_register(dl, &bp->dl_port, bp->pf.port_id); | 234 | rc = devlink_port_register(dl, &bp->dl_port, bp->pf.port_id); |
235 | if (rc) { | 235 | if (rc) { |
236 | netdev_err(bp->dev, "devlink_port_register failed"); | 236 | netdev_err(bp->dev, "devlink_port_register failed"); |
diff --git a/drivers/net/ethernet/mellanox/mlxsw/core.c b/drivers/net/ethernet/mellanox/mlxsw/core.c index e55b4aa91e3b..d01bd9d71b90 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/core.c +++ b/drivers/net/ethernet/mellanox/mlxsw/core.c | |||
@@ -1730,7 +1730,8 @@ int mlxsw_core_port_init(struct mlxsw_core *mlxsw_core, u8 local_port, | |||
1730 | 1730 | ||
1731 | mlxsw_core_port->local_port = local_port; | 1731 | mlxsw_core_port->local_port = local_port; |
1732 | devlink_port_attrs_set(devlink_port, DEVLINK_PORT_FLAVOUR_PHYSICAL, | 1732 | devlink_port_attrs_set(devlink_port, DEVLINK_PORT_FLAVOUR_PHYSICAL, |
1733 | port_number, split, split_port_subnumber); | 1733 | port_number, split, split_port_subnumber, |
1734 | NULL, 0); | ||
1734 | err = devlink_port_register(devlink, devlink_port, local_port); | 1735 | err = devlink_port_register(devlink, devlink_port, local_port); |
1735 | if (err) | 1736 | if (err) |
1736 | memset(mlxsw_core_port, 0, sizeof(*mlxsw_core_port)); | 1737 | memset(mlxsw_core_port, 0, sizeof(*mlxsw_core_port)); |
diff --git a/drivers/net/ethernet/netronome/nfp/nfp_devlink.c b/drivers/net/ethernet/netronome/nfp/nfp_devlink.c index 919da0d84fb4..15c4d2e0c86e 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_devlink.c +++ b/drivers/net/ethernet/netronome/nfp/nfp_devlink.c | |||
@@ -364,7 +364,7 @@ int nfp_devlink_port_register(struct nfp_app *app, struct nfp_port *port) | |||
364 | 364 | ||
365 | devlink_port_attrs_set(&port->dl_port, DEVLINK_PORT_FLAVOUR_PHYSICAL, | 365 | devlink_port_attrs_set(&port->dl_port, DEVLINK_PORT_FLAVOUR_PHYSICAL, |
366 | eth_port.label_port, eth_port.is_split, | 366 | eth_port.label_port, eth_port.is_split, |
367 | eth_port.label_subport); | 367 | eth_port.label_subport, NULL, 0); |
368 | 368 | ||
369 | devlink = priv_to_devlink(app->pf); | 369 | devlink = priv_to_devlink(app->pf); |
370 | 370 | ||
diff --git a/include/net/devlink.h b/include/net/devlink.h index 4a1e3452a4ce..0f7968761204 100644 --- a/include/net/devlink.h +++ b/include/net/devlink.h | |||
@@ -42,10 +42,12 @@ struct devlink { | |||
42 | 42 | ||
43 | struct devlink_port_attrs { | 43 | struct devlink_port_attrs { |
44 | u8 set:1, | 44 | u8 set:1, |
45 | split:1; | 45 | split:1, |
46 | switch_port:1; | ||
46 | enum devlink_port_flavour flavour; | 47 | enum devlink_port_flavour flavour; |
47 | u32 port_number; /* same value as "split group" */ | 48 | u32 port_number; /* same value as "split group" */ |
48 | u32 split_subport_number; | 49 | u32 split_subport_number; |
50 | struct netdev_phys_item_id switch_id; | ||
49 | }; | 51 | }; |
50 | 52 | ||
51 | struct devlink_port { | 53 | struct devlink_port { |
@@ -582,7 +584,9 @@ void devlink_port_type_clear(struct devlink_port *devlink_port); | |||
582 | void devlink_port_attrs_set(struct devlink_port *devlink_port, | 584 | void devlink_port_attrs_set(struct devlink_port *devlink_port, |
583 | enum devlink_port_flavour flavour, | 585 | enum devlink_port_flavour flavour, |
584 | u32 port_number, bool split, | 586 | u32 port_number, bool split, |
585 | u32 split_subport_number); | 587 | u32 split_subport_number, |
588 | const unsigned char *switch_id, | ||
589 | unsigned char switch_id_len); | ||
586 | int devlink_sb_register(struct devlink *devlink, unsigned int sb_index, | 590 | int devlink_sb_register(struct devlink *devlink, unsigned int sb_index, |
587 | u32 size, u16 ingress_pools_count, | 591 | u32 size, u16 ingress_pools_count, |
588 | u16 egress_pools_count, u16 ingress_tc_count, | 592 | u16 egress_pools_count, u16 ingress_tc_count, |
diff --git a/net/core/devlink.c b/net/core/devlink.c index dc3a99148ee7..5b2eb186bb92 100644 --- a/net/core/devlink.c +++ b/net/core/devlink.c | |||
@@ -5414,11 +5414,16 @@ EXPORT_SYMBOL_GPL(devlink_port_type_clear); | |||
5414 | * @split: indicates if this is split port | 5414 | * @split: indicates if this is split port |
5415 | * @split_subport_number: if the port is split, this is the number | 5415 | * @split_subport_number: if the port is split, this is the number |
5416 | * of subport. | 5416 | * of subport. |
5417 | * @switch_id: if the port is part of switch, this is buffer with ID, | ||
5418 | * otwerwise this is NULL | ||
5419 | * @switch_id_len: length of the switch_id buffer | ||
5417 | */ | 5420 | */ |
5418 | void devlink_port_attrs_set(struct devlink_port *devlink_port, | 5421 | void devlink_port_attrs_set(struct devlink_port *devlink_port, |
5419 | enum devlink_port_flavour flavour, | 5422 | enum devlink_port_flavour flavour, |
5420 | u32 port_number, bool split, | 5423 | u32 port_number, bool split, |
5421 | u32 split_subport_number) | 5424 | u32 split_subport_number, |
5425 | const unsigned char *switch_id, | ||
5426 | unsigned char switch_id_len) | ||
5422 | { | 5427 | { |
5423 | struct devlink_port_attrs *attrs = &devlink_port->attrs; | 5428 | struct devlink_port_attrs *attrs = &devlink_port->attrs; |
5424 | 5429 | ||
@@ -5429,6 +5434,15 @@ void devlink_port_attrs_set(struct devlink_port *devlink_port, | |||
5429 | attrs->port_number = port_number; | 5434 | attrs->port_number = port_number; |
5430 | attrs->split = split; | 5435 | attrs->split = split; |
5431 | attrs->split_subport_number = split_subport_number; | 5436 | attrs->split_subport_number = split_subport_number; |
5437 | if (switch_id) { | ||
5438 | attrs->switch_port = true; | ||
5439 | if (WARN_ON(switch_id_len > MAX_PHYS_ITEM_ID_LEN)) | ||
5440 | switch_id_len = MAX_PHYS_ITEM_ID_LEN; | ||
5441 | memcpy(attrs->switch_id.id, switch_id, switch_id_len); | ||
5442 | attrs->switch_id.id_len = switch_id_len; | ||
5443 | } else { | ||
5444 | attrs->switch_port = false; | ||
5445 | } | ||
5432 | } | 5446 | } |
5433 | EXPORT_SYMBOL_GPL(devlink_port_attrs_set); | 5447 | EXPORT_SYMBOL_GPL(devlink_port_attrs_set); |
5434 | 5448 | ||
diff --git a/net/dsa/dsa2.c b/net/dsa/dsa2.c index 0e1cce460406..4493b2ff3438 100644 --- a/net/dsa/dsa2.c +++ b/net/dsa/dsa2.c | |||
@@ -286,7 +286,7 @@ static int dsa_port_setup(struct dsa_port *dp) | |||
286 | * independent from front panel port numbers. | 286 | * independent from front panel port numbers. |
287 | */ | 287 | */ |
288 | devlink_port_attrs_set(&dp->devlink_port, flavour, | 288 | devlink_port_attrs_set(&dp->devlink_port, flavour, |
289 | dp->index, false, 0); | 289 | dp->index, false, 0, NULL, 0); |
290 | err = devlink_port_register(ds->devlink, &dp->devlink_port, | 290 | err = devlink_port_register(ds->devlink, &dp->devlink_port, |
291 | dp->index); | 291 | dp->index); |
292 | if (err) | 292 | if (err) |