vdpa/mlx5: improve interrupt management
authorMatan Azrad <matan@nvidia.com>
Sun, 2 May 2021 10:45:10 +0000 (13:45 +0300)
committerMaxime Coquelin <maxime.coquelin@redhat.com>
Tue, 4 May 2021 08:22:17 +0000 (10:22 +0200)
commit99f9d799ce21ab22e922ffec8aad51d56e24d04d
tree1cbc77fd7d631dba796b4568b99bfe50eda4482a
parenteb36520444cc279fd20bba6fd265ec980a763d59
vdpa/mlx5: improve interrupt management

The driver should notify the guest for each traffic burst detected by CQ
polling.

The CQ polling trigger is defined by `event_mode` device argument,
either by busy polling on all the CQs or by blocked call to HW
completion event using DevX channel.

Also, the polling event modes can move to blocked call when the
traffic rate is low.

The current blocked call uses the EAL interrupt API suffering a lot
of overhead in the API management and serve all the drivers and
libraries using only single thread.

Use blocking FD of the DevX channel in order to do blocked call
directly by the DevX channel FD mechanism.

Signed-off-by: Matan Azrad <matan@nvidia.com>
Acked-by: Xueming Li <xuemingl@nvidia.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
doc/guides/vdpadevs/mlx5.rst
drivers/vdpa/mlx5/mlx5_vdpa.c
drivers/vdpa/mlx5/mlx5_vdpa.h
drivers/vdpa/mlx5/mlx5_vdpa_event.c