All comparison should be done in CPU endianness, otherwise it will not give right results.
for example: 255 after converting into RTE_BE16 will be biger than 4096 after converting into RTE_BE16. Fixes: a5f2da0b816b ("net/mlx5: support modify VLAN ID on new VLAN header") Cc: mo...@mellanox.com Cc: sta...@dpdk.org backport Signed-off-by: Wisam Jaddo <wis...@mellanox.com> --- drivers/net/mlx5/mlx5_flow_dv.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c index 6263ecc731..2b88e85248 100644 --- a/drivers/net/mlx5/mlx5_flow_dv.c +++ b/drivers/net/mlx5/mlx5_flow_dv.c @@ -1965,7 +1965,7 @@ flow_dv_validate_action_set_vlan_vid(uint64_t item_flags, const struct rte_flow_action *action = actions; const struct rte_flow_action_of_set_vlan_vid *conf = action->conf; - if (conf->vlan_vid > RTE_BE16(0xFFE)) + if (rte_be_to_cpu_16(conf->vlan_vid) > 0xFFE) return rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ACTION, action, "VLAN VID value is too big"); -- 2.17.1