From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by dpdk.org (Postfix) with ESMTP id 4FBAA378E for ; Tue, 27 Oct 2015 15:48:24 +0100 (CET) Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga103.fm.intel.com with ESMTP; 27 Oct 2015 07:48:23 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.20,205,1444719600"; d="scan'208";a="836613174" Received: from fmsmsx106.amr.corp.intel.com ([10.18.124.204]) by fmsmga002.fm.intel.com with ESMTP; 27 Oct 2015 07:48:19 -0700 Received: from fmsmsx155.amr.corp.intel.com (10.18.116.71) by FMSMSX106.amr.corp.intel.com (10.18.124.204) with Microsoft SMTP Server (TLS) id 14.3.248.2; Tue, 27 Oct 2015 07:48:15 -0700 Received: from shsmsx152.ccr.corp.intel.com (10.239.6.52) by FMSMSX155.amr.corp.intel.com (10.18.116.71) with Microsoft SMTP Server (TLS) id 14.3.248.2; Tue, 27 Oct 2015 07:48:15 -0700 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.204]) by SHSMSX152.ccr.corp.intel.com ([169.254.6.106]) with mapi id 14.03.0248.002; Tue, 27 Oct 2015 22:48:13 +0800 From: "Liu, Yong" To: "Liang, Cunming" , "dev@dpdk.org" Thread-Topic: [dpdk-dev] [PATCH v1 1/7] e1000: add rx interrupt support Thread-Index: AQHQ92wlTFPN6mpEWkCGRW6aXJBMMp59DOMAgAKQH4A= Date: Tue, 27 Oct 2015 14:48:12 +0000 Message-ID: <86228AFD5BCD8E4EBFD2B90117B5E81E10F35289@SHSMSX103.ccr.corp.intel.com> References: <1443169692-4709-1-git-send-email-yong.liu@intel.com> <1443169692-4709-2-git-send-email-yong.liu@intel.com> <562DD7D0.8060808@intel.com> In-Reply-To: <562DD7D0.8060808@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 v1 1/7] e1000: add rx interrupt support 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, 27 Oct 2015 14:48:25 -0000 Thanks Cunming, I'll send out v2 patch. > -----Original Message----- > From: Liang, Cunming > Sent: Monday, October 26, 2015 3:36 PM > To: Liu, Yong; dev@dpdk.org > Subject: Re: [dpdk-dev] [PATCH v1 1/7] e1000: add rx interrupt support >=20 > Hi Yong, >=20 > On 9/25/2015 4:28 PM, Yong Liu wrote: > > From: Marvin Liu > > > > Enable rx interrupt support on e1000 PF non-IOV mode. > As I know, e1000 hasn't IOV mode. It's not necessary to mention PF > non-IOV mode or not. > In addition, it's necessary to mention the patch series is to support > uio/vfio or both? To allow physical/emulation or both? > > The patch work with uio and vfio+msi mode. It support both physical device = and qemu emulated device.=20 This information will be added into cover letter. > > Signed-off-by: Marvin Liu > > > > diff --git a/drivers/net/e1000/em_ethdev.c > b/drivers/net/e1000/em_ethdev.c > > index 912f5dd..99beb9c 100644 > > --- a/drivers/net/e1000/em_ethdev.c > > +++ b/drivers/net/e1000/em_ethdev.c > > @@ -81,6 +81,7 @@ static int eth_em_flow_ctrl_get(struct rte_eth_dev > *dev, > > static int eth_em_flow_ctrl_set(struct rte_eth_dev *dev, > > struct rte_eth_fc_conf *fc_conf); > > static int eth_em_interrupt_setup(struct rte_eth_dev *dev); > > +static int eth_em_rxq_interrupt_setup(struct rte_eth_dev *dev); > > static int eth_em_interrupt_get_status(struct rte_eth_dev *dev); > > static int eth_em_interrupt_action(struct rte_eth_dev *dev); > > static void eth_em_interrupt_handler(struct rte_intr_handle *handle, > > @@ -107,6 +108,7 @@ static void em_vlan_hw_strip_disable(struct > rte_eth_dev *dev); > > static void eth_em_vlan_filter_set(struct rte_eth_dev *dev, > > uint16_t vlan_id, int on); > > */ > > +static void em_rxq_intr_enable(struct e1000_hw *hw); > > static int eth_em_led_on(struct rte_eth_dev *dev); > > static int eth_em_led_off(struct rte_eth_dev *dev); > > > > @@ -608,6 +610,9 @@ eth_em_start(struct rte_eth_dev *dev) > > return ret; > > } > > } > > + /* check if rxq interrupt is enabled */ > > + if (dev->data->dev_conf.intr_conf.rxq !=3D 0) > > + eth_em_rxq_interrupt_setup(dev); > > > > adapter->stopped =3D 0; > > > > @@ -1276,6 +1281,39 @@ eth_em_interrupt_setup(struct rte_eth_dev *dev) > > return (0); > > } > > > > +/* It clears the interrupt causes and enables the interrupt. > Comments start from next line of '/*' or '/**'? > > + * It will be called once only during nic initialized. > > + * > > + * @param dev > > + * Pointer to struct rte_eth_dev. > > + * > > + * @return > > + * - On success, zero. > > + * - On failure, a negative value. > > + */ > > +static int > > +eth_em_rxq_interrupt_setup(struct rte_eth_dev *dev) > > +{ > > + struct e1000_hw *hw =3D > > + E1000_DEV_PRIVATE_TO_HW(dev->data->dev_private); > > + > > + E1000_READ_REG(hw, E1000_ICR); > > + em_rxq_intr_enable(hw); > > + return 0; > > +} > > + > > +/* It enable receive packet interrupt. > The same. > > + * @param hw > > + * Pointer to struct e1000_hw > > + * > > + * @return > > + */ > > +static void > > +em_rxq_intr_enable(struct e1000_hw *hw) > > +{ > > + E1000_WRITE_REG(hw, E1000_IMS, E1000_IMS_RXT0); > To make sure post-write be finished immediately, E1000_WRITE_FLUSH() > shall add behind. Thanks, will added into v2 patch. > > +} > > + > > /* > > * It reads ICR and gets interrupt causes, check it and set a bit fla= g > > * to update link status.