[dpdk-dev] Fwd: dpdk ixgbe PMD lro limits

Lu, Wenzhuo wenzhuo.lu at intel.com
Wed Jun 29 02:29:15 CEST 2016


Hi Asim,


> -----Original Message-----
> From: Asim Jamshed [mailto:asim.jamshed at gmail.com]
> Sent: Tuesday, June 28, 2016 5:23 PM
> To: Lu, Wenzhuo
> Cc: dev at dpdk.org
> Subject: Re: [dpdk-dev] Fwd: dpdk ixgbe PMD lro limits
> 
> On Tue, Jun 28, 2016 at 5:42 PM, Lu, Wenzhuo <wenzhuo.lu at intel.com> wrote:
> > Hi Asim,
> >
> >
> >> -----Original Message-----
> >> From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Asim Jamshed
> >> Sent: Tuesday, June 28, 2016 2:41 PM
> >> To: dev at dpdk.org
> >> Subject: [dpdk-dev] Fwd: dpdk ixgbe PMD lro limits
> >>
> >> Hi,
> >>
> >> Apologies in advance if this question has been asked in the past.
> >>
> >> I have been performing mTCP-related tests on dpdk-16.04 with ixgbe
> >> PMD. I am using 82599ES 10-Gigabit adapters for my experiments. I
> >> have a few queries regarding LRO.
> >>
> >> 1) What is the theoretical maximum size of the Ethernet frame I can
> >> get from the driver once LRO is enabled? In my experiments, I was
> >> seeing packet size as high as 16KB. Can it be as high as ~2^16 bytes (iph-
> >tot_len)?
> > I'm not sure about if I understand your question correctly. Assume you're
> talking about the TCP segment after LRO. So, it's said there are no limitations on
> the maximum packet length.
> 
> The issue that I am facing is fixing the size of mbuf.
> The default size of mbuf is (2048 + sizeof(struct rte_mbuf) +
> RTE_PKTMBUF_HEADROOM) which needs to be augmented once lro is enabled
> (am I right?). I tried stretching the limits of the mempool by increasing mbuf size
> to (65536 + sizeof(struct rte_mbuf) + RTE_PKTMBUF_HEADROOM), and I got the
> following error:
I don't think you need to change the size of mbuf. Please check this field of mbuf,
"struct rte_mbuf *next;    /**< Next segment of scattered packet. */"

> 
> Initializing port 0... EAL: Error - exiting with code: 1
>   Cause: rte_eth_rx_queue_setup:err=-22, port=0, queueid: 0
> 
> My exact calls for rte_mempool_create() and
> rte_eth_rx_queue_setup() were:
> 
> pktmbuf_pool = rte_mempool_create(name, 8192,
>                                   MBUF_SIZE, 256,
>                                   sizeof(struct rte_pktmbuf_pool_private),
>                                   rte_pktmbuf_pool_init, NULL,
>                                   rte_pktmbuf_init, NULL,
>                                   rte_socket_id(), 0);
> 
> ret = rte_eth_rx_queue_setup(portid, rxlcore_id, 128,
> rte_eth_dev_socket_id(portid), &rx_conf,
>                                                 pktmbuf_pool);
> 
> >
> >>
> >> 2) Since the NIC is reassembling payloads (of one flow) into a single
> >> packet, what does the Ethernet controller do with the tcp checksum
> >> field in the TCP header? I am observing that each LRO packet has
> >> checksum value as zero? Is that normal? I could not find any relevant
> documentation on the Web.
> > That's expected.
> > You can search 82599 datasheet. I think that's what you're looking for.
> 
> Thanks!
> 
> 
> Regards,
> --Asim
> 
> >
> >>
> >> Thanks in advance,
> >> --Asim


More information about the dev mailing list