From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Dai, Wei" Subject: Re: [PATCH v2] ethdev: moved bypass functions to ixgbe pmd 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> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Cc: "Yigit, Ferruh" , "Iremonger, Bernard" , "Nicolau, Radu" To: "Lu, Wenzhuo" , "Nicolau, Radu" , "dev@dpdk.org" 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) In-Reply-To: <6A0DE07E22DDAD4C9103DF62FEBC09093B5C8F21@shsmsx102.ccr.corp.intel.com> Content-Language: en-US List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" 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