Hello.
I noticed extremely bad tx balancing in some cases with lacp/loadbalance
runner when vlans are in use. Only ethernet header (and vlan id if
configured) is used for tx hash, l3 is ignored.
I saw few problems in bpf hashing code generator. First, the vlan header
size if wrong so vlan_hdr_shift() will give wrong offsets. But that
doesn't actually matter since the parser fails in two possible cases:
- vlan tagging is offloaded. Parser will try to skip vlan header
based on skb->vlan_tci, but header is not yet present in packet. It will
not find ipv4/ipv6 protocol for l3.
- vlan tagging is not offloaded. Kernel will set vlan_tci to 0 after
call to __vlan_put_tag(). Parser will not try to skip vlan header and
will stop to ethernet header protocol 0x8100.
Am I missing something in here, or has this been working with some
old kernel?
I have fix for this, can prepare patch.
-antti