summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/ethernet/freescale/dpa/dpaa_eth.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/net/ethernet/freescale/dpa/dpaa_eth.c b/drivers/net/ethernet/freescale/dpa/dpaa_eth.c
index 9a139d8..77a3a35 100644
--- a/drivers/net/ethernet/freescale/dpa/dpaa_eth.c
+++ b/drivers/net/ethernet/freescale/dpa/dpaa_eth.c
@@ -215,6 +215,14 @@ static void _dpa_tx_error(struct net_device *net_dev,
percpu_priv->stats.tx_errors++;
+ /* If we intended the buffers from this frame to go into the bpools
+ * when the FMan transmit was done, we need to put it in manually.
+ */
+ if (fd->cmd & FM_FD_CMD_FCO) {
+ dpa_fd_release(net_dev, fd);
+ return;
+ }
+
skb = _dpa_cleanup_tx_fd(priv, fd);
dev_kfree_skb(skb);
}