Merge branch 'vlan_features'
authorDavid S. Miller <davem@davemloft.net>
Thu, 22 May 2014 19:07:31 +0000 (15:07 -0400)
committerDavid S. Miller <davem@davemloft.net>
Thu, 22 May 2014 19:07:31 +0000 (15:07 -0400)
commita33fa47e89841a7230c21a33d4a4158dbf9b226c
tree6eff4a2f3320213c451d73a24eda76083628e01c
parent98a6eeb8f5dbae8012cd4ec7b6c13efd5b5ced8a
parent3625920b62c32041f796f0ca14da84731de40d57
Merge branch 'vlan_features'

Michal Kubecek says:

====================
net: device features handling fixes

> I think we need to think more about what exact behavior is desired in
> mixed csum feature set cases.  Probably whatever csum offload type is
> the most prevelant should be the one advertised by the master.  It
> means we will do that software checksum fixup for the oddball slaves,
> but it seems the best we can do.

I've been thinking about it some more and I believe what I proposed is
correct: features that are or-ed (ONE_FOR_ALL) should start with 0,
those which are and-ed (ALL_FOR_ALL) with 1.

But once we do that, we have to fix another problem in vlan module:
features of a vlan device are mostly computed as bitwise AND of features
and vlan_features of its underlying device. The problem is checksumming
features don't really behave like independent flags as their main
purpose is to be used in can_checksum_protocol() whose logic is that
HW_CSUM (GEN_CSUM) means "can checksum everything" so that it kind of
contains IP(V6)_CSUM functionality. Therefore intersection of HW_CSUM
and IP(V6)_CSUM should result in the latter.

An alternative approach would be to always set IP(V6)_CSUM once HW_CSUM
(any of GEN_CSUM) is set but as for long time people were taught not to
do that and we even have a warning for it, switching to the exact
opposite could cause a lot of problems.

> Also, like Jay, I agree that whatever we do in bonding needs to be
> done in team too and I'd like the bug fixed at the same time in both
> places.

Agreed. Added a similar patch for teaming driver.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>