aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/jme.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/ethernet/jme.c')
-rw-r--r--drivers/net/ethernet/jme.c16
1 files changed, 2 insertions, 14 deletions
diff --git a/drivers/net/ethernet/jme.c b/drivers/net/ethernet/jme.c
index f5685c0d0579..b0c6050479eb 100644
--- a/drivers/net/ethernet/jme.c
+++ b/drivers/net/ethernet/jme.c
@@ -2054,19 +2054,6 @@ jme_map_tx_skb(struct jme_adapter *jme, struct sk_buff *skb, int idx)
2054} 2054}
2055 2055
2056static int 2056static int
2057jme_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(skb);
2063 return -1;
2064 }
2065
2066 return 0;
2067}
2068
2069static int
2070jme_tx_tso(struct sk_buff *skb, __le16 *mss, u8 *flags) 2057jme_tx_tso(struct sk_buff *skb, __le16 *mss, u8 *flags)
2071{ 2058{
2072 *mss = cpu_to_le16(skb_shinfo(skb)->gso_size << TXDESC_MSS_SHIFT); 2059 *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)
2225 struct jme_adapter *jme = netdev_priv(netdev); 2212 struct jme_adapter *jme = netdev_priv(netdev);
2226 int idx; 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 ++(NET_STAT(jme).tx_dropped); 2217 ++(NET_STAT(jme).tx_dropped);
2230 return NETDEV_TX_OK; 2218 return NETDEV_TX_OK;
2231 } 2219 }