From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 7A6CCA046B for ; Mon, 22 Jul 2019 21:29:14 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 40A561BF32; Mon, 22 Jul 2019 21:29:14 +0200 (CEST) Received: from mail-vk1-f195.google.com (mail-vk1-f195.google.com [209.85.221.195]) by dpdk.org (Postfix) with ESMTP id 51C9B1BEFB for ; Mon, 22 Jul 2019 21:29:12 +0200 (CEST) Received: by mail-vk1-f195.google.com with SMTP id b64so8138348vke.13 for ; Mon, 22 Jul 2019 12:29:12 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=pfmSppm5hv/4t9Iy65FZwAhxldshtA10Boc4xRvTNek=; b=nRA8q556vQqiVukhfJ4JZs2PyiAE3zeugNVAuUGbYdhnPDOeB5hrg1L6KKdQ7DSIS6 bwlmLRTn3soxtf9Ppz2FH6x9HC48yP15Ok6oEeASqAu6P7a/O41wG8omwMHX4zxGBcJV tXorDjKwSXix4fc/mCuZ3RpTNhFAWW7qihjRuD5ylyp9bepFadDXbhMmx4JePlWao43j zKPK7LanOOSij7rMjCwZ7FOIXtYwOit7wA8V3+IwsuwFTzSuB7ETSVsBBfRjL4zBPAwc RFk4zB1Yq7hQq8pvJe/5l7PnLrYwpX33R6QnrlokQj3SOsWJWJPQ/y0rOOMZ3C+goGS6 vgbg== X-Gm-Message-State: APjAAAXp4vM/+M3Xpe8YyZaQajL+GZLiWtjSlFy64/XtCCdVjYBEwpCX hyEsAmN/vOpc1KmDEbOmrxI+VIjaFB6dE8GLarSTUQ== X-Google-Smtp-Source: APXvYqxZD3CyiCbVRvJIk3KryoKlYgGLynqhOMbW4ld3QXFxdwJ8MinB9rlvDWJWU/4YhD2SZDL+YPkCI2XeuSgkTJA= X-Received: by 2002:a1f:50c1:: with SMTP id e184mr27076406vkb.86.1563823751509; Mon, 22 Jul 2019 12:29:11 -0700 (PDT) MIME-Version: 1.0 References: <20190717115852.171416-1-ndabilpuram@marvell.com> <20190718143628.169623-1-ndabilpuram@marvell.com> <20190718143628.169623-4-ndabilpuram@marvell.com> In-Reply-To: <20190718143628.169623-4-ndabilpuram@marvell.com> From: David Marchand Date: Mon, 22 Jul 2019 21:29:00 +0200 Message-ID: To: Nithin Dabilpuram Cc: Hyong Youb Kim , Thomas Monjalon , Ferruh Yigit , Igor Russkikh , Pavel Belous , Allain Legacy , Matt Peters , Ravi Kumar , Rasesh Mody , Shahed Shaikh , Wenzhuo Lu , Qi Zhang , Xiao Wang , Beilei Xing , Jingjing Wu , Qiming Yang , Konstantin Ananyev , Alejandro Lucero , Andrew Rybchenko , Maxime Coquelin , Tiwei Bie , Zhihong Wang , Yong Wang , Jerin Jacob Kollanukkaran , John Daley , dev Content-Type: text/plain; charset="UTF-8" Subject: Re: [dpdk-dev] [PATCH v4 3/3] drivers/net: use ack API in interrupt handlers X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list 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 Thu, Jul 18, 2019 at 4:37 PM Nithin Dabilpuram wrote: > > Replace rte_intr_enable() with rte_intr_ack() API > for acking an interrupt in interrupt handlers and > rx_queue_intr_enable() callbacks of PMD's. > > This is inline with original intent of this change in PMDs > to ack interrupts after handling is completed if > device is backed by UIO, IGB_UIO or VFIO(with INTx). > > Signed-off-by: Nithin Dabilpuram > Signed-off-by: Jerin Jacob > Acked-by: Shahed Shaikh > Tested-by: Shahed Shaikh > --- > v4: > * Undo qede PMD change that was done in v3 > to adhere to updated api doc. > * Leaving qede PMD maintainer ack as v2 > was tested and acked as well. > * Updated avp, bnx2x, fm10k Makefiles for > allow experimental which was mistakenly > missed earlier though meson.build was updated. > v3: > * Removed ack call from qede PMD msix handler > * Ack from Shahed > v2: > * No change > > drivers/net/atlantic/Makefile | 1 + > drivers/net/atlantic/atl_ethdev.c | 2 +- > drivers/net/atlantic/meson.build | 2 ++ > drivers/net/avp/Makefile | 1 + > drivers/net/avp/avp_ethdev.c | 2 +- > drivers/net/avp/meson.build | 1 + > drivers/net/axgbe/Makefile | 1 + > drivers/net/axgbe/axgbe_ethdev.c | 4 ++-- > drivers/net/axgbe/meson.build | 1 + > drivers/net/bnx2x/Makefile | 1 + > drivers/net/bnx2x/bnx2x_ethdev.c | 2 +- > drivers/net/bnx2x/meson.build | 1 + > drivers/net/e1000/em_ethdev.c | 4 ++-- > drivers/net/e1000/igb_ethdev.c | 6 +++--- > drivers/net/fm10k/Makefile | 1 + > drivers/net/fm10k/fm10k_ethdev.c | 6 +++--- > drivers/net/fm10k/meson.build | 1 + > drivers/net/i40e/i40e_ethdev.c | 2 +- > drivers/net/iavf/iavf_ethdev.c | 2 +- > drivers/net/ice/Makefile | 1 + > drivers/net/ice/ice_ethdev.c | 4 ++-- > drivers/net/ice/meson.build | 1 + > drivers/net/ixgbe/ixgbe_ethdev.c | 6 +++--- > drivers/net/nfp/nfp_net.c | 2 +- > drivers/net/qede/Makefile | 1 + > drivers/net/qede/meson.build | 2 ++ > drivers/net/qede/qede_ethdev.c | 8 ++++---- > drivers/net/sfc/sfc_intr.c | 4 ++-- > drivers/net/virtio/virtio_ethdev.c | 16 +++++++++++++++- > drivers/net/vmxnet3/vmxnet3_ethdev.c | 2 +- > 30 files changed, 59 insertions(+), 29 deletions(-) > > diff --git a/drivers/net/atlantic/Makefile b/drivers/net/atlantic/Makefile > index 263f12b..fc12e6a 100644 > --- a/drivers/net/atlantic/Makefile > +++ b/drivers/net/atlantic/Makefile > @@ -10,6 +10,7 @@ LIB = librte_pmd_atlantic.a > > CFLAGS += -O3 > CFLAGS += $(WERROR_FLAGS) > +CFLAGS += -DALLOW_EXPERIMENTAL_API > > EXPORT_MAP := rte_pmd_atlantic_version.map > > diff --git a/drivers/net/atlantic/atl_ethdev.c b/drivers/net/atlantic/atl_ethdev.c > index fdc0a7f..79001da 100644 > --- a/drivers/net/atlantic/atl_ethdev.c > +++ b/drivers/net/atlantic/atl_ethdev.c > @@ -1394,7 +1394,7 @@ atl_dev_interrupt_action(struct rte_eth_dev *dev, > } > done: > atl_enable_intr(dev); > - rte_intr_enable(intr_handle); > + rte_intr_ack(intr_handle); > > return 0; > } > diff --git a/drivers/net/atlantic/meson.build b/drivers/net/atlantic/meson.build > index 60b8468..d5602dd 100644 > --- a/drivers/net/atlantic/meson.build > +++ b/drivers/net/atlantic/meson.build > @@ -11,3 +11,5 @@ sources = files( > 'hw_atl/hw_atl_utils.c', > 'rte_pmd_atlantic.c', > ) > + > +cflags += '-DALLOW_EXPERIMENTAL_API' You should use allow_experimental_apis = true (idem in the rest of the patch). > diff --git a/drivers/net/avp/Makefile b/drivers/net/avp/Makefile > index c9db667..a753765 100644 > --- a/drivers/net/avp/Makefile > +++ b/drivers/net/avp/Makefile > @@ -10,6 +10,7 @@ LIB = librte_pmd_avp.a > > CFLAGS += -O3 > CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) > +CFLAGS += -DALLOW_EXPERIMENTAL_API > LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring > LDLIBS += -lrte_ethdev -lrte_net -lrte_kvargs > LDLIBS += -lrte_bus_pci > diff --git a/drivers/net/avp/avp_ethdev.c b/drivers/net/avp/avp_ethdev.c > index 47b96ec..504435e 100644 > --- a/drivers/net/avp/avp_ethdev.c > +++ b/drivers/net/avp/avp_ethdev.c > @@ -713,7 +713,7 @@ avp_dev_interrupt_handler(void *data) > status); > > /* re-enable UIO interrupt handling */ > - ret = rte_intr_enable(&pci_dev->intr_handle); > + ret = rte_intr_ack(&pci_dev->intr_handle); > if (ret < 0) { > PMD_DRV_LOG(ERR, "Failed to re-enable UIO interrupts, ret=%d\n", > ret); > diff --git a/drivers/net/avp/meson.build b/drivers/net/avp/meson.build > index a5f63cd..7fb9706 100644 > --- a/drivers/net/avp/meson.build > +++ b/drivers/net/avp/meson.build > @@ -7,3 +7,4 @@ if not is_linux > endif > sources = files('avp_ethdev.c') > install_headers('rte_avp_common.h', 'rte_avp_fifo.h') > +cflags += '-DALLOW_EXPERIMENTAL_API' > diff --git a/drivers/net/axgbe/Makefile b/drivers/net/axgbe/Makefile > index c2d4336..bcdcd54 100644 > --- a/drivers/net/axgbe/Makefile > +++ b/drivers/net/axgbe/Makefile > @@ -10,6 +10,7 @@ LIB = librte_pmd_axgbe.a > > CFLAGS += -O3 > CFLAGS += $(WERROR_FLAGS) > +CFLAGS += -DALLOW_EXPERIMENTAL_API > > EXPORT_MAP := rte_pmd_axgbe_version.map > > diff --git a/drivers/net/axgbe/axgbe_ethdev.c b/drivers/net/axgbe/axgbe_ethdev.c > index cfb1720..56d8dac 100644 > --- a/drivers/net/axgbe/axgbe_ethdev.c > +++ b/drivers/net/axgbe/axgbe_ethdev.c > @@ -136,8 +136,8 @@ axgbe_dev_interrupt_handler(void *param) > DMA_CH_SR, dma_ch_isr); > } > } > - /* Enable interrupts since disabled after generation*/ > - rte_intr_enable(&pdata->pci_dev->intr_handle); > + /* Unmask interrupts since disabled after generation*/ missing space at the end of the comment. > + rte_intr_ack(&pdata->pci_dev->intr_handle); > } > > /* > diff --git a/drivers/net/axgbe/meson.build b/drivers/net/axgbe/meson.build > index 86873b7..226d11d 100644 > --- a/drivers/net/axgbe/meson.build > +++ b/drivers/net/axgbe/meson.build > @@ -14,6 +14,7 @@ sources = files('axgbe_ethdev.c', > 'axgbe_rxtx.c') > > cflags += '-Wno-cast-qual' > +cflags += '-DALLOW_EXPERIMENTAL_API' > > if arch_subdir == 'x86' > sources += files('axgbe_rxtx_vec_sse.c') > diff --git a/drivers/net/bnx2x/Makefile b/drivers/net/bnx2x/Makefile > index 55d1ad6..adead9d 100644 > --- a/drivers/net/bnx2x/Makefile > +++ b/drivers/net/bnx2x/Makefile > @@ -12,6 +12,7 @@ LIB = librte_pmd_bnx2x.a > CFLAGS += -O3 > CFLAGS += $(WERROR_FLAGS) > CFLAGS += -DZLIB_CONST > +CFLAGS += -DALLOW_EXPERIMENTAL_API > LDLIBS += -lz > LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring > LDLIBS += -lrte_ethdev -lrte_net -lrte_kvargs > diff --git a/drivers/net/bnx2x/bnx2x_ethdev.c b/drivers/net/bnx2x/bnx2x_ethdev.c > index 10b4fdb..191a3ef 100644 > --- a/drivers/net/bnx2x/bnx2x_ethdev.c > +++ b/drivers/net/bnx2x/bnx2x_ethdev.c > @@ -133,7 +133,7 @@ bnx2x_interrupt_handler(void *param) > PMD_DEBUG_PERIODIC_LOG(INFO, sc, "Interrupt handled"); > > bnx2x_interrupt_action(dev, 1); > - rte_intr_enable(&sc->pci_dev->intr_handle); > + rte_intr_ack(&sc->pci_dev->intr_handle); > } > > static void bnx2x_periodic_start(void *param) > diff --git a/drivers/net/bnx2x/meson.build b/drivers/net/bnx2x/meson.build > index 4892bb2..1bc84b7 100644 > --- a/drivers/net/bnx2x/meson.build > +++ b/drivers/net/bnx2x/meson.build > @@ -6,6 +6,7 @@ build = dep.found() > reason = 'missing dependency, "zlib"' > ext_deps += dep > cflags += '-DZLIB_CONST' > +cflags += '-DALLOW_EXPERIMENTAL_API' > sources = files('bnx2x.c', > 'bnx2x_ethdev.c', > 'bnx2x_rxtx.c', > diff --git a/drivers/net/e1000/em_ethdev.c b/drivers/net/e1000/em_ethdev.c > index dc88661..0b7f501 100644 > --- a/drivers/net/e1000/em_ethdev.c > +++ b/drivers/net/e1000/em_ethdev.c > @@ -1001,7 +1001,7 @@ eth_em_rx_queue_intr_enable(struct rte_eth_dev *dev, __rte_unused uint16_t queue > struct rte_intr_handle *intr_handle = &pci_dev->intr_handle; > > em_rxq_intr_enable(hw); > - rte_intr_enable(intr_handle); > + rte_intr_ack(intr_handle); > > return 0; > } > @@ -1568,7 +1568,7 @@ eth_em_interrupt_action(struct rte_eth_dev *dev, > return -1; > > intr->flags &= ~E1000_FLAG_NEED_LINK_UPDATE; > - rte_intr_enable(intr_handle); > + rte_intr_ack(intr_handle); > > /* set get_link_status to check register later */ > hw->mac.get_link_status = 1; > diff --git a/drivers/net/e1000/igb_ethdev.c b/drivers/net/e1000/igb_ethdev.c > index 3ee28cf..793a31c 100644 > --- a/drivers/net/e1000/igb_ethdev.c > +++ b/drivers/net/e1000/igb_ethdev.c > @@ -2876,7 +2876,7 @@ eth_igb_interrupt_action(struct rte_eth_dev *dev, > } > > igb_intr_enable(dev); > - rte_intr_enable(intr_handle); > + rte_intr_ack(intr_handle); > > if (intr->flags & E1000_FLAG_NEED_LINK_UPDATE) { > intr->flags &= ~E1000_FLAG_NEED_LINK_UPDATE; > @@ -2987,7 +2987,7 @@ eth_igbvf_interrupt_action(struct rte_eth_dev *dev, struct rte_intr_handle *intr > } > > igbvf_intr_enable(dev); > - rte_intr_enable(intr_handle); > + rte_intr_ack(intr_handle); > > return 0; > } > @@ -5500,7 +5500,7 @@ eth_igb_rx_queue_intr_enable(struct rte_eth_dev *dev, uint16_t queue_id) > E1000_WRITE_REG(hw, E1000_EIMS, regval | mask); > E1000_WRITE_FLUSH(hw); > > - rte_intr_enable(intr_handle); > + rte_intr_ack(intr_handle); > > return 0; > } > diff --git a/drivers/net/fm10k/Makefile b/drivers/net/fm10k/Makefile > index d657dff..55e9cd5 100644 > --- a/drivers/net/fm10k/Makefile > +++ b/drivers/net/fm10k/Makefile > @@ -10,6 +10,7 @@ LIB = librte_pmd_fm10k.a > > CFLAGS += -O3 > CFLAGS += $(WERROR_FLAGS) > +CFLAGS += -DALLOW_EXPERIMENTAL_API > > EXPORT_MAP := rte_pmd_fm10k_version.map > > diff --git a/drivers/net/fm10k/fm10k_ethdev.c b/drivers/net/fm10k/fm10k_ethdev.c > index a1e3836..e8fa8a2 100644 > --- a/drivers/net/fm10k/fm10k_ethdev.c > +++ b/drivers/net/fm10k/fm10k_ethdev.c > @@ -2381,7 +2381,7 @@ fm10k_dev_rx_queue_intr_enable(struct rte_eth_dev *dev, uint16_t queue_id) > else > FM10K_WRITE_REG(hw, FM10K_VFITR(Q2V(pdev, queue_id)), > FM10K_ITR_AUTOMASK | FM10K_ITR_MASK_CLEAR); > - rte_intr_enable(&pdev->intr_handle); > + rte_intr_ack(&pdev->intr_handle); > return 0; > } > > @@ -2680,7 +2680,7 @@ fm10k_dev_interrupt_handler_pf(void *param) > FM10K_WRITE_REG(hw, FM10K_ITR(0), FM10K_ITR_AUTOMASK | > FM10K_ITR_MASK_CLEAR); > /* Re-enable interrupt from host side */ > - rte_intr_enable(dev->intr_handle); > + rte_intr_ack(dev->intr_handle); > } > > /** > @@ -2760,7 +2760,7 @@ fm10k_dev_interrupt_handler_vf(void *param) > FM10K_WRITE_REG(hw, FM10K_VFITR(0), FM10K_ITR_AUTOMASK | > FM10K_ITR_MASK_CLEAR); > /* Re-enable interrupt from host side */ > - rte_intr_enable(dev->intr_handle); > + rte_intr_ack(dev->intr_handle); > } > > /* Mailbox message handler in VF */ > diff --git a/drivers/net/fm10k/meson.build b/drivers/net/fm10k/meson.build > index 2772ea4..b7d34c7 100644 > --- a/drivers/net/fm10k/meson.build > +++ b/drivers/net/fm10k/meson.build > @@ -14,3 +14,4 @@ if arch_subdir == 'x86' > endif > > includes += include_directories('base') > +cflags += '-DALLOW_EXPERIMENTAL_API' > diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c > index 2b9fc45..5217b9c 100644 > --- a/drivers/net/i40e/i40e_ethdev.c > +++ b/drivers/net/i40e/i40e_ethdev.c > @@ -11646,7 +11646,7 @@ i40e_dev_rx_queue_intr_enable(struct rte_eth_dev *dev, uint16_t queue_id) > I40E_PFINT_DYN_CTLN_ITR_INDX_MASK); > > I40E_WRITE_FLUSH(hw); > - rte_intr_enable(&pci_dev->intr_handle); > + rte_intr_ack(&pci_dev->intr_handle); > > return 0; > } > diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c > index 53dc05c..00d6ed5 100644 > --- a/drivers/net/iavf/iavf_ethdev.c > +++ b/drivers/net/iavf/iavf_ethdev.c > @@ -1098,7 +1098,7 @@ iavf_dev_rx_queue_intr_enable(struct rte_eth_dev *dev, uint16_t queue_id) > > IAVF_WRITE_FLUSH(hw); > > - rte_intr_enable(&pci_dev->intr_handle); > + rte_intr_ack(&pci_dev->intr_handle); > > return 0; > } > diff --git a/drivers/net/ice/Makefile b/drivers/net/ice/Makefile > index 32abeb6..ae53c26 100644 > --- a/drivers/net/ice/Makefile > +++ b/drivers/net/ice/Makefile > @@ -10,6 +10,7 @@ LIB = librte_pmd_ice.a > > CFLAGS += -O3 > CFLAGS += $(WERROR_FLAGS) > +CFLAGS += -DALLOW_EXPERIMENTAL_API > > LDLIBS += -lrte_eal -lrte_mbuf -lrte_ethdev -lrte_kvargs > LDLIBS += -lrte_bus_pci -lrte_mempool > diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c > index 9ce730c..77b5a71 100644 > --- a/drivers/net/ice/ice_ethdev.c > +++ b/drivers/net/ice/ice_ethdev.c > @@ -1118,7 +1118,7 @@ ice_interrupt_handler(void *param) > done: > /* Enable interrupt */ > ice_pf_enable_irq0(hw); > - rte_intr_enable(dev->intr_handle); > + rte_intr_ack(dev->intr_handle); > } > > /* Initialize SW parameters of PF */ > @@ -3002,7 +3002,7 @@ static int ice_rx_queue_intr_enable(struct rte_eth_dev *dev, > val &= ~GLINT_DYN_CTL_WB_ON_ITR_M; > > ICE_WRITE_REG(hw, GLINT_DYN_CTL(msix_intr), val); > - rte_intr_enable(&pci_dev->intr_handle); > + rte_intr_ack(&pci_dev->intr_handle); > > return 0; > } > diff --git a/drivers/net/ice/meson.build b/drivers/net/ice/meson.build > index 7f16647..70f349e 100644 > --- a/drivers/net/ice/meson.build > +++ b/drivers/net/ice/meson.build > @@ -13,6 +13,7 @@ sources = files( > > deps += ['hash'] > includes += include_directories('base') > +cflags += '-DALLOW_EXPERIMENTAL_API' > > if arch_subdir == 'x86' > sources += files('ice_rxtx_vec_sse.c') > diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c > index 22c5b2c..f5920f5 100644 > --- a/drivers/net/ixgbe/ixgbe_ethdev.c > +++ b/drivers/net/ixgbe/ixgbe_ethdev.c > @@ -4502,7 +4502,7 @@ ixgbe_dev_interrupt_delayed_handler(void *param) > > PMD_DRV_LOG(DEBUG, "enable intr in delayed handler S[%08x]", eicr); > ixgbe_enable_intr(dev); > - rte_intr_enable(intr_handle); > + rte_intr_ack(intr_handle); > } > > /** > @@ -5763,7 +5763,7 @@ ixgbevf_dev_rx_queue_intr_enable(struct rte_eth_dev *dev, uint16_t queue_id) > RTE_SET_USED(queue_id); > IXGBE_WRITE_REG(hw, IXGBE_VTEIMS, intr->mask); > > - rte_intr_enable(intr_handle); > + rte_intr_ack(intr_handle); > > return 0; > } > @@ -5812,7 +5812,7 @@ ixgbe_dev_rx_queue_intr_enable(struct rte_eth_dev *dev, uint16_t queue_id) > mask &= (1 << (queue_id - 32)); > IXGBE_WRITE_REG(hw, IXGBE_EIMS_EX(1), mask); > } > - rte_intr_enable(intr_handle); > + rte_intr_ack(intr_handle); > > return 0; > } > diff --git a/drivers/net/nfp/nfp_net.c b/drivers/net/nfp/nfp_net.c > index 1a7aa17..91a226c 100644 > --- a/drivers/net/nfp/nfp_net.c > +++ b/drivers/net/nfp/nfp_net.c > @@ -1412,7 +1412,7 @@ nfp_net_irq_unmask(struct rte_eth_dev *dev) > if (hw->ctrl & NFP_NET_CFG_CTRL_MSIXAUTO) { > /* If MSI-X auto-masking is used, clear the entry */ > rte_wmb(); > - rte_intr_enable(&pci_dev->intr_handle); > + rte_intr_ack(&pci_dev->intr_handle); > } else { > /* Make sure all updates are written before un-masking */ > rte_wmb(); > diff --git a/drivers/net/qede/Makefile b/drivers/net/qede/Makefile > index 2ecbd8d..a11d594 100644 > --- a/drivers/net/qede/Makefile > +++ b/drivers/net/qede/Makefile > @@ -12,6 +12,7 @@ LIB = librte_pmd_qede.a > > CFLAGS += -O3 > CFLAGS += $(WERROR_FLAGS) > +CFLAGS += -DALLOW_EXPERIMENTAL_API > LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring > LDLIBS += -lrte_ethdev -lrte_net -lrte_kvargs > LDLIBS += -lrte_bus_pci > diff --git a/drivers/net/qede/meson.build b/drivers/net/qede/meson.build > index 12388a6..c8f9c6d 100644 > --- a/drivers/net/qede/meson.build > +++ b/drivers/net/qede/meson.build > @@ -10,3 +10,5 @@ sources = files( > 'qede_main.c', > 'qede_rxtx.c', > ) > + > +cflags += '-DALLOW_EXPERIMENTAL_API' > diff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c > index 82363e6..9ac9da3 100644 > --- a/drivers/net/qede/qede_ethdev.c > +++ b/drivers/net/qede/qede_ethdev.c > @@ -248,8 +248,8 @@ qede_interrupt_handler_intx(void *param) > if (status & 0x1) { > qede_interrupt_action(ECORE_LEADING_HWFN(edev)); > > - if (rte_intr_enable(eth_dev->intr_handle)) > - DP_ERR(edev, "rte_intr_enable failed\n"); > + if (rte_intr_ack(eth_dev->intr_handle)) > + DP_ERR(edev, "rte_intr_ack failed\n"); > } > } > > @@ -261,8 +261,8 @@ qede_interrupt_handler(void *param) > struct ecore_dev *edev = &qdev->edev; > > qede_interrupt_action(ECORE_LEADING_HWFN(edev)); > - if (rte_intr_enable(eth_dev->intr_handle)) > - DP_ERR(edev, "rte_intr_enable failed\n"); > + if (rte_intr_ack(eth_dev->intr_handle)) > + DP_ERR(edev, "rte_intr_ack failed\n"); > } > > static void > diff --git a/drivers/net/sfc/sfc_intr.c b/drivers/net/sfc/sfc_intr.c > index 1f4969b..76cb630 100644 > --- a/drivers/net/sfc/sfc_intr.c > +++ b/drivers/net/sfc/sfc_intr.c > @@ -79,7 +79,7 @@ sfc_intr_line_handler(void *cb_arg) > if (qmask & (1 << sa->mgmt_evq_index)) > sfc_intr_handle_mgmt_evq(sa); > > - if (rte_intr_enable(&pci_dev->intr_handle) != 0) > + if (rte_intr_ack(&pci_dev->intr_handle) != 0) > sfc_err(sa, "cannot reenable interrupts"); > > sfc_log_init(sa, "done"); > @@ -123,7 +123,7 @@ sfc_intr_message_handler(void *cb_arg) > > sfc_intr_handle_mgmt_evq(sa); > > - if (rte_intr_enable(&pci_dev->intr_handle) != 0) > + if (rte_intr_ack(&pci_dev->intr_handle) != 0) > sfc_err(sa, "cannot reenable interrupts"); > > sfc_log_init(sa, "done"); > diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c > index 04aecb7..62c8274 100644 > --- a/drivers/net/virtio/virtio_ethdev.c > +++ b/drivers/net/virtio/virtio_ethdev.c > @@ -1265,6 +1265,20 @@ virtio_vlan_filter_set(struct rte_eth_dev *dev, uint16_t vlan_id, int on) > } > > static int > +virtio_intr_unmask(struct rte_eth_dev *dev) > +{ > + struct virtio_hw *hw = dev->data->dev_private; > + > + if (rte_intr_ack(dev->intr_handle) < 0) > + return -1; > + > + if (!hw->virtio_user_dev) > + hw->use_msix = vtpci_msix_detect(RTE_ETH_DEV_TO_PCI(dev)); This is equivalent to what we had before in virtio_intr_enable, but I suspect the part on detecting msix again is unneeded. Given the timing, let's keep it safe and leave as is. -- David Marchand