v4 GRE: Add TCP segmentation offload for GRE
Following patch adds GRE protocol offload handler so that skb_gso_segment() can segment GRE packets. SKB GSO CB is added to keep track of total header length so that skb_segment can push entire header. e.g. in case of GRE, skb_segment need to push inner and outer headers to every segment. New NETIF_F_GRE_GSO feature is added for devices which support HW GRE TSO offload. Currently none of devices support it therefore GRE GSO always fall backs to software GSO. [ Compute pkt_len before ip_local_out() invocation. -DaveM ] Signed-off-by: Pravin B Shelar <pshelar@nicira.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
05e8ef4ab2
commit
68c3316311
@@ -41,7 +41,7 @@ enum {
|
||||
NETIF_F_TSO_ECN_BIT, /* ... TCP ECN support */
|
||||
NETIF_F_TSO6_BIT, /* ... TCPv6 segmentation */
|
||||
NETIF_F_FSO_BIT, /* ... FCoE segmentation */
|
||||
NETIF_F_GSO_RESERVED1, /* ... free (fill GSO_MASK to 8 bits) */
|
||||
NETIF_F_GSO_GRE_BIT, /* ... GRE with TSO */
|
||||
/**/NETIF_F_GSO_LAST, /* [can't be last bit, see GSO_MASK] */
|
||||
NETIF_F_GSO_RESERVED2 /* ... free (fill GSO_MASK to 8 bits) */
|
||||
= NETIF_F_GSO_LAST,
|
||||
@@ -102,6 +102,7 @@ enum {
|
||||
#define NETIF_F_VLAN_CHALLENGED __NETIF_F(VLAN_CHALLENGED)
|
||||
#define NETIF_F_RXFCS __NETIF_F(RXFCS)
|
||||
#define NETIF_F_RXALL __NETIF_F(RXALL)
|
||||
#define NETIF_F_GRE_GSO __NETIF_F(GSO_GRE)
|
||||
|
||||
/* Features valid for ethtool to change */
|
||||
/* = all defined minus driver/device-class-related */
|
||||
|
Reference in New Issue
Block a user