23/08/2017 15:13, Shahaf Shuler: > Wednesday, August 23, 2017 3:29 PM, Ananyev, Konstantin: > > From: Shahaf Shuler > > > In order to enable PMDs to support only one of the APIs, and > > > applications to avoid branching according to the underlying device a > > > copy functions to/from the old/new APIs were added.
Looks a good intent. I would prefer the word "convert" instead of "copy". > > > int > > > rte_eth_rx_queue_setup(uint8_t port_id, uint16_t rx_queue_id, [...] > > > + } else if ((!(dev->data->dev_flags & RTE_ETH_DEV_RXQ_OFFLOAD)) && > > > + (dev->data->dev_conf.rxmode.ignore == 1)) { > > > + int ret; > > > + struct rte_eth_rxmode rxmode; > > > + > > > + rte_eth_copy_rxq_offloads(&rxmode, rx_conf); > > > + if (memcmp(&rxmode, &dev->data->dev_conf.rxmode, > > > + sizeof(rxmode))) { > > > + /* > > > + * device which work with rxmode offloads API requires > > > + * a re-configuration in order to apply the new offloads > > > + * configuration. > > > + */ > > > + dev->data->dev_conf.rxmode = rxmode; > > > + ret = rte_eth_dev_configure(port_id, > > > + dev->data->nb_rx_queues, > > > + dev->data->nb_tx_queues, > > > + &dev->data->dev_conf); > > > > Hmm, and why we would need to reconfigure our device in the middle of rx > > queue setup? > > The reason is the old Rx offloads API is configured on device configure. > This if section is for applications which already moved to the new offload > API however the underlying PMD still uses the old one. Isn't it risky to re-run configure here? We could also declare this case as an error. I think applications which have migrated to the new API, could use the convert functions themselves before calling configure to support not migrated PMDs. The cons of my solution are: - discourage apps to migrate before all PMDs have migrated - expose a temporary function to convert API I propose it anyway because there is always someone to like bad ideas ;)