DPDK-dev Archive on lore.kernel.org
 help / color / Atom feed
From: David Marchand <david.marchand@redhat.com>
To: Nithin Dabilpuram <ndabilpuram@marvell.com>
Cc: Hyong Youb Kim <hyonkim@cisco.com>,
	Thomas Monjalon <thomas@monjalon.net>,
	 Ferruh Yigit <ferruh.yigit@intel.com>,
	Igor Russkikh <igor.russkikh@aquantia.com>,
	 Pavel Belous <pavel.belous@aquantia.com>,
	Allain Legacy <allain.legacy@windriver.com>,
	 Matt Peters <matt.peters@windriver.com>,
	Ravi Kumar <ravi1.kumar@amd.com>,
	 Rasesh Mody <rmody@marvell.com>,
	Shahed Shaikh <shshaikh@marvell.com>,
	 Wenzhuo Lu <wenzhuo.lu@intel.com>,
	Qi Zhang <qi.z.zhang@intel.com>,
	 Xiao Wang <xiao.w.wang@intel.com>,
	Beilei Xing <beilei.xing@intel.com>,
	 Jingjing Wu <jingjing.wu@intel.com>,
	Qiming Yang <qiming.yang@intel.com>,
	 Konstantin Ananyev <konstantin.ananyev@intel.com>,
	 Alejandro Lucero <alejandro.lucero@netronome.com>,
	 Andrew Rybchenko <arybchenko@solarflare.com>,
	Maxime Coquelin <maxime.coquelin@redhat.com>,
	 Tiwei Bie <tiwei.bie@intel.com>,
	Zhihong Wang <zhihong.wang@intel.com>,
	 Yong Wang <yongwang@vmware.com>,
	Jerin Jacob Kollanukkaran <jerinj@marvell.com>,
	John Daley <johndale@cisco.com>, dev <dev@dpdk.org>
Subject: Re: [dpdk-dev] [PATCH v4 3/3] drivers/net: use ack API in interrupt handlers
Date: Mon, 22 Jul 2019 21:29:00 +0200
Message-ID: <CAJFAV8xxzrYBidKnLspQZOfbXpzbwejXomtha-J7kd9Xdk_AUQ@mail.gmail.com> (raw)
In-Reply-To: <20190718143628.169623-4-ndabilpuram@marvell.com>

On Thu, Jul 18, 2019 at 4:37 PM Nithin Dabilpuram
<ndabilpuram@marvell.com> 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 <ndabilpuram@marvell.com>
> Signed-off-by: Jerin Jacob <jerinj@marvell.com>
> Acked-by: Shahed Shaikh <shshaikh@marvell.com>
> Tested-by: Shahed Shaikh <shshaikh@marvell.com>
> ---
> 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

  reply index

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-07-17 11:58 [dpdk-dev] [PATCH 0/3] vfio: fix broken msix interrupt initialization Nithin Dabilpuram
2019-07-17 11:58 ` [dpdk-dev] [PATCH 1/3] vfio: revert change that does intr eventfd setup at probe Nithin Dabilpuram
2019-07-19  9:13   ` Nowak, DamianX
2019-07-17 11:58 ` [dpdk-dev] [PATCH 2/3] eal: add ack interrupt API Nithin Dabilpuram
2019-07-17 11:58 ` [dpdk-dev] [PATCH 3/3] drivers/net: use ack API in interrupt handlers Nithin Dabilpuram
2019-07-17 12:47   ` Hyong Youb Kim (hyonkim)
2019-07-17 17:18   ` Shahed Shaikh
2019-07-17 12:43 ` [dpdk-dev] [PATCH v2 0/3] vfio: fix broken msix interrupt initialization Nithin Dabilpuram
2019-07-17 12:43   ` [dpdk-dev] [PATCH v2 1/3] vfio: revert change that does intr eventfd setup at probe Nithin Dabilpuram
2019-07-17 12:43   ` [dpdk-dev] [PATCH v2 2/3] eal: add ack interrupt API Nithin Dabilpuram
2019-07-17 12:57     ` Hyong Youb Kim (hyonkim)
2019-07-17 14:35       ` [dpdk-dev] [EXT] " Nithin Kumar Dabilpuram
2019-07-17 15:05         ` Hyong Youb Kim (hyonkim)
2019-07-17 15:16           ` Nithin Kumar Dabilpuram
2019-07-18 10:22           ` Burakov, Anatoly
2019-07-17 12:43   ` [dpdk-dev] [PATCH v2 3/3] drivers/net: use ack API in interrupt handlers Nithin Dabilpuram
2019-07-18  8:46 ` [dpdk-dev] [PATCH v3 0/3] vfio: fix broken msix interrupt initialization Nithin Dabilpuram
2019-07-18  8:46   ` [dpdk-dev] [PATCH v3 1/3] vfio: revert change that does intr eventfd setup at probe Nithin Dabilpuram
2019-07-18  8:46   ` [dpdk-dev] [PATCH v3 2/3] eal: add ack interrupt API Nithin Dabilpuram
2019-07-18 13:13     ` Burakov, Anatoly
2019-07-18 13:27       ` [dpdk-dev] [EXT] " Jerin Jacob Kollanukkaran
2019-07-18 13:30         ` Nithin Kumar Dabilpuram
2019-07-18  8:46   ` [dpdk-dev] [PATCH v3 3/3] drivers/net: use ack API in interrupt handlers Nithin Dabilpuram
2019-07-18 14:36 ` [dpdk-dev] [PATCH v4 0/3] vfio: fix broken msix interrupt initialization Nithin Dabilpuram
2019-07-18 14:36   ` [dpdk-dev] [PATCH v4 1/3] vfio: revert change that does intr eventfd setup at probe Nithin Dabilpuram
2019-07-19  8:28     ` Yao, Lei A
2019-07-22 19:27     ` David Marchand
2019-07-18 14:36   ` [dpdk-dev] [PATCH v4 2/3] eal: add ack interrupt API Nithin Dabilpuram
2019-07-22 19:28     ` David Marchand
2019-07-18 14:36   ` [dpdk-dev] [PATCH v4 3/3] drivers/net: use ack API in interrupt handlers Nithin Dabilpuram
2019-07-22 19:29     ` David Marchand [this message]
2019-07-22 19:38   ` [dpdk-dev] [PATCH v4 0/3] vfio: fix broken msix interrupt initialization David Marchand
2019-07-23  5:32     ` [dpdk-dev] [EXT] " Nithin Kumar Dabilpuram
2019-07-23  8:04 ` [dpdk-dev] [PATCH v5 " David Marchand
2019-07-23  8:04   ` [dpdk-dev] [PATCH v5 1/3] vfio: revert change that does intr eventfd setup at probe David Marchand
2019-07-23  8:04   ` [dpdk-dev] [PATCH v5 2/3] eal: add ack interrupt API David Marchand
2019-07-23  8:04   ` [dpdk-dev] [PATCH v5 3/3] drivers/net: use ack API in interrupt handlers David Marchand
2019-07-23 10:01   ` [dpdk-dev] [PATCH v5 0/3] vfio: fix broken msix interrupt initialization Thomas Monjalon

Reply instructions:

You may reply publically to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAJFAV8xxzrYBidKnLspQZOfbXpzbwejXomtha-J7kd9Xdk_AUQ@mail.gmail.com \
    --to=david.marchand@redhat.com \
    --cc=alejandro.lucero@netronome.com \
    --cc=allain.legacy@windriver.com \
    --cc=arybchenko@solarflare.com \
    --cc=beilei.xing@intel.com \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@intel.com \
    --cc=hyonkim@cisco.com \
    --cc=igor.russkikh@aquantia.com \
    --cc=jerinj@marvell.com \
    --cc=jingjing.wu@intel.com \
    --cc=johndale@cisco.com \
    --cc=konstantin.ananyev@intel.com \
    --cc=matt.peters@windriver.com \
    --cc=maxime.coquelin@redhat.com \
    --cc=ndabilpuram@marvell.com \
    --cc=pavel.belous@aquantia.com \
    --cc=qi.z.zhang@intel.com \
    --cc=qiming.yang@intel.com \
    --cc=ravi1.kumar@amd.com \
    --cc=rmody@marvell.com \
    --cc=shshaikh@marvell.com \
    --cc=thomas@monjalon.net \
    --cc=tiwei.bie@intel.com \
    --cc=wenzhuo.lu@intel.com \
    --cc=xiao.w.wang@intel.com \
    --cc=yongwang@vmware.com \
    --cc=zhihong.wang@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

DPDK-dev Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/dpdk-dev/0 dpdk-dev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 dpdk-dev dpdk-dev/ https://lore.kernel.org/dpdk-dev \
		dev@dpdk.org dpdk-dev@archiver.kernel.org
	public-inbox-index dpdk-dev


Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.dpdk.dev


AGPL code for this site: git clone https://public-inbox.org/ public-inbox