lkml.org 
[lkml]   [2012]   [Apr]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[ 07/68] rtlwifi: Add missing DMA buffer unmapping for PCI drivers
    3.2-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Larry Finger <Larry.Finger@lwfinger.net>

    commit 673f7786e205c87b5d978c62827b9a66d097bebb upstream.

    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>
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/net/wireless/rtlwifi/pci.c | 7 ++++++-
    1 file changed, 6 insertions(+), 1 deletion(-)

    --- a/drivers/net/wireless/rtlwifi/pci.c
    +++ b/drivers/net/wireless/rtlwifi/pci.c
    @@ -926,8 +926,13 @@ static void _rtl_pci_prepare_bcn_tasklet
    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);



    \
     
     \ /
      Last update: 2012-04-19 23:35    [W:0.023 / U:65.948 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site