net/mlx5: fix 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: febcac7b46 ("net/mlx5: support Rx queue delay drop")

Signed-off-by: Bing Zhao <bingz@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
This commit is contained in:
Bing Zhao 2021-11-12 16:38:42 +02:00 committed by Raslan Darawsheh
parent 60bc280518
commit ce78c51833

View File

@ -1972,8 +1972,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;