net/mlx5e: Add an underflow warning comment
mlx5e_mpwqe_get_log_rq_size calculates the number of WQEs (N) based on the requested number of frames in the RQ (F) and the number of packets per WQE (P). It ensures that N is not less than the minimum number of WQEs in an RQ (N_min). Arithmetically, it means that F / P >= N_min should be true. This function deals with logarithms, so it should check that log(F) - log(P) >= log(N_min). However, if F < P, this expression will cause an unsigned underflow. Check log(F) >= log(P) + log(N_min) instead. Signed-off-by: Maxim Mikityanskiy <maximmi@mellanox.com> Reviewed-by: Tariq Toukan <tariqt@mellanox.com> Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
This commit is contained in:
parent
9a22d5d839
commit
b1b187e102
|
@ -62,11 +62,14 @@ bool mlx5e_rx_mpwqe_is_linear_skb(struct mlx5_core_dev *mdev,
|
|||
|
||||
u8 mlx5e_mpwqe_get_log_rq_size(struct mlx5e_params *params)
|
||||
{
|
||||
u8 log_pkts_per_wqe = mlx5e_mpwqe_log_pkts_per_wqe(params);
|
||||
|
||||
/* Numbers are unsigned, don't subtract to avoid underflow. */
|
||||
if (params->log_rq_mtu_frames <
|
||||
mlx5e_mpwqe_log_pkts_per_wqe(params) + MLX5E_PARAMS_MINIMUM_LOG_RQ_SIZE_MPW)
|
||||
log_pkts_per_wqe + MLX5E_PARAMS_MINIMUM_LOG_RQ_SIZE_MPW)
|
||||
return MLX5E_PARAMS_MINIMUM_LOG_RQ_SIZE_MPW;
|
||||
|
||||
return params->log_rq_mtu_frames - mlx5e_mpwqe_log_pkts_per_wqe(params);
|
||||
return params->log_rq_mtu_frames - log_pkts_per_wqe;
|
||||
}
|
||||
|
||||
u8 mlx5e_mpwqe_get_log_stride_size(struct mlx5_core_dev *mdev,
|
||||
|
|
Loading…
Reference in a new issue