X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=lib%2Feventdev%2Feventdev_pmd.h;h=4787df7ba036ab316d8f3543ab62250ed5dc4245;hb=2490bb897182f57de80fd924dd3ae48dda819b8c;hp=0532b542d493b337fa36e8801a4fd9e4305ffee7;hpb=d35e61322de5274ff3881d064f7d996d00b871ec;p=dpdk.git diff --git a/lib/eventdev/eventdev_pmd.h b/lib/eventdev/eventdev_pmd.h index 0532b542d4..4787df7ba0 100644 --- a/lib/eventdev/eventdev_pmd.h +++ b/lib/eventdev/eventdev_pmd.h @@ -24,8 +24,8 @@ #include #include +#include "event_timer_adapter_pmd.h" #include "rte_eventdev.h" -#include "rte_event_timer_adapter_pmd.h" /* Logging Macros */ #define RTE_EDEV_LOG_ERR(...) \ @@ -80,6 +80,9 @@ #define RTE_EVENTDEV_DETACHED (0) #define RTE_EVENTDEV_ATTACHED (1) +#define RTE_EVENTDEV_NAME_MAX_LEN (64) +/**< @internal Max length of name of event PMD */ + struct rte_eth_dev; /** Global structure used for maintaining state of allocated event devices */ @@ -87,6 +90,97 @@ struct rte_eventdev_global { uint8_t nb_devs; /**< Number of devices found */ }; +/** + * @internal + * The data part, with no function pointers, associated with each device. + * + * This structure is safe to place in shared memory to be common among + * different processes in a multi-process configuration. + */ +struct rte_eventdev_data { + int socket_id; + /**< Socket ID where memory is allocated */ + uint8_t dev_id; + /**< Device ID for this instance */ + uint8_t nb_queues; + /**< Number of event queues. */ + uint8_t nb_ports; + /**< Number of event ports. */ + void *ports[RTE_EVENT_MAX_PORTS_PER_DEV]; + /**< Array of pointers to ports. */ + struct rte_event_port_conf ports_cfg[RTE_EVENT_MAX_PORTS_PER_DEV]; + /**< Array of port configuration structures. */ + struct rte_event_queue_conf queues_cfg[RTE_EVENT_MAX_QUEUES_PER_DEV]; + /**< Array of queue configuration structures. */ + uint16_t links_map[RTE_EVENT_MAX_PORTS_PER_DEV * + RTE_EVENT_MAX_QUEUES_PER_DEV]; + /**< Memory to store queues to port connections. */ + void *dev_private; + /**< PMD-specific private data */ + uint32_t event_dev_cap; + /**< Event device capabilities(RTE_EVENT_DEV_CAP_)*/ + struct rte_event_dev_config dev_conf; + /**< Configuration applied to device. */ + uint8_t service_inited; + /* Service initialization state */ + uint32_t service_id; + /* Service ID*/ + void *dev_stop_flush_arg; + /**< User-provided argument for event flush function */ + + RTE_STD_C11 + uint8_t dev_started : 1; + /**< Device state: STARTED(1)/STOPPED(0) */ + + char name[RTE_EVENTDEV_NAME_MAX_LEN]; + /**< Unique identifier name */ + + uint64_t reserved_64s[4]; /**< Reserved for future fields */ + void *reserved_ptrs[4]; /**< Reserved for future fields */ +} __rte_cache_aligned; + +/** @internal The data structure associated with each event device. */ +struct rte_eventdev { + struct rte_eventdev_data *data; + /**< Pointer to device data */ + struct eventdev_ops *dev_ops; + /**< Functions exported by PMD */ + struct rte_device *dev; + /**< Device info. supplied by probing */ + + RTE_STD_C11 + uint8_t attached : 1; + /**< Flag indicating the device is attached */ + + event_enqueue_t enqueue; + /**< Pointer to PMD enqueue function. */ + event_enqueue_burst_t enqueue_burst; + /**< Pointer to PMD enqueue burst function. */ + event_enqueue_burst_t enqueue_new_burst; + /**< Pointer to PMD enqueue burst function(op new variant) */ + event_enqueue_burst_t enqueue_forward_burst; + /**< Pointer to PMD enqueue burst function(op forward variant) */ + event_dequeue_t dequeue; + /**< Pointer to PMD dequeue function. */ + event_dequeue_burst_t dequeue_burst; + /**< Pointer to PMD dequeue burst function. */ + event_maintain_t maintain; + /**< Pointer to PMD port maintenance function. */ + event_tx_adapter_enqueue_t txa_enqueue_same_dest; + /**< Pointer to PMD eth Tx adapter burst enqueue function with + * events destined to same Eth port & Tx queue. + */ + event_tx_adapter_enqueue_t txa_enqueue; + /**< Pointer to PMD eth Tx adapter enqueue function. */ + event_crypto_adapter_enqueue_t ca_enqueue; + + uint64_t reserved_64s[4]; /**< Reserved for future fields */ + void *reserved_ptrs[3]; /**< Reserved for future fields */ +} __rte_cache_aligned; + +extern struct rte_eventdev *rte_eventdevs; +/** @internal The pool of rte_eventdev structures. */ + /** * Get the rte_eventdev structure device pointer for the named device. * @@ -499,10 +593,8 @@ struct rte_event_eth_rx_adapter_queue_conf; * */ typedef int (*eventdev_timer_adapter_caps_get_t)( - const struct rte_eventdev *dev, - uint64_t flags, - uint32_t *caps, - const struct rte_event_timer_adapter_ops **ops); + const struct rte_eventdev *dev, uint64_t flags, uint32_t *caps, + const struct event_timer_adapter_ops **ops); /** * Add ethernet Rx queues to event device. This callback is invoked if @@ -659,6 +751,53 @@ typedef int (*eventdev_eth_rx_adapter_stats_get) typedef int (*eventdev_eth_rx_adapter_stats_reset) (const struct rte_eventdev *dev, const struct rte_eth_dev *eth_dev); + +struct rte_event_eth_rx_adapter_queue_stats; + +/** + * Retrieve ethernet Rx adapter queue statistics. + * + * @param dev + * Event device pointer + * + * @param eth_dev + * Ethernet device pointer + * + * @param rx_queue_id + * Ethernet device receive queue index. + * + * @param[out] q_stats + * Pointer to queue stats structure + * + * @return + * Return 0 on success. + */ +typedef int (*eventdev_eth_rx_adapter_q_stats_get) + (const struct rte_eventdev *dev, + const struct rte_eth_dev *eth_dev, + uint16_t rx_queue_id, + struct rte_event_eth_rx_adapter_queue_stats *q_stats); + +/** + * Reset ethernet Rx adapter queue statistics. + * + * @param dev + * Event device pointer + * + * @param eth_dev + * Ethernet device pointer + * + * @param rx_queue_id + * Ethernet device receive queue index. + * + * @return + * Return 0 on success. + */ +typedef int (*eventdev_eth_rx_adapter_q_stats_reset) + (const struct rte_eventdev *dev, + const struct rte_eth_dev *eth_dev, + uint16_t rx_queue_id); + /** * Start eventdev selftest. * @@ -1134,6 +1273,11 @@ struct eventdev_ops { eventdev_crypto_adapter_stats_reset crypto_adapter_stats_reset; /**< Reset crypto stats */ + eventdev_eth_rx_adapter_q_stats_get eth_rx_adapter_queue_stats_get; + /**< Get ethernet Rx queue stats */ + eventdev_eth_rx_adapter_q_stats_reset eth_rx_adapter_queue_stats_reset; + /**< Reset ethernet Rx queue stats */ + eventdev_eth_tx_adapter_caps_get_t eth_tx_adapter_caps_get; /**< Get ethernet Tx adapter capabilities */