aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/igb/igb_main.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/igb/igb_main.c')
-rw-r--r--drivers/net/igb/igb_main.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/net/igb/igb_main.c b/drivers/net/igb/igb_main.c
index 7c4481b994a..39ac375487d 100644
--- a/drivers/net/igb/igb_main.c
+++ b/drivers/net/igb/igb_main.c
@@ -3008,7 +3008,18 @@ static inline bool igb_tx_csum_adv(struct igb_adapter *adapter,
3008 tu_cmd |= (E1000_TXD_CMD_DEXT | E1000_ADVTXD_DTYP_CTXT); 3008 tu_cmd |= (E1000_TXD_CMD_DEXT | E1000_ADVTXD_DTYP_CTXT);
3009 3009
3010 if (skb->ip_summed == CHECKSUM_PARTIAL) { 3010 if (skb->ip_summed == CHECKSUM_PARTIAL) {
3011 switch (skb->protocol) { 3011 __be16 protocol;
3012
3013 if (skb->protocol == cpu_to_be16(ETH_P_8021Q)) {
3014 const struct vlan_ethhdr *vhdr =
3015 (const struct vlan_ethhdr*)skb->data;
3016
3017 protocol = vhdr->h_vlan_encapsulated_proto;
3018 } else {
3019 protocol = skb->protocol;
3020 }
3021
3022 switch (protocol) {
3012 case cpu_to_be16(ETH_P_IP): 3023 case cpu_to_be16(ETH_P_IP):
3013 tu_cmd |= E1000_ADVTXD_TUCMD_IPV4; 3024 tu_cmd |= E1000_ADVTXD_TUCMD_IPV4;
3014 if (ip_hdr(skb)->protocol == IPPROTO_TCP) 3025 if (ip_hdr(skb)->protocol == IPPROTO_TCP)