|
@@ -2839,6 +2839,7 @@ static int ixgbevf_tso(struct ixgbevf_ring *tx_ring,
|
|
struct sk_buff *skb = first->skb;
|
|
struct sk_buff *skb = first->skb;
|
|
u32 vlan_macip_lens, type_tucmd;
|
|
u32 vlan_macip_lens, type_tucmd;
|
|
u32 mss_l4len_idx, l4len;
|
|
u32 mss_l4len_idx, l4len;
|
|
|
|
+ int err;
|
|
|
|
|
|
if (skb->ip_summed != CHECKSUM_PARTIAL)
|
|
if (skb->ip_summed != CHECKSUM_PARTIAL)
|
|
return 0;
|
|
return 0;
|
|
@@ -2846,11 +2847,9 @@ static int ixgbevf_tso(struct ixgbevf_ring *tx_ring,
|
|
if (!skb_is_gso(skb))
|
|
if (!skb_is_gso(skb))
|
|
return 0;
|
|
return 0;
|
|
|
|
|
|
- if (skb_header_cloned(skb)) {
|
|
|
|
- int err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC);
|
|
|
|
- if (err)
|
|
|
|
- return err;
|
|
|
|
- }
|
|
|
|
|
|
+ err = skb_cow_head(skb, 0);
|
|
|
|
+ if (err < 0)
|
|
|
|
+ return err;
|
|
|
|
|
|
/* ADV DTYP TUCMD MKRLOC/ISCSIHEDLEN */
|
|
/* ADV DTYP TUCMD MKRLOC/ISCSIHEDLEN */
|
|
type_tucmd = IXGBE_ADVTXD_TUCMD_L4T_TCP;
|
|
type_tucmd = IXGBE_ADVTXD_TUCMD_L4T_TCP;
|