Commit 3f705f73a0ab345321ef6e5a293c04bf7e9df818
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
- 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
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
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