> -----Original Message----- > From: Nithin Dabilpuram <ndabilpu...@marvell.com> > Sent: Wednesday, July 17, 2019 5:29 PM > To: Hyong Youb Kim <hyon...@cisco.com>; David Marchand > <david.march...@redhat.com>; Thomas Monjalon <tho...@monjalon.net>; > Ferruh Yigit <ferruh.yi...@intel.com>; Igor Russkikh > <igor.russk...@aquantia.com>; Pavel Belous <pavel.bel...@aquantia.com>; > Allain Legacy <allain.leg...@windriver.com>; Matt Peters > <matt.pet...@windriver.com>; Ravi Kumar <ravi1.ku...@amd.com>; Rasesh > Mody <rm...@marvell.com>; Shahed Shaikh <shsha...@marvell.com>; > Wenzhuo Lu <wenzhuo...@intel.com>; Qi Zhang <qi.z.zh...@intel.com>; Xiao > Wang <xiao.w.w...@intel.com>; Beilei Xing <beilei.x...@intel.com>; Jingjing > Wu <jingjing...@intel.com>; Qiming Yang <qiming.y...@intel.com>; > Konstantin Ananyev <konstantin.anan...@intel.com>; Alejandro Lucero > <alejandro.luc...@netronome.com>; Andrew Rybchenko > <arybche...@solarflare.com>; Maxime Coquelin > <maxime.coque...@redhat.com>; Tiwei Bie <tiwei....@intel.com>; Zhihong > Wang <zhihong.w...@intel.com>; Yong Wang <yongw...@vmware.com> > Cc: Jerin Jacob Kollanukkaran <jer...@marvell.com>; John Daley > <johnd...@cisco.com>; dev@dpdk.org; Nithin Kumar Dabilpuram > <ndabilpu...@marvell.com> > Subject: [PATCH 3/3] drivers/net: use ack API in interrupt handlers > > 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 <ndabilpu...@marvell.com> > Signed-off-by: Jerin Jacob <jer...@marvell.com> > --- > drivers/net/atlantic/Makefile | 1 + > drivers/net/atlantic/atl_ethdev.c | 2 +- > drivers/net/atlantic/meson.build | 2 ++ > 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/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/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 +- > 27 files changed, 56 insertions(+), 29 deletions(-) > ...
Hi Nithin, Jerin and Hyong, I have tested this series with all igb_uio, vfio-pci and uio_pci_generic modules which covers both MSIx and INTx modes and everything is working fine. > 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"); > } > } ACK for this change. > > @@ -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"); > } > I tried to remove rte_intr_ack() from MSIx interrupt handler in qede and device still generates interrupts. That means in MSIx interrupt handler - qede_interrupt_handler(), we can remove rte_intr_ack()/rte_intr_enable() call. So for qede PMD - Acked-by: Shahed Shaikh <shsha...@marvell.com> For whole series - Tested-by: Shahed Shaikh <shsha...@marvell.com> Thanks, Shahed .