mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-08 14:02:37 -04:00
net/mlx5e: E-switch, Fix rate calculation for overflow
rate_bytes_ps is a 64-bit field. It passed as 32-bit field to
apply_police_params(). Due to this when police rate is higher
than 4Gbps, 32-bit calculation ignores the carry. This results
in incorrect rate configurationn the device.
Fix it by performing 64-bit calculation.
Fixes: fcb64c0f56 ("net/mlx5: E-Switch, add ingress rate support")
Signed-off-by: Parav Pandit <parav@nvidia.com>
Reviewed-by: Eli Cohen <elic@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
This commit is contained in:
committed by
Saeed Mahameed
parent
9c899aa6ac
commit
0e22bfb7c0
@@ -5040,7 +5040,7 @@ static int apply_police_params(struct mlx5e_priv *priv, u64 rate,
|
|||||||
*/
|
*/
|
||||||
if (rate) {
|
if (rate) {
|
||||||
rate = (rate * BITS_PER_BYTE) + 500000;
|
rate = (rate * BITS_PER_BYTE) + 500000;
|
||||||
rate_mbps = max_t(u32, do_div(rate, 1000000), 1);
|
rate_mbps = max_t(u64, do_div(rate, 1000000), 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
err = mlx5_esw_modify_vport_rate(esw, vport_num, rate_mbps);
|
err = mlx5_esw_modify_vport_rate(esw, vport_num, rate_mbps);
|
||||||
|
|||||||
Reference in New Issue
Block a user