diff options
| author | Eric Dumazet <edumazet@google.com> | 2015-09-15 18:24:28 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2015-09-18 00:01:05 -0400 |
| commit | 4b1b865e4e97e336316f30e32af36d71e98bdabc (patch) | |
| tree | de196e18e8380347054a5a4dec871ccfd8cf4f57 /drivers/net/bonding | |
| parent | 58d607d3e52f2b15902f58a1161da9fb3b0f6d47 (diff) | |
bonding: use l4 hash if available
If skb carries a l4 hash, no need to perform a flow dissection.
Performance is slightly better :
lpaa5:~# ./super_netperf 200 -H lpaa6 -t TCP_RR -l 100
2.39012e+06
lpaa5:~# ./super_netperf 200 -H lpaa6 -t TCP_RR -l 100
2.39393e+06
lpaa5:~# ./super_netperf 200 -H lpaa6 -t TCP_RR -l 100
2.39988e+06
After patch :
lpaa5:~# ./super_netperf 200 -H lpaa6 -t TCP_RR -l 100
2.43579e+06
lpaa5:~# ./super_netperf 200 -H lpaa6 -t TCP_RR -l 100
2.44304e+06
lpaa5:~# ./super_netperf 200 -H lpaa6 -t TCP_RR -l 100
2.44312e+06
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Tom Herbert <tom@herbertland.com>
Cc: Mahesh Bandewar <maheshb@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/bonding')
| -rw-r--r-- | drivers/net/bonding/bond_main.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c index 771a449d2f56..90f2615428c0 100644 --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c | |||
| @@ -3136,6 +3136,10 @@ u32 bond_xmit_hash(struct bonding *bond, struct sk_buff *skb) | |||
| 3136 | struct flow_keys flow; | 3136 | struct flow_keys flow; |
| 3137 | u32 hash; | 3137 | u32 hash; |
| 3138 | 3138 | ||
| 3139 | if (bond->params.xmit_policy == BOND_XMIT_POLICY_ENCAP34 && | ||
| 3140 | skb->l4_hash) | ||
| 3141 | return skb->hash; | ||
| 3142 | |||
| 3139 | if (bond->params.xmit_policy == BOND_XMIT_POLICY_LAYER2 || | 3143 | if (bond->params.xmit_policy == BOND_XMIT_POLICY_LAYER2 || |
| 3140 | !bond_flow_dissect(bond, skb, &flow)) | 3144 | !bond_flow_dissect(bond, skb, &flow)) |
| 3141 | return bond_eth_hash(skb); | 3145 | return bond_eth_hash(skb); |
