diff options
author | Or Gerlitz <ogerlitz@mellanox.com> | 2014-01-20 06:59:19 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-01-21 21:05:04 -0500 |
commit | b582ef0990d457f7ce8ccf827af51a575ca0b4a6 (patch) | |
tree | 2893cba0f3c386795a7324c71851d165a68d891e /net/core | |
parent | 2618abb73c8953f0848511fc13f68da4d8337574 (diff) |
net: Add GRO support for UDP encapsulating protocols
Add GRO handlers for protocols that do UDP encapsulation, with the intent of
being able to coalesce packets which encapsulate packets belonging to
the same TCP session.
For GRO purposes, the destination UDP port takes the role of the ether type
field in the ethernet header or the next protocol in the IP header.
The UDP GRO handler will only attempt to coalesce packets whose destination
port is registered to have gro handler.
Use a mark on the skb GRO CB data to disallow (flush) running the udp gro receive
code twice on a packet. This solves the problem of udp encapsulated packets whose
inner VM packet is udp and happen to carry a port which has registered offloads.
Signed-off-by: Shlomo Pongratz <shlomop@mellanox.com>
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core')
-rw-r--r-- | net/core/dev.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index a578af589198..da92305c344f 100644 --- a/net/core/dev.c +++ b/net/core/dev.c | |||
@@ -3893,6 +3893,7 @@ static enum gro_result dev_gro_receive(struct napi_struct *napi, struct sk_buff | |||
3893 | NAPI_GRO_CB(skb)->same_flow = 0; | 3893 | NAPI_GRO_CB(skb)->same_flow = 0; |
3894 | NAPI_GRO_CB(skb)->flush = 0; | 3894 | NAPI_GRO_CB(skb)->flush = 0; |
3895 | NAPI_GRO_CB(skb)->free = 0; | 3895 | NAPI_GRO_CB(skb)->free = 0; |
3896 | NAPI_GRO_CB(skb)->udp_mark = 0; | ||
3896 | 3897 | ||
3897 | pp = ptype->callbacks.gro_receive(&napi->gro_list, skb); | 3898 | pp = ptype->callbacks.gro_receive(&napi->gro_list, skb); |
3898 | break; | 3899 | break; |