@@ -19,7 +19,6 @@
#include <odp.h>
#include <odph_linux.h>
-#include <odph_packet.h>
#include <odph_eth.h>
#include <odph_ip.h>
#include <odph_udp.h>
@@ -168,24 +167,24 @@ static int scan_mac(char *in, odph_ethaddr_t *des)
*
* @param obuf packet buffer
*/
-static void pack_udp_pkt(odp_buffer_t obuf)
+static void pack_udp_pkt(odp_packet_t pkt)
{
char *buf;
- int max;
- odp_packet_t pkt;
+
odph_ethhdr_t *eth;
odph_ipv4hdr_t *ip;
odph_udphdr_t *udp;
unsigned short seq;
+ size_t seglen;
+
+ buf = odp_packet_push_tail_and_map(pkt, args->appl.payload +
+ ODPH_UDPHDR_LEN +
+ ODPH_IPV4HDR_LEN +
+ ODPH_ETHHDR_LEN, &seglen);
- buf = odp_buffer_addr(obuf);
if (buf == NULL)
return;
- max = odp_buffer_size(obuf);
- if (max <= 0)
- return;
- pkt = odp_packet_from_buffer(obuf);
/* ether */
odp_packet_set_l2_offset(pkt, 0);
eth = (odph_ethhdr_t *)buf;
@@ -213,8 +212,7 @@ static void pack_udp_pkt(odp_buffer_t obuf)
udp->length = odp_cpu_to_be_16(args->appl.payload + ODPH_UDPHDR_LEN);
udp->chksum = 0;
udp->chksum = odp_cpu_to_be_16(odph_ipv4_udp_chksum(pkt));
- odp_packet_set_len(pkt, args->appl.payload + ODPH_UDPHDR_LEN +
- ODPH_IPV4HDR_LEN + ODPH_ETHHDR_LEN);
+
}
/**
@@ -222,27 +220,27 @@ static void pack_udp_pkt(odp_buffer_t obuf)
*
* @param obuf packet buffer
*/
-static void pack_icmp_pkt(odp_buffer_t obuf)
+static void pack_icmp_pkt(odp_packet_t pkt)
{
char *buf;
- int max;
- odp_packet_t pkt;
+
odph_ethhdr_t *eth;
odph_ipv4hdr_t *ip;
odph_icmphdr_t *icmp;
struct timeval tval;
uint8_t *tval_d;
unsigned short seq;
+ size_t seglen;
- buf = odp_buffer_addr(obuf);
+ buf = odp_packet_push_tail_and_map(pkt, args->appl.payload +
+ ODPH_ICMPHDR_LEN +
+ ODPH_IPV4HDR_LEN +
+ ODPH_ETHHDR_LEN, &seglen);
if (buf == NULL)
return;
- max = odp_buffer_size(obuf);
- if (max <= 0)
- return;
args->appl.payload = 56;
- pkt = odp_packet_from_buffer(obuf);
+
/* ether */
odp_packet_set_l2_offset(pkt, 0);
eth = (odph_ethhdr_t *)buf;
@@ -277,9 +275,6 @@ static void pack_icmp_pkt(odp_buffer_t obuf)
icmp->chksum = 0;
icmp->chksum = odp_chksum(icmp, args->appl.payload +
ODPH_ICMPHDR_LEN);
-
- odp_packet_set_len(pkt, args->appl.payload + ODPH_ICMPHDR_LEN +
- ODPH_IPV4HDR_LEN + ODPH_ETHHDR_LEN);
}
/**
@@ -295,7 +290,7 @@ static void *gen_send_thread(void *arg)
thread_args_t *thr_args;
odp_queue_t outq_def;
- odp_buffer_t buf;
+ odp_packet_t buf;
thr = odp_thread_id();
thr_args = arg;
@@ -316,8 +311,8 @@ static void *gen_send_thread(void *arg)
printf(" [%02i] created mode: SEND\n", thr);
for (;;) {
int err;
- buf = odp_buffer_alloc(thr_args->pool);
- if (!odp_buffer_is_valid(buf)) {
+ buf = odp_packet_alloc(thr_args->pool);
+ if (!odp_packet_is_valid(buf)) {
ODP_ERR(" [%2i] alloc_single failed\n", thr);
return NULL;
}
@@ -493,13 +488,13 @@ static void *gen_recv_thread(void *arg)
pkt = odp_packet_from_buffer(buf);
/* Drop packets with errors */
if (odp_unlikely(odp_packet_error(pkt))) {
- odph_packet_free(pkt);
+ odp_packet_free(pkt);
continue;
}
print_pkts(thr, &pkt, 1);
- odph_packet_free(pkt);
+ odp_packet_free(pkt);
}
return arg;
@@ -512,11 +507,11 @@ int main(int argc, char *argv[])
odph_linux_pthread_t thread_tbl[MAX_WORKERS];
odp_buffer_pool_t pool;
int num_workers;
- void *pool_base;
int i;
int first_core;
int core_count;
odp_shm_t shm;
+ odp_buffer_pool_param_t params;
/* Init ODP before calling anything else */
if (odp_init_global(NULL, NULL)) {
@@ -579,20 +574,14 @@ int main(int argc, char *argv[])
printf("First core: %i\n\n", first_core);
/* Create packet pool */
- shm = odp_shm_reserve("shm_packet_pool",
- SHM_PKT_POOL_SIZE, ODP_CACHE_LINE_SIZE, 0);
- pool_base = odp_shm_addr(shm);
- if (pool_base == NULL) {
- ODP_ERR("Error: packet pool mem alloc failed.\n");
- exit(EXIT_FAILURE);
- }
+ params.buf_size = SHM_PKT_POOL_BUF_SIZE;
+ params.buf_num = SHM_PKT_POOL_SIZE/SHM_PKT_POOL_BUF_SIZE;
+ params.buf_type = ODP_BUFFER_TYPE_PACKET;
+ params.buf_opts = ODP_BUFFER_OPTS_UNSEGMENTED;
+
+ pool = odp_buffer_pool_create("packet_pool", ¶ms, NULL);
- pool = odp_buffer_pool_create("packet_pool", pool_base,
- SHM_PKT_POOL_SIZE,
- SHM_PKT_POOL_BUF_SIZE,
- ODP_CACHE_LINE_SIZE,
- ODP_BUFFER_TYPE_PACKET);
if (pool == ODP_BUFFER_POOL_INVALID) {
ODP_ERR("Error: packet pool create failed.\n");
exit(EXIT_FAILURE);
@@ -18,7 +18,6 @@
#include <odp.h>
#include <odph_linux.h>
-#include <odph_packet.h>
#include <odph_eth.h>
#include <odph_ip.h>
#include <odph_icmp.h>
@@ -154,8 +153,6 @@ typedef struct {
#define SHM_CTX_POOL_BUF_COUNT (SHM_PKT_POOL_BUF_COUNT + SHM_OUT_POOL_BUF_COUNT)
#define SHM_CTX_POOL_SIZE (SHM_CTX_POOL_BUF_COUNT * SHM_CTX_POOL_BUF_SIZE)
-static odp_buffer_pool_t ctx_pool = ODP_BUFFER_POOL_INVALID;
-
/**
* Get per packet processing context from packet buffer
*
@@ -166,33 +163,7 @@ static odp_buffer_pool_t ctx_pool = ODP_BUFFER_POOL_INVALID;
static
pkt_ctx_t *get_pkt_ctx_from_pkt(odp_packet_t pkt)
{
- return (pkt_ctx_t *)odp_packet_get_ctx(pkt);
-}
-
-/**
- * Allocate per packet processing context and associate it with
- * packet buffer
- *
- * @param pkt Packet
- *
- * @return pointer to context area
- */
-static
-pkt_ctx_t *alloc_pkt_ctx(odp_packet_t pkt)
-{
- odp_buffer_t ctx_buf = odp_buffer_alloc(ctx_pool);
- pkt_ctx_t *ctx;
-
- /* There should always be enough contexts */
- if (odp_unlikely(ODP_BUFFER_INVALID == ctx_buf))
- abort();
-
- ctx = odp_buffer_addr(ctx_buf);
- memset(ctx, 0, sizeof(*ctx));
- ctx->buffer = ctx_buf;
- odp_packet_set_ctx(pkt, ctx);
-
- return ctx;
+ return (pkt_ctx_t *)odp_packet_udata_addr(pkt);
}
/**
@@ -365,8 +336,7 @@ static
void ipsec_init_pre(void)
{
odp_queue_param_t qparam;
- void *pool_base;
- odp_shm_t shm;
+ odp_buffer_pool_param_t params;
/*
* Create queues
@@ -399,16 +369,12 @@ void ipsec_init_pre(void)
}
/* Create output buffer pool */
- shm = odp_shm_reserve("shm_out_pool",
- SHM_OUT_POOL_SIZE, ODP_CACHE_LINE_SIZE, 0);
+ params.buf_num = SHM_OUT_POOL_BUF_COUNT;
+ params.buf_size = SHM_OUT_POOL_BUF_SIZE;
+ params.buf_type = ODP_BUFFER_TYPE_PACKET;
+ params.buf_opts = ODP_BUFFER_OPTS_UNSEGMENTED;
- pool_base = odp_shm_addr(shm);
-
- out_pool = odp_buffer_pool_create("out_pool", pool_base,
- SHM_OUT_POOL_SIZE,
- SHM_OUT_POOL_BUF_SIZE,
- ODP_CACHE_LINE_SIZE,
- ODP_BUFFER_TYPE_PACKET);
+ out_pool = odp_buffer_pool_create("out_pool", ¶ms, NULL);
if (ODP_BUFFER_POOL_INVALID == out_pool) {
ODP_ERR("Error: message pool create failed.\n");
@@ -637,13 +603,15 @@ pkt_disposition_e do_input_verify(odp_packet_t pkt, pkt_ctx_t *ctx ODP_UNUSED)
static
pkt_disposition_e do_route_fwd_db(odp_packet_t pkt, pkt_ctx_t *ctx)
{
- odph_ipv4hdr_t *ip = (odph_ipv4hdr_t *)odp_packet_l3(pkt);
+ size_t seglen;
+ odph_ipv4hdr_t *ip = (odph_ipv4hdr_t *)odp_packet_l3_map(pkt, &seglen);
fwd_db_entry_t *entry;
entry = find_fwd_db_entry(odp_be_to_cpu_32(ip->dst_addr));
if (entry) {
- odph_ethhdr_t *eth = (odph_ethhdr_t *)odp_packet_l2(pkt);
+ odph_ethhdr_t *eth =
+ (odph_ethhdr_t *)odp_packet_l2_map(pkt, &seglen);
memcpy(ð->dst, entry->dst_mac, ODPH_ETHADDR_LEN);
memcpy(ð->src, entry->src_mac, ODPH_ETHADDR_LEN);
@@ -673,8 +641,9 @@ pkt_disposition_e do_ipsec_in_classify(odp_packet_t pkt,
pkt_ctx_t *ctx,
bool *skip)
{
+ size_t seglen;
uint8_t *buf = odp_packet_addr(pkt);
- odph_ipv4hdr_t *ip = (odph_ipv4hdr_t *)odp_packet_l3(pkt);
+ odph_ipv4hdr_t *ip = (odph_ipv4hdr_t *)odp_packet_l3_map(pkt, &seglen);
int hdr_len;
odph_ahhdr_t *ah = NULL;
odph_esphdr_t *esp = NULL;
@@ -759,6 +728,7 @@ pkt_disposition_e do_ipsec_in_finish(odp_packet_t pkt,
odp_crypto_compl_status_t cipher_rc;
odp_crypto_compl_status_t auth_rc;
odph_ipv4hdr_t *ip;
+ size_t seglen;
int hdr_len = ctx->ipsec.hdr_len;
int trl_len = 0;
@@ -769,7 +739,7 @@ pkt_disposition_e do_ipsec_in_finish(odp_packet_t pkt,
return PKT_DROP;
if (!is_crypto_compl_status_ok(&auth_rc))
return PKT_DROP;
- ip = (odph_ipv4hdr_t *)odp_packet_l3(pkt);
+ ip = (odph_ipv4hdr_t *)odp_packet_l3_map(pkt, &seglen);
/*
* Finish auth
@@ -803,11 +773,11 @@ pkt_disposition_e do_ipsec_in_finish(odp_packet_t pkt,
ip->chksum = 0;
odph_ipv4_csum_update(pkt);
- /* Correct the packet length and move payload into position */
- odp_packet_set_len(pkt, odp_packet_get_len(pkt) - (hdr_len + trl_len));
+ /* Move payload into position and correct the packet length */
memmove(ipv4_data_p(ip),
ipv4_data_p(ip) + hdr_len,
odp_be_to_cpu_16(ip->tot_len));
+ odp_packet_pull_tail(pkt, hdr_len + trl_len);
/* Fall through to next state */
return PKT_CONTINUE;
@@ -833,8 +803,9 @@ pkt_disposition_e do_ipsec_out_classify(odp_packet_t pkt,
pkt_ctx_t *ctx,
bool *skip)
{
+ size_t seglen;
uint8_t *buf = odp_packet_addr(pkt);
- odph_ipv4hdr_t *ip = (odph_ipv4hdr_t *)odp_packet_l3(pkt);
+ odph_ipv4hdr_t *ip = (odph_ipv4hdr_t *)odp_packet_l3_map(pkt, &seglen);
uint16_t ip_data_len = ipv4_data_len(ip);
uint8_t *ip_data = ipv4_data_p(ip);
ipsec_cache_entry_t *entry;
@@ -921,7 +892,7 @@ pkt_disposition_e do_ipsec_out_classify(odp_packet_t pkt,
/* Set IPv4 length before authentication */
ipv4_adjust_len(ip, hdr_len + trl_len);
- odp_packet_set_len(pkt, odp_packet_get_len(pkt) + (hdr_len + trl_len));
+ odp_packet_push_tail(pkt, hdr_len + trl_len);
/* Save remaining context */
ctx->ipsec.hdr_len = hdr_len;
@@ -995,6 +966,7 @@ pkt_disposition_e do_ipsec_out_finish(odp_packet_t pkt,
odp_crypto_compl_status_t cipher_rc;
odp_crypto_compl_status_t auth_rc;
odph_ipv4hdr_t *ip;
+ size_t seglen;
/* Check crypto result */
event = odp_packet_to_buffer(pkt);
@@ -1003,7 +975,7 @@ pkt_disposition_e do_ipsec_out_finish(odp_packet_t pkt,
return PKT_DROP;
if (!is_crypto_compl_status_ok(&auth_rc))
return PKT_DROP;
- ip = (odph_ipv4hdr_t *)odp_packet_l3(pkt);
+ ip = (odph_ipv4hdr_t *)odp_packet_l3_map(pkt, &seglen);
/* Finalize the IPv4 header */
ip->ttl = ctx->ipsec.ip_ttl;
@@ -1057,7 +1029,7 @@ void *pktio_thread(void *arg ODP_UNUSED)
/* Determine new work versus completion or sequence number */
if ((completionq != dispatchq) && (seqnumq != dispatchq)) {
- ctx = alloc_pkt_ctx(pkt);
+ ctx = get_pkt_ctx_from_pkt(pkt);
ctx->state = PKT_STATE_INPUT_VERIFY;
} else {
ctx = get_pkt_ctx_from_pkt(pkt);
@@ -1144,7 +1116,7 @@ void *pktio_thread(void *arg ODP_UNUSED)
/* Check for drop */
if (PKT_DROP == rc)
- odph_packet_free(pkt);
+ odp_packet_free(pkt);
/* Print packet counts every once in a while */
if (PKT_DONE == rc) {
@@ -1167,12 +1139,13 @@ main(int argc, char *argv[])
{
odph_linux_pthread_t thread_tbl[MAX_WORKERS];
int num_workers;
- void *pool_base;
int i;
int first_core;
int core_count;
int stream_count;
odp_shm_t shm;
+ odp_buffer_pool_param_t params;
+ odp_buffer_pool_init_t init_params;
/* Init ODP before calling anything else */
if (odp_init_global(NULL, NULL)) {
@@ -1232,47 +1205,22 @@ main(int argc, char *argv[])
printf("First core: %i\n\n", first_core);
/* Create packet buffer pool */
- shm = odp_shm_reserve("shm_packet_pool",
- SHM_PKT_POOL_SIZE, ODP_CACHE_LINE_SIZE, 0);
+ params.buf_num = SHM_PKT_POOL_BUF_COUNT;
+ params.buf_size = SHM_PKT_POOL_BUF_SIZE;
+ params.buf_type = ODP_BUFFER_TYPE_PACKET;
+ params.buf_opts = ODP_BUFFER_OPTS_UNSEGMENTED;
- pool_base = odp_shm_addr(shm);
+ init_params.udata_size = sizeof(pkt_ctx_t);
+ init_params.buf_init = NULL;
+ init_params.buf_init_arg = NULL;
- if (NULL == pool_base) {
- ODP_ERR("Error: packet pool mem alloc failed.\n");
- exit(EXIT_FAILURE);
- }
+ pkt_pool = odp_buffer_pool_create("packet_pool", ¶ms, &init_params);
- pkt_pool = odp_buffer_pool_create("packet_pool", pool_base,
- SHM_PKT_POOL_SIZE,
- SHM_PKT_POOL_BUF_SIZE,
- ODP_CACHE_LINE_SIZE,
- ODP_BUFFER_TYPE_PACKET);
if (ODP_BUFFER_POOL_INVALID == pkt_pool) {
ODP_ERR("Error: packet pool create failed.\n");
exit(EXIT_FAILURE);
}
- /* Create context buffer pool */
- shm = odp_shm_reserve("shm_ctx_pool",
- SHM_CTX_POOL_SIZE, ODP_CACHE_LINE_SIZE, 0);
-
- pool_base = odp_shm_addr(shm);
-
- if (NULL == pool_base) {
- ODP_ERR("Error: context pool mem alloc failed.\n");
- exit(EXIT_FAILURE);
- }
-
- ctx_pool = odp_buffer_pool_create("ctx_pool", pool_base,
- SHM_CTX_POOL_SIZE,
- SHM_CTX_POOL_BUF_SIZE,
- ODP_CACHE_LINE_SIZE,
- ODP_BUFFER_TYPE_RAW);
- if (ODP_BUFFER_POOL_INVALID == ctx_pool) {
- ODP_ERR("Error: context pool create failed.\n");
- exit(EXIT_FAILURE);
- }
-
/* Populate our IPsec cache */
printf("Using %s mode for crypto API\n\n",
(CRYPTO_API_SYNC == args->appl.mode) ? "SYNC" :
@@ -14,7 +14,6 @@
#include <odp.h>
-#include <odph_packet.h>
#include <odph_eth.h>
#include <odph_ip.h>
#include <odph_icmp.h>
@@ -173,7 +172,6 @@ odp_packet_t create_ipv4_packet(stream_db_entry_t *stream,
odp_buffer_pool_t pkt_pool)
{
ipsec_cache_entry_t *entry = stream->input.entry;
- odp_buffer_t bfr;
odp_packet_t pkt;
uint8_t *base;
uint8_t *data;
@@ -184,18 +182,19 @@ odp_packet_t create_ipv4_packet(stream_db_entry_t *stream,
odph_icmphdr_t *icmp;
stream_pkt_hdr_t *test;
uint i;
+ size_t seglen;
- /* Get buffer */
- bfr = odp_buffer_alloc(pkt_pool);
- if (ODP_BUFFER_INVALID == bfr)
+ /* Get packet */
+ pkt = odp_packet_alloc(pkt_pool);
+ if (ODP_PACKET_INVALID == pkt)
return ODP_PACKET_INVALID;
- pkt = odp_packet_from_buffer(bfr);
- odp_packet_init(pkt);
- base = odp_packet_data(pkt);
- data = odp_packet_data(pkt);
+
+ base = odp_packet_map(pkt, &seglen);
+ data = base;
/* Ethernet */
odp_packet_set_inflag_eth(pkt, 1);
+ odp_packet_set_inflag_l2(pkt, 1);
odp_packet_set_l2_offset(pkt, data - base);
eth = (odph_ethhdr_t *)data;
data += sizeof(*eth);
@@ -251,6 +250,7 @@ odp_packet_t create_ipv4_packet(stream_db_entry_t *stream,
/* ICMP header so we can see it on wireshark */
icmp = (odph_icmphdr_t *)data;
data += sizeof(*icmp);
+
icmp->type = ICMP_ECHO;
icmp->code = 0;
icmp->un.echo.id = odp_cpu_to_be_16(0x1234);
@@ -303,7 +303,7 @@ odp_packet_t create_ipv4_packet(stream_db_entry_t *stream,
/* Since ESP can pad we can now fix IP length */
ip->tot_len = odp_cpu_to_be_16(data - (uint8_t *)ip);
- odp_packet_set_len(pkt, data - base);
+ odp_packet_push_tail(pkt, data - base);
/* Close AH if specified */
if (ah) {
@@ -344,9 +344,10 @@ bool verify_ipv4_packet(stream_db_entry_t *stream,
int hdr_len;
odph_icmphdr_t *icmp;
stream_pkt_hdr_t *test;
+ size_t seglen;
/* Basic IPv4 verify (add checksum verification) */
- data = odp_packet_l3(pkt);
+ data = odp_packet_l3_map(pkt, &seglen);
ip = (odph_ipv4hdr_t *)data;
data += sizeof(*ip);
if (0x45 != ip->ver_ihl)
@@ -546,7 +547,7 @@ bool verify_stream_db_outputs(void)
good = verify_ipv4_packet(stream, pkt);
if (good)
stream->verified++;
- odph_packet_free(pkt);
+ odp_packet_free(pkt);
}
}
@@ -17,7 +17,6 @@
#include <odp.h>
#include <odph_linux.h>
-#include <odph_packet.h>
#include <odph_eth.h>
#include <odph_ip.h>
@@ -311,12 +310,12 @@ int main(int argc, char *argv[])
{
odph_linux_pthread_t thread_tbl[MAX_WORKERS];
odp_buffer_pool_t pool;
- void *pool_base;
int i;
int first_core;
int core_count;
odp_pktio_t pktio;
odp_shm_t shm;
+ odp_buffer_pool_param_t params;
/* Init ODP before calling anything else */
if (odp_init_global(NULL, NULL)) {
@@ -380,20 +379,13 @@ int main(int argc, char *argv[])
printf("First core: %i\n\n", first_core);
/* Create packet pool */
- shm = odp_shm_reserve("shm_packet_pool",
- SHM_PKT_POOL_SIZE, ODP_CACHE_LINE_SIZE, 0);
- pool_base = odp_shm_addr(shm);
+ params.buf_num = SHM_PKT_POOL_SIZE/SHM_PKT_POOL_BUF_SIZE;
+ params.buf_size = SHM_PKT_POOL_BUF_SIZE;
+ params.buf_type = ODP_BUFFER_TYPE_PACKET;
+ params.buf_opts = ODP_BUFFER_OPTS_UNSEGMENTED;
- if (pool_base == NULL) {
- ODP_ERR("Error: packet pool mem alloc failed.\n");
- exit(EXIT_FAILURE);
- }
+ pool = odp_buffer_pool_create("packet_pool", ¶ms, NULL);
- pool = odp_buffer_pool_create("packet_pool", pool_base,
- SHM_PKT_POOL_SIZE,
- SHM_PKT_POOL_BUF_SIZE,
- ODP_CACHE_LINE_SIZE,
- ODP_BUFFER_TYPE_PACKET);
if (pool == ODP_BUFFER_POOL_INVALID) {
ODP_ERR("Error: packet pool create failed.\n");
exit(EXIT_FAILURE);
@@ -480,7 +472,7 @@ static int drop_err_pkts(odp_packet_t pkt_tbl[], unsigned len)
pkt = pkt_tbl[i];
if (odp_unlikely(odp_packet_error(pkt))) {
- odph_packet_free(pkt); /* Drop */
+ odp_packet_free(pkt); /* Drop */
pkt_cnt--;
} else if (odp_unlikely(i != j++)) {
pkt_tbl[j-1] = pkt;
@@ -317,7 +317,6 @@ static int test_poll_queue(int thr, odp_buffer_pool_t msg_pool)
* @param thr Thread
* @param msg_pool Buffer pool
* @param prio Priority
- * @param barrier Barrier
*
* @return 0 if successful
*/
@@ -375,7 +374,6 @@ static int test_schedule_one_single(const char *str, int thr,
* @param thr Thread
* @param msg_pool Buffer pool
* @param prio Priority
- * @param barrier Barrier
*
* @return 0 if successful
*/
@@ -436,7 +434,6 @@ static int test_schedule_one_many(const char *str, int thr,
* @param thr Thread
* @param msg_pool Buffer pool
* @param prio Priority
- * @param barrier Barrier
*
* @return 0 if successful
*/
@@ -512,7 +509,6 @@ static int test_schedule_single(const char *str, int thr,
* @param thr Thread
* @param msg_pool Buffer pool
* @param prio Priority
- * @param barrier Barrier
*
* @return 0 if successful
*/
@@ -587,7 +583,6 @@ static int test_schedule_many(const char *str, int thr,
* @param thr Thread
* @param msg_pool Buffer pool
* @param prio Priority
- * @param barrier Barrier
*
* @return 0 if successful
*/
@@ -949,13 +944,13 @@ int main(int argc, char *argv[])
test_args_t args;
int num_workers;
odp_buffer_pool_t pool;
- void *pool_base;
odp_queue_t queue;
int i, j;
int prios;
int first_core;
odp_shm_t shm;
test_globals_t *globals;
+ odp_buffer_pool_param_t params;
printf("\nODP example starts\n\n");
@@ -1037,19 +1032,13 @@ int main(int argc, char *argv[])
/*
* Create message pool
*/
- shm = odp_shm_reserve("msg_pool",
- MSG_POOL_SIZE, ODP_CACHE_LINE_SIZE, 0);
- pool_base = odp_shm_addr(shm);
+ params.buf_num = MSG_POOL_SIZE/sizeof(test_message_t);
+ params.buf_size = sizeof(test_message_t);
+ params.buf_type = ODP_BUFFER_TYPE_RAW;
+ params.buf_opts = ODP_BUFFER_OPTS_NONE;
- if (pool_base == NULL) {
- ODP_ERR("Shared memory reserve failed.\n");
- return -1;
- }
-
- pool = odp_buffer_pool_create("msg_pool", pool_base, MSG_POOL_SIZE,
- sizeof(test_message_t),
- ODP_CACHE_LINE_SIZE, ODP_BUFFER_TYPE_RAW);
+ pool = odp_buffer_pool_create("msg_pool", ¶ms, NULL);
if (pool == ODP_BUFFER_POOL_INVALID) {
ODP_ERR("Pool create failed.\n");
@@ -17,7 +17,6 @@
#include <odp.h>
#include <odph_linux.h>
-#include <odph_packet.h>
#include <odph_eth.h>
#include <odph_ip.h>
@@ -292,11 +291,11 @@ int main(int argc, char *argv[])
odph_linux_pthread_t thread_tbl[MAX_WORKERS];
odp_buffer_pool_t pool;
int num_workers;
- void *pool_base;
int i;
int first_core;
int core_count;
odp_shm_t shm;
+ odp_buffer_pool_param_t params;
/* Init ODP before calling anything else */
if (odp_init_global(NULL, NULL)) {
@@ -350,20 +349,13 @@ int main(int argc, char *argv[])
printf("First core: %i\n\n", first_core);
/* Create packet pool */
- shm = odp_shm_reserve("shm_packet_pool",
- SHM_PKT_POOL_SIZE, ODP_CACHE_LINE_SIZE, 0);
- pool_base = odp_shm_addr(shm);
+ params.buf_num = SHM_PKT_POOL_SIZE/SHM_PKT_POOL_BUF_SIZE;
+ params.buf_size = SHM_PKT_POOL_BUF_SIZE;
+ params.buf_type = ODP_BUFFER_TYPE_PACKET;
+ params.buf_opts = ODP_BUFFER_OPTS_UNSEGMENTED;
- if (pool_base == NULL) {
- ODP_ERR("Error: packet pool mem alloc failed.\n");
- exit(EXIT_FAILURE);
- }
+ pool = odp_buffer_pool_create("packet_pool", ¶ms, NULL);
- pool = odp_buffer_pool_create("packet_pool", pool_base,
- SHM_PKT_POOL_SIZE,
- SHM_PKT_POOL_BUF_SIZE,
- ODP_CACHE_LINE_SIZE,
- ODP_BUFFER_TYPE_PACKET);
if (pool == ODP_BUFFER_POOL_INVALID) {
ODP_ERR("Error: packet pool create failed.\n");
exit(EXIT_FAILURE);
@@ -427,7 +419,7 @@ static int drop_err_pkts(odp_packet_t pkt_tbl[], unsigned len)
pkt = pkt_tbl[i];
if (odp_unlikely(odp_packet_error(pkt))) {
- odph_packet_free(pkt); /* Drop */
+ odp_packet_free(pkt); /* Drop */
pkt_cnt--;
} else if (odp_unlikely(i != j++)) {
pkt_tbl[j-1] = pkt;
@@ -452,11 +444,12 @@ static void swap_pkt_addrs(odp_packet_t pkt_tbl[], unsigned len)
odph_ipv4hdr_t *ip;
uint32be_t ip_tmp_addr; /* tmp ip addr */
unsigned i;
+ size_t seglen;
for (i = 0; i < len; ++i) {
pkt = pkt_tbl[i];
if (odp_packet_inflag_eth(pkt)) {
- eth = (odph_ethhdr_t *)odp_packet_l2(pkt);
+ eth = (odph_ethhdr_t *)odp_packet_l2_map(pkt, &seglen);
tmp_addr = eth->dst;
eth->dst = eth->src;
@@ -464,7 +457,8 @@ static void swap_pkt_addrs(odp_packet_t pkt_tbl[], unsigned len)
if (odp_packet_inflag_ipv4(pkt)) {
/* IPv4 */
- ip = (odph_ipv4hdr_t *)odp_packet_l3(pkt);
+ ip = (odph_ipv4hdr_t *)
+ odp_packet_l3_map(pkt, &seglen);
ip_tmp_addr = ip->src_addr;
ip->src_addr = ip->dst_addr;
@@ -242,12 +242,11 @@ int main(int argc, char *argv[])
test_args_t args;
int num_workers;
odp_buffer_pool_t pool;
- void *pool_base;
odp_queue_t queue;
int first_core;
uint64_t cycles, ns;
odp_queue_param_t param;
- odp_shm_t shm;
+ odp_buffer_pool_param_t params;
printf("\nODP timer example starts\n");
@@ -306,17 +305,12 @@ int main(int argc, char *argv[])
printf("period: %i usec\n", args.period_us);
printf("timeouts: %i\n", args.tmo_count);
- /*
- * Create message pool
- */
- shm = odp_shm_reserve("msg_pool",
- MSG_POOL_SIZE, ODP_CACHE_LINE_SIZE, 0);
- pool_base = odp_shm_addr(shm);
-
- pool = odp_buffer_pool_create("msg_pool", pool_base, MSG_POOL_SIZE,
- 0,
- ODP_CACHE_LINE_SIZE,
- ODP_BUFFER_TYPE_TIMEOUT);
+ params.buf_num = 1024;
+ params.buf_size = 0;
+ params.buf_type = ODP_BUFFER_TYPE_TIMEOUT;
+ params.buf_opts = ODP_BUFFER_OPTS_NONE;
+
+ pool = odp_buffer_pool_create("msg_pool", ¶ms, NULL);
if (pool == ODP_BUFFER_POOL_INVALID) {
ODP_ERR("Pool create failed.\n");
@@ -79,10 +79,12 @@ static inline int odph_ipv4_csum_valid(odp_packet_t pkt)
odph_ipv4hdr_t ip;
uint16be_t chksum;
- if (!odp_packet_l3_offset(pkt))
+ if (!odp_packet_inflag_ipv4(pkt))
return 0;
- memcpy(&ip, odp_packet_l3(pkt), sizeof(odph_ipv4hdr_t));
+ odp_packet_copy_to_memory(&ip, pkt, odp_packet_l3_offset(pkt),
+ sizeof(odph_ipv4hdr_t));
+
w = (uint16_t *)(void *)&ip;
chksum = ip.chksum;
ip.chksum = 0x0;
@@ -105,12 +107,13 @@ static inline uint16sum_t odph_ipv4_csum_update(odp_packet_t pkt)
{
uint16_t *w;
odph_ipv4hdr_t *ip;
+ size_t seglen;
int nleft = sizeof(odph_ipv4hdr_t);
- if (!odp_packet_l3_offset(pkt))
+ if (!odp_packet_inflag_ipv4(pkt))
return 0;
- ip = (odph_ipv4hdr_t *)odp_packet_l3(pkt);
+ ip = (odph_ipv4hdr_t *)odp_packet_l3_map(pkt, &seglen);
w = (uint16_t *)(void *)ip;
ip->chksum = odp_chksum(w, nleft);
return ip->chksum;
@@ -126,7 +129,14 @@ static inline uint16sum_t odph_ipv4_csum_update(odp_packet_t pkt)
* IPv6 header
*/
typedef struct ODP_PACKED {
- uint32be_t ver_tc_flow; /**< Version / Traffic class / Flow label */
+ union {
+ uint32be_t ver_tc_flow; /**< Version / TC / Flow label */
+ struct {
+ uint32be_t ver:4; /**< Version (must be 6) */
+ uint32be_t tc:8; /**< Traffic class */
+ uint32be_t flow:20; /**< Flow label */
+ };
+ };
uint16be_t payload_len; /**< Payload length */
uint8_t next_hdr; /**< Next header */
uint8_t hop_limit; /**< Hop limit */
@@ -137,16 +147,29 @@ typedef struct ODP_PACKED {
/** @internal Compile time assert */
ODP_STATIC_ASSERT(sizeof(odph_ipv6hdr_t) == ODPH_IPV6HDR_LEN, "ODPH_IPV6HDR_T__SIZE_ERROR");
+/**
+ * IPv6 Header extensions
+ */
+typedef struct ODP_PACKED {
+ uint8_t next_hdr; /**< Protocol of next header */
+ uint8_t ext_len; /**< Length of this extention in 8 byte units,
+ not counting first 8 bytes, so 0 = 8 bytes
+ 1 = 16 bytes, etc. */
+ uint8_t filler[6]; /**< Fill out first 8 byte segment */
+} odph_ipv6hdr_ext_t;
+
/** @name
* IP protocol values (IPv4:'proto' or IPv6:'next_hdr')
* @{*/
-#define ODPH_IPPROTO_ICMP 0x01 /**< Internet Control Message Protocol (1) */
-#define ODPH_IPPROTO_TCP 0x06 /**< Transmission Control Protocol (6) */
-#define ODPH_IPPROTO_UDP 0x11 /**< User Datagram Protocol (17) */
-#define ODPH_IPPROTO_SCTP 0x84 /**< Stream Control Transmission Protocol (132) */
-#define ODPH_IPPROTO_FRAG 0x2C /**< Fragment (44) */
-#define ODPH_IPPROTO_AH 0x33 /**< Authentication Header (51) */
-#define ODPH_IPPROTO_ESP 0x32 /**< Encapsulating Security Payload (50) */
+#define ODPH_IPPROTO_HOPOPTS 0x00 /**< IPv6 hop-by-hop options */
+#define ODPH_IPPROTO_ICMP 0x01 /**< Internet Control Message Protocol (1) */
+#define ODPH_IPPROTO_TCP 0x06 /**< Transmission Control Protocol (6) */
+#define ODPH_IPPROTO_UDP 0x11 /**< User Datagram Protocol (17) */
+#define ODPH_IPPROTO_ROUTE 0x2B /**< IPv6 Routing header (43) */
+#define ODPH_IPPROTO_FRAG 0x2C /**< IPv6 Fragment (44) */
+#define ODPH_IPPROTO_AH 0x33 /**< Authentication Header (51) */
+#define ODPH_IPPROTO_ESP 0x32 /**< Encapsulating Security Payload (50) */
+#define ODPH_IPPROTO_INVALID 0xFF /**< Reserved invalid by IANA */
/**@}*/
#ifdef __cplusplus
deleted file mode 100644
@@ -1,97 +0,0 @@
-/* Copyright (c) 2014, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-
-/**
- * @file
- *
- * Optional ODP packet helper functions
- */
-
-#ifndef ODPH_PACKET_HELPER_H_
-#define ODPH_PACKET_HELPER_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp.h>
-
-/**
- * Helper: Tests if packet is valid
- *
- * Allows for more thorough checking than "if (pkt == ODP_PACKET_INVALID)"
- *
- * @param pkt Packet handle
- *
- * @return 1 if valid, otherwise 0
- */
-static inline int odph_packet_is_valid(odp_packet_t pkt)
-{
- odp_buffer_t buf = odp_packet_to_buffer(pkt);
-
- return odp_buffer_is_valid(buf);
-}
-
-/**
- * Helper: Allocate and initialize a packet buffer from a packet pool
- *
- * @param pool_id Pool handle
- *
- * @note The pool must have been created with 'buf_type=ODP_BUFFER_TYPE_PACKET'
- *
- * @return Packet handle or ODP_PACKET_INVALID
- */
-static inline odp_packet_t odph_packet_alloc(odp_buffer_pool_t pool_id)
-{
- odp_packet_t pkt;
- odp_buffer_t buf;
-
- buf = odp_buffer_alloc(pool_id);
- if (odp_unlikely(!odp_buffer_is_valid(buf)))
- return ODP_PACKET_INVALID;
-
- pkt = odp_packet_from_buffer(buf);
- odp_packet_init(pkt);
-
- return pkt;
-}
-
-/**
- * Helper: Free a packet buffer back into the packet pool
- *
- * @param pkt Packet handle
- */
-static inline void odph_packet_free(odp_packet_t pkt)
-{
- odp_buffer_t buf = odp_packet_to_buffer(pkt);
-
- odp_buffer_free(buf);
-}
-
-/**
- * Helper: Packet buffer maximum data size
- *
- * @note odp_packet_buf_size(pkt) != odp_packet_get_len(pkt), the former returns
- * the max length of the buffer, the latter the size of a received packet.
- *
- * @param pkt Packet handle
- *
- * @return Packet buffer maximum data size
- */
-static inline size_t odph_packet_buf_size(odp_packet_t pkt)
-{
- odp_buffer_t buf = odp_packet_to_buffer(pkt);
-
- return odp_buffer_size(buf);
-}
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
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
@@ -57,15 +57,14 @@ static inline uint16_t odph_ipv4_udp_chksum(odp_packet_t pkt)
odph_udphdr_t *udph;
odph_ipv4hdr_t *iph;
uint16_t udplen;
+ size_t l3_seglen, l4_seglen;
- if (!odp_packet_l3_offset(pkt))
+ if (odp_packet_l3_protocol(pkt) != 0x800 ||
+ odp_packet_l4_protocol(pkt) != ODPH_IPPROTO_UDP)
return 0;
- if (!odp_packet_l4_offset(pkt))
- return 0;
-
- iph = (odph_ipv4hdr_t *)odp_packet_l3(pkt);
- udph = (odph_udphdr_t *)odp_packet_l4(pkt);
+ iph = (odph_ipv4hdr_t *)odp_packet_l3_map(pkt, &l3_seglen);
+ udph = (odph_udphdr_t *)odp_packet_l4_map(pkt, &l4_seglen);
udplen = odp_be_to_cpu_16(udph->length);
/* the source ip */
@@ -21,7 +21,6 @@ include_HEADERS = \
$(top_srcdir)/platform/linux-generic/include/api/odp_debug.h \
$(top_srcdir)/platform/linux-generic/include/api/odp_hints.h \
$(top_srcdir)/platform/linux-generic/include/api/odp_init.h \
- $(top_srcdir)/platform/linux-generic/include/api/odp_packet_flags.h \
$(top_srcdir)/platform/linux-generic/include/api/odp_packet.h \
$(top_srcdir)/platform/linux-generic/include/api/odp_packet_io.h \
$(top_srcdir)/platform/linux-generic/include/api/odp_queue.h \
@@ -46,8 +45,8 @@ subdirheaders_HEADERS = \
$(top_srcdir)/helper/include/odph_ip.h \
$(top_srcdir)/helper/include/odph_ipsec.h \
$(top_srcdir)/helper/include/odph_linux.h \
- $(top_srcdir)/helper/include/odph_packet.h \
$(top_srcdir)/helper/include/odph_ring.h \
+ $(top_srcdir)/helper/include/odph_tcp.h \
$(top_srcdir)/helper/include/odph_udp.h
__LIB__libodp_la_SOURCES = \
@@ -60,7 +59,6 @@ __LIB__libodp_la_SOURCES = \
odp_init.c \
odp_linux.c \
odp_packet.c \
- odp_packet_flags.c \
odp_packet_io.c \
odp_packet_socket.c \
odp_queue.c \
@@ -44,7 +44,6 @@ extern "C" {
#include <odp_schedule.h>
#include <odp_sync.h>
#include <odp_packet.h>
-#include <odp_packet_flags.h>
#include <odp_packet_io.h>
#include <odp_crypto.h>
#include <odp_rwlock.h>
deleted file mode 100644
@@ -1,334 +0,0 @@
-/* Copyright (c) 2014, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-
-/**
- * @file
- *
- * ODP packet flags
- */
-
-#ifndef ODP_PACKET_FLAGS_H_
-#define ODP_PACKET_FLAGS_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp_std_types.h>
-#include <odp_packet.h>
-
-/** @addtogroup odp_packet
- * Boolean operations on a packet.
- * @{
- */
-
-/**
- * Check for packet errors
- *
- * Checks all error flags at once.
- *
- * @param pkt Packet handle
- * @return 1 if packet has errors, 0 otherwise
- */
-int odp_packet_error(odp_packet_t pkt);
-
-/**
- * Check if error was 'frame length' error
- *
- * @param pkt Packet handle
- * @return 1 if frame length error detected, 0 otherwise
- */
-int odp_packet_errflag_frame_len(odp_packet_t pkt);
-
-/**
- * Check for L2 header, e.g. ethernet
- *
- * @param pkt Packet handle
- * @return 1 if packet contains a valid & known L2 header, 0 otherwise
- */
-int odp_packet_inflag_l2(odp_packet_t pkt);
-
-/**
- * Check for L3 header, e.g. IPv4, IPv6
- *
- * @param pkt Packet handle
- * @return 1 if packet contains a valid & known L3 header, 0 otherwise
- */
-int odp_packet_inflag_l3(odp_packet_t pkt);
-
-/**
- * Check for L4 header, e.g. UDP, TCP, SCTP (also ICMP)
- *
- * @param pkt Packet handle
- * @return 1 if packet contains a valid & known L4 header, 0 otherwise
- */
-int odp_packet_inflag_l4(odp_packet_t pkt);
-
-/**
- * Check for Ethernet header
- *
- * @param pkt Packet handle
- * @return 1 if packet contains a valid eth header, 0 otherwise
- */
-int odp_packet_inflag_eth(odp_packet_t pkt);
-
-/**
- * Check for jumbo frame
- *
- * @param pkt Packet handle
- * @return 1 if packet contains jumbo frame, 0 otherwise
- */
-int odp_packet_inflag_jumbo(odp_packet_t pkt);
-
-/**
- * Check for VLAN
- *
- * @param pkt Packet handle
- * @return 1 if packet contains a VLAN header, 0 otherwise
- */
-int odp_packet_inflag_vlan(odp_packet_t pkt);
-
-/**
- * Check for VLAN QinQ (stacked VLAN)
- *
- * @param pkt Packet handle
- * @return 1 if packet contains a VLAN QinQ header, 0 otherwise
- */
-int odp_packet_inflag_vlan_qinq(odp_packet_t pkt);
-
-/**
- * Check for ARP
- *
- * @param pkt Packet handle
- * @return 1 if packet contains an ARP header, 0 otherwise
- */
-int odp_packet_inflag_arp(odp_packet_t pkt);
-
-/**
- * Check for IPv4
- *
- * @param pkt Packet handle
- * @return 1 if packet contains an IPv4 header, 0 otherwise
- */
-int odp_packet_inflag_ipv4(odp_packet_t pkt);
-
-/**
- * Check for IPv6
- *
- * @param pkt Packet handle
- * @return 1 if packet contains an IPv6 header, 0 otherwise
- */
-int odp_packet_inflag_ipv6(odp_packet_t pkt);
-
-/**
- * Check for IP fragment
- *
- * @param pkt Packet handle
- * @return 1 if packet is an IP fragment, 0 otherwise
- */
-int odp_packet_inflag_ipfrag(odp_packet_t pkt);
-
-/**
- * Check for IP options
- *
- * @param pkt Packet handle
- * @return 1 if packet contains IP options, 0 otherwise
- */
-int odp_packet_inflag_ipopt(odp_packet_t pkt);
-
-/**
- * Check for IPSec
- *
- * @param pkt Packet handle
- * @return 1 if packet requires IPSec processing, 0 otherwise
- */
-int odp_packet_inflag_ipsec(odp_packet_t pkt);
-
-/**
- * Check for UDP
- *
- * @param pkt Packet handle
- * @return 1 if packet contains a UDP header, 0 otherwise
- */
-int odp_packet_inflag_udp(odp_packet_t pkt);
-
-/**
- * Check for TCP
- *
- * @param pkt Packet handle
- * @return 1 if packet contains a TCP header, 0 otherwise
- */
-int odp_packet_inflag_tcp(odp_packet_t pkt);
-
-/**
- * Check for SCTP
- *
- * @param pkt Packet handle
- * @return 1 if packet contains an SCTP header, 0 otherwise
- */
-int odp_packet_inflag_sctp(odp_packet_t pkt);
-
-/**
- * Check for ICMP
- *
- * @param pkt Packet handle
- * @return 1 if packet contains an ICMP header, 0 otherwise
- */
-int odp_packet_inflag_icmp(odp_packet_t pkt);
-
-/**
- * Request L4 checksum calculation
- *
- * @param pkt Packet handle
- */
-void odp_packet_outflag_l4_chksum(odp_packet_t pkt);
-
-/**
- * Set flag for L2 header, e.g. ethernet
- *
- * @param pkt Packet handle
- * @param val Value
- */
-void odp_packet_set_inflag_l2(odp_packet_t pkt, int val);
-
-/**
- * Set flag for L3 header, e.g. IPv4, IPv6
- *
- * @param pkt Packet handle
- * @param val Value
- */
-void odp_packet_set_inflag_l3(odp_packet_t pkt, int val);
-
-/**
- * Set flag for L4 header, e.g. UDP, TCP, SCTP (also ICMP)
- *
- * @param pkt Packet handle
- * @param val Value
- */
-void odp_packet_set_inflag_l4(odp_packet_t pkt, int val);
-
-/**
- * Set flag for Ethernet header
- *
- * @param pkt Packet handle
- * @param val Value
- */
-void odp_packet_set_inflag_eth(odp_packet_t pkt, int val);
-
-/**
- * Set flag for jumbo frame
- *
- * @param pkt Packet handle
- * @param val Value
- */
-void odp_packet_set_inflag_jumbo(odp_packet_t pkt, int val);
-
-/**
- * Set flag for VLAN
- *
- * @param pkt Packet handle
- * @param val Value
- */
-void odp_packet_set_inflag_vlan(odp_packet_t pkt, int val);
-
-/**
- * Set flag for VLAN QinQ (stacked VLAN)
- *
- * @param pkt Packet handle
- * @param val Value
- */
-void odp_packet_set_inflag_vlan_qinq(odp_packet_t pkt, int val);
-
-/**
- * Set flag for ARP
- *
- * @param pkt Packet handle
- * @param val Value
- */
-void odp_packet_set_inflag_arp(odp_packet_t pkt, int val);
-
-/**
- * Set flag for IPv4
- *
- * @param pkt Packet handle
- * @param val Value
- */
-void odp_packet_set_inflag_ipv4(odp_packet_t pkt, int val);
-
-/**
- * Set flag for IPv6
- *
- * @param pkt Packet handle
- * @param val Value
- */
-void odp_packet_set_inflag_ipv6(odp_packet_t pkt, int val);
-
-/**
- * Set flag for IP fragment
- *
- * @param pkt Packet handle
- * @param val Value
- */
-void odp_packet_set_inflag_ipfrag(odp_packet_t pkt, int val);
-
-/**
- * Set flag for IP options
- *
- * @param pkt Packet handle
- * @param val Value
- */
-void odp_packet_set_inflag_ipopt(odp_packet_t pkt, int val);
-
-/**
- * Set flag for IPSec
- *
- * @param pkt Packet handle
- * @param val Value
- */
-void odp_packet_set_inflag_ipsec(odp_packet_t pkt, int val);
-
-/**
- * Set flag for UDP
- *
- * @param pkt Packet handle
- * @param val Value
- */
-void odp_packet_set_inflag_udp(odp_packet_t pkt, int val);
-
-/**
- * Set flag for TCP
- *
- * @param pkt Packet handle
- * @param val Value
- */
-void odp_packet_set_inflag_tcp(odp_packet_t pkt, int val);
-
-/**
- * Set flag for SCTP
- *
- * @param pkt Packet handle
- * @param val Value
- */
-void odp_packet_set_inflag_sctp(odp_packet_t pkt, int val);
-
-/**
- * Set flag for ICMP
- *
- * @param pkt Packet handle
- * @param val Value
- */
-void odp_packet_set_inflag_icmp(odp_packet_t pkt, int val);
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
@@ -14,7 +14,6 @@
#include <odp_shared_memory.h>
#include <odp_crypto_internal.h>
#include <odp_hints.h>
-#include <odph_packet.h>
#include <string.h>
@@ -370,7 +369,7 @@ odp_crypto_operation(odp_crypto_op_params_t *params,
if (completion_event == odp_packet_to_buffer(params->pkt))
completion_event =
odp_packet_to_buffer(params->out_pkt);
- odph_packet_free(params->pkt);
+ odp_packet_free(params->pkt);
params->pkt = ODP_PACKET_INVALID;
}
deleted file mode 100644
@@ -1,202 +0,0 @@
-/* Copyright (c) 2014, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#include <odp_packet_flags.h>
-#include <odp_packet_internal.h>
-
-
-int odp_packet_error(odp_packet_t pkt)
-{
- return (odp_packet_hdr(pkt)->error_flags.all != 0);
-}
-
-/* Get Error Flags */
-
-int odp_packet_errflag_frame_len(odp_packet_t pkt)
-{
- return odp_packet_hdr(pkt)->error_flags.frame_len;
-}
-
-/* Get Input Flags */
-
-int odp_packet_inflag_l2(odp_packet_t pkt)
-{
- return odp_packet_hdr(pkt)->input_flags.l2;
-}
-
-int odp_packet_inflag_l3(odp_packet_t pkt)
-{
- return odp_packet_hdr(pkt)->input_flags.l3;
-}
-
-int odp_packet_inflag_l4(odp_packet_t pkt)
-{
- return odp_packet_hdr(pkt)->input_flags.l4;
-}
-
-int odp_packet_inflag_eth(odp_packet_t pkt)
-{
- return odp_packet_hdr(pkt)->input_flags.eth;
-}
-
-int odp_packet_inflag_jumbo(odp_packet_t pkt)
-{
- return odp_packet_hdr(pkt)->input_flags.jumbo;
-}
-
-int odp_packet_inflag_vlan(odp_packet_t pkt)
-{
- return odp_packet_hdr(pkt)->input_flags.vlan;
-}
-
-int odp_packet_inflag_vlan_qinq(odp_packet_t pkt)
-{
- return odp_packet_hdr(pkt)->input_flags.vlan_qinq;
-}
-
-int odp_packet_inflag_arp(odp_packet_t pkt)
-{
- return odp_packet_hdr(pkt)->input_flags.arp;
-}
-
-int odp_packet_inflag_ipv4(odp_packet_t pkt)
-{
- return odp_packet_hdr(pkt)->input_flags.ipv4;
-}
-
-int odp_packet_inflag_ipv6(odp_packet_t pkt)
-{
- return odp_packet_hdr(pkt)->input_flags.ipv6;
-}
-
-int odp_packet_inflag_ipfrag(odp_packet_t pkt)
-{
- return odp_packet_hdr(pkt)->input_flags.ipfrag;
-}
-
-int odp_packet_inflag_ipopt(odp_packet_t pkt)
-{
- return odp_packet_hdr(pkt)->input_flags.ipopt;
-}
-
-int odp_packet_inflag_ipsec(odp_packet_t pkt)
-{
- return odp_packet_hdr(pkt)->input_flags.ipsec;
-}
-
-int odp_packet_inflag_udp(odp_packet_t pkt)
-{
- return odp_packet_hdr(pkt)->input_flags.udp;
-}
-
-int odp_packet_inflag_tcp(odp_packet_t pkt)
-{
- return odp_packet_hdr(pkt)->input_flags.tcp;
-}
-
-int odp_packet_inflag_sctp(odp_packet_t pkt)
-{
- return odp_packet_hdr(pkt)->input_flags.sctp;
-}
-
-int odp_packet_inflag_icmp(odp_packet_t pkt)
-{
- return odp_packet_hdr(pkt)->input_flags.icmp;
-}
-
-/* Set Output Flags */
-
-void odp_packet_outflag_l4_chksum(odp_packet_t pkt)
-{
- odp_packet_hdr(pkt)->output_flags.l4_chksum = 1;
-}
-
-/* Set Input Flags */
-
-void odp_packet_set_inflag_l2(odp_packet_t pkt, int val)
-{
- odp_packet_hdr(pkt)->input_flags.l2 = val;
-}
-
-void odp_packet_set_inflag_l3(odp_packet_t pkt, int val)
-{
- odp_packet_hdr(pkt)->input_flags.l3 = val;
-}
-
-void odp_packet_set_inflag_l4(odp_packet_t pkt, int val)
-{
- odp_packet_hdr(pkt)->input_flags.l4 = val;
-}
-
-void odp_packet_set_inflag_eth(odp_packet_t pkt, int val)
-{
- odp_packet_hdr(pkt)->input_flags.eth = val;
-}
-
-void odp_packet_set_inflag_jumbo(odp_packet_t pkt, int val)
-{
- odp_packet_hdr(pkt)->input_flags.jumbo = val;
-}
-
-void odp_packet_set_inflag_vlan(odp_packet_t pkt, int val)
-{
- odp_packet_hdr(pkt)->input_flags.vlan = val;
-}
-
-void odp_packet_set_inflag_vlan_qinq(odp_packet_t pkt, int val)
-{
- odp_packet_hdr(pkt)->input_flags.vlan_qinq = val;
-}
-
-void odp_packet_set_inflag_arp(odp_packet_t pkt, int val)
-{
- odp_packet_hdr(pkt)->input_flags.arp = val;
-}
-
-void odp_packet_set_inflag_ipv4(odp_packet_t pkt, int val)
-{
- odp_packet_hdr(pkt)->input_flags.ipv4 = val;
-}
-
-void odp_packet_set_inflag_ipv6(odp_packet_t pkt, int val)
-{
- odp_packet_hdr(pkt)->input_flags.ipv6 = val;
-}
-
-void odp_packet_set_inflag_ipfrag(odp_packet_t pkt, int val)
-{
- odp_packet_hdr(pkt)->input_flags.ipfrag = val;
-}
-
-void odp_packet_set_inflag_ipopt(odp_packet_t pkt, int val)
-{
- odp_packet_hdr(pkt)->input_flags.ipopt = val;
-}
-
-void odp_packet_set_inflag_ipsec(odp_packet_t pkt, int val)
-{
- odp_packet_hdr(pkt)->input_flags.ipsec = val;
-}
-
-void odp_packet_set_inflag_udp(odp_packet_t pkt, int val)
-{
- odp_packet_hdr(pkt)->input_flags.udp = val;
-}
-
-void odp_packet_set_inflag_tcp(odp_packet_t pkt, int val)
-{
- odp_packet_hdr(pkt)->input_flags.tcp = val;
-}
-
-void odp_packet_set_inflag_sctp(odp_packet_t pkt, int val)
-{
- odp_packet_hdr(pkt)->input_flags.sctp = val;
-}
-
-void odp_packet_set_inflag_icmp(odp_packet_t pkt, int val)
-{
- odp_packet_hdr(pkt)->input_flags.icmp = val;
-}
@@ -4,10 +4,10 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include <odp_packet.h>
#include <odp_packet_io.h>
#include <odp_packet_io_internal.h>
#include <odp_packet_io_queue.h>
-#include <odp_packet.h>
#include <odp_packet_internal.h>
#include <odp_internal.h>
#include <odp_spinlock.h>
@@ -369,7 +369,8 @@ odp_queue_t odp_pktio_outq_getdef(odp_pktio_t id)
int pktout_enqueue(queue_entry_t *qentry, odp_buffer_hdr_t *buf_hdr)
{
- odp_packet_t pkt = odp_packet_from_buffer(buf_hdr->handle.handle);
+ odp_packet_t pkt =
+ odp_packet_from_buf_internal(odp_hdr_to_buf(buf_hdr));
int len = 1;
int nbr;
@@ -391,7 +392,9 @@ int pktout_enq_multi(queue_entry_t *qentry, odp_buffer_hdr_t *buf_hdr[],
int i;
for (i = 0; i < num; ++i)
- pkt_tbl[i] = odp_packet_from_buffer(buf_hdr[i]->handle.handle);
+ pkt_tbl[i] =
+ odp_packet_from_buf_internal(
+ odp_hdr_to_buf(buf_hdr[i]));
nbr = odp_pktio_send(qentry->s.pktout, pkt_tbl, num);
return (nbr == num ? 0 : -1);
@@ -34,13 +34,13 @@
#include <errno.h>
#include <sys/syscall.h>
+#include <odp_spinlock.h>
#include <odp_packet_socket.h>
#include <odp_packet_internal.h>
#include <odp_hints.h>
#include <odph_eth.h>
#include <odph_ip.h>
-#include <odph_packet.h>
/** Provide a sendmmsg wrapper for systems with no libc or kernel support.
* As it is implemented as a weak symbol, it has zero effect on systems
@@ -178,28 +178,19 @@ int setup_pkt_sock(pkt_sock_t *const pkt_sock, const char *netdev,
unsigned int if_idx;
struct ifreq ethreq;
struct sockaddr_ll sa_ll;
- odp_packet_t pkt;
- uint8_t *pkt_buf;
- uint8_t *l2_hdr;
if (pool == ODP_BUFFER_POOL_INVALID)
return -1;
pkt_sock->pool = pool;
- pkt = odph_packet_alloc(pool);
- if (!odph_packet_is_valid(pkt))
- return -1;
-
- pkt_buf = odp_packet_addr(pkt);
- l2_hdr = ETHBUF_ALIGN(pkt_buf);
/* Store eth buffer offset for pkt buffers from this pool */
- pkt_sock->frame_offset = (uintptr_t)l2_hdr - (uintptr_t)pkt_buf;
+ pkt_sock->frame_offset = 0;
/* pkt buffer size */
- pkt_sock->buf_size = odph_packet_buf_size(pkt);
+ pkt_sock->buf_size = odp_buffer_pool_segment_size(pool);
/* max frame len taking into account the l2-offset */
- pkt_sock->max_frame_len = pkt_sock->buf_size - pkt_sock->frame_offset;
-
- odph_packet_free(pkt);
+ pkt_sock->max_frame_len = pkt_sock->buf_size -
+ odp_buffer_pool_headroom(pool) -
+ odp_buffer_pool_tailroom(pool);
odp_spinlock_lock(&raw_sockets_lock);
@@ -284,7 +275,6 @@ int recv_pkt_sock_basic(pkt_sock_t *const pkt_sock,
int const sockfd = pkt_sock->sockfd;
odp_packet_t pkt = ODP_PACKET_INVALID;
uint8_t *pkt_buf;
- uint8_t *l2_hdr;
int nb_rx = 0;
/* recvfrom:
@@ -297,15 +287,14 @@ int recv_pkt_sock_basic(pkt_sock_t *const pkt_sock,
for (i = 0; i < len; i++) {
if (odp_likely(pkt == ODP_PACKET_INVALID)) {
- pkt = odph_packet_alloc(pkt_sock->pool);
+ pkt = odp_packet_alloc(pkt_sock->pool);
if (odp_unlikely(pkt == ODP_PACKET_INVALID))
break;
}
pkt_buf = odp_packet_addr(pkt);
- l2_hdr = pkt_buf + pkt_sock->frame_offset;
- recv_bytes = recvfrom(sockfd, l2_hdr,
+ recv_bytes = recvfrom(sockfd, pkt_buf,
pkt_sock->max_frame_len, MSG_DONTWAIT,
(struct sockaddr *)&sll, &addrlen);
/* no data or error: free recv buf and break out of loop */
@@ -316,7 +305,8 @@ int recv_pkt_sock_basic(pkt_sock_t *const pkt_sock,
continue;
/* Parse and set packet header data */
- odp_packet_parse(pkt, recv_bytes, pkt_sock->frame_offset);
+ odp_packet_set_len(pkt, recv_bytes);
+ odp_packet_parse(pkt);
pkt_table[nb_rx] = pkt;
pkt = ODP_PACKET_INVALID;
@@ -324,7 +314,7 @@ int recv_pkt_sock_basic(pkt_sock_t *const pkt_sock,
} /* end for() */
if (odp_unlikely(pkt != ODP_PACKET_INVALID))
- odph_packet_free(pkt);
+ odp_packet_free(pkt);
return nb_rx;
}
@@ -350,8 +340,7 @@ int send_pkt_sock_basic(pkt_sock_t *const pkt_sock,
while (i < len) {
pkt = pkt_table[i];
- frame = odp_packet_l2(pkt);
- frame_len = odp_packet_get_len(pkt);
+ frame = odp_packet_map(pkt, &frame_len);
ret = send(sockfd, frame, frame_len, flags);
if (odp_unlikely(ret == -1)) {
@@ -367,8 +356,10 @@ int send_pkt_sock_basic(pkt_sock_t *const pkt_sock,
} /* end while */
nb_tx = i;
- for (i = 0; i < len; i++)
- odph_packet_free(pkt_table[i]);
+ for (i = 0; i < len; i++) {
+ if (odp_packet_decr_refcount(pkt_table[i], 1) == 0)
+ odp_packet_free(pkt_table[i]);
+ }
return nb_tx;
}
@@ -395,7 +386,7 @@ int recv_pkt_sock_mmsg(pkt_sock_t *const pkt_sock,
memset(msgvec, 0, sizeof(msgvec));
for (i = 0; i < (int)len; i++) {
- pkt_table[i] = odph_packet_alloc(pkt_sock->pool);
+ pkt_table[i] = odp_packet_alloc(pkt_sock->pool);
if (odp_unlikely(pkt_table[i] == ODP_PACKET_INVALID))
break;
@@ -417,13 +408,12 @@ int recv_pkt_sock_mmsg(pkt_sock_t *const pkt_sock,
/* Don't receive packets sent by ourselves */
if (odp_unlikely(ethaddrs_equal(pkt_sock->if_mac,
eth_hdr->h_source))) {
- odph_packet_free(pkt_table[i]);
+ odp_packet_free(pkt_table[i]);
continue;
}
/* Parse and set packet header data */
- odp_packet_parse(pkt_table[i], msgvec[i].msg_len,
- pkt_sock->frame_offset);
+ odp_packet_parse(pkt_table[i]);
pkt_table[nb_rx] = pkt_table[i];
nb_rx++;
@@ -431,7 +421,7 @@ int recv_pkt_sock_mmsg(pkt_sock_t *const pkt_sock,
/* Free unused pkt buffers */
for (; i < msgvec_len; i++)
- odph_packet_free(pkt_table[i]);
+ odp_packet_free(pkt_table[i]);
return nb_rx;
}
@@ -457,8 +447,8 @@ int send_pkt_sock_mmsg(pkt_sock_t *const pkt_sock,
memset(msgvec, 0, sizeof(msgvec));
for (i = 0; i < len; i++) {
- uint8_t *const frame = odp_packet_l2(pkt_table[i]);
- const size_t frame_len = odp_packet_get_len(pkt_table[i]);
+ size_t frame_len;
+ uint8_t *const frame = odp_packet_map(pkt_table[i], &frame_len);
iovecs[i].iov_base = frame;
iovecs[i].iov_len = frame_len;
msgvec[i].msg_hdr.msg_iov = &iovecs[i];
@@ -472,8 +462,10 @@ int send_pkt_sock_mmsg(pkt_sock_t *const pkt_sock,
flags = 0; /* blocking for next rounds */
}
- for (i = 0; i < len; i++)
- odph_packet_free(pkt_table[i]);
+ for (i = 0; i < len; i++) {
+ if (odp_packet_decr_refcount(pkt_table[i], 1) == 0)
+ odp_packet_free(pkt_table[i]);
+ }
return len;
}
@@ -537,7 +529,6 @@ static inline void mmap_tx_user_ready(struct tpacket2_hdr *hdr)
static inline unsigned pkt_mmap_v2_rx(int sock, struct ring *ring,
odp_packet_t pkt_table[], unsigned len,
odp_buffer_pool_t pool,
- size_t frame_offset,
unsigned char if_mac[])
{
union frame_map ppd;
@@ -570,18 +561,18 @@ static inline unsigned pkt_mmap_v2_rx(int sock, struct ring *ring,
continue;
}
- pkt_table[i] = odph_packet_alloc(pool);
+ pkt_table[i] = odp_packet_alloc(pool);
if (odp_unlikely(pkt_table[i] == ODP_PACKET_INVALID))
break;
- l2_hdr = odp_packet_addr(pkt_table[i])
- + frame_offset;
+ l2_hdr = odp_packet_addr(pkt_table[i]);
+ odp_packet_set_len(pkt_table[i], pkt_len);
memcpy(l2_hdr, pkt_buf, pkt_len);
mmap_rx_user_ready(ppd.raw);
/* Parse and set packet header data */
- odp_packet_parse(pkt_table[i], pkt_len, frame_offset);
+ odp_packet_parse(pkt_table[i]);
frame_num = next_frame_num;
i++;
@@ -613,8 +604,7 @@ static inline unsigned pkt_mmap_v2_tx(int sock, struct ring *ring,
next_frame_num = (frame_num + 1) % ring->rd_num;
- pkt_buf = odp_packet_l2(pkt_table[i]);
- pkt_len = odp_packet_get_len(pkt_table[i]);
+ pkt_buf = odp_packet_map(pkt_table[i], &pkt_len);
ppd.v2->tp_h.tp_snaplen = pkt_len;
ppd.v2->tp_h.tp_len = pkt_len;
@@ -624,7 +614,8 @@ static inline unsigned pkt_mmap_v2_tx(int sock, struct ring *ring,
mmap_tx_user_ready(ppd.raw);
- odph_packet_free(pkt_table[i]);
+ if (odp_packet_decr_refcount(pkt_table[i], 1) == 0)
+ odp_packet_free(pkt_table[i]);
frame_num = next_frame_num;
i++;
} else {
@@ -805,9 +796,6 @@ static int mmap_store_hw_addr(pkt_sock_mmap_t *const pkt_sock,
int setup_pkt_sock_mmap(pkt_sock_mmap_t *const pkt_sock, const char *netdev,
odp_buffer_pool_t pool, int fanout)
{
- odp_packet_t pkt;
- uint8_t *pkt_buf;
- uint8_t *l2_hdr;
int if_idx;
int ret = 0;
@@ -816,16 +804,8 @@ int setup_pkt_sock_mmap(pkt_sock_mmap_t *const pkt_sock, const char *netdev,
if (pool == ODP_BUFFER_POOL_INVALID)
return -1;
- pkt = odph_packet_alloc(pool);
- if (!odph_packet_is_valid(pkt))
- return -1;
-
- pkt_buf = odp_packet_addr(pkt);
- l2_hdr = ETHBUF_ALIGN(pkt_buf);
/* Store eth buffer offset for pkt buffers from this pool */
- pkt_sock->frame_offset = (uintptr_t)l2_hdr - (uintptr_t)pkt_buf;
-
- odph_packet_free(pkt);
+ pkt_sock->frame_offset = 0;
pkt_sock->pool = pool;
pkt_sock->sockfd = mmap_pkt_socket();
@@ -892,7 +872,7 @@ int recv_pkt_sock_mmap(pkt_sock_mmap_t *const pkt_sock,
{
return pkt_mmap_v2_rx(pkt_sock->rx_ring.sock, &pkt_sock->rx_ring,
pkt_table, len, pkt_sock->pool,
- pkt_sock->frame_offset, pkt_sock->if_mac);
+ pkt_sock->if_mac);
}
/*
@@ -9,8 +9,9 @@
#include <odp_std_types.h>
#include <odp_align.h>
#include <odp_buffer.h>
-#include <odp_buffer_internal.h>
#include <odp_buffer_pool_internal.h>
+#include <odp_buffer_internal.h>
+#include <odp_buffer_inlines.h>
#include <odp_internal.h>
#include <odp_shared_memory.h>
#include <odp_schedule_internal.h>
@@ -422,7 +423,7 @@ int odp_queue_deq_multi(odp_queue_t handle, odp_buffer_t buf[], int num)
ret = queue->s.dequeue_multi(queue, buf_hdr, num);
for (i = 0; i < ret; i++)
- buf[i] = buf_hdr[i]->handle.handle;
+ buf[i] = odp_hdr_to_buf(buf_hdr[i]);
return ret;
}
@@ -437,7 +438,7 @@ odp_buffer_t odp_queue_deq(odp_queue_t handle)
buf_hdr = queue->s.dequeue(queue);
if (buf_hdr)
- return buf_hdr->handle.handle;
+ return odp_hdr_to_buf(buf_hdr);
return ODP_BUFFER_INVALID;
}
@@ -83,8 +83,8 @@ int odp_schedule_init_global(void)
{
odp_shm_t shm;
odp_buffer_pool_t pool;
- void *pool_base;
int i, j;
+ odp_buffer_pool_param_t params;
ODP_DBG("Schedule init ... ");
@@ -99,20 +99,12 @@ int odp_schedule_init_global(void)
return -1;
}
- shm = odp_shm_reserve("odp_sched_pool",
- SCHED_POOL_SIZE, ODP_CACHE_LINE_SIZE, 0);
+ params.buf_num = SCHED_POOL_SIZE/sizeof(queue_desc_t);
+ params.buf_size = sizeof(queue_desc_t);
+ params.buf_type = ODP_BUFFER_TYPE_RAW;
+ params.buf_opts = ODP_BUFFER_OPTS_UNSEGMENTED;
- pool_base = odp_shm_addr(shm);
-
- if (pool_base == NULL) {
- ODP_ERR("Schedule init: Shm reserve failed.\n");
- return -1;
- }
-
- pool = odp_buffer_pool_create("odp_sched_pool", pool_base,
- SCHED_POOL_SIZE, sizeof(queue_desc_t),
- ODP_CACHE_LINE_SIZE,
- ODP_BUFFER_TYPE_RAW);
+ pool = odp_buffer_pool_create("odp_sched_pool", ¶ms, NULL);
if (pool == ODP_BUFFER_POOL_INVALID) {
ODP_ERR("Schedule init: Pool create failed.\n");
@@ -318,9 +318,8 @@ int main(int argc ODP_UNUSED, char *argv[] ODP_UNUSED)
ping_arg_t pingarg;
odp_queue_t queue;
odp_buffer_pool_t pool;
- void *pool_base;
int i;
- odp_shm_t shm;
+ odp_buffer_pool_param_t params;
if (odp_test_global_init() != 0)
return -1;
@@ -333,14 +332,14 @@ int main(int argc ODP_UNUSED, char *argv[] ODP_UNUSED)
/*
* Create message pool
*/
- shm = odp_shm_reserve("msg_pool",
- MSG_POOL_SIZE, ODP_CACHE_LINE_SIZE, 0);
- pool_base = odp_shm_addr(shm);
-
- pool = odp_buffer_pool_create("msg_pool", pool_base, MSG_POOL_SIZE,
- BUF_SIZE,
- ODP_CACHE_LINE_SIZE,
- ODP_BUFFER_TYPE_RAW);
+
+ params.buf_num = MSG_POOL_SIZE/BUF_SIZE;
+ params.buf_size = BUF_SIZE;
+ params.buf_type = ODP_BUFFER_TYPE_RAW;
+ params.buf_opts = ODP_BUFFER_OPTS_NONE;
+
+ pool = odp_buffer_pool_create("msg_pool", ¶ms, NULL);
+
if (pool == ODP_BUFFER_POOL_INVALID) {
ODP_ERR("Pool create failed.\n");
return -1;
Signed-off-by: Bill Fischofer <bill.fischofer@linaro.org> --- example/generator/odp_generator.c | 69 ++--- example/ipsec/odp_ipsec.c | 120 +++----- example/ipsec/odp_ipsec_stream.c | 25 +- example/l2fwd/odp_l2fwd.c | 22 +- example/odp_example/odp_example.c | 23 +- example/packet/odp_pktio.c | 28 +- example/timer/odp_timer_test.c | 20 +- helper/include/odph_ip.h | 47 ++- helper/include/odph_packet.h | 97 ------ helper/include/odph_tcp.h | 61 ++++ helper/include/odph_udp.h | 11 +- platform/linux-generic/Makefile.am | 4 +- platform/linux-generic/include/api/odp.h | 1 - .../linux-generic/include/api/odp_packet_flags.h | 334 --------------------- platform/linux-generic/odp_crypto.c | 3 +- platform/linux-generic/odp_packet_flags.c | 202 ------------- platform/linux-generic/odp_packet_io.c | 9 +- platform/linux-generic/odp_packet_socket.c | 90 +++--- platform/linux-generic/odp_queue.c | 7 +- platform/linux-generic/odp_schedule.c | 20 +- test/api_test/odp_timer_ping.c | 19 +- 21 files changed, 270 insertions(+), 942 deletions(-) delete mode 100644 helper/include/odph_packet.h create mode 100644 helper/include/odph_tcp.h delete mode 100644 platform/linux-generic/include/api/odp_packet_flags.h delete mode 100644 platform/linux-generic/odp_packet_flags.c