]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
net/mlx5e: Clear Read-Only port buffer size in PBMC before update
authorAlexei Lazar <alazar@nvidia.com>
Wed, 23 Jul 2025 07:44:30 +0000 (10:44 +0300)
committerJakub Kicinski <kuba@kernel.org>
Fri, 25 Jul 2025 18:00:17 +0000 (11:00 -0700)
When updating the PBMC register, we read its current value,
modify desired fields, then write it back.

The port_buffer_size field within PBMC is Read-Only (RO).
If this RO field contains a non-zero value when read,
attempting to write it back will cause the entire PBMC
register update to fail.

This commit ensures port_buffer_size is explicitly cleared
to zero after reading the PBMC register but before writing
back the modified value.
This allows updates to other fields in the PBMC register to succeed.

Fixes: 0696d60853d5 ("net/mlx5e: Receive buffer configuration")
Signed-off-by: Alexei Lazar <alazar@nvidia.com>
Reviewed-by: Yael Chemla <ychemla@nvidia.com>
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
Link: https://patch.msgid.link/1753256672-337784-2-git-send-email-tariqt@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/mellanox/mlx5/core/en/port_buffer.c

index 8e25f4ef5cccee6147db730c8eabf263f0d406de..5ae787656a7ca0f492c597f154af09cc4f574124 100644 (file)
@@ -331,6 +331,9 @@ static int port_set_buffer(struct mlx5e_priv *priv,
        if (err)
                goto out;
 
+       /* RO bits should be set to 0 on write */
+       MLX5_SET(pbmc_reg, in, port_buffer_size, 0);
+
        err = mlx5e_port_set_pbmc(mdev, in);
 out:
        kfree(in);