ath9k: fix a crash bug and a dma sync issue
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Mon, 12 Apr 2010 22:30:47 +0000 (22:30 +0000)
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Mon, 12 Apr 2010 22:30:47 +0000 (22:30 +0000)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@20833 3c298f89-4303-0410-b956-a3cf2f4a3e73

package/mac80211/patches/300-ar9300_support.patch
package/mac80211/patches/560-ath9k_tx_buf_return_cleanup.patch

index edeaaf4..3545935 100644 (file)
@@ -36567,7 +36567,7 @@ index 3c4b5d2..f10bd06 100644
                /* set one try for probe rates. For the
                 * probes don't enable rts */
 diff --git a/drivers/net/wireless/ath/ath9k/recv.c b/drivers/net/wireless/ath/ath9k/recv.c
                /* set one try for probe rates. For the
                 * probes don't enable rts */
 diff --git a/drivers/net/wireless/ath/ath9k/recv.c b/drivers/net/wireless/ath/ath9k/recv.c
-index 94560e2..9c01c0b 100644
+index 94560e2..f84fcf0 100644
 --- a/drivers/net/wireless/ath/ath9k/recv.c
 +++ b/drivers/net/wireless/ath/ath9k/recv.c
 @@ -16,6 +16,8 @@
 --- a/drivers/net/wireless/ath/ath9k/recv.c
 +++ b/drivers/net/wireless/ath/ath9k/recv.c
 @@ -16,6 +16,8 @@
@@ -36612,7 +36612,7 @@ index 94560e2..9c01c0b 100644
 +
 +      ATH_RXBUF_RESET(bf);
 +      memset(skb->data, 0, ah->caps.rx_status_len);
 +
 +      ATH_RXBUF_RESET(bf);
 +      memset(skb->data, 0, ah->caps.rx_status_len);
-+      dma_sync_single_for_cpu(sc->dev, bf->bf_buf_addr,
++      dma_sync_single_for_device(sc->dev, bf->bf_buf_addr,
 +                              ah->caps.rx_status_len, DMA_TO_DEVICE);
  
 -      /* Initialize rx descriptors */
 +                              ah->caps.rx_status_len, DMA_TO_DEVICE);
  
 -      /* Initialize rx descriptors */
@@ -37061,7 +37061,7 @@ index 94560e2..9c01c0b 100644
 +       * 1. accessing the frame
 +       * 2. requeueing the same buffer to h/w
 +       */
 +       * 1. accessing the frame
 +       * 2. requeueing the same buffer to h/w
 +       */
-+      dma_sync_single_for_cpu(sc->dev, bf->bf_buf_addr,
++      dma_sync_single_for_device(sc->dev, bf->bf_buf_addr,
 +                      common->rx_bufsize,
 +                      DMA_FROM_DEVICE);
 +
 +                      common->rx_bufsize,
 +                      DMA_FROM_DEVICE);
 +
index ff55912..622b577 100644 (file)
  
                return r;
        }
  
                return r;
        }
-@@ -2123,11 +2121,8 @@ static void ath_tx_processq(struct ath_s
+@@ -2121,13 +2119,12 @@ static void ath_tx_processq(struct ath_s
+               txq->axq_depth--;
+               txok = !(ts.ts_status & ATH9K_TXERR_MASK);
                txq->axq_tx_inprogress = false;
                txq->axq_tx_inprogress = false;
++              if (bf_held)
++                      list_del(&bf_held->list);
                spin_unlock_bh(&txq->axq_lock);
  
 -              if (bf_held) {
                spin_unlock_bh(&txq->axq_lock);
  
 -              if (bf_held) {
This page took 0.060604 seconds and 4 git commands to generate.