[dpdk-dev] examples/ip_reassembly: use pktmbuf to create pool

Message ID 1504690460-30616-1-git-send-email-hemant.agrawal@nxp.com (mailing list archive)
State Superseded, archived
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Hemant Agrawal Sept. 6, 2017, 9:34 a.m. UTC
  From: Ashish Jain <ashish.jain@nxp.com>

Use of rte_mempool_create() with the helper provided in
librte_mbuf: rte_pktmbuf_pool_create().
This is the preferred way to create a mbuf pool else
it may not work on implementation using the HW buffer pool

Signed-off-by: Ashish Jain <ashish.jain@nxp.com>
---
 examples/ip_reassembly/main.c | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)
  

Comments

Hemant Agrawal Oct. 12, 2017, 4:51 a.m. UTC | #1
Hi Konstantin,
	Please review?

Regards,
Hemant

On 9/6/2017 3:04 PM, Hemant Agrawal wrote:
> From: Ashish Jain <ashish.jain@nxp.com>
>
> Use of rte_mempool_create() with the helper provided in
> librte_mbuf: rte_pktmbuf_pool_create().
> This is the preferred way to create a mbuf pool else
> it may not work on implementation using the HW buffer pool
>
> Signed-off-by: Ashish Jain <ashish.jain@nxp.com>
> ---
>  examples/ip_reassembly/main.c | 13 ++++++-------
>  1 file changed, 6 insertions(+), 7 deletions(-)
>
> diff --git a/examples/ip_reassembly/main.c b/examples/ip_reassembly/main.c
> index e62636c..20caeb3 100644
> --- a/examples/ip_reassembly/main.c
> +++ b/examples/ip_reassembly/main.c
> @@ -84,8 +84,7 @@
>  #define MAX_JUMBO_PKT_LEN  9600
>
>  #define	BUF_SIZE	RTE_MBUF_DEFAULT_DATAROOM
> -#define MBUF_SIZE	\
> -	(BUF_SIZE + sizeof(struct rte_mbuf) + RTE_PKTMBUF_HEADROOM)
> +#define	MBUF_DATA_SIZE	RTE_MBUF_DEFAULT_BUF_SIZE
>
>  #define NB_MBUF 8192
>
> @@ -909,11 +908,11 @@ setup_queue_tbl(struct rx_queue *rxq, uint32_t lcore, uint32_t queue)
>
>  	snprintf(buf, sizeof(buf), "mbuf_pool_%u_%u", lcore, queue);
>
> -	if ((rxq->pool = rte_mempool_create(buf, nb_mbuf, MBUF_SIZE, 0,
> -			sizeof(struct rte_pktmbuf_pool_private),
> -			rte_pktmbuf_pool_init, NULL, rte_pktmbuf_init, NULL,
> -			socket, MEMPOOL_F_SP_PUT | MEMPOOL_F_SC_GET)) == NULL) {
> -		RTE_LOG(ERR, IP_RSMBL, "mempool_create(%s) failed", buf);
> +	rxq->pool = rte_pktmbuf_pool_create(buf, nb_mbuf, 0, 0,
> +			MBUF_DATA_SIZE, socket);
> +	if (rxq->pool == NULL) {
> +		RTE_LOG(ERR, IP_RSMBL,
> +			"rte_pktmbuf_pool_create(%s) failed", buf);
>  		return -1;
>  	}
>
>
  
Ananyev, Konstantin Oct. 12, 2017, 10:38 a.m. UTC | #2
> -----Original Message-----
> From: Hemant Agrawal [mailto:hemant.agrawal@nxp.com]
> Sent: Wednesday, September 6, 2017 10:34 AM
> To: dev@dpdk.org
> Cc: Ananyev, Konstantin <konstantin.ananyev@intel.com>; ashish.jain@nxp.com
> Subject: [PATCH] examples/ip_reassembly: use pktmbuf to create pool
> 
> From: Ashish Jain <ashish.jain@nxp.com>
> 
> Use of rte_mempool_create() with the helper provided in
> librte_mbuf: rte_pktmbuf_pool_create().
> This is the preferred way to create a mbuf pool else
> it may not work on implementation using the HW buffer pool
> 
> Signed-off-by: Ashish Jain <ashish.jain@nxp.com>
> ---
>  examples/ip_reassembly/main.c | 13 ++++++-------
>  1 file changed, 6 insertions(+), 7 deletions(-)
> 
> diff --git a/examples/ip_reassembly/main.c b/examples/ip_reassembly/main.c
> index e62636c..20caeb3 100644
> --- a/examples/ip_reassembly/main.c
> +++ b/examples/ip_reassembly/main.c
> @@ -84,8 +84,7 @@
>  #define MAX_JUMBO_PKT_LEN  9600
> 
>  #define	BUF_SIZE	RTE_MBUF_DEFAULT_DATAROOM
> -#define MBUF_SIZE	\
> -	(BUF_SIZE + sizeof(struct rte_mbuf) + RTE_PKTMBUF_HEADROOM)
> +#define	MBUF_DATA_SIZE	RTE_MBUF_DEFAULT_BUF_SIZE
> 
>  #define NB_MBUF 8192
> 
> @@ -909,11 +908,11 @@ setup_queue_tbl(struct rx_queue *rxq, uint32_t lcore, uint32_t queue)
> 
>  	snprintf(buf, sizeof(buf), "mbuf_pool_%u_%u", lcore, queue);
> 
> -	if ((rxq->pool = rte_mempool_create(buf, nb_mbuf, MBUF_SIZE, 0,
> -			sizeof(struct rte_pktmbuf_pool_private),
> -			rte_pktmbuf_pool_init, NULL, rte_pktmbuf_init, NULL,
> -			socket, MEMPOOL_F_SP_PUT | MEMPOOL_F_SC_GET)) == NULL) {
> -		RTE_LOG(ERR, IP_RSMBL, "mempool_create(%s) failed", buf);
> +	rxq->pool = rte_pktmbuf_pool_create(buf, nb_mbuf, 0, 0,
> +			MBUF_DATA_SIZE, socket);

As we can't pass SC|SP anymore can we then setup mempool cache size to some non-zero value?
Konstantin

> +	if (rxq->pool == NULL) {
> +		RTE_LOG(ERR, IP_RSMBL,
> +			"rte_pktmbuf_pool_create(%s) failed", buf);
>  		return -1;
>  	}
> 
> --
> 2.7.4
  
Hemant Agrawal Oct. 12, 2017, 11:02 a.m. UTC | #3
On 10/12/2017 4:08 PM, Ananyev, Konstantin wrote:
>
>
>> -----Original Message-----
>> From: Hemant Agrawal [mailto:hemant.agrawal@nxp.com]
>> Sent: Wednesday, September 6, 2017 10:34 AM
>> To: dev@dpdk.org
>> Cc: Ananyev, Konstantin <konstantin.ananyev@intel.com>; ashish.jain@nxp.com
>> Subject: [PATCH] examples/ip_reassembly: use pktmbuf to create pool
>>
>> From: Ashish Jain <ashish.jain@nxp.com>
>>
>> Use of rte_mempool_create() with the helper provided in
>> librte_mbuf: rte_pktmbuf_pool_create().
>> This is the preferred way to create a mbuf pool else
>> it may not work on implementation using the HW buffer pool
>>
>> Signed-off-by: Ashish Jain <ashish.jain@nxp.com>
>> ---
>>  examples/ip_reassembly/main.c | 13 ++++++-------
>>  1 file changed, 6 insertions(+), 7 deletions(-)
>>
>> diff --git a/examples/ip_reassembly/main.c b/examples/ip_reassembly/main.c
>> index e62636c..20caeb3 100644
>> --- a/examples/ip_reassembly/main.c
>> +++ b/examples/ip_reassembly/main.c
>> @@ -84,8 +84,7 @@
>>  #define MAX_JUMBO_PKT_LEN  9600
>>
>>  #define	BUF_SIZE	RTE_MBUF_DEFAULT_DATAROOM
>> -#define MBUF_SIZE	\
>> -	(BUF_SIZE + sizeof(struct rte_mbuf) + RTE_PKTMBUF_HEADROOM)
>> +#define	MBUF_DATA_SIZE	RTE_MBUF_DEFAULT_BUF_SIZE
>>
>>  #define NB_MBUF 8192
>>
>> @@ -909,11 +908,11 @@ setup_queue_tbl(struct rx_queue *rxq, uint32_t lcore, uint32_t queue)
>>
>>  	snprintf(buf, sizeof(buf), "mbuf_pool_%u_%u", lcore, queue);
>>
>> -	if ((rxq->pool = rte_mempool_create(buf, nb_mbuf, MBUF_SIZE, 0,
>> -			sizeof(struct rte_pktmbuf_pool_private),
>> -			rte_pktmbuf_pool_init, NULL, rte_pktmbuf_init, NULL,
>> -			socket, MEMPOOL_F_SP_PUT | MEMPOOL_F_SC_GET)) == NULL) {
>> -		RTE_LOG(ERR, IP_RSMBL, "mempool_create(%s) failed", buf);
>> +	rxq->pool = rte_pktmbuf_pool_create(buf, nb_mbuf, 0, 0,
>> +			MBUF_DATA_SIZE, socket);
>
> As we can't pass SC|SP anymore can we then setup mempool cache size to some non-zero value?
> Konstantin
>

#define MEMPOOL_CACHE_SIZE 256
do you think "256" will be ok?


>> +	if (rxq->pool == NULL) {
>> +		RTE_LOG(ERR, IP_RSMBL,
>> +			"rte_pktmbuf_pool_create(%s) failed", buf);
>>  		return -1;
>>  	}
>>
>> --
>> 2.7.4
>
>
  
Ananyev, Konstantin Oct. 12, 2017, 11:38 a.m. UTC | #4
> -----Original Message-----
> From: Hemant Agrawal [mailto:hemant.agrawal@nxp.com]
> Sent: Thursday, October 12, 2017 12:03 PM
> To: Ananyev, Konstantin <konstantin.ananyev@intel.com>; dev@dpdk.org
> Cc: ashish.jain@nxp.com
> Subject: Re: [PATCH] examples/ip_reassembly: use pktmbuf to create pool
> 
> On 10/12/2017 4:08 PM, Ananyev, Konstantin wrote:
> >
> >
> >> -----Original Message-----
> >> From: Hemant Agrawal [mailto:hemant.agrawal@nxp.com]
> >> Sent: Wednesday, September 6, 2017 10:34 AM
> >> To: dev@dpdk.org
> >> Cc: Ananyev, Konstantin <konstantin.ananyev@intel.com>; ashish.jain@nxp.com
> >> Subject: [PATCH] examples/ip_reassembly: use pktmbuf to create pool
> >>
> >> From: Ashish Jain <ashish.jain@nxp.com>
> >>
> >> Use of rte_mempool_create() with the helper provided in
> >> librte_mbuf: rte_pktmbuf_pool_create().
> >> This is the preferred way to create a mbuf pool else
> >> it may not work on implementation using the HW buffer pool
> >>
> >> Signed-off-by: Ashish Jain <ashish.jain@nxp.com>
> >> ---
> >>  examples/ip_reassembly/main.c | 13 ++++++-------
> >>  1 file changed, 6 insertions(+), 7 deletions(-)
> >>
> >> diff --git a/examples/ip_reassembly/main.c b/examples/ip_reassembly/main.c
> >> index e62636c..20caeb3 100644
> >> --- a/examples/ip_reassembly/main.c
> >> +++ b/examples/ip_reassembly/main.c
> >> @@ -84,8 +84,7 @@
> >>  #define MAX_JUMBO_PKT_LEN  9600
> >>
> >>  #define	BUF_SIZE	RTE_MBUF_DEFAULT_DATAROOM
> >> -#define MBUF_SIZE	\
> >> -	(BUF_SIZE + sizeof(struct rte_mbuf) + RTE_PKTMBUF_HEADROOM)
> >> +#define	MBUF_DATA_SIZE	RTE_MBUF_DEFAULT_BUF_SIZE
> >>
> >>  #define NB_MBUF 8192
> >>
> >> @@ -909,11 +908,11 @@ setup_queue_tbl(struct rx_queue *rxq, uint32_t lcore, uint32_t queue)
> >>
> >>  	snprintf(buf, sizeof(buf), "mbuf_pool_%u_%u", lcore, queue);
> >>
> >> -	if ((rxq->pool = rte_mempool_create(buf, nb_mbuf, MBUF_SIZE, 0,
> >> -			sizeof(struct rte_pktmbuf_pool_private),
> >> -			rte_pktmbuf_pool_init, NULL, rte_pktmbuf_init, NULL,
> >> -			socket, MEMPOOL_F_SP_PUT | MEMPOOL_F_SC_GET)) == NULL) {
> >> -		RTE_LOG(ERR, IP_RSMBL, "mempool_create(%s) failed", buf);
> >> +	rxq->pool = rte_pktmbuf_pool_create(buf, nb_mbuf, 0, 0,
> >> +			MBUF_DATA_SIZE, socket);
> >
> > As we can't pass SC|SP anymore can we then setup mempool cache size to some non-zero value?
> > Konstantin
> >
> 
> #define MEMPOOL_CACHE_SIZE 256
> do you think "256" will be ok?

Yes, sounds good enough.
Konstantin

> 
> 
> >> +	if (rxq->pool == NULL) {
> >> +		RTE_LOG(ERR, IP_RSMBL,
> >> +			"rte_pktmbuf_pool_create(%s) failed", buf);
> >>  		return -1;
> >>  	}
> >>
> >> --
> >> 2.7.4
> >
> >
  

Patch

diff --git a/examples/ip_reassembly/main.c b/examples/ip_reassembly/main.c
index e62636c..20caeb3 100644
--- a/examples/ip_reassembly/main.c
+++ b/examples/ip_reassembly/main.c
@@ -84,8 +84,7 @@ 
 #define MAX_JUMBO_PKT_LEN  9600
 
 #define	BUF_SIZE	RTE_MBUF_DEFAULT_DATAROOM
-#define MBUF_SIZE	\
-	(BUF_SIZE + sizeof(struct rte_mbuf) + RTE_PKTMBUF_HEADROOM)
+#define	MBUF_DATA_SIZE	RTE_MBUF_DEFAULT_BUF_SIZE
 
 #define NB_MBUF 8192
 
@@ -909,11 +908,11 @@  setup_queue_tbl(struct rx_queue *rxq, uint32_t lcore, uint32_t queue)
 
 	snprintf(buf, sizeof(buf), "mbuf_pool_%u_%u", lcore, queue);
 
-	if ((rxq->pool = rte_mempool_create(buf, nb_mbuf, MBUF_SIZE, 0,
-			sizeof(struct rte_pktmbuf_pool_private),
-			rte_pktmbuf_pool_init, NULL, rte_pktmbuf_init, NULL,
-			socket, MEMPOOL_F_SP_PUT | MEMPOOL_F_SC_GET)) == NULL) {
-		RTE_LOG(ERR, IP_RSMBL, "mempool_create(%s) failed", buf);
+	rxq->pool = rte_pktmbuf_pool_create(buf, nb_mbuf, 0, 0,
+			MBUF_DATA_SIZE, socket);
+	if (rxq->pool == NULL) {
+		RTE_LOG(ERR, IP_RSMBL,
+			"rte_pktmbuf_pool_create(%s) failed", buf);
 		return -1;
 	}