recv.c (734d1ece37fbf3d2ddfc71bc6c69e0fe35f02542) recv.c (a3dc48e82bb146ef11cf75676c8410c1df29b0c4)
1/*
2 * Copyright (c) 2008-2011 Atheros Communications Inc.
3 *
4 * Permission to use, copy, modify, and/or distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above
6 * copyright notice and this permission notice appear in all copies.
7 *
8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES

--- 730 unchanged lines hidden (view full) ---

739 */
740
741 tds = tbf->bf_desc;
742 ret = ath9k_hw_rxprocdesc(ah, tds, &trs);
743 if (ret == -EINPROGRESS)
744 return NULL;
745 }
746
1/*
2 * Copyright (c) 2008-2011 Atheros Communications Inc.
3 *
4 * Permission to use, copy, modify, and/or distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above
6 * copyright notice and this permission notice appear in all copies.
7 *
8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES

--- 730 unchanged lines hidden (view full) ---

739 */
740
741 tds = tbf->bf_desc;
742 ret = ath9k_hw_rxprocdesc(ah, tds, &trs);
743 if (ret == -EINPROGRESS)
744 return NULL;
745 }
746
747 list_del(&bf->list);
747 if (!bf->bf_mpdu)
748 return bf;
749
750 /*
751 * Synchronize the DMA transfer with CPU before
752 * 1. accessing the frame
753 * 2. requeueing the same buffer to h/w
754 */

--- 494 unchanged lines hidden (view full) ---

1249 ieee80211_rx(hw, skb);
1250
1251requeue_drop_frag:
1252 if (sc->rx.frag) {
1253 dev_kfree_skb_any(sc->rx.frag);
1254 sc->rx.frag = NULL;
1255 }
1256requeue:
748 if (!bf->bf_mpdu)
749 return bf;
750
751 /*
752 * Synchronize the DMA transfer with CPU before
753 * 1. accessing the frame
754 * 2. requeueing the same buffer to h/w
755 */

--- 494 unchanged lines hidden (view full) ---

1250 ieee80211_rx(hw, skb);
1251
1252requeue_drop_frag:
1253 if (sc->rx.frag) {
1254 dev_kfree_skb_any(sc->rx.frag);
1255 sc->rx.frag = NULL;
1256 }
1257requeue:
1258 list_add_tail(&bf->list, &sc->rx.rxbuf);
1259 if (flush)
1260 continue;
1261
1257 if (edma) {
1262 if (edma) {
1258 list_add_tail(&bf->list, &sc->rx.rxbuf);
1259 ath_rx_edma_buf_link(sc, qtype);
1260 } else {
1263 ath_rx_edma_buf_link(sc, qtype);
1264 } else {
1261 list_move_tail(&bf->list, &sc->rx.rxbuf);
1262 ath_rx_buf_link(sc, bf);
1265 ath_rx_buf_link(sc, bf);
1263 if (!flush)
1264 ath9k_hw_rxena(ah);
1266 ath9k_hw_rxena(ah);
1265 }
1266 } while (1);
1267
1268 spin_unlock_bh(&sc->rx.rxbuflock);
1269
1270 if (!(ah->imask & ATH9K_INT_RXEOL)) {
1271 ah->imask |= (ATH9K_INT_RXEOL | ATH9K_INT_RXORN);
1272 ath9k_hw_set_interrupts(ah);
1273 }
1274
1275 return 0;
1276}
1267 }
1268 } while (1);
1269
1270 spin_unlock_bh(&sc->rx.rxbuflock);
1271
1272 if (!(ah->imask & ATH9K_INT_RXEOL)) {
1273 ah->imask |= (ATH9K_INT_RXEOL | ATH9K_INT_RXORN);
1274 ath9k_hw_set_interrupts(ah);
1275 }
1276
1277 return 0;
1278}