Hi Radu,
> -----Original Message----- > From: dev [mailto:dev-boun...@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 <radu.nico...@intel.com> > 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. > + > + dev = &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 = &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 = &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 = &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 = &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 = &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 = &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 = &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 = &rte_eth_devices[port_id]; > + return ixgbe_bypass_wd_reset(dev); > +}