diff options
author | Thomas Bogendoerfer <tbogendoerfer@suse.de> | 2019-08-30 11:25:30 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-08-30 22:54:35 +0200 |
commit | 9c328b05443a09bd62e4fcae284aeebbd13ca30e (patch) | |
tree | 3bb0feba0237984e18434bb1d1605f9a25117344 /drivers/net/ethernet/sgi | |
parent | net: sgi: ioc3-eth: get rid of ioc3_clean_rx_ring() (diff) | |
download | linux-9c328b05443a09bd62e4fcae284aeebbd13ca30e.tar.xz linux-9c328b05443a09bd62e4fcae284aeebbd13ca30e.zip |
net: sgi: ioc3-eth: separate tx and rx ring handling
After allocation of descriptor memory is now done once in probe
handling of tx ring is completely done by ioc3_clean_tx_ring. So
we remove the remaining tx ring actions out of ioc3_alloc_rings
and ioc3_free_rings and rename it to ioc3_[alloc|free]_rx_bufs
to better describe what they are doing.
Signed-off-by: Thomas Bogendoerfer <tbogendoerfer@suse.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/sgi')
-rw-r--r-- | drivers/net/ethernet/sgi/ioc3-eth.c | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/drivers/net/ethernet/sgi/ioc3-eth.c b/drivers/net/ethernet/sgi/ioc3-eth.c index fe77e4d7732f..29b9e5098052 100644 --- a/drivers/net/ethernet/sgi/ioc3-eth.c +++ b/drivers/net/ethernet/sgi/ioc3-eth.c @@ -778,12 +778,10 @@ static inline void ioc3_clean_tx_ring(struct ioc3_private *ip) ip->tx_ci = 0; } -static void ioc3_free_rings(struct ioc3_private *ip) +static void ioc3_free_rx_bufs(struct ioc3_private *ip) { int rx_entry, n_entry; - ioc3_clean_tx_ring(ip); - n_entry = ip->rx_ci; rx_entry = ip->rx_pi; @@ -794,7 +792,7 @@ static void ioc3_free_rings(struct ioc3_private *ip) } } -static void ioc3_alloc_rings(struct net_device *dev) +static void ioc3_alloc_rx_bufs(struct net_device *dev) { struct ioc3_private *ip = netdev_priv(dev); struct ioc3_erxbuf *rxb; @@ -824,9 +822,6 @@ static void ioc3_alloc_rings(struct net_device *dev) } ip->rx_ci = 0; ip->rx_pi = RX_BUFFS; - - ip->tx_pi = 0; - ip->tx_ci = 0; } static void ioc3_init_rings(struct net_device *dev) @@ -835,8 +830,8 @@ static void ioc3_init_rings(struct net_device *dev) struct ioc3_ethregs *regs = ip->regs; unsigned long ring; - ioc3_free_rings(ip); - ioc3_alloc_rings(dev); + ioc3_free_rx_bufs(ip); + ioc3_alloc_rx_bufs(dev); ioc3_clean_tx_ring(ip); @@ -962,7 +957,9 @@ static int ioc3_close(struct net_device *dev) ioc3_stop(ip); free_irq(dev->irq, dev); - ioc3_free_rings(ip); + ioc3_free_rx_bufs(ip); + ioc3_clean_tx_ring(ip); + return 0; } @@ -1263,12 +1260,11 @@ static int ioc3_probe(struct pci_dev *pdev, const struct pci_device_id *ent) out_stop: ioc3_stop(ip); del_timer_sync(&ip->ioc3_timer); - ioc3_free_rings(ip); + ioc3_free_rx_bufs(ip); if (ip->rxr) free_page((unsigned long)ip->rxr); if (ip->txr) free_pages((unsigned long)ip->txr, 2); - kfree(ip->txr); out_res: pci_release_regions(pdev); out_free: |