54b20f94cd
RXQ interrupts under Linux are based on the epoll mechanism. An expected order of operations is as follows: 1. Call rte_eth_dev_rx_intr_enable(), to arm the CQ for receiving events on data input. 2. Block on rte_epoll_wait() with an array of file descriptors representing the CQ events. Upon data arrival the kernel will signal an input event on the corresponding CQ fd. 3. Call rte_eth_dev_rx_intr_disable() after the event was received and continue in polling mode. The mlx4 implementation of rte_eth_dev_rx_intr_disable() is to get the CQ event and ack it. In practice applications may wake up from rte_epoll_wait() due to timeout with no event to ack but still call rte_eth_dev_rx_intr_disable() unconditionally. In such cases the call should return EAGAIN (since the file descriptors are non-blocked), as opposed to EINVAL which indicates a real failure. In case of EAGAIN the PMD should not warn on "unable to disable interrupt on rx queue". Signed-off-by: Ophir Munk <ophirmu@mellanox.com> Acked-by: Raslan Darawsheh <rasland@mellanox.com> |
||
---|---|---|
.. | ||
af_packet | ||
af_xdp | ||
ark | ||
atlantic | ||
avp | ||
axgbe | ||
bnx2x | ||
bnxt | ||
bonding | ||
cxgbe | ||
dpaa | ||
dpaa2 | ||
e1000 | ||
ena | ||
enetc | ||
enic | ||
failsafe | ||
fm10k | ||
hinic | ||
hns3 | ||
i40e | ||
iavf | ||
ice | ||
igc | ||
ionic | ||
ipn3ke | ||
ixgbe | ||
kni | ||
liquidio | ||
memif | ||
mlx4 | ||
mlx5 | ||
mvneta | ||
mvpp2 | ||
netvsc | ||
nfb | ||
nfp | ||
null | ||
octeontx | ||
octeontx2 | ||
pcap | ||
pfe | ||
qede | ||
ring | ||
sfc | ||
softnic | ||
szedata2 | ||
tap | ||
thunderx | ||
vdev_netvsc | ||
vhost | ||
virtio | ||
vmxnet3 | ||
Makefile | ||
meson.build |