diff options
| -rw-r--r-- | drivers/net/ethernet/emulex/benet/be_main.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c index 26e222f81433..1140a86ff5ea 100644 --- a/drivers/net/ethernet/emulex/benet/be_main.c +++ b/drivers/net/ethernet/emulex/benet/be_main.c | |||
| @@ -860,10 +860,12 @@ static struct sk_buff *be_xmit_workarounds(struct be_adapter *adapter, | |||
| 860 | 860 | ||
| 861 | /* For padded packets, BE HW modifies tot_len field in IP header | 861 | /* For padded packets, BE HW modifies tot_len field in IP header |
| 862 | * incorrecly when VLAN tag is inserted by HW. | 862 | * incorrecly when VLAN tag is inserted by HW. |
| 863 | * For padded packets, Lancer computes incorrect checksum. | ||
| 863 | */ | 864 | */ |
| 864 | eth_hdr_len = ntohs(skb->protocol) == ETH_P_8021Q ? | 865 | eth_hdr_len = ntohs(skb->protocol) == ETH_P_8021Q ? |
| 865 | VLAN_ETH_HLEN : ETH_HLEN; | 866 | VLAN_ETH_HLEN : ETH_HLEN; |
| 866 | if (skb->len <= 60 && vlan_tx_tag_present(skb) && | 867 | if (skb->len <= 60 && |
| 868 | (lancer_chip(adapter) || vlan_tx_tag_present(skb)) && | ||
| 867 | is_ipv4_pkt(skb)) { | 869 | is_ipv4_pkt(skb)) { |
| 868 | ip = (struct iphdr *)ip_hdr(skb); | 870 | ip = (struct iphdr *)ip_hdr(skb); |
| 869 | pskb_trim(skb, eth_hdr_len + ntohs(ip->tot_len)); | 871 | pskb_trim(skb, eth_hdr_len + ntohs(ip->tot_len)); |
