On 10/13/21 4:37 PM, Konstantin Ananyev wrote: > Copy public function pointers (rx_pkt_burst(), etc.) and related > pointers to internal data from rte_eth_dev structure into a > separate flat array. That array will remain in a public header. > The intention here is to make rte_eth_dev and related structures internal. > That should allow future possible changes to core eth_dev structures > to be transparent to the user and help to avoid ABI/API breakages. > The plan is to keep minimal part of data from rte_eth_dev public, > so we still can use inline functions for fast-path calls > (like rte_eth_rx_burst(), etc.) to avoid/minimize slowdown. > The whole idea beyond this new schema: > 1. PMDs keep to setup fast-path function pointers and related data > inside rte_eth_dev struct in the same way they did it before. > 2. Inside rte_eth_dev_start() and inside rte_eth_dev_probing_finish() > (for secondary process) we call eth_dev_fp_ops_setup, which > copies these function and data pointers into rte_eth_fp_ops[port_id]. > 3. Inside rte_eth_dev_stop() and inside rte_eth_dev_release_port() > we call eth_dev_fp_ops_reset(), which resets rte_eth_fp_ops[port_id] > into some dummy values. > 4. fast-path ethdev API (rte_eth_rx_burst(), etc.) will use that new > flat array to call PMD specific functions. > That approach should allow us to make rte_eth_devices[] private > without introducing regression and help to avoid changes in drivers code. > > Signed-off-by: Konstantin Ananyev <konstantin.anan...@intel.com>
Reviewed-by: Andrew Rybchenko <andrew.rybche...@oktetlabs.ru>