Skip to content

Commit bdb373c

Browse files
idoschdavem330
authored andcommitted
mlxsw: spectrum: Remove unused RIF and FID families
In merge commit 5085380 ("Merge branch 'mlxsw-Prepare-for-VLAN-aware-bridge-w-VxLAN'") I flipped mlxsw to use emulated 802.1Q FIDs and correspondingly emulated VLAN RIFs. This means that the non-emulated variants are no longer used. Remove them and suppress the following warnings when compiling with W=1: drivers/net/ethernet/mellanox/mlxsw//spectrum_router.c:7572:38: warning: ‘mlxsw_sp_rif_vlan_ops’ defined but not used [-Wunused-const-variable=] drivers/net/ethernet/mellanox/mlxsw//spectrum_fid.c:584:41: warning: ‘mlxsw_sp_fid_8021q_family’ defined but not used [-Wunused-const-variable=] Signed-off-by: Ido Schimmel <[email protected]> Reviewed-by: Jiri Pirko <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent f0a6698 commit bdb373c

File tree

2 files changed

+47
-248
lines changed

2 files changed

+47
-248
lines changed

drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c

Lines changed: 8 additions & 144 deletions
Original file line numberDiff line numberDiff line change
@@ -438,16 +438,6 @@ static int mlxsw_sp_fid_vni_op(struct mlxsw_sp *mlxsw_sp, u16 fid_index,
438438
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(sfmr), sfmr_pl);
439439
}
440440

441-
static int mlxsw_sp_fid_vid_map(struct mlxsw_sp *mlxsw_sp, u16 fid_index,
442-
u16 vid, bool valid)
443-
{
444-
enum mlxsw_reg_svfa_mt mt = MLXSW_REG_SVFA_MT_VID_TO_FID;
445-
char svfa_pl[MLXSW_REG_SVFA_LEN];
446-
447-
mlxsw_reg_svfa_pack(svfa_pl, 0, mt, valid, fid_index, vid);
448-
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(svfa), svfa_pl);
449-
}
450-
451441
static int __mlxsw_sp_fid_port_vid_map(struct mlxsw_sp *mlxsw_sp, u16 fid_index,
452442
u8 local_port, u16 vid, bool valid)
453443
{
@@ -458,140 +448,6 @@ static int __mlxsw_sp_fid_port_vid_map(struct mlxsw_sp *mlxsw_sp, u16 fid_index,
458448
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(svfa), svfa_pl);
459449
}
460450

461-
static int mlxsw_sp_fid_8021q_configure(struct mlxsw_sp_fid *fid)
462-
{
463-
struct mlxsw_sp *mlxsw_sp = fid->fid_family->mlxsw_sp;
464-
struct mlxsw_sp_fid_8021q *fid_8021q;
465-
int err;
466-
467-
err = mlxsw_sp_fid_op(mlxsw_sp, fid->fid_index, fid->fid_index, true);
468-
if (err)
469-
return err;
470-
471-
fid_8021q = mlxsw_sp_fid_8021q_fid(fid);
472-
err = mlxsw_sp_fid_vid_map(mlxsw_sp, fid->fid_index, fid_8021q->vid,
473-
true);
474-
if (err)
475-
goto err_fid_map;
476-
477-
return 0;
478-
479-
err_fid_map:
480-
mlxsw_sp_fid_op(mlxsw_sp, fid->fid_index, 0, false);
481-
return err;
482-
}
483-
484-
static void mlxsw_sp_fid_8021q_deconfigure(struct mlxsw_sp_fid *fid)
485-
{
486-
struct mlxsw_sp *mlxsw_sp = fid->fid_family->mlxsw_sp;
487-
struct mlxsw_sp_fid_8021q *fid_8021q;
488-
489-
fid_8021q = mlxsw_sp_fid_8021q_fid(fid);
490-
mlxsw_sp_fid_vid_map(mlxsw_sp, fid->fid_index, fid_8021q->vid, false);
491-
mlxsw_sp_fid_op(mlxsw_sp, fid->fid_index, 0, false);
492-
}
493-
494-
static int mlxsw_sp_fid_8021q_index_alloc(struct mlxsw_sp_fid *fid,
495-
const void *arg, u16 *p_fid_index)
496-
{
497-
struct mlxsw_sp_fid_family *fid_family = fid->fid_family;
498-
u16 vid = *(u16 *) arg;
499-
500-
/* Use 1:1 mapping for simplicity although not a must */
501-
if (vid < fid_family->start_index || vid > fid_family->end_index)
502-
return -EINVAL;
503-
*p_fid_index = vid;
504-
505-
return 0;
506-
}
507-
508-
static bool
509-
mlxsw_sp_fid_8021q_compare(const struct mlxsw_sp_fid *fid, const void *arg)
510-
{
511-
u16 vid = *(u16 *) arg;
512-
513-
return mlxsw_sp_fid_8021q_fid(fid)->vid == vid;
514-
}
515-
516-
static u16 mlxsw_sp_fid_8021q_flood_index(const struct mlxsw_sp_fid *fid)
517-
{
518-
return fid->fid_index;
519-
}
520-
521-
static int mlxsw_sp_fid_8021q_port_vid_map(struct mlxsw_sp_fid *fid,
522-
struct mlxsw_sp_port *mlxsw_sp_port,
523-
u16 vid)
524-
{
525-
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
526-
u8 local_port = mlxsw_sp_port->local_port;
527-
528-
/* In case there are no {Port, VID} => FID mappings on the port,
529-
* we can use the global VID => FID mapping we created when the
530-
* FID was configured.
531-
*/
532-
if (mlxsw_sp->fid_core->port_fid_mappings[local_port] == 0)
533-
return 0;
534-
return __mlxsw_sp_fid_port_vid_map(mlxsw_sp, fid->fid_index, local_port,
535-
vid, true);
536-
}
537-
538-
static void
539-
mlxsw_sp_fid_8021q_port_vid_unmap(struct mlxsw_sp_fid *fid,
540-
struct mlxsw_sp_port *mlxsw_sp_port, u16 vid)
541-
{
542-
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
543-
u8 local_port = mlxsw_sp_port->local_port;
544-
545-
if (mlxsw_sp->fid_core->port_fid_mappings[local_port] == 0)
546-
return;
547-
__mlxsw_sp_fid_port_vid_map(mlxsw_sp, fid->fid_index, local_port, vid,
548-
false);
549-
}
550-
551-
static const struct mlxsw_sp_fid_ops mlxsw_sp_fid_8021q_ops = {
552-
.setup = mlxsw_sp_fid_8021q_setup,
553-
.configure = mlxsw_sp_fid_8021q_configure,
554-
.deconfigure = mlxsw_sp_fid_8021q_deconfigure,
555-
.index_alloc = mlxsw_sp_fid_8021q_index_alloc,
556-
.compare = mlxsw_sp_fid_8021q_compare,
557-
.flood_index = mlxsw_sp_fid_8021q_flood_index,
558-
.port_vid_map = mlxsw_sp_fid_8021q_port_vid_map,
559-
.port_vid_unmap = mlxsw_sp_fid_8021q_port_vid_unmap,
560-
};
561-
562-
static const struct mlxsw_sp_flood_table mlxsw_sp_fid_8021q_flood_tables[] = {
563-
{
564-
.packet_type = MLXSW_SP_FLOOD_TYPE_UC,
565-
.bridge_type = MLXSW_REG_SFGC_BRIDGE_TYPE_1Q_FID,
566-
.table_type = MLXSW_REG_SFGC_TABLE_TYPE_FID_OFFSET,
567-
.table_index = 0,
568-
},
569-
{
570-
.packet_type = MLXSW_SP_FLOOD_TYPE_MC,
571-
.bridge_type = MLXSW_REG_SFGC_BRIDGE_TYPE_1Q_FID,
572-
.table_type = MLXSW_REG_SFGC_TABLE_TYPE_FID_OFFSET,
573-
.table_index = 1,
574-
},
575-
{
576-
.packet_type = MLXSW_SP_FLOOD_TYPE_BC,
577-
.bridge_type = MLXSW_REG_SFGC_BRIDGE_TYPE_1Q_FID,
578-
.table_type = MLXSW_REG_SFGC_TABLE_TYPE_FID_OFFSET,
579-
.table_index = 2,
580-
},
581-
};
582-
583-
/* Range and flood configuration must match mlxsw_config_profile */
584-
static const struct mlxsw_sp_fid_family mlxsw_sp_fid_8021q_family = {
585-
.type = MLXSW_SP_FID_TYPE_8021Q,
586-
.fid_size = sizeof(struct mlxsw_sp_fid_8021q),
587-
.start_index = 1,
588-
.end_index = VLAN_VID_MASK,
589-
.flood_tables = mlxsw_sp_fid_8021q_flood_tables,
590-
.nr_flood_tables = ARRAY_SIZE(mlxsw_sp_fid_8021q_flood_tables),
591-
.rif_type = MLXSW_SP_RIF_TYPE_VLAN,
592-
.ops = &mlxsw_sp_fid_8021q_ops,
593-
};
594-
595451
static struct mlxsw_sp_fid_8021d *
596452
mlxsw_sp_fid_8021d_fid(const struct mlxsw_sp_fid *fid)
597453
{
@@ -846,6 +702,14 @@ static const struct mlxsw_sp_fid_family mlxsw_sp_fid_8021d_family = {
846702
.lag_vid_valid = 1,
847703
};
848704

705+
static bool
706+
mlxsw_sp_fid_8021q_compare(const struct mlxsw_sp_fid *fid, const void *arg)
707+
{
708+
u16 vid = *(u16 *) arg;
709+
710+
return mlxsw_sp_fid_8021q_fid(fid)->vid == vid;
711+
}
712+
849713
static void
850714
mlxsw_sp_fid_8021q_fdb_clear_offload(const struct mlxsw_sp_fid *fid,
851715
const struct net_device *nve_dev)

drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c

Lines changed: 39 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -7475,13 +7475,14 @@ u8 mlxsw_sp_router_port(const struct mlxsw_sp *mlxsw_sp)
74757475
return mlxsw_core_max_ports(mlxsw_sp->core) + 1;
74767476
}
74777477

7478-
static int mlxsw_sp_rif_vlan_configure(struct mlxsw_sp_rif *rif)
7478+
static int mlxsw_sp_rif_fid_configure(struct mlxsw_sp_rif *rif)
74797479
{
74807480
struct mlxsw_sp *mlxsw_sp = rif->mlxsw_sp;
7481-
u16 vid = mlxsw_sp_fid_8021q_vid(rif->fid);
7481+
u16 fid_index = mlxsw_sp_fid_index(rif->fid);
74827482
int err;
74837483

7484-
err = mlxsw_sp_rif_vlan_fid_op(rif, MLXSW_REG_RITR_VLAN_IF, vid, true);
7484+
err = mlxsw_sp_rif_vlan_fid_op(rif, MLXSW_REG_RITR_FID_IF, fid_index,
7485+
true);
74857486
if (err)
74867487
return err;
74877488

@@ -7510,13 +7511,13 @@ static int mlxsw_sp_rif_vlan_configure(struct mlxsw_sp_rif *rif)
75107511
mlxsw_sp_fid_flood_set(rif->fid, MLXSW_SP_FLOOD_TYPE_MC,
75117512
mlxsw_sp_router_port(mlxsw_sp), false);
75127513
err_fid_mc_flood_set:
7513-
mlxsw_sp_rif_vlan_fid_op(rif, MLXSW_REG_RITR_VLAN_IF, vid, false);
7514+
mlxsw_sp_rif_vlan_fid_op(rif, MLXSW_REG_RITR_FID_IF, fid_index, false);
75147515
return err;
75157516
}
75167517

7517-
static void mlxsw_sp_rif_vlan_deconfigure(struct mlxsw_sp_rif *rif)
7518+
static void mlxsw_sp_rif_fid_deconfigure(struct mlxsw_sp_rif *rif)
75187519
{
7519-
u16 vid = mlxsw_sp_fid_8021q_vid(rif->fid);
7520+
u16 fid_index = mlxsw_sp_fid_index(rif->fid);
75207521
struct mlxsw_sp *mlxsw_sp = rif->mlxsw_sp;
75217522
struct mlxsw_sp_fid *fid = rif->fid;
75227523

@@ -7528,9 +7529,40 @@ static void mlxsw_sp_rif_vlan_deconfigure(struct mlxsw_sp_rif *rif)
75287529
mlxsw_sp_router_port(mlxsw_sp), false);
75297530
mlxsw_sp_fid_flood_set(rif->fid, MLXSW_SP_FLOOD_TYPE_MC,
75307531
mlxsw_sp_router_port(mlxsw_sp), false);
7531-
mlxsw_sp_rif_vlan_fid_op(rif, MLXSW_REG_RITR_VLAN_IF, vid, false);
7532+
mlxsw_sp_rif_vlan_fid_op(rif, MLXSW_REG_RITR_FID_IF, fid_index, false);
7533+
}
7534+
7535+
static struct mlxsw_sp_fid *
7536+
mlxsw_sp_rif_fid_fid_get(struct mlxsw_sp_rif *rif,
7537+
struct netlink_ext_ack *extack)
7538+
{
7539+
return mlxsw_sp_fid_8021d_get(rif->mlxsw_sp, rif->dev->ifindex);
75327540
}
75337541

7542+
static void mlxsw_sp_rif_fid_fdb_del(struct mlxsw_sp_rif *rif, const char *mac)
7543+
{
7544+
struct switchdev_notifier_fdb_info info;
7545+
struct net_device *dev;
7546+
7547+
dev = br_fdb_find_port(rif->dev, mac, 0);
7548+
if (!dev)
7549+
return;
7550+
7551+
info.addr = mac;
7552+
info.vid = 0;
7553+
call_switchdev_notifiers(SWITCHDEV_FDB_DEL_TO_BRIDGE, dev, &info.info,
7554+
NULL);
7555+
}
7556+
7557+
static const struct mlxsw_sp_rif_ops mlxsw_sp_rif_fid_ops = {
7558+
.type = MLXSW_SP_RIF_TYPE_FID,
7559+
.rif_size = sizeof(struct mlxsw_sp_rif),
7560+
.configure = mlxsw_sp_rif_fid_configure,
7561+
.deconfigure = mlxsw_sp_rif_fid_deconfigure,
7562+
.fid_get = mlxsw_sp_rif_fid_fid_get,
7563+
.fdb_del = mlxsw_sp_rif_fid_fdb_del,
7564+
};
7565+
75347566
static struct mlxsw_sp_fid *
75357567
mlxsw_sp_rif_vlan_fid_get(struct mlxsw_sp_rif *rif,
75367568
struct netlink_ext_ack *extack)
@@ -7573,103 +7605,6 @@ static void mlxsw_sp_rif_vlan_fdb_del(struct mlxsw_sp_rif *rif, const char *mac)
75737605
NULL);
75747606
}
75757607

7576-
static const struct mlxsw_sp_rif_ops mlxsw_sp_rif_vlan_ops = {
7577-
.type = MLXSW_SP_RIF_TYPE_VLAN,
7578-
.rif_size = sizeof(struct mlxsw_sp_rif),
7579-
.configure = mlxsw_sp_rif_vlan_configure,
7580-
.deconfigure = mlxsw_sp_rif_vlan_deconfigure,
7581-
.fid_get = mlxsw_sp_rif_vlan_fid_get,
7582-
.fdb_del = mlxsw_sp_rif_vlan_fdb_del,
7583-
};
7584-
7585-
static int mlxsw_sp_rif_fid_configure(struct mlxsw_sp_rif *rif)
7586-
{
7587-
struct mlxsw_sp *mlxsw_sp = rif->mlxsw_sp;
7588-
u16 fid_index = mlxsw_sp_fid_index(rif->fid);
7589-
int err;
7590-
7591-
err = mlxsw_sp_rif_vlan_fid_op(rif, MLXSW_REG_RITR_FID_IF, fid_index,
7592-
true);
7593-
if (err)
7594-
return err;
7595-
7596-
err = mlxsw_sp_fid_flood_set(rif->fid, MLXSW_SP_FLOOD_TYPE_MC,
7597-
mlxsw_sp_router_port(mlxsw_sp), true);
7598-
if (err)
7599-
goto err_fid_mc_flood_set;
7600-
7601-
err = mlxsw_sp_fid_flood_set(rif->fid, MLXSW_SP_FLOOD_TYPE_BC,
7602-
mlxsw_sp_router_port(mlxsw_sp), true);
7603-
if (err)
7604-
goto err_fid_bc_flood_set;
7605-
7606-
err = mlxsw_sp_rif_fdb_op(rif->mlxsw_sp, rif->dev->dev_addr,
7607-
mlxsw_sp_fid_index(rif->fid), true);
7608-
if (err)
7609-
goto err_rif_fdb_op;
7610-
7611-
mlxsw_sp_fid_rif_set(rif->fid, rif);
7612-
return 0;
7613-
7614-
err_rif_fdb_op:
7615-
mlxsw_sp_fid_flood_set(rif->fid, MLXSW_SP_FLOOD_TYPE_BC,
7616-
mlxsw_sp_router_port(mlxsw_sp), false);
7617-
err_fid_bc_flood_set:
7618-
mlxsw_sp_fid_flood_set(rif->fid, MLXSW_SP_FLOOD_TYPE_MC,
7619-
mlxsw_sp_router_port(mlxsw_sp), false);
7620-
err_fid_mc_flood_set:
7621-
mlxsw_sp_rif_vlan_fid_op(rif, MLXSW_REG_RITR_FID_IF, fid_index, false);
7622-
return err;
7623-
}
7624-
7625-
static void mlxsw_sp_rif_fid_deconfigure(struct mlxsw_sp_rif *rif)
7626-
{
7627-
u16 fid_index = mlxsw_sp_fid_index(rif->fid);
7628-
struct mlxsw_sp *mlxsw_sp = rif->mlxsw_sp;
7629-
struct mlxsw_sp_fid *fid = rif->fid;
7630-
7631-
mlxsw_sp_fid_rif_set(fid, NULL);
7632-
mlxsw_sp_rif_fdb_op(rif->mlxsw_sp, rif->dev->dev_addr,
7633-
mlxsw_sp_fid_index(fid), false);
7634-
mlxsw_sp_rif_macvlan_flush(rif);
7635-
mlxsw_sp_fid_flood_set(rif->fid, MLXSW_SP_FLOOD_TYPE_BC,
7636-
mlxsw_sp_router_port(mlxsw_sp), false);
7637-
mlxsw_sp_fid_flood_set(rif->fid, MLXSW_SP_FLOOD_TYPE_MC,
7638-
mlxsw_sp_router_port(mlxsw_sp), false);
7639-
mlxsw_sp_rif_vlan_fid_op(rif, MLXSW_REG_RITR_FID_IF, fid_index, false);
7640-
}
7641-
7642-
static struct mlxsw_sp_fid *
7643-
mlxsw_sp_rif_fid_fid_get(struct mlxsw_sp_rif *rif,
7644-
struct netlink_ext_ack *extack)
7645-
{
7646-
return mlxsw_sp_fid_8021d_get(rif->mlxsw_sp, rif->dev->ifindex);
7647-
}
7648-
7649-
static void mlxsw_sp_rif_fid_fdb_del(struct mlxsw_sp_rif *rif, const char *mac)
7650-
{
7651-
struct switchdev_notifier_fdb_info info;
7652-
struct net_device *dev;
7653-
7654-
dev = br_fdb_find_port(rif->dev, mac, 0);
7655-
if (!dev)
7656-
return;
7657-
7658-
info.addr = mac;
7659-
info.vid = 0;
7660-
call_switchdev_notifiers(SWITCHDEV_FDB_DEL_TO_BRIDGE, dev, &info.info,
7661-
NULL);
7662-
}
7663-
7664-
static const struct mlxsw_sp_rif_ops mlxsw_sp_rif_fid_ops = {
7665-
.type = MLXSW_SP_RIF_TYPE_FID,
7666-
.rif_size = sizeof(struct mlxsw_sp_rif),
7667-
.configure = mlxsw_sp_rif_fid_configure,
7668-
.deconfigure = mlxsw_sp_rif_fid_deconfigure,
7669-
.fid_get = mlxsw_sp_rif_fid_fid_get,
7670-
.fdb_del = mlxsw_sp_rif_fid_fdb_del,
7671-
};
7672-
76737608
static const struct mlxsw_sp_rif_ops mlxsw_sp_rif_vlan_emu_ops = {
76747609
.type = MLXSW_SP_RIF_TYPE_VLAN,
76757610
.rif_size = sizeof(struct mlxsw_sp_rif),

0 commit comments

Comments
 (0)