On 03/20/15 19:42, Zoltan Kiss wrote:
On 20/03/15 15:49, Maxim Uvarov wrote:
On 03/19/15 22:14, Zoltan Kiss wrote:
Signed-off-by: Zoltan Kiss <[email protected]>
---
lib/netdev-odp.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/lib/netdev-odp.c b/lib/netdev-odp.c
index 7a0780e..2a04d24 100644
--- a/lib/netdev-odp.c
+++ b/lib/netdev-odp.c
@@ -133,10 +133,10 @@ odp_class_init(void)
/* create packet & ofpbuf pool */
- params.buf_size = SHM_PKT_POOL_BUF_SIZE +
SHM_OFPBUF_POOL_BUF_SIZE;
- params.buf_align = ODP_CACHE_LINE_SIZE;
- params.num_bufs = SHM_PKT_POOL_NUM_BUFS;
- params.buf_type = ODP_BUFFER_TYPE_PACKET;
+ params.pkt.len= SHM_PKT_POOL_BUF_SIZE + SHM_OFPBUF_POOL_BUF_SIZE;
+ params.pkt.seg_len = 0;
+ params.pkt.num = SHM_PKT_POOL_NUM_BUFS;
+ params.type = ODP_POOL_PACKET;
pool = odp_pool_create("packet_pool", ODP_SHM_NULL, ¶ms);
@@ -147,8 +147,8 @@ odp_class_init(void)
odp_pool_print(pool);
/* Allocate all the packets from the pool and initialize ofpbuf
part */
- pkts = malloc(sizeof(odp_packet_t) * params.num_bufs);
- for (i=0; i < params.num_bufs; ++i) {
+ pkts = malloc(sizeof(odp_packet_t) * params.pkt.num);
+ for (i=0; i < params.pkt.num; ++i) {
struct dpif_packet *packet;
char *start;
pkts[i] = odp_packet_alloc(pool, 0);
@@ -169,7 +169,7 @@ odp_class_init(void)
}
/* Free our packets up */
- for (i=0; i < params.num_bufs; i++)
+ for (i=0; i < params.pkt.num; i++)
odp_packet_free(pkts[i]);
free(pkts);
What are you doing here? Checking that all packets in the pool can be
allocated? I think odp api / implementation should take care about that.
No, I need to allocate all the packets from the pool and preset some
fields in the packet metadata area, where OVS store it's ofpbuf
structure. Setting it after every receive has a perf penalty. See
"netdev-odp: allocate packet metadata in the same buffer as the packet
itself" in the previous series. That's where this originally comes from.
Not sure if it's portable solution. Will it work on KS2 for example?
Maxim.
Maxim.
@@ -177,8 +177,9 @@ odp_class_init(void)
/* create pool for structures */
- params.buf_size = SHM_STRUCT_POOL_BUF_SIZE;
- params.num_bufs = SHM_STRUCT_POOL_NUM_BUFS;
+ params.type = ODP_POOL_BUFFER;
+ params.buf.size = SHM_STRUCT_POOL_BUF_SIZE;
+ params.buf.num = SHM_STRUCT_POOL_NUM_BUFS;
struct_pool = odp_pool_create("struct_pool", ODP_SHM_NULL,
¶ms);
@@ -240,7 +241,7 @@ netdev_odp_construct(struct netdev *netdev_)
goto out_err;
}
- netdev->max_frame_len = info.params.buf_size;
+ netdev->max_frame_len = info.params.pkt.len;
ovs_mutex_init(&netdev->mutex);
_______________________________________________
lng-odp mailing list
[email protected]
http://lists.linaro.org/mailman/listinfo/lng-odp
_______________________________________________
lng-odp mailing list
[email protected]
http://lists.linaro.org/mailman/listinfo/lng-odp