Re: [PATCH net,v2] ip6_tunnel, ip6_gre: fix setting of DSCP on encapsulated packets

From: David Miller
Date: Fri May 26 2017 - 14:56:11 EST


From: Peter Dawson <petedaws@xxxxxxxxx>
Date: Fri, 26 May 2017 06:35:18 +1000

> This fix addresses two problems in the way the DSCP field is formulated
> on the encapsulating header of IPv6 tunnels.
> Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=195661
>
> 1) The IPv6 tunneling code was manipulating the DSCP field of the
> encapsulating packet using the 32b flowlabel. Since the flowlabel is
> only the lower 20b it was incorrect to assume that the upper 12b
> containing the DSCP and ECN fields would remain intact when formulating
> the encapsulating header. This fix handles the 'inherit' and
> 'fixed-value' DSCP cases explicitly using the extant dsfield u8 variable.
>
> 2) The use of INET_ECN_encapsulate(0, dsfield) in ip6_tnl_xmit was
> incorrect and resulted in the DSCP value always being set to 0.
>
> Commit 90427ef5d2a4 ("ipv6: fix flow labels when the traffic class
> is non-0") caused the regression by masking out the flowlabel
> which exposed the incorrect handling of the DSCP portion of the
> flowlabel in ip6_tunnel and ip6_gre.
>
> Fixes: 90427ef5d2a4 ("ipv6: fix flow labels when the traffic class is non-0")
> Signed-off-by: Peter Dawson <peter.a.dawson@xxxxxxxxxx>

Applied, thanks.