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 08CC82C8 for ; Thu, 29 Jun 2017 03:41:40 +0200 (CEST) Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 28 Jun 2017 18:41:39 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.40,278,1496127600"; d="scan'208";a="102527032" Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by orsmga004.jf.intel.com with ESMTP; 28 Jun 2017 18:41:39 -0700 Received: from fmsmsx125.amr.corp.intel.com (10.18.125.40) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 28 Jun 2017 18:41:39 -0700 Received: from shsmsx151.ccr.corp.intel.com (10.239.6.50) by FMSMSX125.amr.corp.intel.com (10.18.125.40) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 28 Jun 2017 18:41:39 -0700 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.116]) by SHSMSX151.ccr.corp.intel.com ([169.254.3.56]) with mapi id 14.03.0319.002; Thu, 29 Jun 2017 09:41:37 +0800 From: "Wu, Jingjing" To: "Guo, Jia" , "Zhang, Helin" CC: "dev@dpdk.org" Thread-Topic: [PATCH v2 2/2] net/i40e: add hot plug monitor in i40e Thread-Index: AQHS7/8+mc2DbTpTJkWmOnVtVUUitKI7EHAw Date: Thu, 29 Jun 2017 01:41:36 +0000 Message-ID: <9BB6961774997848B5B42BEC655768F810DB57FE@SHSMSX103.ccr.corp.intel.com> References: <1495986280-26207-1-git-send-email-jia.guo@intel.com> <1498648044-57541-1-git-send-email-jia.guo@intel.com> <1498648044-57541-2-git-send-email-jia.guo@intel.com> In-Reply-To: <1498648044-57541-2-git-send-email-jia.guo@intel.com> Accept-Language: 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 v2 2/2] net/i40e: add hot plug monitor in i40e X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 29 Jun 2017 01:41:41 -0000 > -----Original Message----- > From: Guo, Jia > Sent: Wednesday, June 28, 2017 7:07 PM > To: Zhang, Helin ; Wu, Jingjing > > Cc: dev@dpdk.org; Guo, Jia > Subject: [PATCH v2 2/2] net/i40e: add hot plug monitor in i40e >=20 > From: "Guo, Jia" >=20 > This patch enable the hot plug feature in i40e, by monitoring the hot plu= g > uevent of the device. When remove event got, call the app callback functi= on to > handle the detach process. >=20 > Signed-off-by: Guo, Jia > --- > v2->v1: remove unused part for current stage. > --- > drivers/net/i40e/i40e_ethdev.c | 18 ++++++++++++++++++ > 1 file changed, 18 insertions(+) >=20 > diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethde= v.c > index 4ee1113..122187e 100644 > --- a/drivers/net/i40e/i40e_ethdev.c > +++ b/drivers/net/i40e/i40e_ethdev.c > @@ -1283,6 +1283,7 @@ static inline void i40e_GLQF_reg_init(struct i40e_h= w > *hw) >=20 > /* enable uio intr after callback register */ > rte_intr_enable(intr_handle); > + > /* > * Add an ethertype filter to drop all flow control frames transmitted > * from VSIs. By doing so, we stop VF from sending out PAUSE or PFC > @@ -5832,11 +5833,28 @@ struct i40e_vsi * { > struct rte_eth_dev *dev =3D (struct rte_eth_dev *)param; > struct i40e_hw *hw =3D I40E_DEV_PRIVATE_TO_HW(dev->data- > >dev_private); > + struct rte_uevent event; > uint32_t icr0; > + struct rte_pci_device *pci_dev; > + struct rte_intr_handle *intr_handle; > + > + pci_dev =3D RTE_ETH_DEV_TO_PCI(dev); > + intr_handle =3D &pci_dev->intr_handle; >=20 > /* Disable interrupt */ > i40e_pf_disable_irq0(hw); >=20 > + /* check device uevent */ > + if (rte_uevent_get(intr_handle->uevent_fd, &event) > 0) { You declare the rte_uevnet_get like + * @return + * - On success, zero. + * - On failure, a negative value. + */ +int +rte_uevent_get(int fd, struct rte_uevent *uevent); But here you check if it > 0? > + if (event.subsystem =3D=3D RTE_UEVENT_SUBSYSTEM_UIO) { > + if (event.action =3D=3D RTE_UEVENT_REMOVE) { > + _rte_eth_dev_callback_process(dev, > + RTE_ETH_EVENT_INTR_RMV, NULL); > + } > + } > + goto done; I think when the remove happen, no need to goto done, you can just return. > + } > + > /* read out interrupt causes */ > icr0 =3D I40E_READ_REG(hw, I40E_PFINT_ICR0); >=20 > -- > 1.8.3.1