[ovs-dev] [PATCH] compat: Remove rpl_dev_queue_xmit() backport.

Joe Stringer joe at ovn.org
Mon Mar 20 19:37:00 UTC 2017


On 20 March 2017 at 06:36, Simon Horman <simon.horman at netronome.com> wrote:
> On Thu, Mar 02, 2017 at 03:00:37PM -0800, Joe Stringer wrote:
>> On 8 February 2017 at 16:50, Joe Stringer <joe at ovn.org> wrote:
>> > The MPLS portions of this were inadvertently broken in v2.4 due to
>> > 433637881ca5 ("datapath: define compat __skb_gso_segment()") which
>> > inverts the supports_mpls_gso() logic, then when rpl_dev_queue_xmit()
>> > backport dropped its VLAN portion in v2.6, the whole function became a
>> > no-op - since b63bf2488209 ("datapath: remove VLAN compat code from GSO").
>> >
>> > Apparently the MPLS side of this code never worked in a released version
>> > of OVS and no-one noticed, so remove it.
>> >
>> > Signed-off-by: Joe Stringer <joe at ovn.org>
>>
>> Picking this thread back up... it's a bit elaborate, but as per my
>> understanding there were basically three important versions of the
>> MPLS GSO code in upstream Linux to date:
>>
>> Linux earlier than 3.19 had a broken implementation.
>> Linux 3.19 up until 4.9 had a version that worked OK for OVS
>> codepaths, but was broken in other paths.
>> Linux 4.9 and later should be correct in all cases[0 + fixes].
>>
>> Then we have our OVS out-of-tree backport of the upstream OVS module.
>> Today, the MPLS code in OVS matches roughly Linux 4.8. Prior to 3.19,
>> we backported MPLS GSO, but there was a problem with the activation of
>> the code[1] so MPLS GSO is broken with out-of-tree against kernels up
>> to 3.19. For kernels 3.19 to 4.8, the MPLS GSO works correctly in the
>> OVS tree. Linux 4.9 expects the skb to be prepared differently for
>> MPLS GSO to work, so the out-of-tree module in conjunction with that
>> version will be broken. When we backport this patch[0], that should be
>> fixed---but we'll need to take care to do it in a way that still works
>> on earlier versions..
>>
>> This affects OVS 2.7 - users wanting to run OVS 2.7 with out-of-tree
>> module with MPLS GSO (including loading the mpls_gso module) and a
>> Linux 4.9 kernel may observe some issues like this when using MPLS
>> push/pop. As far as I can tell, the most likely affected users would
>> be those running recent Fedora releases but I don't think that they
>> use the DKMS module by default. Given how elaborate this chain of
>> requirements is, I'm not so strongly concerned about addressing this
>> before bringing the three or four later backport series into the
>> tree.. they've been blocking for pretty long already. It'd definitely
>> be nice to fix it soon though.
>>
>> Yi-Hung has been doing the investigation on this, thanks for providing
>> the details and I hope I portrayed it correctly to the list here!
>
> Am I correct in understanding that you would like to:
> 1. Address outstanding backports and then
> 2. Address the problem discussed in this thread, particularly for
>    OVS2.7 + Linux 4.9
>
> If so that sounds reasonable to me. I'd be happy to assist with this work
> but I suspect that two (or more) heads will be better than one given the
> complexity of getting it correct for all the relevant kernel versions.

Correct. At this point I've reviewed and applied most backport changes
up until the latest changes on net/net-next over the past few weeks,
with the exception of these MPLS changes. I agree that this stuff is
tricky and it would be helpful to have some assistance, thanks for the
offer. I believe that Yi-Hung should be able to share a patch soon,
and we can continue the discussion from there.


More information about the dev mailing list