ath5k: use ath_is_mybeacon
authorOleksij Rempel <linux@rempel-privat.de>
Wed, 15 Jan 2014 16:11:15 +0000 (17:11 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Thu, 16 Jan 2014 19:55:45 +0000 (14:55 -0500)
Signed-off-by: Oleksij Rempel <linux@rempel-privat.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath5k/base.c

index d85c312170bc7bd6c14d4f8f3add807bcc127417..ef35da84f63bd23c107d9fa45da0f293c9afbc2c 100644 (file)
@@ -1238,14 +1238,11 @@ static void
 ath5k_check_ibss_tsf(struct ath5k_hw *ah, struct sk_buff *skb,
                     struct ieee80211_rx_status *rxs)
 {
-       struct ath_common *common = ath5k_hw_common(ah);
        u64 tsf, bc_tstamp;
        u32 hw_tu;
        struct ieee80211_mgmt *mgmt = (struct ieee80211_mgmt *)skb->data;
 
-       if (ieee80211_is_beacon(mgmt->frame_control) &&
-           le16_to_cpu(mgmt->u.beacon.capab_info) & WLAN_CAPABILITY_IBSS &&
-           ether_addr_equal_64bits(mgmt->bssid, common->curbssid)) {
+       if (le16_to_cpu(mgmt->u.beacon.capab_info) & WLAN_CAPABILITY_IBSS) {
                /*
                 * Received an IBSS beacon with the same BSSID. Hardware *must*
                 * have updated the local TSF. We have to work around various
@@ -1301,23 +1298,6 @@ ath5k_check_ibss_tsf(struct ath5k_hw *ah, struct sk_buff *skb,
        }
 }
 
-static void
-ath5k_update_beacon_rssi(struct ath5k_hw *ah, struct sk_buff *skb, int rssi)
-{
-       struct ieee80211_mgmt *mgmt = (struct ieee80211_mgmt *)skb->data;
-       struct ath_common *common = ath5k_hw_common(ah);
-
-       /* only beacons from our BSSID */
-       if (!ieee80211_is_beacon(mgmt->frame_control) ||
-           !ether_addr_equal_64bits(mgmt->bssid, common->curbssid))
-               return;
-
-       ewma_add(&ah->ah_beacon_rssi_avg, rssi);
-
-       /* in IBSS mode we should keep RSSI statistics per neighbour */
-       /* le16_to_cpu(mgmt->u.beacon.capab_info) & WLAN_CAPABILITY_IBSS */
-}
-
 /*
  * Compute padding position. skb must contain an IEEE 802.11 frame
  */
@@ -1390,6 +1370,7 @@ ath5k_receive_frame(struct ath5k_hw *ah, struct sk_buff *skb,
                    struct ath5k_rx_status *rs)
 {
        struct ieee80211_rx_status *rxs;
+       struct ath_common *common = ath5k_hw_common(ah);
 
        ath5k_remove_padding(skb);
 
@@ -1442,11 +1423,13 @@ ath5k_receive_frame(struct ath5k_hw *ah, struct sk_buff *skb,
 
        trace_ath5k_rx(ah, skb);
 
-       ath5k_update_beacon_rssi(ah, skb, rs->rs_rssi);
+       if (ath_is_mybeacon(common, (struct ieee80211_hdr *)skb->data)) {
+               ewma_add(&ah->ah_beacon_rssi_avg, rs->rs_rssi);
 
-       /* check beacons in IBSS mode */
-       if (ah->opmode == NL80211_IFTYPE_ADHOC)
-               ath5k_check_ibss_tsf(ah, skb, rxs);
+               /* check beacons in IBSS mode */
+               if (ah->opmode == NL80211_IFTYPE_ADHOC)
+                       ath5k_check_ibss_tsf(ah, skb, rxs);
+       }
 
        ieee80211_rx(ah->hw, skb);
 }