@@ -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;
@@ -949,13 +949,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 +1037,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");
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 | 18 ++---- example/packet/odp_pktio.c | 28 ++++----- example/timer/odp_timer_test.c | 20 +++---- 7 files changed, 107 insertions(+), 195 deletions(-)