|
@@ -2834,6 +2834,13 @@ e1000_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
|
|
|
if (skb->data_len && (hdr_len == (skb->len - skb->data_len)) &&
|
|
|
(adapter->hw.mac_type == e1000_82571 ||
|
|
|
adapter->hw.mac_type == e1000_82572)) {
|
|
|
+ unsigned int pull_size;
|
|
|
+ pull_size = min((unsigned int)4, skb->data_len);
|
|
|
+ if (!__pskb_pull_tail(skb, pull_size)) {
|
|
|
+ printk(KERN_ERR "__pskb_pull_tail failed.\n");
|
|
|
+ dev_kfree_skb_any(skb);
|
|
|
+ return -EFAULT;
|
|
|
+ }
|
|
|
len = skb->len - skb->data_len;
|
|
|
}
|
|
|
}
|
|
@@ -2873,14 +2880,6 @@ e1000_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
|
|
|
if(adapter->pcix_82544)
|
|
|
count += nr_frags;
|
|
|
|
|
|
- unsigned int pull_size;
|
|
|
- pull_size = min((unsigned int)4, skb->data_len);
|
|
|
- if (!__pskb_pull_tail(skb, pull_size)) {
|
|
|
- printk(KERN_ERR "__pskb_pull_tail failed.\n");
|
|
|
- dev_kfree_skb_any(skb);
|
|
|
- return -EFAULT;
|
|
|
- }
|
|
|
-
|
|
|
if(adapter->hw.tx_pkt_filtering && (adapter->hw.mac_type == e1000_82573) )
|
|
|
e1000_transfer_dhcp_info(adapter, skb);
|
|
|
|