Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Tento commit je obsažen v:
@@ -202,6 +202,9 @@ static struct sk_buff **fou_gro_receive(struct sock *sk,
|
||||
*/
|
||||
NAPI_GRO_CB(skb)->encap_mark = 0;
|
||||
|
||||
/* Flag this frame as already having an outer encap header */
|
||||
NAPI_GRO_CB(skb)->is_fou = 1;
|
||||
|
||||
rcu_read_lock();
|
||||
offloads = NAPI_GRO_CB(skb)->is_ipv6 ? inet6_offloads : inet_offloads;
|
||||
ops = rcu_dereference(offloads[proto]);
|
||||
@@ -367,6 +370,9 @@ static struct sk_buff **gue_gro_receive(struct sock *sk,
|
||||
*/
|
||||
NAPI_GRO_CB(skb)->encap_mark = 0;
|
||||
|
||||
/* Flag this frame as already having an outer encap header */
|
||||
NAPI_GRO_CB(skb)->is_fou = 1;
|
||||
|
||||
rcu_read_lock();
|
||||
offloads = NAPI_GRO_CB(skb)->is_ipv6 ? inet6_offloads : inet_offloads;
|
||||
ops = rcu_dereference(offloads[guehdr->proto_ctype]);
|
||||
|
@@ -150,6 +150,14 @@ static struct sk_buff **gre_gro_receive(struct sk_buff **head,
|
||||
if ((greh->flags & ~(GRE_KEY|GRE_CSUM)) != 0)
|
||||
goto out;
|
||||
|
||||
/* We can only support GRE_CSUM if we can track the location of
|
||||
* the GRE header. In the case of FOU/GUE we cannot because the
|
||||
* outer UDP header displaces the GRE header leaving us in a state
|
||||
* of limbo.
|
||||
*/
|
||||
if ((greh->flags & GRE_CSUM) && NAPI_GRO_CB(skb)->is_fou)
|
||||
goto out;
|
||||
|
||||
type = greh->protocol;
|
||||
|
||||
rcu_read_lock();
|
||||
|
@@ -862,9 +862,16 @@ static void __gre_tunnel_init(struct net_device *dev)
|
||||
dev->hw_features |= GRE_FEATURES;
|
||||
|
||||
if (!(tunnel->parms.o_flags & TUNNEL_SEQ)) {
|
||||
/* TCP offload with GRE SEQ is not supported. */
|
||||
dev->features |= NETIF_F_GSO_SOFTWARE;
|
||||
dev->hw_features |= NETIF_F_GSO_SOFTWARE;
|
||||
/* TCP offload with GRE SEQ is not supported, nor
|
||||
* can we support 2 levels of outer headers requiring
|
||||
* an update.
|
||||
*/
|
||||
if (!(tunnel->parms.o_flags & TUNNEL_CSUM) ||
|
||||
(tunnel->encap.type == TUNNEL_ENCAP_NONE)) {
|
||||
dev->features |= NETIF_F_GSO_SOFTWARE;
|
||||
dev->hw_features |= NETIF_F_GSO_SOFTWARE;
|
||||
}
|
||||
|
||||
/* Can use a lockless transmit, unless we generate
|
||||
* output sequences
|
||||
*/
|
||||
|
Odkázat v novém úkolu
Zablokovat Uživatele