[ovs-dev] [PATCH net-next 1/2] net: More fine-grained support for encapsulated GSO features

Jesse Gross jesse at nicira.com
Wed May 1 18:16:40 UTC 2013


On Wed, May 1, 2013 at 12:50 AM, Simon Horman <horms at verge.net.au> wrote:
> On Tue, Apr 30, 2013 at 09:19:51AM -0700, Jesse Gross wrote:
>> On Mon, Apr 29, 2013 at 8:21 PM, Simon Horman <horms at verge.net.au> wrote:
>> > On Fri, Apr 26, 2013 at 04:03:21PM -0700, Jesse Gross wrote:
>> >> On Thu, Apr 25, 2013 at 12:36 AM, Simon Horman <horms at verge.net.au> wrote:
>> >> > On Tue, Apr 23, 2013 at 02:00:19PM -0700, Joseph Gasparakis wrote:
>> >> >> Any particular reason to introduce skb->encapsulation_features instead of
>> >> >> using the existing skb->encapsulation? Also I don't see it used in your
>> >> >> second patch either.
>> >> >
>> >> > My reasoning is that skb->encapsulation seems to alter the behaviour of
>> >> > many different locations and I'm not sure that any of them, other than the
>> >> > one in dev_hard_start_xmit() make sense for MPLS.
>> >>
>> >> The problem is the meaning of skb->encapsulation isn't really defined
>> >> clearly and I'm certain that the current implementation is not going
>> >> to work in the future. Depending on your perspective, vlans, MPLS,
>> >> tunnels, etc. can all be considered forms of encapsulation but clearly
>> >> there are many NICs that have different capabilities across those. I
>> >> believe the intention here was really to describe L3 tunnels as
>> >> encapsulation, in which case MPLS really shouldn't be using this
>> >> mechanism at all.
>> >>
>> >> Now there is some overlap, especially today since most currently
>> >> shipping silicon wasn't designed to support tunnels and so is using
>> >> some form of offset based offloads. In that case, all forms of
>> >> encapsulation are pretty similar. However, in the future that won't be
>> >> the case as support for specific protocols is implemented for higher
>> >> performance and richer support. When that happens, not only will MPLS
>> >> and tunnels have different capabilities but various forms tunnels
>> >> might as well.
>> >
>> > Wouldn't be possible to describe those differences using,
>> > dev->hw_enc_features? I assumed that was its purpose.
>>
>> If there truly are differences between the offload capabilities of
>> MPLS and L3 tunnels then no, it's not possible, because it's a single
>> field. It's certainly not a valid assumption that a NIC that can do
>> TSO over GRE can also do it over MPLS.
>>
>> However, it's unlikely that there are truly significant differences
>> between various encapsulation formats on a per-feature basis. I think
>> what we need to do is separate out the ability to understand the
>> headers from the capabilities so you have two fields: header (none,
>> VLAN, QinQ, MPLS, VXLAN, GRE, etc.) and feature (checksum, SG, TSO,
>> etc.) rather than the product of each. Otherwise, we end up with a ton
>> of different combinations.
>
> I'm not quite sure that I follow.
>
> Is your idea to replace skb->encapsulation (a single bit) with
> a field that corresponds to the outer-most (encapsulation) header in use
> and has bits for none, VLAN, QinQ, MPLS, VXLAN, GRE, etc...?

No, I'm talking about netdev features. You can already tell the
encapsulation type of a packet by looking at the EtherType.



More information about the dev mailing list