Merge branch 'skb_cow_head'
authorDavid S. Miller <davem@davemloft.net>
Sat, 29 Mar 2014 21:50:14 +0000 (17:50 -0400)
committerDavid S. Miller <davem@davemloft.net>
Sat, 29 Mar 2014 21:50:14 +0000 (17:50 -0400)
Francois Romieu says:

====================
remove open-coded skb_cow_head.

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

Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/atheros/atl1c/atl1c_main.c
drivers/net/ethernet/atheros/atl1e/atl1e_main.c
drivers/net/ethernet/atheros/atlx/atl1.c
drivers/net/ethernet/broadcom/tg3.c
drivers/net/ethernet/brocade/bna/bnad.c
drivers/net/ethernet/jme.c
drivers/net/ethernet/qlogic/qlge/qlge_main.c
drivers/net/wimax/i2400m/netdev.c

index 31f2623..e11bf18 100644 (file)
@@ -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) {
index 422aab2..4345332 100644 (file)
@@ -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) {
index 287272d..dfd0e91 100644 (file)
@@ -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,
index 1ac461a..22586e9 100644 (file)
@@ -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);
index a881e98..675550f 100644 (file)
@@ -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;
        }
 
        /*
index 14ff8d6..b0c6050 100644 (file)
@@ -2053,19 +2053,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)
 {
@@ -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;
        }
index adf87d2..5b63405 100644 (file)
@@ -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;
index 4889613..a9970f1 100644 (file)
@@ -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)