aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath/ath9k/recv.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/recv.c')
-rw-r--r--drivers/net/wireless/ath/ath9k/recv.c35
1 files changed, 20 insertions, 15 deletions
diff --git a/drivers/net/wireless/ath/ath9k/recv.c b/drivers/net/wireless/ath/ath9k/recv.c
index 67b862cdae6d..ad5176de07dc 100644
--- a/drivers/net/wireless/ath/ath9k/recv.c
+++ b/drivers/net/wireless/ath/ath9k/recv.c
@@ -475,7 +475,6 @@ u32 ath_calcrxfilter(struct ath_softc *sc)
475 475
476 return rfilt; 476 return rfilt;
477 477
478#undef RX_FILTER_PRESERVE
479} 478}
480 479
481int ath_startrecv(struct ath_softc *sc) 480int ath_startrecv(struct ath_softc *sc)
@@ -1824,6 +1823,7 @@ int ath_rx_tasklet(struct ath_softc *sc, int flush, bool hp)
1824 hdr = (struct ieee80211_hdr *) (hdr_skb->data + rx_status_len); 1823 hdr = (struct ieee80211_hdr *) (hdr_skb->data + rx_status_len);
1825 rxs = IEEE80211_SKB_RXCB(hdr_skb); 1824 rxs = IEEE80211_SKB_RXCB(hdr_skb);
1826 if (ieee80211_is_beacon(hdr->frame_control) && 1825 if (ieee80211_is_beacon(hdr->frame_control) &&
1826 !is_zero_ether_addr(common->curbssid) &&
1827 !compare_ether_addr(hdr->addr3, common->curbssid)) 1827 !compare_ether_addr(hdr->addr3, common->curbssid))
1828 rs.is_mybeacon = true; 1828 rs.is_mybeacon = true;
1829 else 1829 else
@@ -1838,11 +1838,6 @@ int ath_rx_tasklet(struct ath_softc *sc, int flush, bool hp)
1838 if (sc->sc_flags & SC_OP_RXFLUSH) 1838 if (sc->sc_flags & SC_OP_RXFLUSH)
1839 goto requeue_drop_frag; 1839 goto requeue_drop_frag;
1840 1840
1841 retval = ath9k_rx_skb_preprocess(common, hw, hdr, &rs,
1842 rxs, &decrypt_error);
1843 if (retval)
1844 goto requeue_drop_frag;
1845
1846 rxs->mactime = (tsf & ~0xffffffffULL) | rs.rs_tstamp; 1841 rxs->mactime = (tsf & ~0xffffffffULL) | rs.rs_tstamp;
1847 if (rs.rs_tstamp > tsf_lower && 1842 if (rs.rs_tstamp > tsf_lower &&
1848 unlikely(rs.rs_tstamp - tsf_lower > 0x10000000)) 1843 unlikely(rs.rs_tstamp - tsf_lower > 0x10000000))
@@ -1852,6 +1847,11 @@ int ath_rx_tasklet(struct ath_softc *sc, int flush, bool hp)
1852 unlikely(tsf_lower - rs.rs_tstamp > 0x10000000)) 1847 unlikely(tsf_lower - rs.rs_tstamp > 0x10000000))
1853 rxs->mactime += 0x100000000ULL; 1848 rxs->mactime += 0x100000000ULL;
1854 1849
1850 retval = ath9k_rx_skb_preprocess(common, hw, hdr, &rs,
1851 rxs, &decrypt_error);
1852 if (retval)
1853 goto requeue_drop_frag;
1854
1855 /* Ensure we always have an skb to requeue once we are done 1855 /* Ensure we always have an skb to requeue once we are done
1856 * processing the current buffer's skb */ 1856 * processing the current buffer's skb */
1857 requeue_skb = ath_rxbuf_alloc(common, common->rx_bufsize, GFP_ATOMIC); 1857 requeue_skb = ath_rxbuf_alloc(common, common->rx_bufsize, GFP_ATOMIC);
@@ -1923,15 +1923,20 @@ int ath_rx_tasklet(struct ath_softc *sc, int flush, bool hp)
1923 skb = hdr_skb; 1923 skb = hdr_skb;
1924 } 1924 }
1925 1925
1926 /* 1926
1927 * change the default rx antenna if rx diversity chooses the 1927 if (ah->caps.hw_caps & ATH9K_HW_CAP_ANT_DIV_COMB) {
1928 * other antenna 3 times in a row. 1928
1929 */ 1929 /*
1930 if (sc->rx.defant != rs.rs_antenna) { 1930 * change the default rx antenna if rx diversity
1931 if (++sc->rx.rxotherant >= 3) 1931 * chooses the other antenna 3 times in a row.
1932 ath_setdefantenna(sc, rs.rs_antenna); 1932 */
1933 } else { 1933 if (sc->rx.defant != rs.rs_antenna) {
1934 sc->rx.rxotherant = 0; 1934 if (++sc->rx.rxotherant >= 3)
1935 ath_setdefantenna(sc, rs.rs_antenna);
1936 } else {
1937 sc->rx.rxotherant = 0;
1938 }
1939
1935 } 1940 }
1936 1941
1937 if (rxs->flag & RX_FLAG_MMIC_STRIPPED) 1942 if (rxs->flag & RX_FLAG_MMIC_STRIPPED)