]> git.droids-corp.org - dpdk.git/commitdiff
net/mlx5: fix delay drop bit set overflow
authorBing Zhao <bingz@nvidia.com>
Fri, 12 Nov 2021 14:38:42 +0000 (16:38 +0200)
committerRaslan Darawsheh <rasland@nvidia.com>
Sun, 14 Nov 2021 15:26:49 +0000 (16:26 +0100)
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

index 2a3efb3588a5cebe090022729c205415d2f78820..4e04817d11f8cdc51b0dabbd84dd4e3cb0e200c5 100644 (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;