[dpdk-dev] [PATCH] igb_uio: use non-threaded ISR

2017-01-20 Thread David Su
This eliminates the overhead of a task switch when an interrupt arrives.

Signed-off-by: David Su 
---
 lib/librte_eal/linuxapp/igb_uio/igb_uio.c |3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/lib/librte_eal/linuxapp/igb_uio/igb_uio.c 
b/lib/librte_eal/linuxapp/igb_uio/igb_uio.c
index df41e45..9338e14 100644
--- a/lib/librte_eal/linuxapp/igb_uio/igb_uio.c
+++ b/lib/librte_eal/linuxapp/igb_uio/igb_uio.c
@@ -382,6 +382,7 @@ igbuio_pci_probe(struct pci_dev *dev, const struct 
pci_device_id *id)
msix_entry.entry = 0;
if (pci_enable_msix(dev, &msix_entry, 1) == 0) {
dev_dbg(&dev->dev, "using MSI-X");
+   udev->info.irq_flags = IRQF_NO_THREAD;
udev->info.irq = msix_entry.vector;
udev->mode = RTE_INTR_MODE_MSIX;
break;
@@ -390,7 +391,7 @@ igbuio_pci_probe(struct pci_dev *dev, const struct 
pci_device_id *id)
case RTE_INTR_MODE_LEGACY:
if (pci_intx_mask_supported(dev)) {
dev_dbg(&dev->dev, "using INTX");
-   udev->info.irq_flags = IRQF_SHARED;
+   udev->info.irq_flags = IRQF_SHARED | IRQF_NO_THREAD;
udev->info.irq = dev->irq;
udev->mode = RTE_INTR_MODE_LEGACY;
break;
-- 
1.7.0.4



[dpdk-dev] [PATCH] net/ixgbe: keep interrupt throttling disabled

2017-01-20 Thread David Su
The code being removed would enable time-based interrupt throttling for
the first MSI-X interrupt vector.  This would throttle link status
change interrupts for NICs bound to vfio_pci driver; but for
igb_uio driver, rx queue 0 interrupts would be throttled.  This resulted
in inconsistent latencies in a DPDK interrupt mode packet forwarding
application between the 2 drivers.

We'd like DPDK interrupt mode applications to be awaken by
inbound packet interrupts as soon as they are received regardless
of interrupt interval, interrupt throttling should be kept disabled.

Signed-off-by: David Su 
---
 drivers/net/ixgbe/ixgbe_ethdev.c |2 --
 1 files changed, 0 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
index bdf4e2b..fdfb7a6 100644
--- a/drivers/net/ixgbe/ixgbe_ethdev.c
+++ b/drivers/net/ixgbe/ixgbe_ethdev.c
@@ -5815,8 +5815,6 @@ ixgbe_configure_msix(struct rte_eth_dev *dev)
default:
break;
}
-   IXGBE_WRITE_REG(hw, IXGBE_EITR(IXGBE_MISC_VEC_ID),
-   IXGBE_MIN_INTER_INTERRUPT_INTERVAL_DEFAULT & 0xFFF);
 
/* set up to autoclear timer, and the vectors */
mask = IXGBE_EIMS_ENABLE_MASK;
-- 
1.7.0.4