diff options
author | Zoltan Kiss <zoltan.kiss@linaro.org> | 2016-02-09 19:19:01 +0000 |
---|---|---|
committer | Zoltan Kiss <zoltan.kiss@linaro.org> | 2016-02-10 16:27:14 +0000 |
commit | 3bcf0780ec937373d327a4bb651d3512567f4ba5 (patch) | |
tree | 4b54b32a38d18309a0700bc0537f57a369489a42 /platform/linux-dpdk/include/odp_packet_io_internal.h | |
parent | 508803806a66efe5525c644a36b2e33e0e5cecc9 (diff) |
Port "5d290d2 linux-generic: pktio: dummy multi-queue pktio"
And fold "04152dd api: pktio: renames for compact type and func names"
into this.
Signed-off-by: Zoltan Kiss <zoltan.kiss@linaro.org>
Diffstat (limited to 'platform/linux-dpdk/include/odp_packet_io_internal.h')
-rw-r--r-- | platform/linux-dpdk/include/odp_packet_io_internal.h | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/platform/linux-dpdk/include/odp_packet_io_internal.h b/platform/linux-dpdk/include/odp_packet_io_internal.h index a2a41dc80..f1ec7a408 100644 --- a/platform/linux-dpdk/include/odp_packet_io_internal.h +++ b/platform/linux-dpdk/include/odp_packet_io_internal.h @@ -32,6 +32,8 @@ extern "C" { #define PKTIO_NAME_LEN 256 +#define PKTIO_MAX_QUEUES 64 + /* Forward declaration */ struct pktio_if_ops; struct pkt_dpdk_t; @@ -77,6 +79,17 @@ struct pktio_entry { pktio_open() */ odp_pktio_t id; odp_pktio_param_t param; + + /* Storage for queue handles + * Multi-queue support is pktio driver specific */ + struct { + odp_queue_t queue; + odp_pktin_queue_t pktin; + } in_queue[PKTIO_MAX_QUEUES]; + + struct { + odp_pktout_queue_t pktout; + } out_queue[PKTIO_MAX_QUEUES]; }; typedef union { @@ -107,6 +120,21 @@ typedef struct pktio_if_ops { int (*promisc_mode_set)(pktio_entry_t *pktio_entry, int enable); int (*promisc_mode_get)(pktio_entry_t *pktio_entry); int (*mac_get)(pktio_entry_t *pktio_entry, void *mac_addr); + int (*capability)(pktio_entry_t *pktio_entry, + odp_pktio_capability_t *capa); + int (*input_queues_config)(pktio_entry_t *pktio_entry, + const odp_pktin_queue_param_t *param); + int (*output_queues_config)(pktio_entry_t *pktio_entry, + const odp_pktout_queue_param_t *p); + int (*in_queues)(pktio_entry_t *entry, odp_queue_t queues[], int num); + int (*pktin_queues)(pktio_entry_t *entry, odp_pktin_queue_t queues[], + int num); + int (*pktout_queues)(pktio_entry_t *entry, odp_pktout_queue_t queues[], + int num); + int (*recv_queue)(pktio_entry_t *entry, int index, + odp_packet_t packets[], int num); + int (*send_queue)(pktio_entry_t *entry, int index, + odp_packet_t packets[], int num); } pktio_if_ops_t; int _odp_packet_cls_enq(pktio_entry_t *pktio_entry, const uint8_t *base, @@ -145,6 +173,24 @@ static inline void pktio_cls_enabled_set(pktio_entry_t *entry, int ena) int pktin_poll(pktio_entry_t *entry); +/* + * Dummy single queue implementations of multi-queue API + */ +int single_capability(odp_pktio_capability_t *capa); +int single_input_queues_config(pktio_entry_t *entry, + const odp_pktin_queue_param_t *param); +int single_output_queues_config(pktio_entry_t *entry, + const odp_pktout_queue_param_t *param); +int single_in_queues(pktio_entry_t *entry, odp_queue_t queues[], int num); +int single_pktin_queues(pktio_entry_t *entry, odp_pktin_queue_t queues[], + int num); +int single_pktout_queues(pktio_entry_t *entry, odp_pktout_queue_t queues[], + int num); +int single_recv_queue(pktio_entry_t *entry, int index, odp_packet_t packets[], + int num); +int single_send_queue(pktio_entry_t *entry, int index, odp_packet_t packets[], + int num); + extern const pktio_if_ops_t loopback_pktio_ops; extern const pktio_if_ops_t dpdk_pktio_ops; extern const pktio_if_ops_t * const pktio_if_ops[]; |