diff options
author | Eric W. Biederman <ebiederm@xmission.com> | 2014-03-15 19:10:54 -0400 |
---|---|---|
committer | Eric W. Biederman <ebiederm@xmission.com> | 2014-03-25 00:18:56 -0400 |
commit | f5cf76ba620fd48538c13ba9bce8a6876b07c7f6 (patch) | |
tree | d6b9134b932907d73c68294b218bce8e66547d4e /drivers/net/ethernet/calxeda | |
parent | c88b5b6a68da1bc4353521bde95246bbc0f85b5e (diff) |
xgmac: Call dev_kfree/consume_skb_any instead of dev_kfree_skb.
Replace dev_kfree_skb with dev_consume_skb_any in xgmac_tx_complete
that can be called in hard irq and other contexts.
Replace dev_kfree_skb with dev_kfree_skb_any in xgmac_xmit that can
be called in hard irq and other contexts.
dev_consume_skb_any is used in xgamc_tx_complete as skbs that reach
there have been successfully transmitted, dev_kfree_skby_any is used
in xgmac_xmit as skbs that are freed there are being dropped.
Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
Diffstat (limited to 'drivers/net/ethernet/calxeda')
-rw-r--r-- | drivers/net/ethernet/calxeda/xgmac.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/net/ethernet/calxeda/xgmac.c b/drivers/net/ethernet/calxeda/xgmac.c index d2a183c3a6ce..521dfea44b83 100644 --- a/drivers/net/ethernet/calxeda/xgmac.c +++ b/drivers/net/ethernet/calxeda/xgmac.c | |||
@@ -897,7 +897,7 @@ static void xgmac_tx_complete(struct xgmac_priv *priv) | |||
897 | /* Check tx error on the last segment */ | 897 | /* Check tx error on the last segment */ |
898 | if (desc_get_tx_ls(p)) { | 898 | if (desc_get_tx_ls(p)) { |
899 | desc_get_tx_status(priv, p); | 899 | desc_get_tx_status(priv, p); |
900 | dev_kfree_skb(skb); | 900 | dev_consume_skb_any(skb); |
901 | } | 901 | } |
902 | 902 | ||
903 | priv->tx_skbuff[entry] = NULL; | 903 | priv->tx_skbuff[entry] = NULL; |
@@ -1105,7 +1105,7 @@ static netdev_tx_t xgmac_xmit(struct sk_buff *skb, struct net_device *dev) | |||
1105 | len = skb_headlen(skb); | 1105 | len = skb_headlen(skb); |
1106 | paddr = dma_map_single(priv->device, skb->data, len, DMA_TO_DEVICE); | 1106 | paddr = dma_map_single(priv->device, skb->data, len, DMA_TO_DEVICE); |
1107 | if (dma_mapping_error(priv->device, paddr)) { | 1107 | if (dma_mapping_error(priv->device, paddr)) { |
1108 | dev_kfree_skb(skb); | 1108 | dev_kfree_skb_any(skb); |
1109 | return NETDEV_TX_OK; | 1109 | return NETDEV_TX_OK; |
1110 | } | 1110 | } |
1111 | priv->tx_skbuff[entry] = skb; | 1111 | priv->tx_skbuff[entry] = skb; |
@@ -1169,7 +1169,7 @@ dma_err: | |||
1169 | desc = first; | 1169 | desc = first; |
1170 | dma_unmap_single(priv->device, desc_get_buf_addr(desc), | 1170 | dma_unmap_single(priv->device, desc_get_buf_addr(desc), |
1171 | desc_get_buf_len(desc), DMA_TO_DEVICE); | 1171 | desc_get_buf_len(desc), DMA_TO_DEVICE); |
1172 | dev_kfree_skb(skb); | 1172 | dev_kfree_skb_any(skb); |
1173 | return NETDEV_TX_OK; | 1173 | return NETDEV_TX_OK; |
1174 | } | 1174 | } |
1175 | 1175 | ||