Skip to content

Commit 55c4bf4

Browse files
committed
Merge tag 'mlx5-fixes-2022-03-09' of git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux
Saeed Mahameed says: ==================== mlx5 fixes 2022-03-09 This series provides bug fixes to mlx5 driver. * tag 'mlx5-fixes-2022-03-09' of git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux: net/mlx5e: SHAMPO, reduce TIR indication net/mlx5e: Lag, Only handle events from highest priority multipath entry net/mlx5: Fix offloading with ESWITCH_IPV4_TTL_MODIFY_ENABLE net/mlx5: Fix a race on command flush flow net/mlx5: Fix size field in bufferx_reg struct ==================== Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Jakub Kicinski <[email protected]>
2 parents 37c9d66 + 99a2b9b commit 55c4bf4

File tree

6 files changed

+19
-21
lines changed

6 files changed

+19
-21
lines changed

drivers/net/ethernet/mellanox/mlx5/core/cmd.c

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -131,11 +131,8 @@ static int cmd_alloc_index(struct mlx5_cmd *cmd)
131131

132132
static void cmd_free_index(struct mlx5_cmd *cmd, int idx)
133133
{
134-
unsigned long flags;
135-
136-
spin_lock_irqsave(&cmd->alloc_lock, flags);
134+
lockdep_assert_held(&cmd->alloc_lock);
137135
set_bit(idx, &cmd->bitmask);
138-
spin_unlock_irqrestore(&cmd->alloc_lock, flags);
139136
}
140137

141138
static void cmd_ent_get(struct mlx5_cmd_work_ent *ent)
@@ -145,17 +142,21 @@ static void cmd_ent_get(struct mlx5_cmd_work_ent *ent)
145142

146143
static void cmd_ent_put(struct mlx5_cmd_work_ent *ent)
147144
{
145+
struct mlx5_cmd *cmd = ent->cmd;
146+
unsigned long flags;
147+
148+
spin_lock_irqsave(&cmd->alloc_lock, flags);
148149
if (!refcount_dec_and_test(&ent->refcnt))
149-
return;
150+
goto out;
150151

151152
if (ent->idx >= 0) {
152-
struct mlx5_cmd *cmd = ent->cmd;
153-
154153
cmd_free_index(cmd, ent->idx);
155154
up(ent->page_queue ? &cmd->pages_sem : &cmd->sem);
156155
}
157156

158157
cmd_free_ent(ent);
158+
out:
159+
spin_unlock_irqrestore(&cmd->alloc_lock, flags);
159160
}
160161

161162
static struct mlx5_cmd_layout *get_inst(struct mlx5_cmd *cmd, int idx)

drivers/net/ethernet/mellanox/mlx5/core/en/tir.c

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,6 @@ void mlx5e_tir_builder_build_packet_merge(struct mlx5e_tir_builder *builder,
8888
(MLX5E_PARAMS_DEFAULT_LRO_WQE_SZ - rough_max_l2_l3_hdr_sz) >> 8);
8989
MLX5_SET(tirc, tirc, lro_timeout_period_usecs, pkt_merge_param->timeout);
9090
break;
91-
case MLX5E_PACKET_MERGE_SHAMPO:
92-
MLX5_SET(tirc, tirc, packet_merge_mask, MLX5_TIRC_PACKET_MERGE_MASK_SHAMPO);
93-
break;
9491
default:
9592
break;
9693
}

drivers/net/ethernet/mellanox/mlx5/core/en_main.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3616,8 +3616,7 @@ static int set_feature_hw_gro(struct net_device *netdev, bool enable)
36163616
goto out;
36173617
}
36183618

3619-
err = mlx5e_safe_switch_params(priv, &new_params,
3620-
mlx5e_modify_tirs_packet_merge_ctx, NULL, reset);
3619+
err = mlx5e_safe_switch_params(priv, &new_params, NULL, NULL, reset);
36213620
out:
36223621
mutex_unlock(&priv->state_lock);
36233622
return err;

drivers/net/ethernet/mellanox/mlx5/core/lag/mp.c

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,10 @@ static void mlx5_lag_fib_route_event(struct mlx5_lag *ldev,
126126
return;
127127
}
128128

129+
/* Handle multipath entry with lower priority value */
130+
if (mp->mfi && mp->mfi != fi && fi->fib_priority >= mp->mfi->fib_priority)
131+
return;
132+
129133
/* Handle add/replace event */
130134
nhs = fib_info_num_path(fi);
131135
if (nhs == 1) {
@@ -135,12 +139,13 @@ static void mlx5_lag_fib_route_event(struct mlx5_lag *ldev,
135139
int i = mlx5_lag_dev_get_netdev_idx(ldev, nh_dev);
136140

137141
if (i < 0)
138-
i = MLX5_LAG_NORMAL_AFFINITY;
139-
else
140-
++i;
142+
return;
141143

144+
i++;
142145
mlx5_lag_set_port_affinity(ldev, i);
143146
}
147+
148+
mp->mfi = fi;
144149
return;
145150
}
146151

drivers/net/ethernet/mellanox/mlx5/core/lib/fs_chains.c

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -121,9 +121,6 @@ u32 mlx5_chains_get_nf_ft_chain(struct mlx5_fs_chains *chains)
121121

122122
u32 mlx5_chains_get_prio_range(struct mlx5_fs_chains *chains)
123123
{
124-
if (!mlx5_chains_prios_supported(chains))
125-
return 1;
126-
127124
if (mlx5_chains_ignore_flow_level_supported(chains))
128125
return UINT_MAX;
129126

include/linux/mlx5/mlx5_ifc.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3434,7 +3434,6 @@ enum {
34343434
enum {
34353435
MLX5_TIRC_PACKET_MERGE_MASK_IPV4_LRO = BIT(0),
34363436
MLX5_TIRC_PACKET_MERGE_MASK_IPV6_LRO = BIT(1),
3437-
MLX5_TIRC_PACKET_MERGE_MASK_SHAMPO = BIT(2),
34383437
};
34393438

34403439
enum {
@@ -9900,8 +9899,8 @@ struct mlx5_ifc_bufferx_reg_bits {
99009899
u8 reserved_at_0[0x6];
99019900
u8 lossy[0x1];
99029901
u8 epsb[0x1];
9903-
u8 reserved_at_8[0xc];
9904-
u8 size[0xc];
9902+
u8 reserved_at_8[0x8];
9903+
u8 size[0x10];
99059904

99069905
u8 xoff_threshold[0x10];
99079906
u8 xon_threshold[0x10];

0 commit comments

Comments
 (0)