Thanks on the reply Richardson. You did mention something like "Don't forget that when you get the mbuf from rte_pktmbuf_alloc, you also need to set the length value to the appropriate size." .
Like I'm allocating the mbuf using rte_mbuf . The rte_mempool_create has already set the maximum packet size for a mbuf and the number of mbuf's and all. So do I really need to use rte_pktmbuf_alloc ? On Fri, Mar 14, 2014 at 4:38 PM, Richardson, Bruce < bruce.richardson at intel.com> wrote: > > > From: sabu kurian [mailto:sabu2kurian at gmail.com] > > Sent: Friday, March 14, 2014 10:09 AM > > To: Richardson, Bruce > > Cc: dev at dpdk.org > > Subject: Re: [dpdk-dev] Packet crafting.... > > > > Thank you very much Richardson for your valuable reply. But is there > another way of doing it using the rte_pktmbuf_append / rte_pktmbuf_prepend > ? Can you please tell me on how to do that ? > > You could use pktmbuf_append and pktmbuf_prepend, but they are primarily > designed to add headers/footers on to an existing packet that already has > headers, so that you don't need to move the existing data. In the case of > having to craft a packet from scratch, there is no existing data in the > mbuf, so the whole packet can just be filled in sequentially. [Don't forget > that when you get the mbuf from rte_pktmbuf_alloc, you also need to set the > length value to the appropriate size.] > > However, if you first write the data to the mbuf and then want to add the > headers in order, like a packet moving down through layers of a stack, you > can use prepend to add udp, then ip, then your ethernet header, but this > will be no faster than just writing the data directly to the mbuf space, > and may be slightly slower as each prepend call has to just the length > values and data pointer values in the mbuf. Each header prepended also uses > up headroom in the mbuf, so you can only add 128-bytes of headers by > default to each packet. > > In short, if you are creating a single packet, I'd recommend just getting > the data pointer from the returned mbuf and writing directly to that. > > Regards, > /Bruce >