Skip to content

Commit e9bbd60

Browse files
committed
Merge tag 'mlx5-fixes-2023-08-16' of git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux
Saeed Mahameed says: ==================== mlx5 fixes 2023-08-16 This series provides bug fixes to mlx5 driver. * tag 'mlx5-fixes-2023-08-16' of git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux: net/mlx5: Fix mlx5_cmd_update_root_ft() error flow net/mlx5e: XDP, Fix fifo overrun on XDP_REDIRECT ==================== Link: https://lore.kernel.org/r/20230816204108.53819-1-saeed@kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2 parents 43d00e1 + 0fd23db commit e9bbd60

File tree

3 files changed

+16
-4
lines changed

3 files changed

+16
-4
lines changed

drivers/net/ethernet/mellanox/mlx5/core/en/xdp.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,8 @@ enum mlx5e_xdp_xmit_mode {
8484
* MLX5E_XDP_XMIT_MODE_XSK:
8585
* none.
8686
*/
87+
#define MLX5E_XDP_FIFO_ENTRIES2DS_MAX_RATIO 4
88+
8789
union mlx5e_xdp_info {
8890
enum mlx5e_xdp_xmit_mode mode;
8991
union {

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

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1298,11 +1298,13 @@ static int mlx5e_alloc_xdpsq_fifo(struct mlx5e_xdpsq *sq, int numa)
12981298
{
12991299
struct mlx5e_xdp_info_fifo *xdpi_fifo = &sq->db.xdpi_fifo;
13001300
int wq_sz = mlx5_wq_cyc_get_size(&sq->wq);
1301-
int entries = wq_sz * MLX5_SEND_WQEBB_NUM_DS * 2; /* upper bound for maximum num of
1302-
* entries of all xmit_modes.
1303-
*/
1301+
int entries;
13041302
size_t size;
13051303

1304+
/* upper bound for maximum num of entries of all xmit_modes. */
1305+
entries = roundup_pow_of_two(wq_sz * MLX5_SEND_WQEBB_NUM_DS *
1306+
MLX5E_XDP_FIFO_ENTRIES2DS_MAX_RATIO);
1307+
13061308
size = array_size(sizeof(*xdpi_fifo->xi), entries);
13071309
xdpi_fifo->xi = kvzalloc_node(size, GFP_KERNEL, numa);
13081310
if (!xdpi_fifo->xi)

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

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,12 +245,20 @@ static int mlx5_cmd_update_root_ft(struct mlx5_flow_root_namespace *ns,
245245
mlx5_lag_is_shared_fdb(dev) &&
246246
mlx5_lag_is_master(dev)) {
247247
struct mlx5_core_dev *peer_dev;
248-
int i;
248+
int i, j;
249249

250250
mlx5_lag_for_each_peer_mdev(dev, peer_dev, i) {
251251
err = mlx5_cmd_set_slave_root_fdb(dev, peer_dev, !disconnect,
252252
(!disconnect) ? ft->id : 0);
253253
if (err && !disconnect) {
254+
mlx5_lag_for_each_peer_mdev(dev, peer_dev, j) {
255+
if (j < i)
256+
mlx5_cmd_set_slave_root_fdb(dev, peer_dev, 1,
257+
ns->root_ft->id);
258+
else
259+
break;
260+
}
261+
254262
MLX5_SET(set_flow_table_root_in, in, op_mod, 0);
255263
MLX5_SET(set_flow_table_root_in, in, table_id,
256264
ns->root_ft->id);

0 commit comments

Comments
 (0)