diff --git a/example/generator/odp_generator.c b/example/generator/odp_generator.c
index 03dab50..de623ab 100644
--- a/example/generator/odp_generator.c
+++ b/example/generator/odp_generator.c
@@ -603,10 +603,10 @@ int main(int argc, char *argv[])
 	printf("cpu mask:           %s\n", cpumaskstr);
 
 	/* Create packet pool */
-	params.buf.size  = SHM_PKT_POOL_BUF_SIZE;
-	params.buf.align = 0;
-	params.buf.num   = SHM_PKT_POOL_SIZE/SHM_PKT_POOL_BUF_SIZE;
-	params.type      = ODP_POOL_PACKET;
+	params.pkt.seg_len   = SHM_PKT_POOL_BUF_SIZE;
+	params.pkt.seg_align = 0;
+	params.pkt.seg_num   = SHM_PKT_POOL_SIZE/SHM_PKT_POOL_BUF_SIZE;
+	params.type          = ODP_POOL_PACKET;
 
 	pool = odp_pool_create("packet_pool", ODP_SHM_NULL, &params);
 
diff --git a/example/ipsec/odp_ipsec.c b/example/ipsec/odp_ipsec.c
index 03f2419..4211e22 100644
--- a/example/ipsec/odp_ipsec.c
+++ b/example/ipsec/odp_ipsec.c
@@ -399,10 +399,10 @@ void ipsec_init_pre(void)
 	}
 
 	/* Create output buffer pool */
-	params.buf.size  = SHM_OUT_POOL_BUF_SIZE;
-	params.buf.align = 0;
-	params.buf.num   = SHM_PKT_POOL_BUF_COUNT;
-	params.type      = ODP_POOL_PACKET;
+	params.pkt.seg_len   = SHM_OUT_POOL_BUF_SIZE;
+	params.pkt.seg_align = 0;
+	params.pkt.seg_num   = SHM_PKT_POOL_BUF_COUNT;
+	params.type          = ODP_POOL_PACKET;
 
 	out_pool = odp_pool_create("out_pool", ODP_SHM_NULL, &params);
 
@@ -1252,10 +1252,10 @@ main(int argc, char *argv[])
 	odp_barrier_init(&sync_barrier, num_workers);
 
 	/* Create packet buffer pool */
-	params.buf.size  = SHM_PKT_POOL_BUF_SIZE;
-	params.buf.align = 0;
-	params.buf.num   = SHM_PKT_POOL_BUF_COUNT;
-	params.type      = ODP_POOL_PACKET;
+	params.pkt.seg_len   = SHM_PKT_POOL_BUF_SIZE;
+	params.pkt.seg_align = 0;
+	params.pkt.seg_num   = SHM_PKT_POOL_BUF_COUNT;
+	params.type          = ODP_POOL_PACKET;
 
 	pkt_pool = odp_pool_create("packet_pool", ODP_SHM_NULL,
 					  &params);
diff --git a/example/l2fwd/odp_l2fwd.c b/example/l2fwd/odp_l2fwd.c
index 7a520fb..6e07738 100644
--- a/example/l2fwd/odp_l2fwd.c
+++ b/example/l2fwd/odp_l2fwd.c
@@ -354,10 +354,10 @@ int main(int argc, char *argv[])
 	}
 
 	/* Create packet pool */
-	params.buf.size  = SHM_PKT_POOL_BUF_SIZE;
-	params.buf.align = 0;
-	params.buf.num   = SHM_PKT_POOL_SIZE/SHM_PKT_POOL_BUF_SIZE;
-	params.type      = ODP_POOL_PACKET;
+	params.pkt.seg_len   = SHM_PKT_POOL_BUF_SIZE;
+	params.pkt.seg_align = 0;
+	params.pkt.seg_num   = SHM_PKT_POOL_SIZE/SHM_PKT_POOL_BUF_SIZE;
+	params.type          = ODP_POOL_PACKET;
 
 	pool = odp_pool_create("packet pool", ODP_SHM_NULL, &params);
 
diff --git a/example/packet/odp_pktio.c b/example/packet/odp_pktio.c
index 28ed98c..b3e6cd7 100644
--- a/example/packet/odp_pktio.c
+++ b/example/packet/odp_pktio.c
@@ -331,10 +331,10 @@ int main(int argc, char *argv[])
 	printf("cpu mask:           %s\n", cpumaskstr);
 
 	/* Create packet pool */
-	params.buf.size  = SHM_PKT_POOL_BUF_SIZE;
-	params.buf.align = 0;
-	params.buf.num   = SHM_PKT_POOL_SIZE/SHM_PKT_POOL_BUF_SIZE;
-	params.type      = ODP_POOL_PACKET;
+	params.pkt.seg_len   = SHM_PKT_POOL_BUF_SIZE;
+	params.pkt.seg_align = 0;
+	params.pkt.seg_num   = SHM_PKT_POOL_SIZE/SHM_PKT_POOL_BUF_SIZE;
+	params.type          = ODP_POOL_PACKET;
 
 	pool = odp_pool_create("packet_pool", ODP_SHM_NULL, &params);
 
diff --git a/platform/linux-generic/odp_buffer_pool.c b/platform/linux-generic/odp_buffer_pool.c
index 3e13e6f..6f2f79e 100644
--- a/platform/linux-generic/odp_buffer_pool.c
+++ b/platform/linux-generic/odp_buffer_pool.c
@@ -126,7 +126,7 @@ odp_pool_t odp_pool_create(const char *name,
 		return ODP_POOL_INVALID;
 
 	/* Restriction for v1.0: All non-packet buffers are unsegmented */
-	int unsegmented = 1;
+	int unseg = 1;
 
 	/* Restriction for v1.0: No zeroization support */
 	const int zeroized = 0;
@@ -137,7 +137,12 @@ odp_pool_t odp_pool_create(const char *name,
 		0;
 
 	uint32_t blk_size, buf_stride;
-	uint32_t buf_align = params->buf.align;
+	uint32_t buf_align;
+
+	if (params->type == ODP_POOL_PACKET)
+		buf_align = params->pkt.seg_align;
+	else
+		buf_align = params->buf.align;
 
 	/* Validate requested buffer alignment */
 	if (buf_align > ODP_CONFIG_BUFFER_ALIGN_MAX ||
@@ -168,15 +173,15 @@ odp_pool_t odp_pool_create(const char *name,
 	case ODP_POOL_PACKET:
 		headroom = ODP_CONFIG_PACKET_HEADROOM;
 		tailroom = ODP_CONFIG_PACKET_TAILROOM;
-		unsegmented = params->buf.size > ODP_CONFIG_PACKET_BUF_LEN_MAX;
+		unseg = params->pkt.seg_len > ODP_CONFIG_PACKET_BUF_LEN_MAX;
 
-		if (unsegmented)
+		if (unseg)
 			blk_size = ODP_ALIGN_ROUNDUP(
-				headroom + params->buf.size + tailroom,
+				headroom + params->pkt.seg_len + tailroom,
 				buf_align);
 		else
 			blk_size = ODP_ALIGN_ROUNDUP(
-				headroom + params->buf.size + tailroom,
+				headroom + params->pkt.seg_len + tailroom,
 				ODP_CONFIG_PACKET_BUF_LEN_MIN);
 
 		buf_stride = params->type == ODP_POOL_PACKET ?
@@ -276,9 +281,9 @@ odp_pool_t odp_pool_create(const char *name,
 		/* Now safe to unlock since pool entry has been allocated */
 		POOL_UNLOCK(&pool->s.lock);
 
-		pool->s.flags.unsegmented = unsegmented;
+		pool->s.flags.unsegmented = unseg;
 		pool->s.flags.zeroized = zeroized;
-		pool->s.seg_size = unsegmented ?
+		pool->s.seg_size = unseg ?
 			blk_size : ODP_CONFIG_PACKET_BUF_LEN_MIN;
 
 
diff --git a/test/validation/buffer/odp_buffer_pool_test.c b/test/validation/buffer/odp_buffer_pool_test.c
index c018b59..f02747e 100644
--- a/test/validation/buffer/odp_buffer_pool_test.c
+++ b/test/validation/buffer/odp_buffer_pool_test.c
@@ -10,23 +10,39 @@ static int pool_name_number = 1;
 static const int default_buffer_size = 1500;
 static const int default_buffer_num = 1000;
 
-odp_pool_t pool_create(int buf_num, int buf_size, int buf_type)
+odp_pool_t pool_create(int num, int size, int type)
 {
 	odp_pool_t pool;
 	char pool_name[ODP_POOL_NAME_LEN];
-	odp_pool_param_t params = {
-			.buf = {
-				.size  = buf_size,
-				.align = ODP_CACHE_LINE_SIZE,
-				.num   = buf_num,
-			},
-			.type = buf_type,
-	};
+	odp_pool_param_t param;
+
+	memset(&param, 0, sizeof(param));
+
+	switch (type) {
+	case ODP_POOL_BUFFER:
+		param.buf.size  = size;
+		param.buf.align = ODP_CACHE_LINE_SIZE,
+		param.buf.num   = num;
+		break;
+	case ODP_POOL_PACKET:
+		param.pkt.seg_len   = size;
+		param.pkt.seg_align = ODP_CACHE_LINE_SIZE,
+		param.pkt.seg_num   = num;
+		break;
+	case ODP_POOL_TIMEOUT:
+		param.tmo.num = num;
+		break;
+	default:
+		CU_FAIL("Bad pool type");
+		return ODP_POOL_INVALID;
+	}
+
+	param.type = type;
 
 	snprintf(pool_name, sizeof(pool_name),
 		 "test_buffer_pool-%d", pool_name_number++);
 
-	pool = odp_pool_create(pool_name, ODP_SHM_INVALID, &params);
+	pool = odp_pool_create(pool_name, ODP_SHM_INVALID, &param);
 	CU_ASSERT_FATAL(pool != ODP_POOL_INVALID);
 
 	return pool;
diff --git a/test/validation/buffer/odp_packet_test.c b/test/validation/buffer/odp_packet_test.c
index 0a5d32e..218d07a 100644
--- a/test/validation/buffer/odp_packet_test.c
+++ b/test/validation/buffer/odp_packet_test.c
@@ -22,10 +22,10 @@ odp_packet_t test_packet;
 int packet_testsuite_init(void)
 {
 	odp_pool_param_t params = {
-		.buf = {
-			.size  = PACKET_BUF_LEN,
-			.align = ODP_CACHE_LINE_SIZE,
-			.num  = 100,
+		.pkt = {
+			.seg_len   = PACKET_BUF_LEN,
+			.seg_align = ODP_CACHE_LINE_SIZE,
+			.seg_num   = 100,
 		},
 		.type  = ODP_POOL_PACKET,
 	};
diff --git a/test/validation/classification/odp_classification_tests.c b/test/validation/classification/odp_classification_tests.c
index e4b3260..56463d4 100644
--- a/test/validation/classification/odp_classification_tests.c
+++ b/test/validation/classification/odp_classification_tests.c
@@ -247,9 +247,9 @@ int classification_tests_init(void)
 	char queuename[ODP_QUEUE_NAME_LEN];
 	int i;
 
-	param.buf.size = SHM_PKT_BUF_SIZE;
-	param.buf.num = SHM_PKT_NUM_BUFS;
-	param.buf.align = 0;
+	param.pkt.seg_len   = SHM_PKT_BUF_SIZE;
+	param.pkt.seg_align = 0;
+	param.pkt.seg_num   = SHM_PKT_NUM_BUFS;
 	param.type = ODP_POOL_PACKET;
 
 	pool = odp_pool_create("classification_pool",
diff --git a/test/validation/odp_crypto.c b/test/validation/odp_crypto.c
index d8db114..1e00e33 100644
--- a/test/validation/odp_crypto.c
+++ b/test/validation/odp_crypto.c
@@ -29,10 +29,10 @@ int tests_global_init(void)
 	odp_pool_t pool;
 	odp_queue_t out_queue;
 
-	params.buf.size  = SHM_PKT_POOL_BUF_SIZE;
-	params.buf.align = 0;
-	params.buf.num   = SHM_PKT_POOL_SIZE/SHM_PKT_POOL_BUF_SIZE;
-	params.type      = ODP_POOL_PACKET;
+	params.pkt.seg_len   =  SHM_PKT_POOL_BUF_SIZE;
+	params.pkt.seg_align = 0;
+	params.pkt.seg_num   = SHM_PKT_POOL_SIZE/SHM_PKT_POOL_BUF_SIZE;
+	params.type          = ODP_POOL_PACKET;
 
 	pool = odp_pool_create("packet_pool", ODP_SHM_NULL, &params);
 
diff --git a/test/validation/odp_pktio.c b/test/validation/odp_pktio.c
index 84121f5..ac68b58 100644
--- a/test/validation/odp_pktio.c
+++ b/test/validation/odp_pktio.c
@@ -185,10 +185,10 @@ static int default_pool_create(void)
 	if (default_pkt_pool != ODP_POOL_INVALID)
 		return -1;
 
-	params.buf.size  = PKT_BUF_SIZE;
-	params.buf.align = 0;
-	params.buf.num   = PKT_BUF_NUM;
-	params.type      = ODP_POOL_PACKET;
+	params.pkt.seg_len   = PKT_BUF_SIZE;
+	params.pkt.seg_align = 0;
+	params.pkt.seg_num   = PKT_BUF_NUM;
+	params.type          = ODP_POOL_PACKET;
 
 	default_pkt_pool = odp_pool_create("pkt_pool_default",
 						  ODP_SHM_NULL, &params);
@@ -205,10 +205,10 @@ static odp_pktio_t create_pktio(const char *iface)
 	char pool_name[ODP_POOL_NAME_LEN];
 	odp_pool_param_t params;
 
-	params.buf.size  = PKT_BUF_SIZE;
-	params.buf.align = 0;
-	params.buf.num   = PKT_BUF_NUM;
-	params.type      = ODP_POOL_PACKET;
+	params.pkt.seg_len   = PKT_BUF_SIZE;
+	params.pkt.seg_align = 0;
+	params.pkt.seg_num   = PKT_BUF_NUM;
+	params.type          = ODP_POOL_PACKET;
 
 	snprintf(pool_name, sizeof(pool_name), "pkt_pool_%s", iface);
 	pool = odp_pool_lookup(pool_name);
