Konstantin Ananyev c87d435a4d ethdev: copy fast-path API into separate structure
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.ananyev@intel.com>
Reviewed-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Tested-by: Feifei Wang <feifei.wang2@arm.com>
2021-10-13 22:14:58 +02:00
..
2021-08-17 08:37:52 +02:00
2021-08-17 08:37:52 +02:00
2021-10-20 08:22:41 +02:00
2021-10-05 17:03:37 +02:00
2021-07-05 15:11:30 +02:00
2021-10-08 14:58:11 +02:00
2021-08-17 08:37:52 +02:00
2021-08-17 08:37:52 +02:00
2021-08-17 08:37:52 +02:00
2021-09-30 17:38:13 +02:00
2021-08-17 08:37:52 +02:00
2021-08-17 08:37:52 +02:00
2021-10-17 14:07:03 +02:00
2021-08-17 08:37:52 +02:00
2021-10-20 10:03:55 +02:00
2021-08-17 08:37:52 +02:00
2021-09-23 19:21:47 +02:00
2021-10-20 10:00:16 +02:00
2021-08-17 08:37:52 +02:00
2021-08-17 08:37:52 +02:00
2021-08-17 08:37:52 +02:00
2021-10-05 17:03:37 +02:00
2021-08-17 08:37:52 +02:00
2021-10-20 10:00:16 +02:00