net/mlx5: fix the delay drop bit set overflow
Checks
Commit Message
The attribute to record the global control of hairpin queues' delay
drop was defined as a bit-field with one bit, and the intention was
to reduce the memory overhead. In the meanwhile, the macro was
defined as an enumerated value 0x2.
No matter what value inputted via devarg, the lowest bit was always
zero and the higher bits would be ignored. For hairpin queues, the
delay drop attribute couldn't be enabled.
With the commit, the double logical negation is used to fix this.
Fixes: febcac7b46cd ("net/mlx5: support Rx queue delay drop")
Signed-off-by: Bing Zhao <bingz@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
---
drivers/net/mlx5/mlx5.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Comments
Hi,
> -----Original Message-----
> From: Bing Zhao <bingz@nvidia.com>
> Sent: Friday, November 12, 2021 4:39 PM
> To: Slava Ovsiienko <viacheslavo@nvidia.com>; Matan Azrad
> <matan@nvidia.com>
> Cc: dev@dpdk.org; Raslan Darawsheh <rasland@nvidia.com>
> Subject: [PATCH] net/mlx5: fix the delay drop bit set overflow
>
> The attribute to record the global control of hairpin queues' delay drop was
> defined as a bit-field with one bit, and the intention was to reduce the
> memory overhead. In the meanwhile, the macro was defined as an
> enumerated value 0x2.
>
> No matter what value inputted via devarg, the lowest bit was always zero
> and the higher bits would be ignored. For hairpin queues, the delay drop
> attribute couldn't be enabled.
>
> With the commit, the double logical negation is used to fix this.
>
> Fixes: febcac7b46cd ("net/mlx5: support Rx queue delay drop")
>
> Signed-off-by: Bing Zhao <bingz@nvidia.com>
> Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
Patch applied to next-net-mlx,
Kindest regards,
Raslan Darawsheh
@@ -1978,8 +1978,8 @@ mlx5_args_check(const char *key, const char *val, void *opaque)
} else if (strcmp(MLX5_ALLOW_DUPLICATE_PATTERN, key) == 0) {
config->allow_duplicate_pattern = !!tmp;
} else if (strcmp(MLX5_DELAY_DROP, key) == 0) {
- config->std_delay_drop = tmp & MLX5_DELAY_DROP_STANDARD;
- config->hp_delay_drop = tmp & MLX5_DELAY_DROP_HAIRPIN;
+ config->std_delay_drop = !!(tmp & MLX5_DELAY_DROP_STANDARD);
+ config->hp_delay_drop = !!(tmp & MLX5_DELAY_DROP_HAIRPIN);
} else {
DRV_LOG(WARNING, "%s: unknown parameter", key);
rte_errno = EINVAL;