> > Hi Tomasz, > > This is a major new function in the API and I still have some comments. > > 2016-10-26 14:56, Tomasz Kulasek: > > --- a/config/common_base > > +++ b/config/common_base > > +CONFIG_RTE_ETHDEV_TX_PREP=y > > We cannot enable it until it is implemented in every drivers.
Not sure why? If tx_pkt_prep == NULL, then rte_eth_tx_prep() would just act as noop. Right now it is not mandatory for the PMD to implement it. > > > struct rte_eth_dev { > > eth_rx_burst_t rx_pkt_burst; /**< Pointer to PMD receive function. */ > > eth_tx_burst_t tx_pkt_burst; /**< Pointer to PMD transmit function. */ > > + eth_tx_prep_t tx_pkt_prep; /**< Pointer to PMD transmit prepare > > function. */ > > struct rte_eth_dev_data *data; /**< Pointer to device data */ > > const struct eth_driver *driver;/**< Driver for this device */ > > const struct eth_dev_ops *dev_ops; /**< Functions exported by PMD */ > > Could you confirm why tx_pkt_prep is not in dev_ops? > I guess we want to have several implementations? Yes, it depends on configuration options, same as tx_pkt_burst. > > Shouldn't we have a const struct control_dev_ops and a struct > datapath_dev_ops? That's probably a good idea, but I suppose it is out of scope for that patch. Konstantin