From: Dimitris Michailidis <dmich...@google.com> Date: Mon, 30 Jan 2017 14:09:42 -0800
> ip6_make_flowlabel() determines the flow label for IPv6 packets. It's > supposed to be passed a flow label, which it returns as is if non-0 and > in some other cases, otherwise it calculates a new value. > > The problem is callers often pass a flowi6.flowlabel, which may also > contain traffic class bits. If the traffic class is non-0 > ip6_make_flowlabel() mistakes the non-0 it gets as a flow label and > returns the whole thing. Thus it can return a 'flow label' longer than > 20b and the low 20b of that is typically 0 resulting in packets with 0 > label. Moreover, different packets of a flow may be labeled differently. > For a TCP flow with ECN non-payload and payload packets get different > labels as exemplified by this pair of consecutive packets: ... > Signed-off-by: Dimitris Michailidis <dmich...@google.com> Applied, thanks Dimitris.