diff options
-rw-r--r-- | drivers/net/ethernet/freescale/dpa/dpaa_eth.c | 8 |
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 066cae0..3a5ec61 100644 --- a/drivers/net/ethernet/freescale/dpa/dpaa_eth.c +++ b/drivers/net/ethernet/freescale/dpa/dpaa_eth.c @@ -216,6 +216,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); } |