|
@@ -3424,14 +3424,13 @@ static int e1000_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
|
|
|
unsigned int max_per_txd = E1000_MAX_PER_TXD;
|
|
|
unsigned int max_txd_pwr = E1000_MAX_TXD_PWR;
|
|
|
unsigned int tx_flags = 0;
|
|
|
- unsigned int len = skb->len;
|
|
|
+ unsigned int len = skb->len - skb->data_len;
|
|
|
unsigned long irq_flags;
|
|
|
- unsigned int nr_frags = 0;
|
|
|
- unsigned int mss = 0;
|
|
|
+ unsigned int nr_frags;
|
|
|
+ unsigned int mss;
|
|
|
int count = 0;
|
|
|
int tso;
|
|
|
unsigned int f;
|
|
|
- len -= skb->data_len;
|
|
|
|
|
|
if (test_bit(__E1000_DOWN, &adapter->state)) {
|
|
|
dev_kfree_skb_any(skb);
|
|
@@ -3459,7 +3458,7 @@ static int e1000_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
|
|
|
* points to just header, pull a few bytes of payload from
|
|
|
* frags into skb->data */
|
|
|
hdr_len = skb_transport_offset(skb) + tcp_hdrlen(skb);
|
|
|
- if (skb->data_len && (hdr_len == (skb->len - skb->data_len))) {
|
|
|
+ if (skb->data_len && (hdr_len == len)) {
|
|
|
unsigned int pull_size;
|
|
|
|
|
|
pull_size = min((unsigned int)4, skb->data_len);
|