From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id CCD77C338 for ; Tue, 2 Jun 2015 15:39:37 +0200 (CEST) MIME-Version: 1.0 Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga101.jf.intel.com with ESMTP; 02 Jun 2015 06:39:29 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.13,540,1427785200"; d="p7s'?scan'208";a="719325860" Received: from irsmsx153.ger.corp.intel.com ([163.33.192.75]) by fmsmga001.fm.intel.com with ESMTP; 02 Jun 2015 06:39:26 -0700 Received: from irsmsx110.ger.corp.intel.com ([169.254.15.124]) by IRSMSX153.ger.corp.intel.com ([169.254.9.95]) with mapi id 14.03.0224.002; Tue, 2 Jun 2015 14:39:25 +0100 From: "Dementiev, Roman" To: Jay Rolette Thread-Topic: [dpdk-dev] add support for HTM lock elision for x86 Thread-Index: AQHQnTW3OEXNl+6LCEap065ec+RNb52ZItwAgAASDLA= Date: Tue, 2 Jun 2015 13:39:25 +0000 Message-ID: <4EB94430E0E05A4EAE258E2A9A1B98DD33EAE15E@irsmsx110.ger.corp.intel.com> References: <1433250693-23644-1-git-send-email-roman.dementiev@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-originating-ip: [163.33.239.182] MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Cc: DPDK Subject: Re: [dpdk-dev] add support for HTM lock elision for x86 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 Jun 2015 13:39:38 -0000 Intel GmbH Dornacher Strasse 1 85622 Feldkirchen/Muenchen, Deutschland Sitz der Gesellschaft: Feldkirchen bei Muenchen Geschaeftsfuehrer: Christian Lamprechter, Hannes Schwaderer, Douglas Lusk Registergericht: Muenchen HRB 47456 Ust.-IdNr./VAT Registration No.: DE129385895 Citibank Frankfurt a.M. (BLZ 502 109 00) 600119052 >From yong.liu@intel.com Tue Jun 2 16:09:11 2015 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by dpdk.org (Postfix) with ESMTP id 23E59C334 for ; Tue, 2 Jun 2015 16:09:09 +0200 (CEST) Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga101.fm.intel.com with ESMTP; 02 Jun 2015 07:08:47 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.13,540,1427785200"; d="scan'208";a="735637182" Received: from kmsmsx152.gar.corp.intel.com ([172.21.73.87]) by fmsmga002.fm.intel.com with ESMTP; 02 Jun 2015 07:08:45 -0700 Received: from shsmsx102.ccr.corp.intel.com (10.239.4.154) by KMSMSX152.gar.corp.intel.com (172.21.73.87) with Microsoft SMTP Server (TLS) id 14.3.224.2; Tue, 2 Jun 2015 22:08:44 +0800 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.23]) by shsmsx102.ccr.corp.intel.com ([169.254.2.109]) with mapi id 14.03.0224.002; Tue, 2 Jun 2015 22:08:43 +0800 From: "Liu, Yong" To: "Liang, Cunming" , "dev@dpdk.org" Thread-Topic: [PATCH v10 00/13] Interrupt mode PMD Thread-Index: AQHQnQDjRUxaR9oYIk2Xx85CWpKmRJ2ZQSHw Date: Tue, 2 Jun 2015 14:08:43 +0000 Message-ID: <86228AFD5BCD8E4EBFD2B90117B5E81E10E37490@SHSMSX103.ccr.corp.intel.com> References: <1432889125-20255-1-git-send-email-cunming.liang@intel.com> <1433228006-24661-1-git-send-email-cunming.liang@intel.com> In-Reply-To: <1433228006-24661-1-git-send-email-cunming.liang@intel.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH v10 00/13] Interrupt mode PMD X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 Jun 2015 14:09:11 -0000 Tested-by: Yong Liu - Tested Commit: 7c4c66bf666b8059ed0ad2f2478ef349b3272f51 - OS: Fedora20 3.15.5 - GCC: gcc version 4.8.3 20140911 - CPU: Intel(R) Xeon(R) CPU E5-2699 v3 @ 2.30GHz - NIC: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ [8086:10fb] - NIC: Intel Corporation I350 Gigabit Network Connection [8086:1521] - Default x86_64-native-linuxapp-gcc configuration - Prerequisites: vfio related case request vt-d enable in bios and IOMMU en= able in kernel=20 - Total 17 cases, 17 passed, 0 failed - Case: pf_lsc_igbuio_legacy Description: check when pf bound to igb_uio with legacy mode, link status= change interrupt can be normally handled Command / instruction: Insmod igb_uio driver with legacy interrupt mode insmod ./x86_64-native-linuxapp-gcc/kmod/igb_uio.ko intr_mode=3Dlegac= y Change port config to lsc enable and rxq disable in l3fwd-power/main.c Build l3fwd-power and start l3fwd-power with 2 ports =20 l3fwd-power -c 0x6 -n 3 -- -p 0x3 -P --config=3D"(0,0,1),(1,0,2)" Change tester port0 link down and verify link down detected on dut port= 0=20 Port 0: link down Change tester port0 link up and verify link up detected on dut port0 Port 0: link up Change tester port1 link down and verify link down detected on dut port= 1=20 Port 1: link down Change tester port1 link up and verify link up detected on dut port1 Port 1: link up =20 Change port config to lsc enable and rxq enable in l3fwd-power/main.c Build l3fwd-power and start l3fwd-power with 2 ports l3fwd-power -c 0x6 -n 3 -- -p 0x3 -P --config=3D"(0,0,1),(1,0,2)" Verify lsc disabled for can't enable lsc and rxq in the same time when = pf bound to igb_uio lsc won't enable because of no intr multiplex =20 - Case: pf_lsc_igbuio_msix Description: check when pf bound to igb_uio with msix mode, link status c= hange interrupt can be normally handled Command / instruction: Insmod igb_uio driver with msix interrupt mode insmod ./x86_64-native-linuxapp-gcc/kmod/igb_uio.ko intr_mode=3Dmsix Verify link status can be normally handled like previous case pf_lsc_ig= buio_legacy. - Case: pf_lsc_vfio_legacy Description: check when pf bound to vfio with legacy mode, link status ch= ange interrupt can be normally handled Command / instruction: Do prerequisites for vfio driver then bind device to vfio-driver modprobe vfio modprobe vfio-pci ./tools/dpdk_nic_bind.py --bind=3Dvfio-pci 08:00.0 08:00.1 Change port config to lsc enable and rxq disable in l3fwd-power/main.c Start l3fwd-power with vfio legacy mode l3fwd-power -c 0x6 -n 3 --vfio-intr=3Dlegacy -- -p 0x3 -P --config=3D= "(0,0,1),(1,0,2)" Check link status change interrupt can be normally handled like previou= s case. =09 Change port config to lsc enable and rxq enable in l3fwd-power/main.c Start l3fwd-power with vfio legacy mode l3fwd-power -c 0x6 -n 3 --vfio-intr=3Dlegacy -- -p 0x3 -P --config=3D= "(0,0,1),(1,0,2)" Verify lsc disabled for can't enable lsc and rxq in the same time with = legacy mode. =09 - Case: pf_lsc_vfio_msi Description: check when pf bound to vfio with msi mode, link status chang= e interrupt can be normally handled Command / instruction: Do prerequisites for vfio driver then bind device to vfio-driver modprobe vfio modprobe vfio-pci ./tools/dpdk_nic_bind.py --bind=3Dvfio-pci 08:00.0 08:00.1 Change port config to lsc enable and rxq disable in l3fwd-power/main.c Start l3fwd-power with vfio msi mode l3fwd-power -c 0x6 -n 3 --vfio-intr=3Dmsi -- -p 0x3 -P --config=3D"(0= ,0,1),(1,0,2)" Check link status change interrupt can be normally handled like previou= s case. =09 Change port config to lsc enable and rxq enable in l3fwd-power/main.c Start l3fwd-power with vfio msi mode l3fwd-power -c 0x6 -n 3 --vfio-intr=3Dmsi -- -p 0x3 -P --config=3D"(0= ,0,1),(1,0,2)" Verify lsc disabled for can't enable lsc and rxq in the same time with = legacy mode. - Case: pf_lsc_vfio_msix Description: check when pf bound to vfio with msix mode, link status chan= ge interrupt can be normally handled Command / instruction: Do prerequisites for vfio driver then bind device to vfio-driver modprobe vfio modprobe vfio-pci ./tools/dpdk_nic_bind.py --bind=3Dvfio-pci 08:00.0 08:00.1 Change port config to lsc enable and rxq disable in l3fwd-power/main.c Start l3fwd-power with vfio msix mode l3fwd-power -c 0x6 -n 3 --vfio-intr=3Dmsix -- -p 0x3 -P --config=3D"(= 0,0,1),(1,0,2)" Check link status change interrupt can be normally handled like previou= s case. =09 Change port config to lsc enable and rxq enable in l3fwd-power/main.c Start l3fwd-power with vfio msix mode l3fwd-power -c 0x6 -n 3 --vfio-intr=3Dmsix -- -p 0x3 -P --config=3D"(= 0,0,1),(1,0,2)" Check link status change interrupt can be normally handled like previou= s case. =09 - Case: pf_rxq_on_vfio_msix Description: check when pf bound to vfio with default msix mode, receive = packet interrupt can be normally handled Command / instruction: Do prerequisites for vfio driver then bind device to vfio-driver modprobe vfio modprobe vfio-pci ./tools/dpdk_nic_bind.py --bind=3Dvfio-pci 08:00.0 08:00.1 Start l3fwd-power with 2 ports and 2 cores. =20 l3fwd-power -c 0x6 -n 3 -- -p 0x3 -P --config=3D"(0,0,1),(1,0,2)" Send packet from tester port0 and verify dut core1 wakeup and then slee= p. lcore 1 is waked up from rx interrupt on port 0 queue 0 lcore 1 sleeps until interrupt triggers Send packet from tester port1 and verify dut core2 wakeup and then slee= p. lcore 2 is waked up from rx interrupt on port 1 queue 0 lcore 2 sleeps until interrupt triggers =20 - Case: pf_rxq_on_vfio_msi Description: check when pf bound to vfio with msi mode, receive packet in= terrupt can be normally handled Command / instruction: Do prerequisites for vfio driver then bind device to vfio-driver modprobe vfio modprobe vfio-pci ./tools/dpdk_nic_bind.py --bind=3Dvfio-pci 08:00.0 08:00.1 Start l3fwd-power with 2 ports and 2 cores. =20 l3fwd-power -c 0x6 -n 3 --vfio-intr=3Dmsi -- -p 0x3 -P --config=3D"(0= ,0,1),(1,0,2)" Verify packet interrupt can be normally handled like previous case pf_r= xq_on_vfio_msix. =20 - Case: pf_rxq_on_vfio_legacy Description: check when pf bound to vfio with legacy mode, receive packet= interrupt can be normally handled Command / instruction: Do prerequisites for vfio driver then bind device to vfio-driver modprobe vfio modprobe vfio-pci ./tools/dpdk_nic_bind.py --bind=3Dvfio-pci 08:00.0 08:00.1 Start l3fwd-power with 2 ports and 2 cores. =20 l3fwd-power -c 0x6 -n 3 --vfio-intr=3Dlegacy -- -p 0x3 -P --config=3D= "(0,0,1),(1,0,2)" Verify packet interrupt can be normally handled like previous case pf_r= xq_on_vfio_msix. - Case: pf_onecore_on_vfio Description: check when all pf devices bound to one core, receive packet = interrupt can be normally handled Command / instruction: Do prerequisites for vfio driver then bind device to vfio-driver modprobe vfio modprobe vfio-pci ./tools/dpdk_nic_bind.py --bind=3Dvfio-pci 08:00.0 08:00.1 Start l3fwd-power with 2 ports and 1 cores. =20 l3fwd-power -c 0x2 -n 3 -- -p 0x3 -P --config=3D"(0,0,1),(1,0,1)" Verify packet interrupt can be normally handled like previous case pf_r= xq_on_vfio_msix. =09 - Case: pf_multiqueue_on_vfio Description: check when pf device has mulit queues, receive packet interr= upt can be normally handled Command / instruction: Start l3fwd-power with 2 ports and 4 cores. l3fwd-power -c 0x100000e -n 3 -- -p 0x3 -P --config=3D"(0,0,1),(0,1,2= ),(1,0,3),(1,1,24)" Send enough packets with different destination ip address. sendp([Ether()/IP(dst=3D"127.0.0.X")/UDP()/Raw('0'*18)], iface=3D"p786p1= ") Verify all cores wakeup and then sleep as expected. - Case: pf_maxqueue_on_vfio Description: check when pf device has maximum queues, receive packet inte= rrupt can be normally handled Command / instruction: Start l3fwd-power with 2 ports and 32 cores [only for niantic], differe= nt nic has different maximum rx queues l3fwd-power -c 0x3fdfe3fdfe -n 3 -- -p 0x3 -P --config=3D"(0,0,1),(0,= 1,21),(0,2,2),(0,3,22),\ (0,4,3),(0,5,23),(0,6,24),(0,7,4),(0,8,25),(0,9,5),(0,10,26),(0,1= 1,6),(0,12,27),(0,13,7),\ (0,14,8),(0,15,28),(1,0,10),(1,1,30),(1,2,11),(1,3,31),(1,4,32),(= 1,5,12),(1,6,33),(1,7,13),\ (1,8,34),(1,9,14),(1,10,35),(1,11,15),(1,12,16),(1,13,36),(1,14,1= 7),(1,15,37)," Send enough packets with different destination ip address. sendp([Ether()/IP(dst=3D"127.0.0.X")/UDP()/Raw('0'*18)], iface=3D"p786p1= ") Verify all cores wakeup and then sleep as expected.=09 =09 - Case: pf_rxq_on_igbuio_legacy Description: check when pf bound to igb_uio with legacy mode, receive pac= ket interrupt can be normally handled Command / instruction: Insmod igb_uio driver with legacy interrupt mode insmod ./x86_64-native-linuxapp-gcc/kmod/igb_uio.ko intr_mode=3Dlegac= y ./tools/dpdk_nic_bind.py --bind=3Digb_uio 08:00.0 08:00.1 =20 Start l3fwd-power with 2 ports and 2 cores. =20 l3fwd-power -c 0x6 -n 3 -- -p 0x3 -P --config=3D"(0,0,1),(1,0,2)" Verify packet interrupt can be normally handled like previous case pf_r= xq_on_vfio_msix. =20 - Case: pf_rxq_on_igbuio_msix Description: check when pf bound to igb_uio with msix mode, receive packe= t interrupt can be normally handled Command / instruction: Insmod igb_uio driver with msix interrupt mode insmod ./x86_64-native-linuxapp-gcc/kmod/igb_uio.ko intr_mode=3Dmsix ./tools/dpdk_nic_bind.py --bind=3Digb_uio 08:00.0 08:00.1 =20 Start l3fwd-power with 2 ports and 2 cores. =20 l3fwd-power -c 0x6 -n 3 -- -p 0x3 -P --config=3D"(0,0,1),(1,0,2)" Verify packet interrupt can be normally handled like previous case pf_r= xq_on_vfio_msix. - Case: pf_rxq_on_uiopcigeneric Description: check when pf bound to uio_pci_generic, receive packet inter= rupt can be normally handled Command / instruction: Insmod uio_pci_generic driver and bind pf device on it. ./tools/dpdk_nic_bind.py --bind=3Duio_pci_generic 08:00.0 08:00.1 =20 Start l3fwd-power with 2 ports and 2 cores. =20 l3fwd-power -c 0x6 -n 3 -- -p 0x3 -P --config=3D"(0,0,1),(1,0,2)" Verify packet interrupt can be normally handled like previous case pf_r= xq_on_vfio_msix.=09 - Case: pf_lsc_on_uiopcigeneric Description: check when pf bound to uio_pci_generic, link status changed = interrupt can be normally handled Command / instruction: Insmod uio_pci_generic driver and bind pf device on it. ./tools/dpdk_nic_bind.py --bind=3Duio_pci_generic 08:00.0 08:00.1 =20 Start l3fwd-power with 2 ports and 2 cores. =20 l3fwd-power -c 0x6 -n 3 -- -p 0x3 -P --config=3D"(0,0,1),(1,0,2)" Change tester port0 link down and verify link down detected on dut port= 0=20 Port 0: link down Change tester port0 link up and verify link up detected on dut port0 Port 0: link up Change tester port1 link down and verify link down detected on dut port= 1=20 Port 1: link down Change tester port1 link up and verify link up detected on dut port1 Port 1: link up =20 Change port config to lsc enable and rxq enable in l3fwd-power/main.c Build l3fwd-power and start l3fwd-power with 2 ports l3fwd-power -c 0x6 -n 3 -- -p 0x3 -P --config=3D"(0,0,1),(1,0,2)" Verify lsc disabled for can't enable lsc and rxq in the same time when = pf bound to uio_pci_generic lsc won't enable because of no intr multiplex=09 =09 - Case: vf_in_vm_rxq Description: check when vf bound to igb_uio in virtual machine, receive p= acket interrupt can be normally handled Only support niantic by now. Command / instruction: Create vf devices and bound into virtual machine echo 1 > /sys/bus/pci/devices/0000\:08\:00.0/sriov_numvfs echo 1 > /sys/bus/pci/devices/0000\:08\:00.1/sriov_numvfs virsh virsh # nodedev-dettach pci_0000_08_10_0 virsh # nodedev-dettach pci_0000_08_10_1 Start virtual machine and bind vf devices to driver igb_uio. ./tools/dpdk_nic_bind.py --bind=3Digb_uio eth1 eth2 Change port config to lsc disable and rxq enable in l3fwd-power/main.c= =09 Start l3fwd-power with 2 ports and 2 cores. =20 l3fwd-power -c 0x6 -n 3 -- -p 0x3 -P --config=3D"(0,0,1),(1,0,2)" Send packet from tester port0 with promisc mac and verify vm core1 wake= up and then sleep. lcore 1 is waked up from rx interrupt on port 0 queue 0 lcore 1 sleeps until interrupt triggers Send packet from tester port1 with promisc mac and verify vm core2 wake= up and then sleep. lcore 2 is waked up from rx interrupt on port 1 queue 0 lcore 2 sleeps until interrupt triggers =20 - Case: vf_in_host_rxq Description: check when vf bound to vfio with msix mode, receive packet i= nterrupt can be normally handled Only support niantic by now. Command / instruction: Create vf devices and bound to vfio echo 1 > /sys/bus/pci/devices/0000\:08\:00.0/sriov_numvfs echo 1 > /sys/bus/pci/devices/0000\:08\:00.1/sriov_numvfs modprobe vfio modprobe vfio-pci ./tools/dpdk_nic_bind.py --bind=3Dvfio-pci 08:10.0 08:10.1 Start l3fwd-power with 2 ports and 2 cores. =20 l3fwd-power -c 0x6 -n 3 -- -p 0x3 -P --config=3D"(0,0,1),(1,0,2)" Send packet from tester port0 with promisc mac and verify dut core1 wak= eup and then sleep. lcore 1 is waked up from rx interrupt on port 0 queue 0 lcore 1 sleeps until interrupt triggers Send packet from tester port1 with promisc mac and verify dut core2 wak= eup and then sleep. lcore 2 is waked up from rx interrupt on port 1 queue 0 lcore 2 sleeps until interrupt triggers > -----Original Message----- > From: Liang, Cunming > Sent: Tuesday, June 02, 2015 2:53 PM > To: dev@dpdk.org > Cc: shemming@brocade.com; david.marchand@6wind.com; > thomas.monjalon@6wind.com; Zhou, Danny; Wang, Liang-min; Richardson, Bruc= e; > Liu, Yong; nhorman@tuxdriver.com; Liang, Cunming > Subject: [PATCH v10 00/13] Interrupt mode PMD >=20 > v10 changes > - code rework to return actual error code > - bug fix for lsc when using uio_pci_generic >=20 > v9 changes > - code rework to fix open comment > - bug fix for igb lsc when both lsc and rxq are enabled in vfio-msix > - new patch to turn off the feature by defalut so as to avoid v2.1 abi > broken >=20 > v8 changes > - remove condition check for only vfio-msix > - add multiplex intr support when only one intr vector allowed > - lsc and rxq interrupt runtime enable decision > - add safe event delete while the event wakeup execution happens >=20 > v7 changes > - decouple epoll event and intr operation > - add condition check in the case intr vector is disabled > - renaming some APIs >=20 > v6 changes > - split rte_intr_wait_rx_pkt into two APIs 'wait' and 'set'. > - rewrite rte_intr_rx_wait/rte_intr_rx_set. > - using vector number instead of queue_id as interrupt API params. > - patch reorder and split. >=20 > v5 changes > - Rebase the patchset onto the HEAD > - Isolate ethdev from EAL for new-added wait-for-rx interrupt function > - Export wait-for-rx interrupt function for shared libraries > - Split-off a new patch file for changed struct rte_intr_handle that > other patches depend on, to avoid breaking git bisect > - Change sample applicaiton to accomodate EAL function spec change > accordingly >=20 > v4 changes > - Export interrupt enable/disable functions for shared libraries > - Adjust position of new-added structure fields and functions to > avoid breaking ABI >=20 > v3 changes > - Add return value for interrupt enable/disable functions > - Move spinlok from PMD to L3fwd-power > - Remove unnecessary variables in e1000_mac_info > - Fix miscelleous review comments >=20 > v2 changes > - Fix compilation issue in Makefile for missed header file. > - Consolidate internal and community review comments of v1 patch set. >=20 > The patch series introduce low-latency one-shot rx interrupt into DPDK > with > polling and interrupt mode switch control example. >=20 > DPDK userspace interrupt notification and handling mechanism is based on > UIO > with below limitation: > 1) It is designed to handle LSC interrupt only with inefficient suspended > pthread wakeup procedure (e.g. UIO wakes up LSC interrupt handling > thread > which then wakes up DPDK polling thread). In this way, it introduces > non-deterministic wakeup latency for DPDK polling thread as well as > packet > latency if it is used to handle Rx interrupt. > 2) UIO only supports a single interrupt vector which has to been shared b= y > LSC interrupt and interrupts assigned to dedicated rx queues. >=20 > This patchset includes below features: > 1) Enable one-shot rx queue interrupt in ixgbe PMD(PF & VF) and igb PMD(P= F > only). > 2) Build on top of the VFIO mechanism instead of UIO, so it could support > up to 64 interrupt vectors for rx queue interrupts. > 3) Have 1 DPDK polling thread handle per Rx queue interrupt with a > dedicated > VFIO eventfd, which eliminates non-deterministic pthread wakeup latenc= y > in > user space. > 4) Demonstrate interrupts control APIs and userspace NAIP-like > polling/interrupt > switch algorithms in L3fwd-power example. >=20 > Known limitations: > 1) It does not work for UIO due to a single interrupt eventfd shared by > LSC > and rx queue interrupt handlers causes a mess. [FIXED] > 2) LSC interrupt is not supported by VF driver, so it is by default > disabled > in L3fwd-power now. Feel free to turn in on if you want to support bot= h > LSC > and rx queue interrupts on a PF. >=20 > Cunming Liang (13): > eal/linux: add interrupt vectors support in intr_handle > eal/linux: add rte_epoll_wait/ctl support > eal/linux: add API to set rx interrupt event monitor > eal/linux: fix comments typo on vfio msi > eal/linux: add interrupt vectors handling on VFIO > eal/linux: standalone intr event fd create support > eal/linux: fix lsc read error in uio_pci_generic > eal/bsd: dummy for new intr definition > ethdev: add rx intr enable, disable and ctl functions > ixgbe: enable rx queue interrupts for both PF and VF > igb: enable rx queue interrupts for PF > l3fwd-power: enable one-shot rx interrupt and polling/interrupt mode > switch > abi: fix v2.1 abi broken issue >=20 > drivers/net/e1000/igb_ethdev.c | 311 ++++++++++-- > drivers/net/ixgbe/ixgbe_ethdev.c | 519 > ++++++++++++++++++++- > drivers/net/ixgbe/ixgbe_ethdev.h | 4 + > examples/l3fwd-power/main.c | 206 ++++++-- > lib/librte_eal/bsdapp/eal/eal_interrupts.c | 19 + > .../bsdapp/eal/include/exec-env/rte_interrupts.h | 81 ++++ > lib/librte_eal/bsdapp/eal/rte_eal_version.map | 5 + > lib/librte_eal/linuxapp/eal/eal_interrupts.c | 360 ++++++++++++-- > .../linuxapp/eal/include/exec-env/rte_interrupts.h | 219 +++++++++ > lib/librte_eal/linuxapp/eal/rte_eal_version.map | 8 + > lib/librte_ether/rte_ethdev.c | 109 +++++ > lib/librte_ether/rte_ethdev.h | 132 ++++++ > lib/librte_ether/rte_ether_version.map | 4 + > 13 files changed, 1852 insertions(+), 125 deletions(-) >=20 > -- > 1.8.1.4