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 739BD9113 for ; Wed, 31 May 2017 09:42:50 +0200 (CEST) Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 31 May 2017 00:42:49 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.38,422,1491289200"; d="scan'208";a="863050376" Received: from kmsmsx151.gar.corp.intel.com ([172.21.73.86]) by FMSMGA003.fm.intel.com with ESMTP; 31 May 2017 00:41:54 -0700 Received: from pgsmsx106.gar.corp.intel.com ([169.254.9.226]) by KMSMSX151.gar.corp.intel.com ([169.254.10.60]) with mapi id 14.03.0319.002; Wed, 31 May 2017 15:41:51 +0800 From: "Dai, Wei" To: "Lu, Wenzhuo" , "Nicolau, Radu" , "dev@dpdk.org" CC: "Yigit, Ferruh" , "Iremonger, Bernard" , "Nicolau, Radu" Thread-Topic: [dpdk-dev] [PATCH v2] ethdev: moved bypass functions to ixgbe pmd Thread-Index: AQHS2I/+Jjtb13ruuUGbvgUsnI9JiaINRRSAgADI7JA= Date: Wed, 31 May 2017 07:41:50 +0000 Message-ID: <49759EB36A64CF4892C1AFEC9231E8D650A9D156@PGSMSX106.gar.corp.intel.com> References: <1495809036-29625-1-git-send-email-radu.nicolau@intel.com> <1496071373-21907-1-git-send-email-radu.nicolau@intel.com> <6A0DE07E22DDAD4C9103DF62FEBC09093B5C8F21@shsmsx102.ccr.corp.intel.com> In-Reply-To: <6A0DE07E22DDAD4C9103DF62FEBC09093B5C8F21@shsmsx102.ccr.corp.intel.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiMTI0NzZhNzAtNGI1OC00MDAzLTk0ZGQtYTc2M2I5YmMzY2IwIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX0lDIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE1LjkuNi42IiwiVHJ1c3RlZExhYmVsSGFzaCI6ImdTQzFtcFRtRFNtK1ZcL0xiNkFUS2M3STNQVFdjNVhPMDlBK0VBQzhNN1prPSJ9 x-ctpclassification: CTP_IC dlp-product: dlpe-windows dlp-version: 10.0.102.7 dlp-reaction: no-action x-originating-ip: [172.30.20.206] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH v2] ethdev: moved bypass functions to ixgbe pmd 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: Wed, 31 May 2017 07:42:52 -0000 No other NIC has bypass functions except ixgbe,=20 so I agree moving them from ethdev to ixgbe pmd. As these functions are exported to external upper layer application,=20 it is necessary to use is_ixgbe_supported() to avoid be called by other type of NIC. > -----Original Message----- > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Lu, Wenzhuo > Sent: Wednesday, May 31, 2017 11:30 AM > To: Nicolau, Radu ; dev@dpdk.org > Cc: Yigit, Ferruh ; Iremonger, Bernard > ; Nicolau, Radu > Subject: Re: [dpdk-dev] [PATCH v2] ethdev: moved bypass functions to ixgb= e > pmd >=20 > Hi Radu, >=20 >=20 > > -----Original Message----- > > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Radu Nicolau > > Sent: Monday, May 29, 2017 11:23 PM > > To: dev@dpdk.org > > Cc: Yigit, Ferruh; Iremonger, Bernard; Nicolau, Radu > > Subject: [dpdk-dev] [PATCH v2] ethdev: moved bypass functions to ixgbe > > pmd > > > > Moved all bypass functions to ixgbe pmd and removed function pointers > > from the eth_dev_ops struct. > > > > Changes in v2: > > CONFIG_RTE_NIC_BYPASS removed, new option in the IXGBE section added, > > CONFIG_RTE_LIBRTE_IXGBE_BYPASS. > > Updated test-pmd to always include the bypass commands. > > > > Signed-off-by: Radu Nicolau >=20 >=20 > > diff --git a/drivers/net/ixgbe/rte_pmd_ixgbe.c > > b/drivers/net/ixgbe/rte_pmd_ixgbe.c > > index e8fc9a6..efcaf68 100644 > > --- a/drivers/net/ixgbe/rte_pmd_ixgbe.c > > +++ b/drivers/net/ixgbe/rte_pmd_ixgbe.c > > @@ -908,3 +908,109 @@ rte_pmd_ixgbe_set_tc_bw_alloc(uint8_t port, > > > > return 0; > > } > > + > > +#ifdef RTE_LIBRTE_IXGBE_BYPASS > > +int > > +rte_pmd_ixgbe_bypass_init(uint8_t port_id) { > > + struct rte_eth_dev *dev; > > + > > + RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV); > Please reference the existing code to check "is_ixgbe_supported" here. > Because this API may be called by APP directly. > The same comments for all the other APIs below. >=20 > > + > > + dev =3D &rte_eth_devices[port_id]; > > + ixgbe_bypass_init(dev); > > + return 0; > > +} > > + > > +int > > +rte_pmd_ixgbe_bypass_state_show(uint8_t port_id, uint32_t *state) { > > + struct rte_eth_dev *dev; > > + > > + RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV); > > + > > + dev =3D &rte_eth_devices[port_id]; > > + return ixgbe_bypass_state_show(dev, state); } > > + > > +int > > +rte_pmd_ixgbe_bypass_state_set(uint8_t port_id, uint32_t *new_state) { > > + struct rte_eth_dev *dev; > > + > > + RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV); > > + > > + dev =3D &rte_eth_devices[port_id]; > > + return ixgbe_bypass_state_store(dev, new_state); } > > + > > +int > > +rte_pmd_ixgbe_bypass_event_show(uint8_t port_id, > > + uint32_t event, > > + uint32_t *state) > > +{ > > + struct rte_eth_dev *dev; > > + > > + RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV); > > + > > + dev =3D &rte_eth_devices[port_id]; > > + return ixgbe_bypass_event_show(dev, event, state); } > > + > > +int > > +rte_pmd_ixgbe_bypass_event_store(uint8_t port_id, > > + uint32_t event, > > + uint32_t state) > > +{ > > + struct rte_eth_dev *dev; > > + > > + RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV); > > + > > + dev =3D &rte_eth_devices[port_id]; > > + return ixgbe_bypass_event_store(dev, event, state); } > > + > > +int > > +rte_pmd_ixgbe_bypass_wd_timeout_store(uint8_t port_id, uint32_t > > +timeout) { > > + struct rte_eth_dev *dev; > > + > > + RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV); > > + > > + dev =3D &rte_eth_devices[port_id]; > > + return ixgbe_bypass_wd_timeout_store(dev, timeout); } > > + > > +int > > +rte_pmd_ixgbe_bypass_ver_show(uint8_t port_id, uint32_t *ver) { > > + struct rte_eth_dev *dev; > > + > > + RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV); > > + > > + dev =3D &rte_eth_devices[port_id]; > > + return ixgbe_bypass_ver_show(dev, ver); } > > + > > +int > > +rte_pmd_ixgbe_bypass_wd_timeout_show(uint8_t port_id, uint32_t > > +*wd_timeout) { > > + struct rte_eth_dev *dev; > > + > > + RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV); > > + > > + dev =3D &rte_eth_devices[port_id]; > > + return ixgbe_bypass_wd_timeout_show(dev, wd_timeout); } > > + > > +int > > +rte_pmd_ixgbe_bypass_wd_reset(uint8_t port_id) { > > + struct rte_eth_dev *dev; > > + > > + RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV); > > + > > + dev =3D &rte_eth_devices[port_id]; > > + return ixgbe_bypass_wd_reset(dev); > > +} >=20