net/mlx5: fix loopback for Direct Verbs queue
authorBing Zhao <bingz@nvidia.com>
Mon, 17 May 2021 15:18:41 +0000 (18:18 +0300)
committerThomas Monjalon <thomas@monjalon.net>
Tue, 18 May 2021 08:30:45 +0000 (10:30 +0200)
commit23233fd63a15e5cde5bae4f26f78f4d679033a7b
treee42e3be73ea6e4490200a1856a94b03a2a0855d9
parentd1ced85a7e7a193051e96c2d34a8961a2e3f96d9
net/mlx5: fix loopback for Direct Verbs queue

In the past, all the queues and other hardware objects were created
through Verbs interface. Currently, most of the objects creation are
migrated to Devx interface by default, including queues. Only when
the DV is disabled by device arg or eswitch is enabled, all or some
of the objects are created through Verbs interface.

When using Devx interface to create queues, the kernel driver
behavior is different from the case using Verbs. The Tx loopback
cannot work properly even if the Tx and Rx queues are configured
with loopback attribute. To fix the support self loopback for Tx, a
Verbs dummy queue pair needs to be created to trigger the kernel to
enable the global loopback capability.

This is only required when TIR is created for Rx and loopback is
needed. Only CQ and QP are needed for this case, no WQ(RQ) needs to
be created.

Bugzilla ID: 645
Fixes: 6deb19e1b2d2 ("net/mlx5: separate Rx queue object creations")
Cc: stable@dpdk.org
Signed-off-by: Bing Zhao <bingz@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
drivers/net/mlx5/linux/mlx5_os.c
drivers/net/mlx5/linux/mlx5_verbs.c
drivers/net/mlx5/linux/mlx5_verbs.h
drivers/net/mlx5/mlx5.h
drivers/net/mlx5/mlx5_devx.c
drivers/net/mlx5/mlx5_trigger.c