common/mlx5: fix MPRQ mempool registration
authorDmitry Kozlyuk <dkozlyuk@nvidia.com>
Tue, 16 Nov 2021 11:55:44 +0000 (13:55 +0200)
committerRaslan Darawsheh <rasland@nvidia.com>
Tue, 16 Nov 2021 15:45:21 +0000 (16:45 +0100)
commite4c402afc18691cadc7d07e1617ba54a2ec4a86b
treeb121e61d28eb203e92c843e1c5d8167cc2b14aa7
parent1e580ed4b0ff6afb23043f664ce30fe449e40d71
common/mlx5: fix MPRQ mempool registration

Mempool registration code had a wrong assumption that it is always
dealing with packet mempools and always called rte_pktmbuf_priv_flags(),
which returned a random value for different types of mempools.
In particular, it could consider MPRQ mempools as having externally
pinned buffers, which is wrong.
Packet mempools cannot be reliably recognized, but it is sufficient to
check that the mempool is not a packet one, so it cannot have externally
pinned buffers.
Compare mempool private data size to that of packet mempools to check.

Fixes: 690b2a88c2f7 ("common/mlx5: add mempool registration facilities")
Fixes: fec28ca0e3a9 ("net/mlx5: support mempool registration")

Signed-off-by: Dmitry Kozlyuk <dkozlyuk@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
drivers/common/mlx5/mlx5_common.c
drivers/common/mlx5/mlx5_common_mr.c
drivers/common/mlx5/mlx5_common_mr.h
drivers/net/mlx5/mlx5_trigger.c