From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stephen Hemminger Subject: Re: [PATCH] igb_uio: use non-threaded ISR Date: Fri, 20 Jan 2017 15:50:58 -0800 Message-ID: <20170120155058.5177efc4@xeon-e3> References: <1484953699-3156-1-git-send-email-david.w.su@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Cc: dev@dpdk.org To: David Su Return-path: Received: from mail-pg0-f48.google.com (mail-pg0-f48.google.com [74.125.83.48]) by dpdk.org (Postfix) with ESMTP id F1691100F for ; Sat, 21 Jan 2017 00:51:06 +0100 (CET) Received: by mail-pg0-f48.google.com with SMTP id 194so27219831pgd.2 for ; Fri, 20 Jan 2017 15:51:06 -0800 (PST) In-Reply-To: <1484953699-3156-1-git-send-email-david.w.su@intel.com> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On Fri, 20 Jan 2017 15:08:19 -0800 David Su wrote: > 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; Since interrupts are only used for link state transistions with igb_uio, I can't see how the overhead of task switch would matter.