diff options
Diffstat (limited to 'drivers/net/ethernet/sfc')
-rw-r--r-- | drivers/net/ethernet/sfc/tx.c | 9 |
1 files changed, 0 insertions, 9 deletions
diff --git a/drivers/net/ethernet/sfc/tx.c b/drivers/net/ethernet/sfc/tx.c index cfa5f6db20bd..9b225a7769f7 100644 --- a/drivers/net/ethernet/sfc/tx.c +++ b/drivers/net/ethernet/sfc/tx.c | |||
@@ -651,17 +651,8 @@ static __be16 efx_tso_check_protocol(struct sk_buff *skb) | |||
651 | EFX_BUG_ON_PARANOID(((struct ethhdr *)skb->data)->h_proto != | 651 | EFX_BUG_ON_PARANOID(((struct ethhdr *)skb->data)->h_proto != |
652 | protocol); | 652 | protocol); |
653 | if (protocol == htons(ETH_P_8021Q)) { | 653 | if (protocol == htons(ETH_P_8021Q)) { |
654 | /* Find the encapsulated protocol; reset network header | ||
655 | * and transport header based on that. */ | ||
656 | struct vlan_ethhdr *veh = (struct vlan_ethhdr *)skb->data; | 654 | struct vlan_ethhdr *veh = (struct vlan_ethhdr *)skb->data; |
657 | protocol = veh->h_vlan_encapsulated_proto; | 655 | protocol = veh->h_vlan_encapsulated_proto; |
658 | skb_set_network_header(skb, sizeof(*veh)); | ||
659 | if (protocol == htons(ETH_P_IP)) | ||
660 | skb_set_transport_header(skb, sizeof(*veh) + | ||
661 | 4 * ip_hdr(skb)->ihl); | ||
662 | else if (protocol == htons(ETH_P_IPV6)) | ||
663 | skb_set_transport_header(skb, sizeof(*veh) + | ||
664 | sizeof(struct ipv6hdr)); | ||
665 | } | 656 | } |
666 | 657 | ||
667 | if (protocol == htons(ETH_P_IP)) { | 658 | if (protocol == htons(ETH_P_IP)) { |