aboutsummaryrefslogtreecommitdiff
path: root/include/odp/api/packet_io.h
diff options
context:
space:
mode:
authorAnders Roxell <anders.roxell@linaro.org>2015-01-28 16:46:36 +0100
committerMaxim Uvarov <maxim.uvarov@linaro.org>2015-01-29 20:42:32 +0300
commitcb197cd973230fe765adc159ba82bd9edda0dd9f (patch)
tree9d75caf2e2804da37278c424b53cfc8e7371a93d /include/odp/api/packet_io.h
parentc1b9f1d9fca5904f1eae8416a863bf151d53b523 (diff)
api: move generic API into the odp namespace
Move generic API into an api directory. Force the platform implementation to add its own header file that shall include the generic API header file. This splitup enables platform implementors to implement inline functions without modifying the "public" API files. Signed-off-by: Anders Roxell <anders.roxell@linaro.org> Reviewed-by: Balasubramanian Manoharan <bala.manoharan@linaro.org> Reviewed-by: Taras Kondratiuk <taras.kondratiuk@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
Diffstat (limited to 'include/odp/api/packet_io.h')
-rw-r--r--include/odp/api/packet_io.h234
1 files changed, 234 insertions, 0 deletions
diff --git a/include/odp/api/packet_io.h b/include/odp/api/packet_io.h
new file mode 100644
index 000000000..0ee56b7e8
--- /dev/null
+++ b/include/odp/api/packet_io.h
@@ -0,0 +1,234 @@
+/* Copyright (c) 2013, Linaro Limited
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+
+/**
+ * @file
+ *
+ * ODP Packet IO
+ */
+
+#ifndef ODP_PACKET_IO_H_
+#define ODP_PACKET_IO_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <odp/std_types.h>
+#include <odp/platform_types.h>
+#include <odp/pool.h>
+#include <odp/packet.h>
+#include <odp/queue.h>
+
+/** @defgroup odp_packet_io ODP PACKET IO
+ * Operations on a packet.
+ * @{
+ */
+
+/**
+ * Open an ODP packet IO instance
+ *
+ * Packet IO handles are single instance per device, attempts to open an already
+ * open device will fail, returning ODP_PKTIO_INVALID with errno set to -EEXIST.
+ * odp_pktio_lookup() may be used to obtain a handle to an already open device.
+ *
+ * @param dev Packet IO device name
+ * @param pool Pool from which to allocate buffers for storing packets
+ * received over this packet IO
+ *
+ * @return ODP packet IO handle or ODP_PKTIO_INVALID on error
+ *
+ * @note dev name loop is specially pktio reserved name for
+ * device used for testing. Usually it's loop back
+ * interface.
+ */
+odp_pktio_t odp_pktio_open(const char *dev, odp_pool_t pool);
+
+/**
+ * Close an ODP packet IO instance
+ *
+ * @param id ODP packet IO handle
+ *
+ * @return 0 on success or -1 on error
+ */
+int odp_pktio_close(odp_pktio_t id);
+
+/**
+ * Return a packet IO handle for an already open device
+ *
+ * @param dev Packet IO device name
+ *
+ * @return ODP packet IO handle or ODP_PKTIO_INVALID
+ */
+odp_pktio_t odp_pktio_lookup(const char *dev);
+
+/**
+ * Receive packets
+ *
+ * @param id ODP packet IO handle
+ * @param pkt_table[] Storage for received packets (filled by function)
+ * @param len Length of pkt_table[], i.e. max number of pkts to receive
+ *
+ * @return Number of packets received or -1 on error
+ */
+int odp_pktio_recv(odp_pktio_t id, odp_packet_t pkt_table[], unsigned len);
+
+/**
+ * Send packets
+ *
+ * @param id ODP packet IO handle
+ * @param pkt_table[] Array of packets to send
+ * @param len length of pkt_table[]
+ *
+ * @return Number of packets sent or -1 on error
+ */
+int odp_pktio_send(odp_pktio_t id, odp_packet_t pkt_table[], unsigned len);
+
+/**
+ * Set the default input queue to be associated with a pktio handle
+ *
+ * @param id ODP packet IO handle
+ * @param queue default input queue set
+ * @return 0 on success or -1 on error
+ */
+int odp_pktio_inq_setdef(odp_pktio_t id, odp_queue_t queue);
+
+/**
+ * Get default input queue associated with a pktio handle
+ *
+ * @param id ODP packet IO handle
+ *
+ * @return Default input queue set or ODP_QUEUE_INVALID on error
+ */
+odp_queue_t odp_pktio_inq_getdef(odp_pktio_t id);
+
+/**
+ * Remove default input queue (if set)
+ *
+ * @param id ODP packet IO handle
+ *
+ * @return 0 on success or -1 on error
+ */
+int odp_pktio_inq_remdef(odp_pktio_t id);
+
+/**
+ * Query default output queue
+ *
+ * @param id ODP packet IO handle
+ *
+ * @return Default out queue or ODP_QUEUE_INVALID on error
+ */
+odp_queue_t odp_pktio_outq_getdef(odp_pktio_t id);
+
+/**
+ * Return the currently configured MTU value of a packet IO interface.
+ *
+ * @param[in] id ODP packet IO handle.
+ *
+ * @retval MTU value >0 on success.
+ * @retval -1 on any error or not existance pktio id.
+ */
+int odp_pktio_mtu(odp_pktio_t id);
+
+/**
+ * Enable/Disable promiscuous mode on a packet IO interface.
+ *
+ * @param[in] id ODP packet IO handle.
+ * @param[in] enable 1 to enable, 0 to disable.
+ *
+ * @retval 0 on success.
+ * @retval non-zero on any error.
+ */
+int odp_pktio_promisc_mode_set(odp_pktio_t id, odp_bool_t enable);
+
+/**
+ * Determine if promiscuous mode is enabled for a packet IO interface.
+ *
+ * @param[in] id ODP packet IO handle.
+ *
+ * @retval 1 if promiscuous mode is enabled.
+ * @retval 0 if promiscuous mode is disabled.
+ * @retval -1 on any error.
+*/
+int odp_pktio_promisc_mode(odp_pktio_t id);
+
+/**
+ * Get the default MAC address of a packet IO interface.
+ *
+ * @param id ODP packet IO handle.
+ * @param[out] mac_addr Storage for MAC address of the packet IO interface.
+ * @param addr_size Storage size for the address
+ *
+ * @retval Number of bytes written on success, 0 on failure.
+ */
+size_t odp_pktio_mac_addr(odp_pktio_t id, void *mac_addr,
+ size_t addr_size);
+
+/**
+ * Setup per-port default class-of-service.
+ *
+ * @param[in] pktio_in Ingress port identifier.
+ * @param[in] default_cos Class-of-service set to all packets arriving
+ * at the pktio_in ingress port,
+ * unless overridden by subsequent
+ * header-based filters.
+ *
+ * @return 0 on success, non-zero on error.
+ */
+int odp_pktio_default_cos_set(odp_pktio_t pktio_in, odp_cos_t default_cos);
+
+/**
+ * Setup per-port error class-of-service
+ *
+ * @param[in] pktio_in Ingress port identifier.
+ * @param[in] error_cos class-of-service set to all packets arriving
+ * at the pktio_in ingress port
+ * that contain an error.
+ *
+ * @return 0 on success, non-zero on error.
+ *
+ * @note Optional.
+ */
+int odp_pktio_error_cos_set(odp_pktio_t pktio_in, odp_cos_t error_cos);
+
+/**
+ * Setup per-port header offset
+ *
+ * @param[in] pktio_in Ingress port identifier.
+ * @param[in] offset Number of bytes the classifier must skip.
+ *
+ * @return 0 on success, non-zero on error.
+ * @note Optional.
+ *
+ */
+int odp_pktio_skip_set(odp_pktio_t pktio_in, uint32_t offset);
+
+/**
+ * Specify per-port buffer headroom
+ *
+ * @param[in] pktio_in Ingress port identifier.
+ * @param[in] headroom Number of bytes of space preceding
+ * packet data to reserve for use as headroom.
+ * Must not exceed the implementation
+ * defined ODP_PACKET_MAX_HEADROOM.
+ *
+ * @return 0 on success, non-zero on error.
+ *
+ * @note Optional.
+ */
+int odp_pktio_headroom_set(odp_pktio_t pktio_in, uint32_t headroom);
+
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif