Hello, I am trying to allocate an mbuf to use for IP fragmentation. When instantiating a mempool using rte_pktmbuf_pool_create() function, I keep getting the following error message. Error Message: * MEMPOOL: Cannot allocate tailq entry! Will you please let me know what I am missing? Regards, Katie --------------- Code --------------------- #include <stdio.h> #include <stdlib.h> #include <stdint.h> #include <inttypes.h> #include <sys/types.h> #include <sys/param.h> #include <string.h> #include <sys/queue.h> #include <stdarg.h> #include <errno.h> #include <getopt.h> #include <rte_common.h> #include <rte_byteorder.h> #include <rte_log.h> #include <rte_memory.h> #include <rte_memcpy.h> #include <rte_memzone.h> #include <rte_eal.h> #include <rte_per_lcore.h> #include <rte_launch.h> #include <rte_atomic.h> #include <rte_cycles.h> #include <rte_prefetch.h> #include <rte_lcore.h> #include <rte_per_lcore.h> #include <rte_branch_prediction.h> #include <rte_interrupts.h> #include <rte_pci.h> #include <rte_random.h> #include <rte_debug.h> #include <rte_ether.h> #include <rte_ethdev.h> #include <rte_ring.h> #include <rte_mempool.h> #include <rte_mbuf.h> #include <rte_lpm.h> #include <rte_lpm6.h> #include <rte_ip.h> #include <rte_string_fns.h> #include <rte_ip_frag.h> struct rte_mempool *mempool = NULL; #define NB_MBUF 8192 #define AERO_FRAG_SIZE 1024 #define PATH_MAX 4096 //static struct rte_mempool *socket_direct_pool[RTE_MAX_NUMA_NODES]; int main(int argc, char **argv) { struct rte_mbuf *mbuf = NULL; struct node_queue_conf *qconf; char buf[PATH_MAX]; struct rte_mempool *mp; struct rte_lpm *lpm; struct rte_lpm6 *lpm6; struct rte_lpm_config lpm_config; /*KT Readded*/ int socket; unsigned lcore_id; unsigned elt_size; lcore_id = 1; socket = rte_lcore_to_socket_id(lcore_id); if (rte_lcore_is_enabled(lcore_id) == 0) printf("RTE LCORE is enabled!"); socket = rte_lcore_to_socket_id(lcore_id); if (socket == SOCKET_ID_ANY) socket = 0; elt_size = sizeof(struct rte_mbuf) + (unsigned)RTE_MBUF_DEFAULT_BUF_SIZE; //mp = rte_mempool_create_empty(buf, NB_MBUF, elt_size, RTE_MBUF_DEFAULT_BUF_SIZE, sizeof(struct rte_pktmbuf_pool_private), socket, 0); mp = rte_pktmbuf_pool_create(buf, NB_MBUF, 32, 0, RTE_MBUF_DEFAULT_BUF_SIZE, socket); /* if (socket_direct_pool[socket] == NULL) { RTE_LOG(INFO, IP_FRAG, "Creating direct mempool on socket %i\n", socket); snprintf(buf, sizeof(buf), "pool_direct_%i", socket); mp = rte_pktmbuf_pool_create(buf, NB_MBUF, 32, 0, AERO_FRAG_SIZE, socket); if (mp == NULL) { RTE_LOG(ERR, IP_FRAG, "Cannot create direct mempool\n"); return -1; } socket_direct_pool[socket] = mp; } */ //mbuf = rte_pktmbuf_alloc(mp); //fragment(mbuf, qconf); } ------------------------------------------ -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: fragment.c URL: <http://mails.dpdk.org/archives/users/attachments/20190917/3e7f791b/attachment.c>
Make sure you have allocated hugepages before running the application
On Wed, Sep 18, 2019 at 9:42 AM Singh, Satish 1. (Nokia - IN/Bangalore) <
satish.1.singh@nokia.com> wrote:
> Hi,
>
> You are using Socket 0, and might be there is no memory in this socket or
> no memory left in this socket 0. Try with SOCKET_ID_ANY.
>
> Regards,
> SATISH SINGH
>
> -----Original Message-----
> From: users <users-bounces@dpdk.org> On Behalf Of Tran (US), Katherine K
> Sent: Tuesday, September 17, 2019 11:36 PM
> To: users@dpdk.org
> Subject: [dpdk-users] Help with mbuf and mempool
>
> Hello,
>
> I am trying to allocate an mbuf to use for IP fragmentation. When
> instantiating a mempool using rte_pktmbuf_pool_create() function, I keep
> getting the following error message.
>
> Error Message:
> * MEMPOOL: Cannot allocate tailq entry!
>
> Will you please let me know what I am missing?
>
> Regards,
> Katie
>
>
> --------------- Code ---------------------
>
> #include <stdio.h>
> #include <stdlib.h>
> #include <stdint.h>
> #include <inttypes.h>
> #include <sys/types.h>
> #include <sys/param.h>
> #include <string.h>
> #include <sys/queue.h>
> #include <stdarg.h>
> #include <errno.h>
> #include <getopt.h>
>
> #include <rte_common.h>
> #include <rte_byteorder.h>
> #include <rte_log.h>
> #include <rte_memory.h>
> #include <rte_memcpy.h>
> #include <rte_memzone.h>
> #include <rte_eal.h>
> #include <rte_per_lcore.h>
> #include <rte_launch.h>
> #include <rte_atomic.h>
> #include <rte_cycles.h>
> #include <rte_prefetch.h>
> #include <rte_lcore.h>
> #include <rte_per_lcore.h>
> #include <rte_branch_prediction.h>
> #include <rte_interrupts.h>
> #include <rte_pci.h>
> #include <rte_random.h>
> #include <rte_debug.h>
> #include <rte_ether.h>
> #include <rte_ethdev.h>
> #include <rte_ring.h>
> #include <rte_mempool.h>
> #include <rte_mbuf.h>
> #include <rte_lpm.h>
> #include <rte_lpm6.h>
> #include <rte_ip.h>
> #include <rte_string_fns.h>
>
> #include <rte_ip_frag.h>
>
> struct rte_mempool *mempool = NULL;
> #define NB_MBUF 8192
> #define AERO_FRAG_SIZE 1024
> #define PATH_MAX 4096
>
> //static struct rte_mempool *socket_direct_pool[RTE_MAX_NUMA_NODES];
>
> int
> main(int argc, char **argv)
> {
>
> struct rte_mbuf *mbuf = NULL;
> struct node_queue_conf *qconf;
>
> char buf[PATH_MAX];
> struct rte_mempool *mp;
> struct rte_lpm *lpm;
> struct rte_lpm6 *lpm6;
> struct rte_lpm_config lpm_config; /*KT Readded*/
> int socket;
> unsigned lcore_id;
>
> unsigned elt_size;
>
> lcore_id = 1;
> socket = rte_lcore_to_socket_id(lcore_id);
>
> if (rte_lcore_is_enabled(lcore_id) == 0)
> printf("RTE LCORE is enabled!");
>
> socket = rte_lcore_to_socket_id(lcore_id);
> if (socket == SOCKET_ID_ANY)
> socket = 0;
>
> elt_size = sizeof(struct rte_mbuf) +
> (unsigned)RTE_MBUF_DEFAULT_BUF_SIZE;
>
> //mp = rte_mempool_create_empty(buf, NB_MBUF, elt_size,
> RTE_MBUF_DEFAULT_BUF_SIZE, sizeof(struct rte_pktmbuf_pool_private), socket,
> 0);
>
> mp = rte_pktmbuf_pool_create(buf, NB_MBUF, 32, 0,
> RTE_MBUF_DEFAULT_BUF_SIZE, socket);
>
> /*
> if (socket_direct_pool[socket] == NULL) {
> RTE_LOG(INFO, IP_FRAG, "Creating direct mempool on socket
> %i\n",
> socket);
> snprintf(buf, sizeof(buf), "pool_direct_%i", socket);
>
> mp = rte_pktmbuf_pool_create(buf, NB_MBUF, 32,
> 0, AERO_FRAG_SIZE, socket);
>
> if (mp == NULL) {
> RTE_LOG(ERR, IP_FRAG, "Cannot create direct
> mempool\n");
> return -1;
> }
> socket_direct_pool[socket] = mp;
>
> }
> */
> //mbuf = rte_pktmbuf_alloc(mp);
>
> //fragment(mbuf, qconf);
>
>
> }
>
> ------------------------------------------
>
>
> -------------- next part --------------
> An embedded and charset-unspecified text was scrubbed...
> Name: fragment.c
> URL: <
> http://mails.dpdk.org/archives/users/attachments/20190917/3e7f791b/attachment.c
> >
>
--
Thanks and Regards
Suraj R Gupta
Hi, You are using Socket 0, and might be there is no memory in this socket or no memory left in this socket 0. Try with SOCKET_ID_ANY. Regards, SATISH SINGH -----Original Message----- From: users <users-bounces@dpdk.org> On Behalf Of Tran (US), Katherine K Sent: Tuesday, September 17, 2019 11:36 PM To: users@dpdk.org Subject: [dpdk-users] Help with mbuf and mempool Hello, I am trying to allocate an mbuf to use for IP fragmentation. When instantiating a mempool using rte_pktmbuf_pool_create() function, I keep getting the following error message. Error Message: * MEMPOOL: Cannot allocate tailq entry! Will you please let me know what I am missing? Regards, Katie --------------- Code --------------------- #include <stdio.h> #include <stdlib.h> #include <stdint.h> #include <inttypes.h> #include <sys/types.h> #include <sys/param.h> #include <string.h> #include <sys/queue.h> #include <stdarg.h> #include <errno.h> #include <getopt.h> #include <rte_common.h> #include <rte_byteorder.h> #include <rte_log.h> #include <rte_memory.h> #include <rte_memcpy.h> #include <rte_memzone.h> #include <rte_eal.h> #include <rte_per_lcore.h> #include <rte_launch.h> #include <rte_atomic.h> #include <rte_cycles.h> #include <rte_prefetch.h> #include <rte_lcore.h> #include <rte_per_lcore.h> #include <rte_branch_prediction.h> #include <rte_interrupts.h> #include <rte_pci.h> #include <rte_random.h> #include <rte_debug.h> #include <rte_ether.h> #include <rte_ethdev.h> #include <rte_ring.h> #include <rte_mempool.h> #include <rte_mbuf.h> #include <rte_lpm.h> #include <rte_lpm6.h> #include <rte_ip.h> #include <rte_string_fns.h> #include <rte_ip_frag.h> struct rte_mempool *mempool = NULL; #define NB_MBUF 8192 #define AERO_FRAG_SIZE 1024 #define PATH_MAX 4096 //static struct rte_mempool *socket_direct_pool[RTE_MAX_NUMA_NODES]; int main(int argc, char **argv) { struct rte_mbuf *mbuf = NULL; struct node_queue_conf *qconf; char buf[PATH_MAX]; struct rte_mempool *mp; struct rte_lpm *lpm; struct rte_lpm6 *lpm6; struct rte_lpm_config lpm_config; /*KT Readded*/ int socket; unsigned lcore_id; unsigned elt_size; lcore_id = 1; socket = rte_lcore_to_socket_id(lcore_id); if (rte_lcore_is_enabled(lcore_id) == 0) printf("RTE LCORE is enabled!"); socket = rte_lcore_to_socket_id(lcore_id); if (socket == SOCKET_ID_ANY) socket = 0; elt_size = sizeof(struct rte_mbuf) + (unsigned)RTE_MBUF_DEFAULT_BUF_SIZE; //mp = rte_mempool_create_empty(buf, NB_MBUF, elt_size, RTE_MBUF_DEFAULT_BUF_SIZE, sizeof(struct rte_pktmbuf_pool_private), socket, 0); mp = rte_pktmbuf_pool_create(buf, NB_MBUF, 32, 0, RTE_MBUF_DEFAULT_BUF_SIZE, socket); /* if (socket_direct_pool[socket] == NULL) { RTE_LOG(INFO, IP_FRAG, "Creating direct mempool on socket %i\n", socket); snprintf(buf, sizeof(buf), "pool_direct_%i", socket); mp = rte_pktmbuf_pool_create(buf, NB_MBUF, 32, 0, AERO_FRAG_SIZE, socket); if (mp == NULL) { RTE_LOG(ERR, IP_FRAG, "Cannot create direct mempool\n"); return -1; } socket_direct_pool[socket] = mp; } */ //mbuf = rte_pktmbuf_alloc(mp); //fragment(mbuf, qconf); } ------------------------------------------ -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: fragment.c URL: <http://mails.dpdk.org/archives/users/attachments/20190917/3e7f791b/attachment.c>
Hi, I have allocated hugepages. I still get the same error. I changed the code to the following but I still get the same error: ------------- Code --------------- struct rte_mempool *mempool = NULL; #define NB_MBUF 8192 #define PATH_MAX 4096 int main(int argc, char **argv) { struct rte_mbuf *mbuf = NULL; char buf[PATH_MAX]; struct rte_mempool *mp; int socket; socket = SOCKET_ID_ANY; mp = rte_pktmbuf_pool_create(buf, NB_MBUF, 32, 0, RTE_MBUF_DEFAULT_BUF_SIZE, socket); } regards, Katie From: Suraj R Gupta [mailto:surajrgupta@iith.ac.in] Sent: Tuesday, September 17, 2019 4:33 PM To: Singh, Satish 1. (Nokia - IN/Bangalore) <satish.1.singh@nokia.com> Cc: Tran (US), Katherine K <katherine.k.tran@boeing.com>; users@dpdk.org Subject: Re: [dpdk-users] Help with mbuf and mempool Make sure you have allocated hugepages before running the application On Wed, Sep 18, 2019 at 9:42 AM Singh, Satish 1. (Nokia - IN/Bangalore) <satish.1.singh@nokia.com<mailto:satish.1.singh@nokia.com>> wrote: Hi, You are using Socket 0, and might be there is no memory in this socket or no memory left in this socket 0. Try with SOCKET_ID_ANY. Regards, SATISH SINGH -----Original Message----- From: users <users-bounces@dpdk.org<mailto:users-bounces@dpdk.org>> On Behalf Of Tran (US), Katherine K Sent: Tuesday, September 17, 2019 11:36 PM To: users@dpdk.org<mailto:users@dpdk.org> Subject: [dpdk-users] Help with mbuf and mempool Hello, I am trying to allocate an mbuf to use for IP fragmentation. When instantiating a mempool using rte_pktmbuf_pool_create() function, I keep getting the following error message. Error Message: * MEMPOOL: Cannot allocate tailq entry! Will you please let me know what I am missing? Regards, Katie --------------- Code --------------------- #include <stdio.h> #include <stdlib.h> #include <stdint.h> #include <inttypes.h> #include <sys/types.h> #include <sys/param.h> #include <string.h> #include <sys/queue.h> #include <stdarg.h> #include <errno.h> #include <getopt.h> #include <rte_common.h> #include <rte_byteorder.h> #include <rte_log.h> #include <rte_memory.h> #include <rte_memcpy.h> #include <rte_memzone.h> #include <rte_eal.h> #include <rte_per_lcore.h> #include <rte_launch.h> #include <rte_atomic.h> #include <rte_cycles.h> #include <rte_prefetch.h> #include <rte_lcore.h> #include <rte_per_lcore.h> #include <rte_branch_prediction.h> #include <rte_interrupts.h> #include <rte_pci.h> #include <rte_random.h> #include <rte_debug.h> #include <rte_ether.h> #include <rte_ethdev.h> #include <rte_ring.h> #include <rte_mempool.h> #include <rte_mbuf.h> #include <rte_lpm.h> #include <rte_lpm6.h> #include <rte_ip.h> #include <rte_string_fns.h> #include <rte_ip_frag.h> struct rte_mempool *mempool = NULL; #define NB_MBUF 8192 #define AERO_FRAG_SIZE 1024 #define PATH_MAX 4096 //static struct rte_mempool *socket_direct_pool[RTE_MAX_NUMA_NODES]; int main(int argc, char **argv) { struct rte_mbuf *mbuf = NULL; struct node_queue_conf *qconf; char buf[PATH_MAX]; struct rte_mempool *mp; struct rte_lpm *lpm; struct rte_lpm6 *lpm6; struct rte_lpm_config lpm_config; /*KT Readded*/ int socket; unsigned lcore_id; unsigned elt_size; lcore_id = 1; socket = rte_lcore_to_socket_id(lcore_id); if (rte_lcore_is_enabled(lcore_id) == 0) printf("RTE LCORE is enabled!"); socket = rte_lcore_to_socket_id(lcore_id); if (socket == SOCKET_ID_ANY) socket = 0; elt_size = sizeof(struct rte_mbuf) + (unsigned)RTE_MBUF_DEFAULT_BUF_SIZE; //mp = rte_mempool_create_empty(buf, NB_MBUF, elt_size, RTE_MBUF_DEFAULT_BUF_SIZE, sizeof(struct rte_pktmbuf_pool_private), socket, 0); mp = rte_pktmbuf_pool_create(buf, NB_MBUF, 32, 0, RTE_MBUF_DEFAULT_BUF_SIZE, socket); /* if (socket_direct_pool[socket] == NULL) { RTE_LOG(INFO, IP_FRAG, "Creating direct mempool on socket %i\n", socket); snprintf(buf, sizeof(buf), "pool_direct_%i", socket); mp = rte_pktmbuf_pool_create(buf, NB_MBUF, 32, 0, AERO_FRAG_SIZE, socket); if (mp == NULL) { RTE_LOG(ERR, IP_FRAG, "Cannot create direct mempool\n"); return -1; } socket_direct_pool[socket] = mp; } */ //mbuf = rte_pktmbuf_alloc(mp); //fragment(mbuf, qconf); } ------------------------------------------ -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: fragment.c URL: <http://mails.dpdk.org/archives/users/attachments/20190917/3e7f791b/attachment.c> -- Thanks and Regards Suraj R Gupta
Not sure, did you try to initialize the EAL first before creating mempool, etc.? rte_eal_init() <https://doc.dpdk.org/api/rte__eal_8h.html#a5c3f4dddc25e38c5a186ecd8a69260e3> Arvind On Wed, Sep 18, 2019 at 9:31 AM Tran (US), Katherine K < katherine.k.tran@boeing.com> wrote: > Hi, > > I have allocated hugepages. I still get the same error. > > I changed the code to the following but I still get the same error: > > ------------- Code --------------- > > struct rte_mempool *mempool = NULL; > #define NB_MBUF 8192 > #define PATH_MAX 4096 > > int > main(int argc, char **argv) > { > > struct rte_mbuf *mbuf = NULL; > char buf[PATH_MAX]; > struct rte_mempool *mp; > int socket; > > socket = SOCKET_ID_ANY; > mp = rte_pktmbuf_pool_create(buf, NB_MBUF, 32, 0, > RTE_MBUF_DEFAULT_BUF_SIZE, socket); > > } > > regards, > Katie > > From: Suraj R Gupta [mailto:surajrgupta@iith.ac.in] > Sent: Tuesday, September 17, 2019 4:33 PM > To: Singh, Satish 1. (Nokia - IN/Bangalore) <satish.1.singh@nokia.com> > Cc: Tran (US), Katherine K <katherine.k.tran@boeing.com>; users@dpdk.org > Subject: Re: [dpdk-users] Help with mbuf and mempool > > Make sure you have allocated hugepages before running the application > > On Wed, Sep 18, 2019 at 9:42 AM Singh, Satish 1. (Nokia - IN/Bangalore) < > satish.1.singh@nokia.com<mailto:satish.1.singh@nokia.com>> wrote: > Hi, > > You are using Socket 0, and might be there is no memory in this socket or > no memory left in this socket 0. Try with SOCKET_ID_ANY. > > Regards, > SATISH SINGH > > -----Original Message----- > From: users <users-bounces@dpdk.org<mailto:users-bounces@dpdk.org>> On > Behalf Of Tran (US), Katherine K > Sent: Tuesday, September 17, 2019 11:36 PM > To: users@dpdk.org<mailto:users@dpdk.org> > Subject: [dpdk-users] Help with mbuf and mempool > > Hello, > > I am trying to allocate an mbuf to use for IP fragmentation. When > instantiating a mempool using rte_pktmbuf_pool_create() function, I keep > getting the following error message. > > Error Message: > * MEMPOOL: Cannot allocate tailq entry! > > Will you please let me know what I am missing? > > Regards, > Katie > > > --------------- Code --------------------- > > #include <stdio.h> > #include <stdlib.h> > #include <stdint.h> > #include <inttypes.h> > #include <sys/types.h> > #include <sys/param.h> > #include <string.h> > #include <sys/queue.h> > #include <stdarg.h> > #include <errno.h> > #include <getopt.h> > > #include <rte_common.h> > #include <rte_byteorder.h> > #include <rte_log.h> > #include <rte_memory.h> > #include <rte_memcpy.h> > #include <rte_memzone.h> > #include <rte_eal.h> > #include <rte_per_lcore.h> > #include <rte_launch.h> > #include <rte_atomic.h> > #include <rte_cycles.h> > #include <rte_prefetch.h> > #include <rte_lcore.h> > #include <rte_per_lcore.h> > #include <rte_branch_prediction.h> > #include <rte_interrupts.h> > #include <rte_pci.h> > #include <rte_random.h> > #include <rte_debug.h> > #include <rte_ether.h> > #include <rte_ethdev.h> > #include <rte_ring.h> > #include <rte_mempool.h> > #include <rte_mbuf.h> > #include <rte_lpm.h> > #include <rte_lpm6.h> > #include <rte_ip.h> > #include <rte_string_fns.h> > > #include <rte_ip_frag.h> > > struct rte_mempool *mempool = NULL; > #define NB_MBUF 8192 > #define AERO_FRAG_SIZE 1024 > #define PATH_MAX 4096 > > //static struct rte_mempool *socket_direct_pool[RTE_MAX_NUMA_NODES]; > > int > main(int argc, char **argv) > { > > struct rte_mbuf *mbuf = NULL; > struct node_queue_conf *qconf; > > char buf[PATH_MAX]; > struct rte_mempool *mp; > struct rte_lpm *lpm; > struct rte_lpm6 *lpm6; > struct rte_lpm_config lpm_config; /*KT Readded*/ > int socket; > unsigned lcore_id; > > unsigned elt_size; > > lcore_id = 1; > socket = rte_lcore_to_socket_id(lcore_id); > > if (rte_lcore_is_enabled(lcore_id) == 0) > printf("RTE LCORE is enabled!"); > > socket = rte_lcore_to_socket_id(lcore_id); > if (socket == SOCKET_ID_ANY) > socket = 0; > > elt_size = sizeof(struct rte_mbuf) + > (unsigned)RTE_MBUF_DEFAULT_BUF_SIZE; > > //mp = rte_mempool_create_empty(buf, NB_MBUF, elt_size, > RTE_MBUF_DEFAULT_BUF_SIZE, sizeof(struct rte_pktmbuf_pool_private), socket, > 0); > > mp = rte_pktmbuf_pool_create(buf, NB_MBUF, 32, 0, > RTE_MBUF_DEFAULT_BUF_SIZE, socket); > > /* > if (socket_direct_pool[socket] == NULL) { > RTE_LOG(INFO, IP_FRAG, "Creating direct mempool on socket > %i\n", > socket); > snprintf(buf, sizeof(buf), "pool_direct_%i", socket); > > mp = rte_pktmbuf_pool_create(buf, NB_MBUF, 32, > 0, AERO_FRAG_SIZE, socket); > > if (mp == NULL) { > RTE_LOG(ERR, IP_FRAG, "Cannot create direct > mempool\n"); > return -1; > } > socket_direct_pool[socket] = mp; > > } > */ > //mbuf = rte_pktmbuf_alloc(mp); > > //fragment(mbuf, qconf); > > > } > > ------------------------------------------ > > > -------------- next part -------------- > An embedded and charset-unspecified text was scrubbed... > Name: fragment.c > URL: < > http://mails.dpdk.org/archives/users/attachments/20190917/3e7f791b/attachment.c > > > > > -- > Thanks and Regards > Suraj R Gupta >
Also char buf[PATH_MAX] is not initialised or assigned any value. Assign a
name to it.
The PATH_MAX need not be 4096, use a lesser value say 100.
On Wed, Sep 18, 2019 at 8:07 PM Arvind Narayanan <webguru2688@gmail.com>
wrote:
> Not sure, did you try to initialize the EAL first before creating mempool,
> etc.?
> rte_eal_init()
> <https://doc.dpdk.org/api/rte__eal_8h.html#a5c3f4dddc25e38c5a186ecd8a69260e3>
>
> Arvind
>
>
> On Wed, Sep 18, 2019 at 9:31 AM Tran (US), Katherine K <
> katherine.k.tran@boeing.com> wrote:
>
>> Hi,
>>
>> I have allocated hugepages. I still get the same error.
>>
>> I changed the code to the following but I still get the same error:
>>
>> ------------- Code ---------------
>>
>> struct rte_mempool *mempool = NULL;
>> #define NB_MBUF 8192
>> #define PATH_MAX 4096
>>
>> int
>> main(int argc, char **argv)
>> {
>>
>> struct rte_mbuf *mbuf = NULL;
>> char buf[PATH_MAX];
>> struct rte_mempool *mp;
>> int socket;
>>
>> socket = SOCKET_ID_ANY;
>> mp = rte_pktmbuf_pool_create(buf, NB_MBUF, 32, 0,
>> RTE_MBUF_DEFAULT_BUF_SIZE, socket);
>>
>> }
>>
>> regards,
>> Katie
>>
>> From: Suraj R Gupta [mailto:surajrgupta@iith.ac.in]
>> Sent: Tuesday, September 17, 2019 4:33 PM
>> To: Singh, Satish 1. (Nokia - IN/Bangalore) <satish.1.singh@nokia.com>
>> Cc: Tran (US), Katherine K <katherine.k.tran@boeing.com>; users@dpdk.org
>> Subject: Re: [dpdk-users] Help with mbuf and mempool
>>
>> Make sure you have allocated hugepages before running the application
>>
>> On Wed, Sep 18, 2019 at 9:42 AM Singh, Satish 1. (Nokia - IN/Bangalore) <
>> satish.1.singh@nokia.com<mailto:satish.1.singh@nokia.com>> wrote:
>> Hi,
>>
>> You are using Socket 0, and might be there is no memory in this socket or
>> no memory left in this socket 0. Try with SOCKET_ID_ANY.
>>
>> Regards,
>> SATISH SINGH
>>
>> -----Original Message-----
>> From: users <users-bounces@dpdk.org<mailto:users-bounces@dpdk.org>> On
>> Behalf Of Tran (US), Katherine K
>> Sent: Tuesday, September 17, 2019 11:36 PM
>> To: users@dpdk.org<mailto:users@dpdk.org>
>> Subject: [dpdk-users] Help with mbuf and mempool
>>
>> Hello,
>>
>> I am trying to allocate an mbuf to use for IP fragmentation. When
>> instantiating a mempool using rte_pktmbuf_pool_create() function, I keep
>> getting the following error message.
>>
>> Error Message:
>> * MEMPOOL: Cannot allocate tailq entry!
>>
>> Will you please let me know what I am missing?
>>
>> Regards,
>> Katie
>>
>>
>> --------------- Code ---------------------
>>
>> #include <stdio.h>
>> #include <stdlib.h>
>> #include <stdint.h>
>> #include <inttypes.h>
>> #include <sys/types.h>
>> #include <sys/param.h>
>> #include <string.h>
>> #include <sys/queue.h>
>> #include <stdarg.h>
>> #include <errno.h>
>> #include <getopt.h>
>>
>> #include <rte_common.h>
>> #include <rte_byteorder.h>
>> #include <rte_log.h>
>> #include <rte_memory.h>
>> #include <rte_memcpy.h>
>> #include <rte_memzone.h>
>> #include <rte_eal.h>
>> #include <rte_per_lcore.h>
>> #include <rte_launch.h>
>> #include <rte_atomic.h>
>> #include <rte_cycles.h>
>> #include <rte_prefetch.h>
>> #include <rte_lcore.h>
>> #include <rte_per_lcore.h>
>> #include <rte_branch_prediction.h>
>> #include <rte_interrupts.h>
>> #include <rte_pci.h>
>> #include <rte_random.h>
>> #include <rte_debug.h>
>> #include <rte_ether.h>
>> #include <rte_ethdev.h>
>> #include <rte_ring.h>
>> #include <rte_mempool.h>
>> #include <rte_mbuf.h>
>> #include <rte_lpm.h>
>> #include <rte_lpm6.h>
>> #include <rte_ip.h>
>> #include <rte_string_fns.h>
>>
>> #include <rte_ip_frag.h>
>>
>> struct rte_mempool *mempool = NULL;
>> #define NB_MBUF 8192
>> #define AERO_FRAG_SIZE 1024
>> #define PATH_MAX 4096
>>
>> //static struct rte_mempool *socket_direct_pool[RTE_MAX_NUMA_NODES];
>>
>> int
>> main(int argc, char **argv)
>> {
>>
>> struct rte_mbuf *mbuf = NULL;
>> struct node_queue_conf *qconf;
>>
>> char buf[PATH_MAX];
>> struct rte_mempool *mp;
>> struct rte_lpm *lpm;
>> struct rte_lpm6 *lpm6;
>> struct rte_lpm_config lpm_config; /*KT Readded*/
>> int socket;
>> unsigned lcore_id;
>>
>> unsigned elt_size;
>>
>> lcore_id = 1;
>> socket = rte_lcore_to_socket_id(lcore_id);
>>
>> if (rte_lcore_is_enabled(lcore_id) == 0)
>> printf("RTE LCORE is enabled!");
>>
>> socket = rte_lcore_to_socket_id(lcore_id);
>> if (socket == SOCKET_ID_ANY)
>> socket = 0;
>>
>> elt_size = sizeof(struct rte_mbuf) +
>> (unsigned)RTE_MBUF_DEFAULT_BUF_SIZE;
>>
>> //mp = rte_mempool_create_empty(buf, NB_MBUF, elt_size,
>> RTE_MBUF_DEFAULT_BUF_SIZE, sizeof(struct rte_pktmbuf_pool_private), socket,
>> 0);
>>
>> mp = rte_pktmbuf_pool_create(buf, NB_MBUF, 32, 0,
>> RTE_MBUF_DEFAULT_BUF_SIZE, socket);
>>
>> /*
>> if (socket_direct_pool[socket] == NULL) {
>> RTE_LOG(INFO, IP_FRAG, "Creating direct mempool on socket
>> %i\n",
>> socket);
>> snprintf(buf, sizeof(buf), "pool_direct_%i", socket);
>>
>> mp = rte_pktmbuf_pool_create(buf, NB_MBUF, 32,
>> 0, AERO_FRAG_SIZE, socket);
>>
>> if (mp == NULL) {
>> RTE_LOG(ERR, IP_FRAG, "Cannot create direct
>> mempool\n");
>> return -1;
>> }
>> socket_direct_pool[socket] = mp;
>>
>> }
>> */
>> //mbuf = rte_pktmbuf_alloc(mp);
>>
>> //fragment(mbuf, qconf);
>>
>>
>> }
>>
>> ------------------------------------------
>>
>>
>> -------------- next part --------------
>> An embedded and charset-unspecified text was scrubbed...
>> Name: fragment.c
>> URL: <
>> http://mails.dpdk.org/archives/users/attachments/20190917/3e7f791b/attachment.c
>> >
>>
>>
>> --
>> Thanks and Regards
>> Suraj R Gupta
>>
>
--
Thanks and Regards
Suraj R Gupta
Thank you – The rte_eal_init() function helped to resolve the compile error. From: Suraj R Gupta [mailto:surajrgupta@iith.ac.in] Sent: Wednesday, September 18, 2019 7:55 AM To: Arvind Narayanan <webguru2688@gmail.com> Cc: Tran (US), Katherine K <katherine.k.tran@boeing.com>; Singh, Satish 1. (Nokia - IN/Bangalore) <satish.1.singh@nokia.com>; users@dpdk.org Subject: Re: [dpdk-users] Help with mbuf and mempool Also char buf[PATH_MAX] is not initialised or assigned any value. Assign a name to it. The PATH_MAX need not be 4096, use a lesser value say 100. On Wed, Sep 18, 2019 at 8:07 PM Arvind Narayanan <webguru2688@gmail.com<mailto:webguru2688@gmail.com>> wrote: Not sure, did you try to initialize the EAL first before creating mempool, etc.? rte_eal_init()<https://doc.dpdk.org/api/rte__eal_8h.html#a5c3f4dddc25e38c5a186ecd8a69260e3> Arvind On Wed, Sep 18, 2019 at 9:31 AM Tran (US), Katherine K <katherine.k.tran@boeing.com<mailto:katherine.k.tran@boeing.com>> wrote: Hi, I have allocated hugepages. I still get the same error. I changed the code to the following but I still get the same error: ------------- Code --------------- struct rte_mempool *mempool = NULL; #define NB_MBUF 8192 #define PATH_MAX 4096 int main(int argc, char **argv) { struct rte_mbuf *mbuf = NULL; char buf[PATH_MAX]; struct rte_mempool *mp; int socket; socket = SOCKET_ID_ANY; mp = rte_pktmbuf_pool_create(buf, NB_MBUF, 32, 0, RTE_MBUF_DEFAULT_BUF_SIZE, socket); } regards, Katie From: Suraj R Gupta [mailto:surajrgupta@iith.ac.in<mailto:surajrgupta@iith.ac.in>] Sent: Tuesday, September 17, 2019 4:33 PM To: Singh, Satish 1. (Nokia - IN/Bangalore) <satish.1.singh@nokia.com<mailto:satish.1.singh@nokia.com>> Cc: Tran (US), Katherine K <katherine.k.tran@boeing.com<mailto:katherine.k.tran@boeing.com>>; users@dpdk.org<mailto:users@dpdk.org> Subject: Re: [dpdk-users] Help with mbuf and mempool Make sure you have allocated hugepages before running the application On Wed, Sep 18, 2019 at 9:42 AM Singh, Satish 1. (Nokia - IN/Bangalore) <satish.1.singh@nokia.com<mailto:satish.1.singh@nokia.com><mailto:satish.1.singh@nokia.com<mailto:satish.1.singh@nokia.com>>> wrote: Hi, You are using Socket 0, and might be there is no memory in this socket or no memory left in this socket 0. Try with SOCKET_ID_ANY. Regards, SATISH SINGH -----Original Message----- From: users <users-bounces@dpdk.org<mailto:users-bounces@dpdk.org><mailto:users-bounces@dpdk.org<mailto:users-bounces@dpdk.org>>> On Behalf Of Tran (US), Katherine K Sent: Tuesday, September 17, 2019 11:36 PM To: users@dpdk.org<mailto:users@dpdk.org><mailto:users@dpdk.org<mailto:users@dpdk.org>> Subject: [dpdk-users] Help with mbuf and mempool Hello, I am trying to allocate an mbuf to use for IP fragmentation. When instantiating a mempool using rte_pktmbuf_pool_create() function, I keep getting the following error message. Error Message: * MEMPOOL: Cannot allocate tailq entry! Will you please let me know what I am missing? Regards, Katie --------------- Code --------------------- #include <stdio.h> #include <stdlib.h> #include <stdint.h> #include <inttypes.h> #include <sys/types.h> #include <sys/param.h> #include <string.h> #include <sys/queue.h> #include <stdarg.h> #include <errno.h> #include <getopt.h> #include <rte_common.h> #include <rte_byteorder.h> #include <rte_log.h> #include <rte_memory.h> #include <rte_memcpy.h> #include <rte_memzone.h> #include <rte_eal.h> #include <rte_per_lcore.h> #include <rte_launch.h> #include <rte_atomic.h> #include <rte_cycles.h> #include <rte_prefetch.h> #include <rte_lcore.h> #include <rte_per_lcore.h> #include <rte_branch_prediction.h> #include <rte_interrupts.h> #include <rte_pci.h> #include <rte_random.h> #include <rte_debug.h> #include <rte_ether.h> #include <rte_ethdev.h> #include <rte_ring.h> #include <rte_mempool.h> #include <rte_mbuf.h> #include <rte_lpm.h> #include <rte_lpm6.h> #include <rte_ip.h> #include <rte_string_fns.h> #include <rte_ip_frag.h> struct rte_mempool *mempool = NULL; #define NB_MBUF 8192 #define AERO_FRAG_SIZE 1024 #define PATH_MAX 4096 //static struct rte_mempool *socket_direct_pool[RTE_MAX_NUMA_NODES]; int main(int argc, char **argv) { struct rte_mbuf *mbuf = NULL; struct node_queue_conf *qconf; char buf[PATH_MAX]; struct rte_mempool *mp; struct rte_lpm *lpm; struct rte_lpm6 *lpm6; struct rte_lpm_config lpm_config; /*KT Readded*/ int socket; unsigned lcore_id; unsigned elt_size; lcore_id = 1; socket = rte_lcore_to_socket_id(lcore_id); if (rte_lcore_is_enabled(lcore_id) == 0) printf("RTE LCORE is enabled!"); socket = rte_lcore_to_socket_id(lcore_id); if (socket == SOCKET_ID_ANY) socket = 0; elt_size = sizeof(struct rte_mbuf) + (unsigned)RTE_MBUF_DEFAULT_BUF_SIZE; //mp = rte_mempool_create_empty(buf, NB_MBUF, elt_size, RTE_MBUF_DEFAULT_BUF_SIZE, sizeof(struct rte_pktmbuf_pool_private), socket, 0); mp = rte_pktmbuf_pool_create(buf, NB_MBUF, 32, 0, RTE_MBUF_DEFAULT_BUF_SIZE, socket); /* if (socket_direct_pool[socket] == NULL) { RTE_LOG(INFO, IP_FRAG, "Creating direct mempool on socket %i\n", socket); snprintf(buf, sizeof(buf), "pool_direct_%i", socket); mp = rte_pktmbuf_pool_create(buf, NB_MBUF, 32, 0, AERO_FRAG_SIZE, socket); if (mp == NULL) { RTE_LOG(ERR, IP_FRAG, "Cannot create direct mempool\n"); return -1; } socket_direct_pool[socket] = mp; } */ //mbuf = rte_pktmbuf_alloc(mp); //fragment(mbuf, qconf); } ------------------------------------------ -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: fragment.c URL: <http://mails.dpdk.org/archives/users/attachments/20190917/3e7f791b/attachment.c> -- Thanks and Regards Suraj R Gupta -- Thanks and Regards Suraj R Gupta