Re: [PATCH net 4/5] net/mlx5e: Fix wraparound in rate limiting for values above 255 Gbps

From: Gal Pressman

Date: Sun Nov 23 2025 - 02:05:11 EST


On 20/11/2025 23:42, Danielle Costantino wrote:
> On Sun, Nov 9, 2025 at 11:37:52AM +0200, Gal Pressman wrote:
>> Add validation to reject rates exceeding 255 Gbps that would overflow
>> the 8 bits max bandwidth field.
>
> Hi Gal, Tariq, Paolo,
>
> While reviewing this commit (43b27d1bd88a) for backporting, I believe
> I've found a logic error in the validation condition.
>
> The issue is on line 617:
>
> } else if (max_bw_value[i] <= upper_limit_gbps) {
> max_bw_value[i] = div_u64(maxrate->tc_maxrate[i], MLX5E_1GB);
> max_bw_unit[i] = MLX5_GBPS_UNIT;
>
> Suggested fix:
> --------------
> diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_dcbnl.c b/drivers/net/ethernet/mellanox/mlx5/core/en_dcbnl.c
> index d88a48210fdc..XXXXXXXX 100644
> --- a/drivers/net/ethernet/mellanox/mlx5/core/en_dcbnl.c
> +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_dcbnl.c
> @@ -614,7 +614,7 @@ static int mlx5e_dcbnl_ieee_setmaxrate(struct net_device *netdev,
> MLX5E_100MB);
> max_bw_value[i] = max_bw_value[i] ? max_bw_value[i] : 1;
> max_bw_unit[i] = MLX5_100_MBPS_UNIT;
> - } else if (max_bw_value[i] <= upper_limit_gbps) {
> + } else if (maxrate->tc_maxrate[i] <= upper_limit_gbps) {
> max_bw_value[i] = div_u64(maxrate->tc_maxrate[i],
> MLX5E_1GB);
> max_bw_unit[i] = MLX5_GBPS_UNIT;
>
> Let me know if you'd like me to send a formal patch for this.

Hi Danielle,
Your fix is correct, please submit a patch.

Thanks for catching this!