aboutsummaryrefslogtreecommitdiff
path: root/platform/linux-dpdk/include/odp_packet_io_internal.h
diff options
context:
space:
mode:
authorZoltan Kiss <zoltan.kiss@linaro.org>2016-02-09 19:19:01 +0000
committerZoltan Kiss <zoltan.kiss@linaro.org>2016-02-10 16:27:14 +0000
commit3bcf0780ec937373d327a4bb651d3512567f4ba5 (patch)
tree4b54b32a38d18309a0700bc0537f57a369489a42 /platform/linux-dpdk/include/odp_packet_io_internal.h
parent508803806a66efe5525c644a36b2e33e0e5cecc9 (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.h46
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[];