From c7b75a64431d43d5c2a7920b9692843b4dca40b9 Mon Sep 17 00:00:00 2001 From: Larry Finger Date: Sun, 24 Jun 2012 11:06:29 -0500 Subject: [PATCH] --- yaml --- r: 314879 b: refs/heads/master c: 5a2766abe42a0fa10a6a7177bece2a205f66bdb9 h: refs/heads/master i: 314877: 871e8d0cea22634e7195cdc7821c520d928dc7f4 314875: 84295b6eb6e38e79d035ec1c681b31c319607a7b 314871: 938c4d534572e1f36bb446e4be12eafc1d257b2c 314863: 0fd76ef5fb415396114fe5e4c97ab422923724f2 314847: ffb706b2a75e4a717f1cd5142d5937c72568fb84 314815: 4b696df2d85e28456058c983e686d04840edebd5 314751: 93b430e6b4fb3f50a0c6b8fbeb79f4e7799e35f1 314623: 6498535608260fbd1777a21e6acac17b05abfbec 314367: 6de25810a3e400c22694f8f42a9e4472cca98f4b v: v3 --- [refs] | 2 +- trunk/drivers/net/wireless/rtlwifi/pci.c | 17 +++++++++-------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/[refs] b/[refs] index db8f34f7059c..22d395da3525 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 2c443443e715fc79da9b7c3e4f31a71fcf315b09 +refs/heads/master: 5a2766abe42a0fa10a6a7177bece2a205f66bdb9 diff --git a/trunk/drivers/net/wireless/rtlwifi/pci.c b/trunk/drivers/net/wireless/rtlwifi/pci.c index 2062ea1d7c80..36bffbc4519e 100644 --- a/trunk/drivers/net/wireless/rtlwifi/pci.c +++ b/trunk/drivers/net/wireless/rtlwifi/pci.c @@ -1273,17 +1273,18 @@ int rtl_pci_reset_trx_ring(struct ieee80211_hw *hw) *after reset, release previous pending packet, *and force the tx idx to the first one */ - spin_lock_irqsave(&rtlpriv->locks.irq_th_lock, flags); for (i = 0; i < RTL_PCI_MAX_TX_QUEUE_COUNT; i++) { if (rtlpci->tx_ring[i].desc) { struct rtl8192_tx_ring *ring = &rtlpci->tx_ring[i]; while (skb_queue_len(&ring->queue)) { - struct rtl_tx_desc *entry = - &ring->desc[ring->idx]; - struct sk_buff *skb = - __skb_dequeue(&ring->queue); + struct rtl_tx_desc *entry; + struct sk_buff *skb; + spin_lock_irqsave(&rtlpriv->locks.irq_th_lock, + flags); + entry = &ring->desc[ring->idx]; + skb = __skb_dequeue(&ring->queue); pci_unmap_single(rtlpci->pdev, rtlpriv->cfg->ops-> get_desc((u8 *) @@ -1291,15 +1292,15 @@ int rtl_pci_reset_trx_ring(struct ieee80211_hw *hw) true, HW_DESC_TXBUFF_ADDR), skb->len, PCI_DMA_TODEVICE); - kfree_skb(skb); ring->idx = (ring->idx + 1) % ring->entries; + spin_unlock_irqrestore(&rtlpriv->locks.irq_th_lock, + flags); + kfree_skb(skb); } ring->idx = 0; } } - spin_unlock_irqrestore(&rtlpriv->locks.irq_th_lock, flags); - return 0; }