bonding: Simplify the xmit function for modes that use xmit_hash
authorMahesh Bandewar <maheshb@google.com>
Sun, 5 Oct 2014 00:45:01 +0000 (17:45 -0700)
committerDavid S. Miller <davem@davemloft.net>
Mon, 6 Oct 2014 21:13:07 +0000 (17:13 -0400)
commitee6377147409a00c071b2da853059a7d59979fbc
tree82df6bc2bc00711351463081a13785c04b45f773
parentd7021325a2ea5aaf4458097341c988f9dc93491f
bonding: Simplify the xmit function for modes that use xmit_hash

Earlier change to use usable slave array for TLB mode had an additional
performance advantage. So extending the same logic to all other modes
that use xmit-hash for slave selection (viz 802.3AD, and XOR modes).
Also consolidating this with the earlier TLB change.

The main idea is to build the usable slaves array in the control path
and use that array for slave selection during xmit operation.

Measured performance in a setup with a bond of 4x1G NICs with 200
instances of netperf for the modes involved (3ad, xor, tlb)
cmd: netperf -t TCP_RR -H <TargetHost> -l 60 -s 5

Mode        TPS-Before   TPS-After

802.3ad   : 468,694      493,101
TLB (lb=0): 392,583      392,965
XOR       : 475,696      484,517

Signed-off-by: Mahesh Bandewar <maheshb@google.com>
Signed-off-by: Nikolay Aleksandrov <nikolay@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/bonding/bond_3ad.c
drivers/net/bonding/bond_alb.c
drivers/net/bonding/bond_alb.h
drivers/net/bonding/bond_main.c
drivers/net/bonding/bonding.h