mlxsw: spectrum_router: Consolidate nexthop helpers
authorIdo Schimmel <idosch@nvidia.com>
Mon, 22 Mar 2021 15:58:43 +0000 (17:58 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 22 Mar 2021 20:45:46 +0000 (13:45 -0700)
The helper mlxsw_sp_nexthop_offload() is actually interested in finding
out if the nexthop is both written to the adjacency table and forwarding
packets (as opposed to discarding them).

Rename it to mlxsw_sp_nexthop_is_forward() and remove
mlxsw_sp_nexthop_is_discard().

Signed-off-by: Ido Schimmel <idosch@nvidia.com>
Reviewed-by: Petr Machata <petrm@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.h

index ed81d4f..936224d 100644 (file)
@@ -912,9 +912,8 @@ static u64 mlxsw_sp_dpipe_table_adj_size(struct mlxsw_sp *mlxsw_sp)
        u64 size = 0;
 
        mlxsw_sp_nexthop_for_each(nh, mlxsw_sp->router)
-               if (mlxsw_sp_nexthop_offload(nh) &&
-                   !mlxsw_sp_nexthop_group_has_ipip(nh) &&
-                   !mlxsw_sp_nexthop_is_discard(nh))
+               if (mlxsw_sp_nexthop_is_forward(nh) &&
+                   !mlxsw_sp_nexthop_group_has_ipip(nh))
                        size++;
        return size;
 }
@@ -1105,9 +1104,8 @@ start_again:
        nh_skip = nh_count;
        nh_count = 0;
        mlxsw_sp_nexthop_for_each(nh, mlxsw_sp->router) {
-               if (!mlxsw_sp_nexthop_offload(nh) ||
-                   mlxsw_sp_nexthop_group_has_ipip(nh) ||
-                   mlxsw_sp_nexthop_is_discard(nh))
+               if (!mlxsw_sp_nexthop_is_forward(nh) ||
+                   mlxsw_sp_nexthop_group_has_ipip(nh))
                        continue;
 
                if (nh_count < nh_skip)
@@ -1187,9 +1185,8 @@ static int mlxsw_sp_dpipe_table_adj_counters_update(void *priv, bool enable)
        u32 adj_size = 0;
 
        mlxsw_sp_nexthop_for_each(nh, mlxsw_sp->router) {
-               if (!mlxsw_sp_nexthop_offload(nh) ||
-                   mlxsw_sp_nexthop_group_has_ipip(nh) ||
-                   mlxsw_sp_nexthop_is_discard(nh))
+               if (!mlxsw_sp_nexthop_is_forward(nh) ||
+                   mlxsw_sp_nexthop_group_has_ipip(nh))
                        continue;
 
                mlxsw_sp_nexthop_indexes(nh, &adj_index, &adj_size,
index 0e0b40e..593a40a 100644 (file)
@@ -2979,9 +2979,9 @@ struct mlxsw_sp_nexthop *mlxsw_sp_nexthop_next(struct mlxsw_sp_router *router,
        return list_next_entry(nh, router_list_node);
 }
 
-bool mlxsw_sp_nexthop_offload(struct mlxsw_sp_nexthop *nh)
+bool mlxsw_sp_nexthop_is_forward(const struct mlxsw_sp_nexthop *nh)
 {
-       return nh->offloaded;
+       return nh->offloaded && !nh->discard;
 }
 
 unsigned char *mlxsw_sp_nexthop_ha(struct mlxsw_sp_nexthop *nh)
@@ -3036,11 +3036,6 @@ bool mlxsw_sp_nexthop_group_has_ipip(struct mlxsw_sp_nexthop *nh)
        return false;
 }
 
-bool mlxsw_sp_nexthop_is_discard(const struct mlxsw_sp_nexthop *nh)
-{
-       return nh->discard;
-}
-
 static const struct rhashtable_params mlxsw_sp_nexthop_group_vr_ht_params = {
        .key_offset = offsetof(struct mlxsw_sp_nexthop_group_vr_entry, key),
        .head_offset = offsetof(struct mlxsw_sp_nexthop_group_vr_entry, ht_node),
index 2875ee8..8ecd090 100644 (file)
@@ -195,13 +195,12 @@ mlxsw_sp_ipip_demote_tunnel_by_saddr(struct mlxsw_sp *mlxsw_sp,
                                     const struct mlxsw_sp_ipip_entry *except);
 struct mlxsw_sp_nexthop *mlxsw_sp_nexthop_next(struct mlxsw_sp_router *router,
                                               struct mlxsw_sp_nexthop *nh);
-bool mlxsw_sp_nexthop_offload(struct mlxsw_sp_nexthop *nh);
+bool mlxsw_sp_nexthop_is_forward(const struct mlxsw_sp_nexthop *nh);
 unsigned char *mlxsw_sp_nexthop_ha(struct mlxsw_sp_nexthop *nh);
 int mlxsw_sp_nexthop_indexes(struct mlxsw_sp_nexthop *nh, u32 *p_adj_index,
                             u32 *p_adj_size, u32 *p_adj_hash_index);
 struct mlxsw_sp_rif *mlxsw_sp_nexthop_rif(struct mlxsw_sp_nexthop *nh);
 bool mlxsw_sp_nexthop_group_has_ipip(struct mlxsw_sp_nexthop *nh);
-bool mlxsw_sp_nexthop_is_discard(const struct mlxsw_sp_nexthop *nh);
 #define mlxsw_sp_nexthop_for_each(nh, router)                          \
        for (nh = mlxsw_sp_nexthop_next(router, NULL); nh;              \
             nh = mlxsw_sp_nexthop_next(router, nh))