Skip to content

Commit 5374a50

Browse files
pmachatadavem330
authored andcommitted
mlxsw: Convert does-RIF-have-this-netdev queries to a dedicated helper
In a number of places, a netdevice underlying a RIF is obtained only to compare it to another pointer. In order to clean up the interface between the router and the other modules, add a new helper to specifically answer this question, and convert the relevant uses to this new interface. Signed-off-by: Petr Machata <petrm@nvidia.com> Reviewed-by: Amit Cohen <amcohen@nvidia.com> Reviewed-by: Simon Horman <simon.horman@corigine.com> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 0255f74 commit 5374a50

3 files changed

Lines changed: 14 additions & 9 deletions

File tree

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

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -704,26 +704,25 @@ void mlxsw_sp_mr_vif_del(struct mlxsw_sp_mr_table *mr_table, vifi_t vif_index)
704704

705705
static struct mlxsw_sp_mr_vif *
706706
mlxsw_sp_mr_dev_vif_lookup(struct mlxsw_sp_mr_table *mr_table,
707-
const struct net_device *dev)
707+
const struct mlxsw_sp_rif *rif)
708708
{
709709
vifi_t vif_index;
710710

711711
for (vif_index = 0; vif_index < MAXVIFS; vif_index++)
712-
if (mr_table->vifs[vif_index].dev == dev)
712+
if (mlxsw_sp_rif_dev_is(rif, mr_table->vifs[vif_index].dev))
713713
return &mr_table->vifs[vif_index];
714714
return NULL;
715715
}
716716

717717
int mlxsw_sp_mr_rif_add(struct mlxsw_sp_mr_table *mr_table,
718718
const struct mlxsw_sp_rif *rif)
719719
{
720-
const struct net_device *rif_dev = mlxsw_sp_rif_dev(rif);
721720
struct mlxsw_sp_mr_vif *mr_vif;
722721

723722
if (!mlxsw_sp_rif_has_dev(rif))
724723
return 0;
725724

726-
mr_vif = mlxsw_sp_mr_dev_vif_lookup(mr_table, rif_dev);
725+
mr_vif = mlxsw_sp_mr_dev_vif_lookup(mr_table, rif);
727726
if (!mr_vif)
728727
return 0;
729728
return mlxsw_sp_mr_vif_resolve(mr_table, mr_vif->dev, mr_vif,
@@ -733,13 +732,12 @@ int mlxsw_sp_mr_rif_add(struct mlxsw_sp_mr_table *mr_table,
733732
void mlxsw_sp_mr_rif_del(struct mlxsw_sp_mr_table *mr_table,
734733
const struct mlxsw_sp_rif *rif)
735734
{
736-
const struct net_device *rif_dev = mlxsw_sp_rif_dev(rif);
737735
struct mlxsw_sp_mr_vif *mr_vif;
738736

739737
if (!mlxsw_sp_rif_has_dev(rif))
740738
return;
741739

742-
mr_vif = mlxsw_sp_mr_dev_vif_lookup(mr_table, rif_dev);
740+
mr_vif = mlxsw_sp_mr_dev_vif_lookup(mr_table, rif);
743741
if (!mr_vif)
744742
return;
745743
mlxsw_sp_mr_vif_unresolve(mr_table, mr_vif->dev, mr_vif);
@@ -748,7 +746,6 @@ void mlxsw_sp_mr_rif_del(struct mlxsw_sp_mr_table *mr_table,
748746
void mlxsw_sp_mr_rif_mtu_update(struct mlxsw_sp_mr_table *mr_table,
749747
const struct mlxsw_sp_rif *rif, int mtu)
750748
{
751-
const struct net_device *rif_dev = mlxsw_sp_rif_dev(rif);
752749
struct mlxsw_sp *mlxsw_sp = mr_table->mlxsw_sp;
753750
struct mlxsw_sp_mr_route_vif_entry *rve;
754751
struct mlxsw_sp_mr *mr = mlxsw_sp->mr;
@@ -758,7 +755,7 @@ void mlxsw_sp_mr_rif_mtu_update(struct mlxsw_sp_mr_table *mr_table,
758755
return;
759756

760757
/* Search for a VIF that use that RIF */
761-
mr_vif = mlxsw_sp_mr_dev_vif_lookup(mr_table, rif_dev);
758+
mr_vif = mlxsw_sp_mr_dev_vif_lookup(mr_table, rif);
762759
if (!mr_vif)
763760
return;
764761

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7705,7 +7705,7 @@ mlxsw_sp_rif_find_by_dev(const struct mlxsw_sp *mlxsw_sp,
77057705

77067706
for (i = 0; i < max_rifs; i++)
77077707
if (mlxsw_sp->router->rifs[i] &&
7708-
mlxsw_sp->router->rifs[i]->dev == dev)
7708+
mlxsw_sp_rif_dev_is(mlxsw_sp->router->rifs[i], dev))
77097709
return mlxsw_sp->router->rifs[i];
77107710

77117711
return NULL;
@@ -8085,6 +8085,12 @@ bool mlxsw_sp_rif_has_dev(const struct mlxsw_sp_rif *rif)
80858085
return !!mlxsw_sp_rif_dev(rif);
80868086
}
80878087

8088+
bool mlxsw_sp_rif_dev_is(const struct mlxsw_sp_rif *rif,
8089+
const struct net_device *dev)
8090+
{
8091+
return mlxsw_sp_rif_dev(rif) == dev;
8092+
}
8093+
80888094
static void mlxsw_sp_rif_push_l3_stats(struct mlxsw_sp_rif *rif)
80898095
{
80908096
struct rtnl_hw_stats64 stats = {};

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,8 @@ u32 mlxsw_sp_ipip_dev_ul_tb_id(const struct net_device *ol_dev);
9595
int mlxsw_sp_rif_dev_ifindex(const struct mlxsw_sp_rif *rif);
9696
const struct net_device *mlxsw_sp_rif_dev(const struct mlxsw_sp_rif *rif);
9797
bool mlxsw_sp_rif_has_dev(const struct mlxsw_sp_rif *rif);
98+
bool mlxsw_sp_rif_dev_is(const struct mlxsw_sp_rif *rif,
99+
const struct net_device *dev);
98100
int mlxsw_sp_rif_counter_value_get(struct mlxsw_sp *mlxsw_sp,
99101
struct mlxsw_sp_rif *rif,
100102
enum mlxsw_sp_rif_counter_dir dir,

0 commit comments

Comments
 (0)