@@ -35,6 +35,9 @@ extern "C" {
/** @internal Returns IPv4 header length */
#define ODPH_IPV4HDR_IHL(ver_ihl) ((ver_ihl) & 0x0f)
+/** @internal Returns IPv4 DSCP */
+#define ODPH_IPV4HDR_DSCP(tos) (((tos) & 0xfc) >> 2)
+
/** @internal Returns IPv4 Don't fragment */
#define ODPH_IPV4HDR_FLAGS_DONT_FRAG(frag_offset) ((frag_offset) & 0x4000)
@@ -47,6 +50,9 @@ extern "C" {
/** @internal Returns true if IPv4 packet is a fragment */
#define ODPH_IPV4HDR_IS_FRAGMENT(frag_offset) ((frag_offset) & 0x3fff)
+/** @internal Returns IPv4 DSCP */
+#define ODPH_IPV6HDR_DSCP(ver_tc_flow) (uint8_t)((((ver_tc_flow) & 0x0fc00000) >> 22) & 0xff)
+
/** IPv4 header */
typedef struct ODP_PACKED {
uint8_t ver_ihl; /**< Version / Header length */
new file mode 100644
@@ -0,0 +1,61 @@
+/* Copyright (c) 2014, Linaro Limited
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+
+/**
+ * @file
+ *
+ * ODP TCP header
+ */
+
+#ifndef ODPH_TCP_H_
+#define ODPH_TCP_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <odp_align.h>
+#include <odp_debug.h>
+#include <odp_byteorder.h>
+
+/** UDP header length */
+#define ODPH_TCPHDR_LEN 8
+
+/** TCP header */
+typedef struct ODP_PACKED {
+ uint16be_t src_port; /**< Source port */
+ uint16be_t dst_port; /**< Destinatino port */
+ uint32be_t seq_no; /**< Sequence number */
+ uint32be_t ack_no; /**< Acknowledgment number */
+ union {
+ uint32be_t flags_and_window;
+ struct {
+ uint32be_t rsvd1:8;
+ uint32be_t flags:8; /**< TCP flags as a byte */
+ uint32be_t rsvd2:16;
+ };
+ struct {
+ uint32be_t hl:4; /**< Hdr len, in words */
+ uint32be_t rsvd3:6; /**< Reserved */
+ uint32be_t urg:1; /**< ACK */
+ uint32be_t ack:1;
+ uint32be_t psh:1;
+ uint32be_t rst:1;
+ uint32be_t syn:1;
+ uint32be_t fin:1;
+ uint32be_t window:16; /**< Window size */
+ };
+ };
+ uint16be_t cksm; /**< Checksum */
+ uint16be_t urgptr; /**< Urgent pointer */
+} odph_tcphdr_t;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
@@ -64,6 +64,12 @@ struct pool_entry_s {
size_t hdr_size;
};
+typedef union pool_entry_u {
+ struct pool_entry_s s;
+
+ uint8_t pad[ODP_CACHE_LINE_SIZE_ROUNDUP(sizeof(struct pool_entry_s))];
+
+} pool_entry_t;
extern void *pool_entry_ptr[];
@@ -73,6 +79,10 @@ static inline void *get_pool_entry(uint32_t pool_id)
return pool_entry_ptr[pool_id];
}
+static inline uint32_t pool_handle_to_index(odp_buffer_pool_t pool_hdl)
+{
+ return pool_hdl - 1;
+}
static inline odp_buffer_hdr_t *odp_buf_to_hdr(odp_buffer_t buf)
{
@@ -56,12 +56,6 @@ typedef struct {
} odp_any_buffer_hdr_t;
-typedef union pool_entry_u {
- struct pool_entry_s s;
-
- uint8_t pad[ODP_CACHE_LINE_SIZE_ROUNDUP(sizeof(struct pool_entry_s))];
-
-} pool_entry_t;
typedef struct pool_table_t {
@@ -86,10 +80,6 @@ static inline odp_buffer_pool_t pool_index_to_handle(uint32_t pool_id)
}
-static inline uint32_t pool_handle_to_index(odp_buffer_pool_t pool_hdl)
-{
- return pool_hdl -1;
-}
static inline void set_handle(odp_buffer_hdr_t *hdr,
This patch contains Buffer Management changes synced for classification compilation. This patch will have to be redone once Packet Management change has been synced in repo. Signed-off-by: Balasubramanian Manoharan <bala.manoharan@linaro.org> --- helper/include/odph_ip.h | 6 +++ helper/include/odph_tcp.h | 61 ++++++++++++++++++++++ .../include/odp_buffer_pool_internal.h | 10 ++++ platform/linux-generic/odp_buffer_pool.c | 10 ---- 4 files changed, 77 insertions(+), 10 deletions(-) create mode 100644 helper/include/odph_tcp.h