ethdev: add field for device data per process
Primary and secondary processes share a per-device private data. With current design it is not possible to have data per-device per-process. This is required for handling properly the CPP interface inside the NFP PMD with multiprocess support. There is also at least another PMD driver, tap, with similar requirements for per-process device data. Signed-off-by: Alejandro Lucero <alejandro.lucero@netronome.com> Reviewed-by: Andrew Rybchenko <arybchenko@solarflare.com> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
This commit is contained in:
parent
621c5c1db2
commit
deb373fb07
@ -342,7 +342,7 @@ The libraries prepended with a plus sign were incremented in this version.
|
|||||||
librte_cryptodev.so.5
|
librte_cryptodev.so.5
|
||||||
librte_distributor.so.1
|
librte_distributor.so.1
|
||||||
+ librte_eal.so.9
|
+ librte_eal.so.9
|
||||||
librte_ethdev.so.10
|
+ librte_ethdev.so.11
|
||||||
+ librte_eventdev.so.6
|
+ librte_eventdev.so.6
|
||||||
librte_flow_classify.so.1
|
librte_flow_classify.so.1
|
||||||
librte_gro.so.1
|
librte_gro.so.1
|
||||||
|
@ -16,7 +16,7 @@ LDLIBS += -lrte_mbuf -lrte_kvargs
|
|||||||
|
|
||||||
EXPORT_MAP := rte_ethdev_version.map
|
EXPORT_MAP := rte_ethdev_version.map
|
||||||
|
|
||||||
LIBABIVER := 10
|
LIBABIVER := 11
|
||||||
|
|
||||||
SRCS-y += ethdev_private.c
|
SRCS-y += ethdev_private.c
|
||||||
SRCS-y += rte_ethdev.c
|
SRCS-y += rte_ethdev.c
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
# Copyright(c) 2017 Intel Corporation
|
# Copyright(c) 2017 Intel Corporation
|
||||||
|
|
||||||
name = 'ethdev'
|
name = 'ethdev'
|
||||||
version = 10
|
version = 11
|
||||||
allow_experimental_apis = true
|
allow_experimental_apis = true
|
||||||
sources = files('ethdev_private.c',
|
sources = files('ethdev_private.c',
|
||||||
'ethdev_profile.c',
|
'ethdev_profile.c',
|
||||||
|
@ -539,7 +539,13 @@ struct rte_eth_dev {
|
|||||||
eth_rx_burst_t rx_pkt_burst; /**< Pointer to PMD receive function. */
|
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_burst_t tx_pkt_burst; /**< Pointer to PMD transmit function. */
|
||||||
eth_tx_prep_t tx_pkt_prepare; /**< Pointer to PMD transmit prepare function. */
|
eth_tx_prep_t tx_pkt_prepare; /**< Pointer to PMD transmit prepare function. */
|
||||||
struct rte_eth_dev_data *data; /**< Pointer to device data */
|
/**
|
||||||
|
* Next two fields are per-device data but *data is shared between
|
||||||
|
* primary and secondary processes and *process_private is per-process
|
||||||
|
* private. The second one is managed by PMDs if necessary.
|
||||||
|
*/
|
||||||
|
struct rte_eth_dev_data *data; /**< Pointer to device data. */
|
||||||
|
void *process_private; /**< Pointer to per-process device data. */
|
||||||
const struct eth_dev_ops *dev_ops; /**< Functions exported by PMD */
|
const struct eth_dev_ops *dev_ops; /**< Functions exported by PMD */
|
||||||
struct rte_device *device; /**< Backing device */
|
struct rte_device *device; /**< Backing device */
|
||||||
struct rte_intr_handle *intr_handle; /**< Device interrupt handle */
|
struct rte_intr_handle *intr_handle; /**< Device interrupt handle */
|
||||||
|
Loading…
Reference in New Issue
Block a user