net/mlx5e: Fix division by 0 in mlx5e_select_queue for representors
authorMaxim Mikityanskiy <maximmi@nvidia.com>
Mon, 11 Oct 2021 15:39:35 +0000 (18:39 +0300)
committerSaeed Mahameed <saeedm@nvidia.com>
Tue, 12 Oct 2021 20:52:03 +0000 (13:52 -0700)
Commit 846d6da1fcdb ("net/mlx5e: Fix division by 0 in
mlx5e_select_queue") makes mlx5e_build_nic_params assign a non-zero
initial value to priv->num_tc_x_num_ch, so that mlx5e_select_queue
doesn't fail with division by 0 if called before the first activation of
channels. However, the initialization flow of representors doesn't call
mlx5e_build_nic_params, so this bug can still happen with representors.

This commit fixes the bug by adding the missing assignment to
mlx5e_build_rep_params.

Fixes: 846d6da1fcdb ("net/mlx5e: Fix division by 0 in mlx5e_select_queue")
Signed-off-by: Maxim Mikityanskiy <maximmi@nvidia.com>
Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c

index 0439203fc7d9df519bf52ac69aec5834253e7546..0684ac6699b2de8f832e6a7f29df1f31d94227f5 100644 (file)
@@ -618,6 +618,11 @@ static void mlx5e_build_rep_params(struct net_device *netdev)
        params->mqprio.num_tc       = 1;
        params->tunneled_offload_en = false;
 
+       /* Set an initial non-zero value, so that mlx5e_select_queue won't
+        * divide by zero if called before first activating channels.
+        */
+       priv->num_tc_x_num_ch = params->num_channels * params->mqprio.num_tc;
+
        mlx5_query_min_inline(mdev, &params->tx_min_inline_mode);
 }