[dpdk-dev] [PATCH 1/3] mbuf:add two TX offload flags and change three fields
Ananyev, Konstantin
konstantin.ananyev at intel.com
Mon Dec 1 12:58:36 CET 2014
> -----Original Message-----
> From: Olivier MATZ [mailto:olivier.matz at 6wind.com]
> Sent: Monday, December 01, 2014 9:52 AM
> To: Liu, Jijiang; Ananyev, Konstantin
> Cc: dev at dpdk.org
> Subject: Re: [dpdk-dev] [PATCH 1/3] mbuf:add two TX offload flags and change three fields
>
> Hi Jijiang,
>
> On 12/01/2014 03:30 AM, Liu, Jijiang wrote:
> >> After another thought, I think that the way you proposed is a better one.
> >> I gives us more flexibility:
> >> let's say for now we'll keep both l2_len and outer_l2_len as 7 bit fields, and upper
> >> layer would have to:
> >> mb->l2_len = eth_hdr_in + vxlan_hdr;
> >
> > A question, how to fill the mb->l2_len for IP in IP, IP in GRE tunneling packet that is no inner L2 header?
> > What is the rule?
> > Or you think it should be mb->l2_len = 0 + l4_tun_len; ??
I think it should be:
l2_len = 0 + l4_tun_len;
>From your patch:
l4_tunnel_len = l4_tun_len + l2_len;
>
> We could have the following rule:
> - the l2_len starts after the end of outer_l2_len + outer_l3_len (if
> they are not 0)
I think it should start after the outer_l4_hdr.
I.e. right now we don't include udp header length into it.
> - l2_len is the length of all headers up to the first ip or ipv6
> header
Yes, same thought here.
>
> Examples:
>
> Ether/IP/UDP/xxx
> m->outer_l2_len = 0
> m->outer_l3_len = 0
> m->l2_len = sizeof(ether)
> m->l3_len = sizeof(ip)
> m->l4_len = sizeof(udp)
>
> Ether/IP/IP/UDP/xxx
> m->outer_l2_len = sizeof(ether)
> m->outer_l3_len = sizeof(ip)
> m->l2_len = 0
> m->l3_len = sizeof(ip)
> m->l4_len = sizeof(udp)
>
> Ether/IP/GRE/IP/UDP/xxx
> m->outer_l2_len = sizeof(ether)
> m->outer_l3_len = sizeof(ip)
> m->l2_len = sizeof(gre)
> m->l3_len = sizeof(ip)
> m->l4_len = sizeof(udp)
>
> Ether/IP/UDP/vxlan/Ether/IP/UDP/xxx
> m->outer_l2_len = sizeof(ether)
> m->outer_l3_len = sizeof(ip)
> m->l2_len = sizeof(udp) + sizeof(vxlan) + sizeof(ether)
I think it should be:
m->l2_len = sizeof(vxlan) + sizeof(ether)
We don't need to add sizeof(udp) as we already say to the HW that I t will be UDP TUNNELING vi the ol_flag: PKT_TX_UDP_TUNNEL_PKT.
> m->l3_len = sizeof(ip)
> m->l4_len = sizeof(udp)
>
> Regards,
> Olivier
More information about the dev
mailing list