[PATCH] eal/interrupts: Allow UIO interrupts when using igb_uio
Stephen Hemminger
stephen at networkplumber.org
Thu Jul 6 01:27:17 CEST 2023
On Tue, 4 Jul 2023 20:19:05 +0200
Vladimir Ratnikov <vratnikov at netgate.com> wrote:
> On systems with I225 interfaces it works in interrupt mode(rx), so not only
> LSE interrupts are supported.
> I could try add rte_intr_cap_single functionality and recheck it twice(if
> several interfaces works in rx_mode=interrupt)
> But actually it worked with changes above(CPU utilization close to the
> zero, data passes through the interface etc)
>
But this will cause mess with other devices.
For example igb has code that does:
/* check and configure queue intr-vector mapping */
if ((rte_intr_cap_multiple(intr_handle) ||
!RTE_ETH_DEV_SRIOV(dev).active) &&
dev->data->dev_conf.intr_conf.rxq != 0) {
intr_vector = dev->data->nb_rx_queues;
if (rte_intr_efd_enable(intr_handle, intr_vector))
return -1;
}
/* Allocate the vector list */
if (rte_intr_dp_is_en(intr_handle)) {
if (rte_intr_vec_list_alloc(intr_handle, "intr_vec",
dev->data->nb_rx_queues)) {
PMD_INIT_LOG(ERR, "Failed to allocate %d rx_queues"
" intr_vec", dev->data->nb_rx_queues);
return -ENOMEM;
}
}
/* configure MSI-X for Rx interrupt */
eth_igb_configure_msix_intr(dev);
MSI-X won't work with igb_uio because the interrupt vector region is not shared with userspace.
More information about the dev
mailing list