mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-14 00:24:15 +08:00
bcm63xx_enet: consolidate rx SKB ring cleanup code
The rx SKB ring use the same code for cleanup at various points. Combine them into a function to reduce lines of code. Signed-off-by: Sieng Piaw Liew <liew.s.piaw@gmail.com> Acked-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
c4a207865e
commit
3d0b72654b
@ -860,6 +860,24 @@ static void bcm_enet_adjust_link(struct net_device *dev)
|
||||
priv->pause_tx ? "tx" : "off");
|
||||
}
|
||||
|
||||
static void bcm_enet_free_rx_skb_ring(struct device *kdev, struct bcm_enet_priv *priv)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < priv->rx_ring_size; i++) {
|
||||
struct bcm_enet_desc *desc;
|
||||
|
||||
if (!priv->rx_skb[i])
|
||||
continue;
|
||||
|
||||
desc = &priv->rx_desc_cpu[i];
|
||||
dma_unmap_single(kdev, desc->address, priv->rx_skb_size,
|
||||
DMA_FROM_DEVICE);
|
||||
kfree_skb(priv->rx_skb[i]);
|
||||
}
|
||||
kfree(priv->rx_skb);
|
||||
}
|
||||
|
||||
/*
|
||||
* open callback, allocate dma rings & buffers and start rx operation
|
||||
*/
|
||||
@ -1084,18 +1102,7 @@ static int bcm_enet_open(struct net_device *dev)
|
||||
return 0;
|
||||
|
||||
out:
|
||||
for (i = 0; i < priv->rx_ring_size; i++) {
|
||||
struct bcm_enet_desc *desc;
|
||||
|
||||
if (!priv->rx_skb[i])
|
||||
continue;
|
||||
|
||||
desc = &priv->rx_desc_cpu[i];
|
||||
dma_unmap_single(kdev, desc->address, priv->rx_skb_size,
|
||||
DMA_FROM_DEVICE);
|
||||
kfree_skb(priv->rx_skb[i]);
|
||||
}
|
||||
kfree(priv->rx_skb);
|
||||
bcm_enet_free_rx_skb_ring(kdev, priv);
|
||||
|
||||
out_free_tx_skb:
|
||||
kfree(priv->tx_skb);
|
||||
@ -1174,7 +1181,6 @@ static int bcm_enet_stop(struct net_device *dev)
|
||||
{
|
||||
struct bcm_enet_priv *priv;
|
||||
struct device *kdev;
|
||||
int i;
|
||||
|
||||
priv = netdev_priv(dev);
|
||||
kdev = &priv->pdev->dev;
|
||||
@ -1203,20 +1209,9 @@ static int bcm_enet_stop(struct net_device *dev)
|
||||
bcm_enet_tx_reclaim(dev, 1);
|
||||
|
||||
/* free the rx skb ring */
|
||||
for (i = 0; i < priv->rx_ring_size; i++) {
|
||||
struct bcm_enet_desc *desc;
|
||||
|
||||
if (!priv->rx_skb[i])
|
||||
continue;
|
||||
|
||||
desc = &priv->rx_desc_cpu[i];
|
||||
dma_unmap_single(kdev, desc->address, priv->rx_skb_size,
|
||||
DMA_FROM_DEVICE);
|
||||
kfree_skb(priv->rx_skb[i]);
|
||||
}
|
||||
bcm_enet_free_rx_skb_ring(kdev, priv);
|
||||
|
||||
/* free remaining allocated memory */
|
||||
kfree(priv->rx_skb);
|
||||
kfree(priv->tx_skb);
|
||||
dma_free_coherent(kdev, priv->rx_desc_alloc_size,
|
||||
priv->rx_desc_cpu, priv->rx_desc_dma);
|
||||
@ -2303,18 +2298,7 @@ static int bcm_enetsw_open(struct net_device *dev)
|
||||
return 0;
|
||||
|
||||
out:
|
||||
for (i = 0; i < priv->rx_ring_size; i++) {
|
||||
struct bcm_enet_desc *desc;
|
||||
|
||||
if (!priv->rx_skb[i])
|
||||
continue;
|
||||
|
||||
desc = &priv->rx_desc_cpu[i];
|
||||
dma_unmap_single(kdev, desc->address, priv->rx_skb_size,
|
||||
DMA_FROM_DEVICE);
|
||||
kfree_skb(priv->rx_skb[i]);
|
||||
}
|
||||
kfree(priv->rx_skb);
|
||||
bcm_enet_free_rx_skb_ring(kdev, priv);
|
||||
|
||||
out_free_tx_skb:
|
||||
kfree(priv->tx_skb);
|
||||
@ -2343,7 +2327,6 @@ static int bcm_enetsw_stop(struct net_device *dev)
|
||||
{
|
||||
struct bcm_enet_priv *priv;
|
||||
struct device *kdev;
|
||||
int i;
|
||||
|
||||
priv = netdev_priv(dev);
|
||||
kdev = &priv->pdev->dev;
|
||||
@ -2366,20 +2349,9 @@ static int bcm_enetsw_stop(struct net_device *dev)
|
||||
bcm_enet_tx_reclaim(dev, 1);
|
||||
|
||||
/* free the rx skb ring */
|
||||
for (i = 0; i < priv->rx_ring_size; i++) {
|
||||
struct bcm_enet_desc *desc;
|
||||
|
||||
if (!priv->rx_skb[i])
|
||||
continue;
|
||||
|
||||
desc = &priv->rx_desc_cpu[i];
|
||||
dma_unmap_single(kdev, desc->address, priv->rx_skb_size,
|
||||
DMA_FROM_DEVICE);
|
||||
kfree_skb(priv->rx_skb[i]);
|
||||
}
|
||||
bcm_enet_free_rx_skb_ring(kdev, priv);
|
||||
|
||||
/* free remaining allocated memory */
|
||||
kfree(priv->rx_skb);
|
||||
kfree(priv->tx_skb);
|
||||
dma_free_coherent(kdev, priv->rx_desc_alloc_size,
|
||||
priv->rx_desc_cpu, priv->rx_desc_dma);
|
||||
|
Loading…
Reference in New Issue
Block a user