From 994a6eea3e6893bb5b51989c896c75755c4e2932 Mon Sep 17 00:00:00 2001 From: Arthur Jones Date: Sat, 21 Mar 2009 16:55:07 -0700 Subject: [PATCH] --- yaml --- r: 135359 b: refs/heads/master c: fa4a7ef36ec834fee1719636b30d2f28f4cb0166 h: refs/heads/master i: 135357: 01dd402f31c41814a10c5d7a48276a54d14cd6d9 135355: 71fb00d7e4983779cb255517ef89e990aea7f1f0 135351: 33c7d2037d4ced1bf43543a775f790b2851f8823 135343: 6f6a0a18f4fbb3187fa0d3bd29ee9eac531c8299 135327: cb7d685335b2871e2af0df45ae8000afb7df9850 135295: 0570e76bda338016eea7349b8ebfeaae71822beb v: v3 --- [refs] | 2 +- trunk/drivers/net/igb/igb_main.c | 13 ++++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 953a3d71aa1e..c3968fa9791e 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 6e06cb626229567629e1dc6eed9399bec549f3cf +refs/heads/master: fa4a7ef36ec834fee1719636b30d2f28f4cb0166 diff --git a/trunk/drivers/net/igb/igb_main.c b/trunk/drivers/net/igb/igb_main.c index 7c4481b994ab..39ac375487d6 100644 --- a/trunk/drivers/net/igb/igb_main.c +++ b/trunk/drivers/net/igb/igb_main.c @@ -3008,7 +3008,18 @@ static inline bool igb_tx_csum_adv(struct igb_adapter *adapter, tu_cmd |= (E1000_TXD_CMD_DEXT | E1000_ADVTXD_DTYP_CTXT); if (skb->ip_summed == CHECKSUM_PARTIAL) { - switch (skb->protocol) { + __be16 protocol; + + if (skb->protocol == cpu_to_be16(ETH_P_8021Q)) { + const struct vlan_ethhdr *vhdr = + (const struct vlan_ethhdr*)skb->data; + + protocol = vhdr->h_vlan_encapsulated_proto; + } else { + protocol = skb->protocol; + } + + switch (protocol) { case cpu_to_be16(ETH_P_IP): tu_cmd |= E1000_ADVTXD_TUCMD_IPV4; if (ip_hdr(skb)->protocol == IPPROTO_TCP)