All of lore.kernel.org
 help / color / mirror / 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	[thread overview]
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	other threads:[~2019-07-22 19:29 UTC|newest]

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 publicly 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
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.