net/mlx5: fix Rx metadata leftovers
authorViacheslav Ovsiienko <viacheslavo@nvidia.com>
Sun, 7 Mar 2021 11:45:47 +0000 (11:45 +0000)
committerRaslan Darawsheh <rasland@nvidia.com>
Tue, 16 Mar 2021 14:53:04 +0000 (15:53 +0100)
commit4eefb20faacab6eae03c860c5d622603f7499ff4
tree7d8084d8ac82c50cd1ad203a5d234d6811bc1443
parent10787aa2b952c922d18a34f6c3b0ae382b42bb5e
net/mlx5: fix Rx metadata leftovers

The Rx metadata might use the metadata register C0 to keep the
values. The same register C0 might be used by kernel for source
vport value handling, kernel uses upper half of the register,
leaving the lower half for application usage.

In the extended metadata mode 1 (dv_xmeta_en devarg is
assigned with value 1) the metadata width is 16 bits only,
the Rx datapath code fetched the entire 32-bit value of the
metadata register and presented one to application. The patch
provides data masking depending on the chosen metadata mode.

Fixes: 6c55b622a956 ("net/mlx5: set dynamic flow metadata in Rx queues")
Cc: stable@dpdk.org
Signed-off-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
Acked-by: Matan Azrad <matan@nvidia.com>
drivers/net/mlx5/mlx5_flow.c
drivers/net/mlx5/mlx5_rxtx.c
drivers/net/mlx5/mlx5_rxtx.h
drivers/net/mlx5/mlx5_rxtx_vec_altivec.h
drivers/net/mlx5/mlx5_rxtx_vec_neon.h
drivers/net/mlx5/mlx5_rxtx_vec_sse.h