Commit 928773c2 authored by Olof Johansson's avatar Olof Johansson Committed by David S. Miller

pasemi_mac: pass in count of buffers to replenish rx ring with

pasemi_mac: pass in count of buffers to replenish rx ring with

Refactor replenish_rx_ring to take an argument for how many entries to
fill. Since it's normally available from where it's called anyway, this
is just simpler. It also removes the awkward logic to try to figure out
if we're filling for the first time or not.
Signed-off-by: default avatarOlof Johansson <olof@lixom.net>
Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent 36033766
...@@ -370,23 +370,18 @@ static void pasemi_mac_free_rx_resources(struct net_device *dev) ...@@ -370,23 +370,18 @@ static void pasemi_mac_free_rx_resources(struct net_device *dev)
mac->rx = NULL; mac->rx = NULL;
} }
static void pasemi_mac_replenish_rx_ring(struct net_device *dev) static void pasemi_mac_replenish_rx_ring(struct net_device *dev, int limit)
{ {
struct pasemi_mac *mac = netdev_priv(dev); struct pasemi_mac *mac = netdev_priv(dev);
unsigned int i; unsigned int i;
int start = mac->rx->next_to_fill; int start = mac->rx->next_to_fill;
unsigned int limit, count; int count;
limit = RING_AVAIL(mac->rx);
/* Check to see if we're doing first-time setup */
if (unlikely(mac->rx->next_to_clean == 0 && mac->rx->next_to_fill == 0))
limit = RX_RING_SIZE;
if (limit <= 0) if (limit <= 0)
return; return;
i = start; i = start;
for (count = limit; count; count--) { for (count = 0; count < limit; count++) {
struct pasemi_mac_buffer *info = &RX_DESC_INFO(mac, i); struct pasemi_mac_buffer *info = &RX_DESC_INFO(mac, i);
u64 *buff = &RX_BUFF(mac, i); u64 *buff = &RX_BUFF(mac, i);
struct sk_buff *skb; struct sk_buff *skb;
...@@ -417,10 +412,10 @@ static void pasemi_mac_replenish_rx_ring(struct net_device *dev) ...@@ -417,10 +412,10 @@ static void pasemi_mac_replenish_rx_ring(struct net_device *dev)
wmb(); wmb();
write_dma_reg(mac, PAS_DMA_RXCHAN_INCR(mac->dma_rxch), limit - count); write_dma_reg(mac, PAS_DMA_RXCHAN_INCR(mac->dma_rxch), count);
write_dma_reg(mac, PAS_DMA_RXINT_INCR(mac->dma_if), limit - count); write_dma_reg(mac, PAS_DMA_RXINT_INCR(mac->dma_if), count);
mac->rx->next_to_fill += limit - count; mac->rx->next_to_fill += count;
} }
static void pasemi_mac_restart_rx_intr(struct pasemi_mac *mac) static void pasemi_mac_restart_rx_intr(struct pasemi_mac *mac)
...@@ -538,7 +533,7 @@ static int pasemi_mac_clean_rx(struct pasemi_mac *mac, int limit) ...@@ -538,7 +533,7 @@ static int pasemi_mac_clean_rx(struct pasemi_mac *mac, int limit)
} }
mac->rx->next_to_clean += limit - count; mac->rx->next_to_clean += limit - count;
pasemi_mac_replenish_rx_ring(mac->netdev); pasemi_mac_replenish_rx_ring(mac->netdev, limit-count);
spin_unlock(&mac->rx->lock); spin_unlock(&mac->rx->lock);
...@@ -825,7 +820,7 @@ static int pasemi_mac_open(struct net_device *dev) ...@@ -825,7 +820,7 @@ static int pasemi_mac_open(struct net_device *dev)
write_dma_reg(mac, PAS_DMA_TXCHAN_TCMDSTA(mac->dma_txch), write_dma_reg(mac, PAS_DMA_TXCHAN_TCMDSTA(mac->dma_txch),
PAS_DMA_TXCHAN_TCMDSTA_EN); PAS_DMA_TXCHAN_TCMDSTA_EN);
pasemi_mac_replenish_rx_ring(dev); pasemi_mac_replenish_rx_ring(dev, RX_RING_SIZE);
flags = PAS_MAC_CFG_PCFG_S1 | PAS_MAC_CFG_PCFG_PE | flags = PAS_MAC_CFG_PCFG_S1 | PAS_MAC_CFG_PCFG_PE |
PAS_MAC_CFG_PCFG_PR | PAS_MAC_CFG_PCFG_CE; PAS_MAC_CFG_PCFG_PR | PAS_MAC_CFG_PCFG_CE;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment