Skip to contentSkip to conversation

remove open-coded skb_cow_head.

PATCH In review Francois Romieu 4 participants 30 messages Mar 29, 2014 1 message not in the archive

Subsystems (7)
lore
Share & tools
lore
#0 lore raw

cover remove open-coded skb_cow_head.

As per http://marc.info/?l=linux-netdev&m=139440579104701.

Francois Romieu (17):
atl1: remove open-coded skb_cow_head.
atl1c: remove open-coded skb_cow_head.
atl1e: remove open-coded skb_cow_head.
igb: remove open-coded skb_cow_head.
ixgb: remove open-coded skb_cow_head.
ixgbvf: remove open-coded skb_cow_head.
ixgbe: remove open-coded skb_cow_head.
ixgbevf: remove open-coded skb_cow_head.
e1000: remove open-coded skb_cow_head.
e1000e: remove open-coded skb_cow_head.
i40e: remove open-coded skb_cow_head.
i40evf: remove open-coded skb_cow_head.
jme: remove open-coded skb_cow_head.
qlge: remove open-coded skb_cow_head.
bna: remove open-coded skb_cow_head.
tg3: remove open-coded skb_cow_head.
wimax/i2400m: remove open-coded skb_cow_head.

 drivers/net/ethernet/atheros/atl1c/atl1c_main.c   | 14 +++++++-------
 drivers/net/ethernet/atheros/atl1e/atl1e_main.c   | 14 +++++++-------
 drivers/net/ethernet/atheros/atlx/atl1.c          | 15 +++++++--------
 drivers/net/ethernet/broadcom/tg3.c               |  3 +--
 drivers/net/ethernet/brocade/bna/bnad.c           | 10 ++++------
 drivers/net/ethernet/intel/e1000/e1000_main.c     | 11 +++++------
 drivers/net/ethernet/intel/e1000e/netdev.c        | 10 ++++------
 drivers/net/ethernet/intel/i40e/i40e_txrx.c       | 18 +++++++++---------
 drivers/net/ethernet/intel/i40evf/i40e_txrx.c     | 10 ++++------
 drivers/net/ethernet/intel/igb/igb_main.c         |  9 ++++-----
 drivers/net/ethernet/intel/igbvf/netdev.c         | 16 +++++++---------
 drivers/net/ethernet/intel/ixgb/ixgb_main.c       |  9 ++++-----
 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c     | 13 ++++++-------
 drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c |  9 ++++-----
 drivers/net/ethernet/jme.c                        | 16 ++--------------
 drivers/net/ethernet/qlogic/qlge/qlge_main.c      |  9 ++++-----
 drivers/net/wimax/i2400m/netdev.c                 |  3 +--
 17 files changed, 80 insertions(+), 109 deletions(-)
Signature · 1 line
1.9.0
#1 lore raw

PATCH 1/17 atl1: remove open-coded skb_cow_head.

Cc Chris Snook <[email protected]>
Cc Jay Cliburn <[email protected]>
---
 drivers/net/ethernet/atheros/atlx/atl1.c | 15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)
drivers/net/ethernet/atheros/atlx/atl1.c +7 -8
index 287272d..dfd0e91 100644
@@ -2118,18 +2118,17 @@ static u16 atl1_tpd_avail(struct atl1_tpd_ring *tpd_ring)
 }
 
 static int atl1_tso(struct atl1_adapter *adapter, struct sk_buff *skb,
-	struct tx_packet_desc *ptpd)
+		    struct tx_packet_desc *ptpd)
 {
 	u8 hdr_len, ip_off;
 	u32 real_len;
-	int err;
 
 	if (skb_shinfo(skb)->gso_size) {
-		if (skb_header_cloned(skb)) {
-			err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC);
-			if (unlikely(err))
-				return -1;
-		}
+		int err;
+
+		err = skb_cow_head(skb, 0);
+		if (err < 0)
+			return err;
 
 		if (skb->protocol == htons(ETH_P_IP)) {
 			struct iphdr *iph = ip_hdr(skb);
@@ -2175,7 +2174,7 @@ static int atl1_tso(struct atl1_adapter *adapter, struct sk_buff *skb,
 			return 3;
 		}
 	}
-	return false;
+	return 0;
 }
 
 static int atl1_tx_csum(struct atl1_adapter *adapter, struct sk_buff *skb,
Signature · 1 line
1.9.0
#2 lore raw

PATCH 2/17 atl1c: remove open-coded skb_cow_head.

In reply to Francois Romieu
Cc Jay Cliburn <[email protected]>
Cc Chris Snook <[email protected]>
---
 drivers/net/ethernet/atheros/atl1c/atl1c_main.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)
drivers/net/ethernet/atheros/atl1c/atl1c_main.c +7 -7
index 31f2623..e11bf18 100644
@@ -1973,17 +1973,17 @@ static int atl1c_tso_csum(struct atl1c_adapter *adapter,
 			  enum atl1c_trans_queue type)
 {
 	struct pci_dev *pdev = adapter->pdev;
+	unsigned short offload_type;
 	u8 hdr_len;
 	u32 real_len;
-	unsigned short offload_type;
-	int err;
 
 	if (skb_is_gso(skb)) {
-		if (skb_header_cloned(skb)) {
-			err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC);
-			if (unlikely(err))
-				return -1;
-		}
+		int err;
+
+		err = skb_cow_head(skb, 0);
+		if (err < 0)
+			return err;
+
 		offload_type = skb_shinfo(skb)->gso_type;
 
 		if (offload_type & SKB_GSO_TCPV4) {
Signature · 1 line
1.9.0
#3 lore raw

PATCH 3/17 atl1e: remove open-coded skb_cow_head.

In reply to Francois Romieu
Cc Chris Snook <[email protected]>
Cc Jay Cliburn <[email protected]>
---
 drivers/net/ethernet/atheros/atl1e/atl1e_main.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)
drivers/net/ethernet/atheros/atl1e/atl1e_main.c +7 -7
index 422aab2..4345332 100644
@@ -1641,17 +1641,17 @@ static u16 atl1e_cal_tdp_req(const struct sk_buff *skb)
 static int atl1e_tso_csum(struct atl1e_adapter *adapter,
 		       struct sk_buff *skb, struct atl1e_tpd_desc *tpd)
 {
+	unsigned short offload_type;
 	u8 hdr_len;
 	u32 real_len;
-	unsigned short offload_type;
-	int err;
 
 	if (skb_is_gso(skb)) {
-		if (skb_header_cloned(skb)) {
-			err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC);
-			if (unlikely(err))
-				return -1;
-		}
+		int err;
+
+		err = skb_cow_head(skb, 0);
+		if (err < 0)
+			return err;
+
 		offload_type = skb_shinfo(skb)->gso_type;
 
 		if (offload_type & SKB_GSO_TCPV4) {
Signature · 1 line
1.9.0
#4 lore raw

PATCH 4/17 igb: remove open-coded skb_cow_head.

In reply to Francois Romieu
Cc Jesse Brandeburg <[email protected]>
Cc Jeff Kirsher <[email protected]>
---
 drivers/net/ethernet/intel/igb/igb_main.c | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)
drivers/net/ethernet/intel/igb/igb_main.c +4 -5
index 55fc559..6608b11 100644
@@ -4605,6 +4605,7 @@ static int igb_tso(struct igb_ring *tx_ring,
 	struct sk_buff *skb = first->skb;
 	u32 vlan_macip_lens, type_tucmd;
 	u32 mss_l4len_idx, l4len;
+	int err;
 
 	if (skb->ip_summed != CHECKSUM_PARTIAL)
 		return 0;
@@ -4612,11 +4613,9 @@ static int igb_tso(struct igb_ring *tx_ring,
 	if (!skb_is_gso(skb))
 		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 */
 	type_tucmd = E1000_ADVTXD_TUCMD_L4T_TCP;
Signature · 1 line
1.9.0
#6 lore raw

PATCH 5/17 ixgb: remove open-coded skb_cow_head.

In reply to Francois Romieu
Cc Jesse Brandeburg <[email protected]>
Cc Jeff Kirsher <[email protected]>
---
 drivers/net/ethernet/intel/ixgb/ixgb_main.c | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)
drivers/net/ethernet/intel/ixgb/ixgb_main.c +4 -5
index f42c201..de2ca4a 100644
@@ -1225,12 +1225,11 @@ ixgb_tso(struct ixgb_adapter *adapter, struct sk_buff *skb)
 	if (likely(skb_is_gso(skb))) {
 		struct ixgb_buffer *buffer_info;
 		struct iphdr *iph;
+		int err;
 
-		if (skb_header_cloned(skb)) {
-			err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC);
-			if (err)
-				return err;
-		}
+		err = skb_cow_head(skb, 0);
+		if (err < 0)
+			return err;
 
 		hdr_len = skb_transport_offset(skb) + tcp_hdrlen(skb);
 		mss = skb_shinfo(skb)->gso_size;
Signature · 1 line
1.9.0

A message that is not in the archive (sent off-list or not yet received): 1396097224.3122.1.camel@joe-AO722

#8 lore raw

Re: [PATCH net-next 05/17] ixgb: remove open-coded skb_cow_head.

Quoted 16 lines · Joe Perches
Quoted 4 lines · Francois Romieu

struct ixgb_adapter *adapter, struct sk_buff *skb)

        if (likely(skb_is_gso(skb))) {
                struct ixgb_buffer *buffer_info;
                struct iphdr *iph;

drivers/net/ethernet/intel/ixgb/ixgb_main.c ixgb_tso(struct ixgb_adapter *adapter, struct sk_buff *skb)

Quoted 10 lines
drivers/net/ethernet/intel/ixgb/ixgb_main.c +4 -5
+               int err;
 
-               if (skb_header_cloned(skb)) {
-                       err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC);
-                       if (err)
-                               return err;
-               }
+               err = skb_cow_head(skb, 0);
+               if (err < 0)
+                       return err
Quoted 3 lines

It seems in many instances you're adding
an unnecessary declaration of err that
shadows an already declared err

I take back the many. This seems to be the only one.

#10 lore raw

PATCH 6/17 ixgbvf: remove open-coded skb_cow_head.

In reply to Francois Romieu
Cc Jesse Brandeburg <[email protected]>
Cc Jeff Kirsher <[email protected]>
---
 drivers/net/ethernet/intel/igbvf/netdev.c | 16 +++++++---------
 1 file changed, 7 insertions(+), 9 deletions(-)
drivers/net/ethernet/intel/igbvf/netdev.c +7 -9
index b7ab03a..d608599 100644
@@ -1910,20 +1910,18 @@ static int igbvf_tso(struct igbvf_adapter *adapter,
                      struct sk_buff *skb, u32 tx_flags, u8 *hdr_len)
 {
 	struct e1000_adv_tx_context_desc *context_desc;
-	unsigned int i;
-	int err;
 	struct igbvf_buffer *buffer_info;
 	u32 info = 0, tu_cmd = 0;
 	u32 mss_l4len_idx, l4len;
+	unsigned int i;
+	int err;
+
 	*hdr_len = 0;
 
-	if (skb_header_cloned(skb)) {
-		err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC);
-		if (err) {
-			dev_err(&adapter->pdev->dev,
-			        "igbvf_tso returning an error\n");
-			return err;
-		}
+	err = skb_cow_head(skb, 0);
+	if (err < 0) {
+		dev_err(&adapter->pdev->dev, "igbvf_tso returning an error\n");
+		return err;
 	}
 
 	l4len = tcp_hdrlen(skb);
Signature · 1 line
1.9.0
#12 lore raw

Re: [PATCH net-next 06/17] ixgbvf: remove open-coded skb_cow_head.

In reply to Francois Romieu
Quoted 6 lines · Francois Romieu
Cc Jesse Brandeburg <[email protected]>
Cc Jeff Kirsher <[email protected]>
---
 drivers/net/ethernet/intel/igbvf/netdev.c | 16 +++++++---------
 1 file changed, 7 insertions(+), 9 deletions(-)

Just noticed the title should be "igbvf: ..." since there is no ixgbvf. Francois, I have fixed up this patch in my queue.

#13 lore raw

PATCH 7/17 ixgbe: remove open-coded skb_cow_head.

In reply to Francois Romieu
Cc Jesse Brandeburg <[email protected]>
Cc Jeff Kirsher <[email protected]>
---
 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +6 -7
index 9e5a366..878b226 100644
@@ -6506,6 +6506,7 @@ static int ixgbe_tso(struct ixgbe_ring *tx_ring,
 	struct sk_buff *skb = first->skb;
 	u32 vlan_macip_lens, type_tucmd;
 	u32 mss_l4len_idx, l4len;
+	int err;
 
 	if (skb->ip_summed != CHECKSUM_PARTIAL)
 		return 0;
@@ -6513,11 +6514,9 @@ static int ixgbe_tso(struct ixgbe_ring *tx_ring,
 	if (!skb_is_gso(skb))
 		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 */
 	type_tucmd = IXGBE_ADVTXD_TUCMD_L4T_TCP;
@@ -7072,8 +7071,8 @@ netdev_tx_t ixgbe_xmit_frame_ring(struct sk_buff *skb,
 					IXGBE_TX_FLAGS_VLAN_PRIO_SHIFT;
 		if (tx_flags & IXGBE_TX_FLAGS_SW_VLAN) {
 			struct vlan_ethhdr *vhdr;
-			if (skb_header_cloned(skb) &&
-			    pskb_expand_head(skb, 0, 0, GFP_ATOMIC))
+
+			if (skb_cow_head(skb, 0))
 				goto out_drop;
 			vhdr = (struct vlan_ethhdr *)skb->data;
 			vhdr->h_vlan_TCI = htons(tx_flags >>
Signature · 1 line
1.9.0
#15 lore raw

PATCH 8/17 ixgbevf: remove open-coded skb_cow_head.

In reply to Francois Romieu
Cc Jesse Brandeburg <[email protected]>
Cc Jeff Kirsher <[email protected]>
---
 drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)
drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c +4 -5
index a50e892..da6d2ff 100644
@@ -2838,6 +2838,7 @@ static int ixgbevf_tso(struct ixgbevf_ring *tx_ring,
 	struct sk_buff *skb = first->skb;
 	u32 vlan_macip_lens, type_tucmd;
 	u32 mss_l4len_idx, l4len;
+	int err;
 
 	if (skb->ip_summed != CHECKSUM_PARTIAL)
 		return 0;
@@ -2845,11 +2846,9 @@ static int ixgbevf_tso(struct ixgbevf_ring *tx_ring,
 	if (!skb_is_gso(skb))
 		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 */
 	type_tucmd = IXGBE_ADVTXD_TUCMD_L4T_TCP;
Signature · 1 line
1.9.0
#17 lore raw

PATCH 9/17 e1000: remove open-coded skb_cow_head.

In reply to Francois Romieu
Cc Jesse Brandeburg <[email protected]>
Cc Jeff Kirsher <[email protected]>
---
 drivers/net/ethernet/intel/e1000/e1000_main.c | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)
drivers/net/ethernet/intel/e1000/e1000_main.c +5 -6
index 46e6544..27058df 100644
@@ -2682,14 +2682,13 @@ static int e1000_tso(struct e1000_adapter *adapter,
 	u32 cmd_length = 0;
 	u16 ipcse = 0, tucse, mss;
 	u8 ipcss, ipcso, tucss, tucso, hdr_len;
-	int err;
 
 	if (skb_is_gso(skb)) {
-		if (skb_header_cloned(skb)) {
-			err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC);
-			if (err)
-				return err;
-		}
+		int err;
+
+		err = skb_cow_head(skb, 0);
+		if (err < 0)
+			return err;
 
 		hdr_len = skb_transport_offset(skb) + tcp_hdrlen(skb);
 		mss = skb_shinfo(skb)->gso_size;
Signature · 1 line
1.9.0
#19 lore raw

PATCH 10/17 e1000e: remove open-coded skb_cow_head.

In reply to Francois Romieu
Cc Jesse Brandeburg <[email protected]>
Cc Jeff Kirsher <[email protected]>
---
 drivers/net/ethernet/intel/e1000e/netdev.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)
drivers/net/ethernet/intel/e1000e/netdev.c +4 -6
index f1cce59..48c7a1d 100644
@@ -5090,16 +5090,14 @@ static int e1000_tso(struct e1000_ring *tx_ring, struct sk_buff *skb)
 	u32 cmd_length = 0;
 	u16 ipcse = 0, mss;
 	u8 ipcss, ipcso, tucss, tucso, hdr_len;
+	int err;
 
 	if (!skb_is_gso(skb))
 		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;
 
 	hdr_len = skb_transport_offset(skb) + tcp_hdrlen(skb);
 	mss = skb_shinfo(skb)->gso_size;
Signature · 1 line
1.9.0
#21 lore raw

PATCH 11/17 i40e: remove open-coded skb_cow_head.

In reply to Francois Romieu
Cc Jesse Brandeburg <[email protected]>
Cc Jeff Kirsher <[email protected]>
---
 drivers/net/ethernet/intel/i40e/i40e_txrx.c | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)
drivers/net/ethernet/intel/i40e/i40e_txrx.c +9 -9
index a329aac..75bd010 100644
@@ -1713,9 +1713,11 @@ static int i40e_tx_prepare_vlan_flags(struct sk_buff *skb,
 				I40E_TX_FLAGS_VLAN_PRIO_SHIFT;
 		if (tx_flags & I40E_TX_FLAGS_SW_VLAN) {
 			struct vlan_ethhdr *vhdr;
-			if (skb_header_cloned(skb) &&
-			    pskb_expand_head(skb, 0, 0, GFP_ATOMIC))
-				return -ENOMEM;
+			int rc;
+
+			rc = skb_cow_head(skb, 0);
+			if (rc < 0)
+				return rc;
 			vhdr = (struct vlan_ethhdr *)skb->data;
 			vhdr->h_vlan_TCI = htons(tx_flags >>
 						 I40E_TX_FLAGS_VLAN_SHIFT);
@@ -1743,20 +1745,18 @@ static int i40e_tso(struct i40e_ring *tx_ring, struct sk_buff *skb,
 		    u64 *cd_type_cmd_tso_mss, u32 *cd_tunneling)
 {
 	u32 cd_cmd, cd_tso_len, cd_mss;
+	struct ipv6hdr *ipv6h;
 	struct tcphdr *tcph;
 	struct iphdr *iph;
 	u32 l4len;
 	int err;
-	struct ipv6hdr *ipv6h;
 
 	if (!skb_is_gso(skb))
 		return 0;
 
-	if (skb_header_cloned(skb)) {
-		err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC);
-		if (err)
-			return err;
-	}
+	err = skb_cow_head(skb, 0);
+	if (err < 0)
+		return err;
 
 	if (protocol == htons(ETH_P_IP)) {
 		iph = skb->encapsulation ? inner_ip_hdr(skb) : ip_hdr(skb);
Signature · 1 line
1.9.0
#23 lore raw

PATCH 12/17 i40evf: remove open-coded skb_cow_head.

In reply to Francois Romieu
Cc Jesse Brandeburg <[email protected]>
Cc Jeff Kirsher <[email protected]>
---
 drivers/net/ethernet/intel/i40evf/i40e_txrx.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)
drivers/net/ethernet/intel/i40evf/i40e_txrx.c +4 -6
index 53be5f4..b9f50f4 100644
@@ -1114,20 +1114,18 @@ static int i40e_tso(struct i40e_ring *tx_ring, struct sk_buff *skb,
 		    u64 *cd_type_cmd_tso_mss, u32 *cd_tunneling)
 {
 	u32 cd_cmd, cd_tso_len, cd_mss;
+	struct ipv6hdr *ipv6h;
 	struct tcphdr *tcph;
 	struct iphdr *iph;
 	u32 l4len;
 	int err;
-	struct ipv6hdr *ipv6h;
 
 	if (!skb_is_gso(skb))
 		return 0;
 
-	if (skb_header_cloned(skb)) {
-		err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC);
-		if (err)
-			return err;
-	}
+	err = skb_cow_head(skb, 0);
+	if (err < 0)
+		return err;
 
 	if (protocol == htons(ETH_P_IP)) {
 		iph = skb->encapsulation ? inner_ip_hdr(skb) : ip_hdr(skb);
Signature · 1 line
1.9.0
#25 lore raw

PATCH 13/17 jme: remove open-coded skb_cow_head.

In reply to Francois Romieu
---
 drivers/net/ethernet/jme.c | 16 ++--------------
 1 file changed, 2 insertions(+), 14 deletions(-)
drivers/net/ethernet/jme.c +2 -14
index 14ff8d6..b0c6050 100644
@@ -2054,19 +2054,6 @@ jme_map_tx_skb(struct jme_adapter *jme, struct sk_buff *skb, int idx)
 }
 
 static int
-jme_expand_header(struct jme_adapter *jme, struct sk_buff *skb)
-{
-	if (unlikely(skb_shinfo(skb)->gso_size &&
-			skb_header_cloned(skb) &&
-			pskb_expand_head(skb, 0, 0, GFP_ATOMIC))) {
-		dev_kfree_skb_any(skb);
-		return -1;
-	}
-
-	return 0;
-}
-
-static int
 jme_tx_tso(struct sk_buff *skb, __le16 *mss, u8 *flags)
 {
 	*mss = cpu_to_le16(skb_shinfo(skb)->gso_size << TXDESC_MSS_SHIFT);
@@ -2225,7 +2212,8 @@ jme_start_xmit(struct sk_buff *skb, struct net_device *netdev)
 	struct jme_adapter *jme = netdev_priv(netdev);
 	int idx;
 
-	if (unlikely(jme_expand_header(jme, skb))) {
+	if (unlikely(skb_is_gso(skb) && skb_cow_head(skb, 0))) {
+		dev_kfree_skb_any(skb);
 		++(NET_STAT(jme).tx_dropped);
 		return NETDEV_TX_OK;
 	}
Signature · 1 line
1.9.0
#26 lore raw

PATCH 14/17 qlge: remove open-coded skb_cow_head.

In reply to Francois Romieu
Cc Jitendra Kalsaria <[email protected]>
Cc Shahed Shaikh <[email protected]>
Cc Ron Mercer <[email protected]>
---
 drivers/net/ethernet/qlogic/qlge/qlge_main.c | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)
drivers/net/ethernet/qlogic/qlge/qlge_main.c +4 -5
index adf87d2..5b63405 100644
@@ -2556,11 +2556,10 @@ static int ql_tso(struct sk_buff *skb, struct ob_mac_tso_iocb_req *mac_iocb_ptr)
 
 	if (skb_is_gso(skb)) {
 		int err;
-		if (skb_header_cloned(skb)) {
-			err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC);
-			if (err)
-				return err;
-		}
+
+		err = skb_cow_head(skb, 0);
+		if (err < 0)
+			return err;
 
 		mac_iocb_ptr->opcode = OPCODE_OB_MAC_TSO_IOCB;
 		mac_iocb_ptr->flags3 |= OB_MAC_TSO_IOCB_IC;
Signature · 1 line
1.9.0
#27 lore raw

PATCH 15/17 bna: remove open-coded skb_cow_head.

In reply to Francois Romieu
---
 drivers/net/ethernet/brocade/bna/bnad.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)
drivers/net/ethernet/brocade/bna/bnad.c +4 -6
index a881e98..675550f 100644
@@ -2496,12 +2496,10 @@ bnad_tso_prepare(struct bnad *bnad, struct sk_buff *skb)
 {
 	int err;
 
-	if (skb_header_cloned(skb)) {
-		err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC);
-		if (err) {
-			BNAD_UPDATE_CTR(bnad, tso_err);
-			return err;
-		}
+	err = skb_cow_head(skb, 0);
+	if (err < 0) {
+		BNAD_UPDATE_CTR(bnad, tso_err);
+		return err;
 	}
 
 	/*
Signature · 1 line
1.9.0
#28 lore raw

PATCH 16/17 tg3: remove open-coded skb_cow_head.

In reply to Francois Romieu
Cc Nithin Nayak Sujir <[email protected]>
Cc Michael Chan <[email protected]>
---
 drivers/net/ethernet/broadcom/tg3.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
drivers/net/ethernet/broadcom/tg3.c +1 -2
index 1ac461a..22586e9 100644
@@ -7918,8 +7918,7 @@ static netdev_tx_t tg3_start_xmit(struct sk_buff *skb, struct net_device *dev)
 		struct iphdr *iph;
 		u32 tcp_opt_len, hdr_len;
 
-		if (skb_header_cloned(skb) &&
-		    pskb_expand_head(skb, 0, 0, GFP_ATOMIC))
+		if (skb_cow_head(skb, 0))
 			goto drop;
 
 		iph = ip_hdr(skb);
Signature · 1 line
1.9.0
#29 lore raw

PATCH 17/17 wimax/i2400m: remove open-coded skb_cow_head.

In reply to Francois Romieu
Cc Inaky Perez-Gonzalez <[email protected]>
---
 drivers/net/wimax/i2400m/netdev.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
drivers/net/wimax/i2400m/netdev.c +1 -2
index 4889613..a9970f1 100644
@@ -374,8 +374,7 @@ netdev_tx_t i2400m_hard_start_xmit(struct sk_buff *skb,
 
 	d_fnstart(3, dev, "(skb %p net_dev %p)\n", skb, net_dev);
 
-	if (skb_header_cloned(skb) && 
-	    pskb_expand_head(skb, 0, 0, GFP_ATOMIC))
+	if (skb_cow_head(skb, 0))
 		goto drop;
 
 	if (i2400m->state == I2400M_SS_IDLE)
Signature · 1 line
1.9.0