Skip to content

Commit 1b78236

Browse files
committed
Merge branch 'mlx5-misx-fixes-2025-08-20'
Mark Bloch says: ==================== mlx5 misx fixes 2025-08-20 This patchset provides misc bug fixes from the team to the mlx5 core and Eth drivers. v1: https://lore.kernel.org/[email protected] ==================== Link: https://patch.msgid.link/[email protected] Signed-off-by: Jakub Kicinski <[email protected]>
2 parents 7ef3538 + 8b0587a commit 1b78236

File tree

8 files changed

+140
-105
lines changed

8 files changed

+140
-105
lines changed

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ struct mlx5e_dcbx {
2626
u8 cap;
2727

2828
/* Buffer configuration */
29-
bool manual_buffer;
3029
u32 cable_len;
3130
u32 xoff;
3231
u16 port_buff_cell_sz;

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

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -272,8 +272,8 @@ static int port_update_shared_buffer(struct mlx5_core_dev *mdev,
272272
/* Total shared buffer size is split in a ratio of 3:1 between
273273
* lossy and lossless pools respectively.
274274
*/
275-
lossy_epool_size = (shared_buffer_size / 4) * 3;
276275
lossless_ipool_size = shared_buffer_size / 4;
276+
lossy_epool_size = shared_buffer_size - lossless_ipool_size;
277277

278278
mlx5e_port_set_sbpr(mdev, 0, MLX5_EGRESS_DIR, MLX5_LOSSY_POOL, 0,
279279
lossy_epool_size);
@@ -288,14 +288,12 @@ static int port_set_buffer(struct mlx5e_priv *priv,
288288
u16 port_buff_cell_sz = priv->dcbx.port_buff_cell_sz;
289289
struct mlx5_core_dev *mdev = priv->mdev;
290290
int sz = MLX5_ST_SZ_BYTES(pbmc_reg);
291-
u32 new_headroom_size = 0;
292-
u32 current_headroom_size;
291+
u32 current_headroom_cells = 0;
292+
u32 new_headroom_cells = 0;
293293
void *in;
294294
int err;
295295
int i;
296296

297-
current_headroom_size = port_buffer->headroom_size;
298-
299297
in = kzalloc(sz, GFP_KERNEL);
300298
if (!in)
301299
return -ENOMEM;
@@ -306,12 +304,14 @@ static int port_set_buffer(struct mlx5e_priv *priv,
306304

307305
for (i = 0; i < MLX5E_MAX_NETWORK_BUFFER; i++) {
308306
void *buffer = MLX5_ADDR_OF(pbmc_reg, in, buffer[i]);
307+
current_headroom_cells += MLX5_GET(bufferx_reg, buffer, size);
308+
309309
u64 size = port_buffer->buffer[i].size;
310310
u64 xoff = port_buffer->buffer[i].xoff;
311311
u64 xon = port_buffer->buffer[i].xon;
312312

313-
new_headroom_size += size;
314313
do_div(size, port_buff_cell_sz);
314+
new_headroom_cells += size;
315315
do_div(xoff, port_buff_cell_sz);
316316
do_div(xon, port_buff_cell_sz);
317317
MLX5_SET(bufferx_reg, buffer, size, size);
@@ -320,10 +320,8 @@ static int port_set_buffer(struct mlx5e_priv *priv,
320320
MLX5_SET(bufferx_reg, buffer, xon_threshold, xon);
321321
}
322322

323-
new_headroom_size /= port_buff_cell_sz;
324-
current_headroom_size /= port_buff_cell_sz;
325-
err = port_update_shared_buffer(priv->mdev, current_headroom_size,
326-
new_headroom_size);
323+
err = port_update_shared_buffer(priv->mdev, current_headroom_cells,
324+
new_headroom_cells);
327325
if (err)
328326
goto out;
329327

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

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -362,6 +362,7 @@ static int mlx5e_dcbnl_ieee_getpfc(struct net_device *dev,
362362
static int mlx5e_dcbnl_ieee_setpfc(struct net_device *dev,
363363
struct ieee_pfc *pfc)
364364
{
365+
u8 buffer_ownership = MLX5_BUF_OWNERSHIP_UNKNOWN;
365366
struct mlx5e_priv *priv = netdev_priv(dev);
366367
struct mlx5_core_dev *mdev = priv->mdev;
367368
u32 old_cable_len = priv->dcbx.cable_len;
@@ -389,7 +390,14 @@ static int mlx5e_dcbnl_ieee_setpfc(struct net_device *dev,
389390

390391
if (MLX5_BUFFER_SUPPORTED(mdev)) {
391392
pfc_new.pfc_en = (changed & MLX5E_PORT_BUFFER_PFC) ? pfc->pfc_en : curr_pfc_en;
392-
if (priv->dcbx.manual_buffer)
393+
ret = mlx5_query_port_buffer_ownership(mdev,
394+
&buffer_ownership);
395+
if (ret)
396+
netdev_err(dev,
397+
"%s, Failed to get buffer ownership: %d\n",
398+
__func__, ret);
399+
400+
if (buffer_ownership == MLX5_BUF_OWNERSHIP_SW_OWNED)
393401
ret = mlx5e_port_manual_buffer_config(priv, changed,
394402
dev->mtu, &pfc_new,
395403
NULL, NULL);
@@ -982,7 +990,6 @@ static int mlx5e_dcbnl_setbuffer(struct net_device *dev,
982990
if (!changed)
983991
return 0;
984992

985-
priv->dcbx.manual_buffer = true;
986993
err = mlx5e_port_manual_buffer_config(priv, changed, dev->mtu, NULL,
987994
buffer_size, prio2buffer);
988995
return err;
@@ -1252,7 +1259,6 @@ void mlx5e_dcbnl_initialize(struct mlx5e_priv *priv)
12521259
priv->dcbx.cap |= DCB_CAP_DCBX_HOST;
12531260

12541261
priv->dcbx.port_buff_cell_sz = mlx5e_query_port_buffers_cell_size(priv);
1255-
priv->dcbx.manual_buffer = false;
12561262
priv->dcbx.cable_len = MLX5E_DEFAULT_CABLE_LEN;
12571263

12581264
mlx5e_ets_init(priv);

drivers/net/ethernet/mellanox/mlx5/core/esw/devlink_port.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,12 @@ static void mlx5_esw_offloads_pf_vf_devlink_port_attrs_set(struct mlx5_eswitch *
4747
devlink_port_attrs_pci_vf_set(dl_port, controller_num, pfnum,
4848
vport_num - 1, external);
4949
} else if (mlx5_core_is_ec_vf_vport(esw->dev, vport_num)) {
50+
u16 base_vport = mlx5_core_ec_vf_vport_base(dev);
51+
5052
memcpy(dl_port->attrs.switch_id.id, ppid.id, ppid.id_len);
5153
dl_port->attrs.switch_id.id_len = ppid.id_len;
5254
devlink_port_attrs_pci_vf_set(dl_port, 0, pfnum,
53-
vport_num - 1, false);
55+
vport_num - base_vport, false);
5456
}
5557
}
5658

0 commit comments

Comments
 (0)