net/mlx5: fix mbuf overflow in vectorized MPRQ
authorAlexander Kozyrev <akozyrev@nvidia.com>
Sat, 21 Nov 2020 03:42:39 +0000 (03:42 +0000)
committerRaslan Darawsheh <rasland@nvidia.com>
Sun, 22 Nov 2020 14:37:03 +0000 (15:37 +0100)
commit5fc2e5c27d69bcebb352d17603a1d3ca2628f17b
tree23b5ce050bad2dd5a1ab81195e8bfb485d994766
parentb15af1573a694977f0b7a78aeb0d41a6bb050991
net/mlx5: fix mbuf overflow in vectorized MPRQ

Changing the allocation scheme to improve mbufs locality caused mbufs
overrun in some cases. Revert the previous replenish logic back.
Calculate a number of unused mbufs and replenish max this number of mbufs.

Mark the last 4 mbufs as fake mbufs to prevent overflowing into consumed
mbufs in the future. Keep the consumed index and the produced index 4 mbufs
apart for this purpose.

Replenish some mbufs only in case the consumed index is within the
replenish threshold of the produced index in order to retain the cache
locality for the vectorized MPRQ routine.

Fixes: 5c68764377 ("net/mlx5: improve vectorized MPRQ descriptors locality")

Signed-off-by: Alexander Kozyrev <akozyrev@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
drivers/net/mlx5/mlx5_rxtx_vec.c