mirror of https://gitee.com/openkylin/linux.git
rtlwifi: Add missing DMA buffer unmapping for PCI drivers
In https://bugzilla.kernel.org/show_bug.cgi?id=42976, a system with driver rtl8192se used as an AP suffers from "Out of SW-IOMMU space" errors. These are caused by the DMA buffers used for beacons never being unmapped. This bug was also reported at https://bugs.launchpad.net/ubuntu/+source/linux/+bug/961618 Reported-and-Tested-by: Da Xue <da@lessconfused.com> Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net> Cc: Stable <stable@vger.kernel.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
a7959c1394
commit
673f7786e2
|
@ -912,8 +912,13 @@ static void _rtl_pci_prepare_bcn_tasklet(struct ieee80211_hw *hw)
|
|||
memset(&tcb_desc, 0, sizeof(struct rtl_tcb_desc));
|
||||
ring = &rtlpci->tx_ring[BEACON_QUEUE];
|
||||
pskb = __skb_dequeue(&ring->queue);
|
||||
if (pskb)
|
||||
if (pskb) {
|
||||
struct rtl_tx_desc *entry = &ring->desc[ring->idx];
|
||||
pci_unmap_single(rtlpci->pdev, rtlpriv->cfg->ops->get_desc(
|
||||
(u8 *) entry, true, HW_DESC_TXBUFF_ADDR),
|
||||
pskb->len, PCI_DMA_TODEVICE);
|
||||
kfree_skb(pskb);
|
||||
}
|
||||
|
||||
/*NB: the beacon data buffer must be 32-bit aligned. */
|
||||
pskb = ieee80211_beacon_get(hw, mac->vif);
|
||||
|
|
Loading…
Reference in New Issue