Commit 3f705f73a0ab345321ef6e5a293c04bf7e9df818

Authored by David S. Miller

Merge branch 'skb_cow_head'

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>

Showing 8 changed files Side-by-side Diff

drivers/net/ethernet/atheros/atl1c/atl1c_main.c
... ... @@ -1973,17 +1973,17 @@
1973 1973 enum atl1c_trans_queue type)
1974 1974 {
1975 1975 struct pci_dev *pdev = adapter->pdev;
  1976 + unsigned short offload_type;
1976 1977 u8 hdr_len;
1977 1978 u32 real_len;
1978   - unsigned short offload_type;
1979   - int err;
1980 1979  
1981 1980 if (skb_is_gso(skb)) {
1982   - if (skb_header_cloned(skb)) {
1983   - err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC);
1984   - if (unlikely(err))
1985   - return -1;
1986   - }
  1981 + int err;
  1982 +
  1983 + err = skb_cow_head(skb, 0);
  1984 + if (err < 0)
  1985 + return err;
  1986 +
1987 1987 offload_type = skb_shinfo(skb)->gso_type;
1988 1988  
1989 1989 if (offload_type & SKB_GSO_TCPV4) {
drivers/net/ethernet/atheros/atl1e/atl1e_main.c
... ... @@ -1641,17 +1641,17 @@
1641 1641 static int atl1e_tso_csum(struct atl1e_adapter *adapter,
1642 1642 struct sk_buff *skb, struct atl1e_tpd_desc *tpd)
1643 1643 {
  1644 + unsigned short offload_type;
1644 1645 u8 hdr_len;
1645 1646 u32 real_len;
1646   - unsigned short offload_type;
1647   - int err;
1648 1647  
1649 1648 if (skb_is_gso(skb)) {
1650   - if (skb_header_cloned(skb)) {
1651   - err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC);
1652   - if (unlikely(err))
1653   - return -1;
1654   - }
  1649 + int err;
  1650 +
  1651 + err = skb_cow_head(skb, 0);
  1652 + if (err < 0)
  1653 + return err;
  1654 +
1655 1655 offload_type = skb_shinfo(skb)->gso_type;
1656 1656  
1657 1657 if (offload_type & SKB_GSO_TCPV4) {
drivers/net/ethernet/atheros/atlx/atl1.c
... ... @@ -2118,19 +2118,18 @@
2118 2118 }
2119 2119  
2120 2120 static int atl1_tso(struct atl1_adapter *adapter, struct sk_buff *skb,
2121   - struct tx_packet_desc *ptpd)
  2121 + struct tx_packet_desc *ptpd)
2122 2122 {
2123 2123 u8 hdr_len, ip_off;
2124 2124 u32 real_len;
2125   - int err;
2126 2125  
2127 2126 if (skb_shinfo(skb)->gso_size) {
2128   - if (skb_header_cloned(skb)) {
2129   - err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC);
2130   - if (unlikely(err))
2131   - return -1;
2132   - }
  2127 + int err;
2133 2128  
  2129 + err = skb_cow_head(skb, 0);
  2130 + if (err < 0)
  2131 + return err;
  2132 +
2134 2133 if (skb->protocol == htons(ETH_P_IP)) {
2135 2134 struct iphdr *iph = ip_hdr(skb);
2136 2135  
... ... @@ -2175,7 +2174,7 @@
2175 2174 return 3;
2176 2175 }
2177 2176 }
2178   - return false;
  2177 + return 0;
2179 2178 }
2180 2179  
2181 2180 static int atl1_tx_csum(struct atl1_adapter *adapter, struct sk_buff *skb,
drivers/net/ethernet/broadcom/tg3.c
... ... @@ -7918,8 +7918,7 @@
7918 7918 struct iphdr *iph;
7919 7919 u32 tcp_opt_len, hdr_len;
7920 7920  
7921   - if (skb_header_cloned(skb) &&
7922   - pskb_expand_head(skb, 0, 0, GFP_ATOMIC))
  7921 + if (skb_cow_head(skb, 0))
7923 7922 goto drop;
7924 7923  
7925 7924 iph = ip_hdr(skb);
drivers/net/ethernet/brocade/bna/bnad.c
... ... @@ -2496,12 +2496,10 @@
2496 2496 {
2497 2497 int err;
2498 2498  
2499   - if (skb_header_cloned(skb)) {
2500   - err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC);
2501   - if (err) {
2502   - BNAD_UPDATE_CTR(bnad, tso_err);
2503   - return err;
2504   - }
  2499 + err = skb_cow_head(skb, 0);
  2500 + if (err < 0) {
  2501 + BNAD_UPDATE_CTR(bnad, tso_err);
  2502 + return err;
2505 2503 }
2506 2504  
2507 2505 /*
drivers/net/ethernet/jme.c
... ... @@ -2054,19 +2054,6 @@
2054 2054 }
2055 2055  
2056 2056 static int
2057   -jme_expand_header(struct jme_adapter *jme, struct sk_buff *skb)
2058   -{
2059   - if (unlikely(skb_shinfo(skb)->gso_size &&
2060   - skb_header_cloned(skb) &&
2061   - pskb_expand_head(skb, 0, 0, GFP_ATOMIC))) {
2062   - dev_kfree_skb_any(skb);
2063   - return -1;
2064   - }
2065   -
2066   - return 0;
2067   -}
2068   -
2069   -static int
2070 2057 jme_tx_tso(struct sk_buff *skb, __le16 *mss, u8 *flags)
2071 2058 {
2072 2059 *mss = cpu_to_le16(skb_shinfo(skb)->gso_size << TXDESC_MSS_SHIFT);
... ... @@ -2225,7 +2212,8 @@
2225 2212 struct jme_adapter *jme = netdev_priv(netdev);
2226 2213 int idx;
2227 2214  
2228   - if (unlikely(jme_expand_header(jme, skb))) {
  2215 + if (unlikely(skb_is_gso(skb) && skb_cow_head(skb, 0))) {
  2216 + dev_kfree_skb_any(skb);
2229 2217 ++(NET_STAT(jme).tx_dropped);
2230 2218 return NETDEV_TX_OK;
2231 2219 }
drivers/net/ethernet/qlogic/qlge/qlge_main.c
... ... @@ -2556,11 +2556,10 @@
2556 2556  
2557 2557 if (skb_is_gso(skb)) {
2558 2558 int err;
2559   - if (skb_header_cloned(skb)) {
2560   - err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC);
2561   - if (err)
2562   - return err;
2563   - }
  2559 +
  2560 + err = skb_cow_head(skb, 0);
  2561 + if (err < 0)
  2562 + return err;
2564 2563  
2565 2564 mac_iocb_ptr->opcode = OPCODE_OB_MAC_TSO_IOCB;
2566 2565 mac_iocb_ptr->flags3 |= OB_MAC_TSO_IOCB_IC;
drivers/net/wimax/i2400m/netdev.c
... ... @@ -374,8 +374,7 @@
374 374  
375 375 d_fnstart(3, dev, "(skb %p net_dev %p)\n", skb, net_dev);
376 376  
377   - if (skb_header_cloned(skb) &&
378   - pskb_expand_head(skb, 0, 0, GFP_ATOMIC))
  377 + if (skb_cow_head(skb, 0))
379 378 goto drop;
380 379  
381 380 if (i2400m->state == I2400M_SS_IDLE)