mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-26 19:00:25 +00:00
net: bcmgenet: add support for xmit_more
Delay the update of the TDMA producer index unless this is the last SKB in a batch, or the queue is already stopped. Move the check for whether the queue should be stopped before the xmit_more check to avoid locking the transmit queue in case there was a SKB submitted which has xmit_more set. Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
ae67bf0188
commit
ddd0ca5d60
1 changed files with 4 additions and 3 deletions
|
@ -1316,12 +1316,13 @@ static netdev_tx_t bcmgenet_xmit(struct sk_buff *skb, struct net_device *dev)
|
|||
ring->prod_index += nr_frags + 1;
|
||||
ring->prod_index &= DMA_P_INDEX_MASK;
|
||||
|
||||
bcmgenet_tdma_ring_writel(priv, ring->index,
|
||||
ring->prod_index, TDMA_PROD_INDEX);
|
||||
|
||||
if (ring->free_bds <= (MAX_SKB_FRAGS + 1))
|
||||
netif_tx_stop_queue(txq);
|
||||
|
||||
if (!skb->xmit_more || netif_xmit_stopped(txq))
|
||||
/* Packets are ready, update producer index */
|
||||
bcmgenet_tdma_ring_writel(priv, ring->index,
|
||||
ring->prod_index, TDMA_PROD_INDEX);
|
||||
out:
|
||||
spin_unlock_irqrestore(&ring->lock, flags);
|
||||
|
||||
|
|
Loading…
Reference in a new issue