ath5k: use ath_is_mybeacon
Signed-off-by: Oleksij Rempel <linux@rempel-privat.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
aeb0e356ec
commit
d44efe2185
|
@ -1238,14 +1238,11 @@ static void
|
||||||
ath5k_check_ibss_tsf(struct ath5k_hw *ah, struct sk_buff *skb,
|
ath5k_check_ibss_tsf(struct ath5k_hw *ah, struct sk_buff *skb,
|
||||||
struct ieee80211_rx_status *rxs)
|
struct ieee80211_rx_status *rxs)
|
||||||
{
|
{
|
||||||
struct ath_common *common = ath5k_hw_common(ah);
|
|
||||||
u64 tsf, bc_tstamp;
|
u64 tsf, bc_tstamp;
|
||||||
u32 hw_tu;
|
u32 hw_tu;
|
||||||
struct ieee80211_mgmt *mgmt = (struct ieee80211_mgmt *)skb->data;
|
struct ieee80211_mgmt *mgmt = (struct ieee80211_mgmt *)skb->data;
|
||||||
|
|
||||||
if (ieee80211_is_beacon(mgmt->frame_control) &&
|
if (le16_to_cpu(mgmt->u.beacon.capab_info) & WLAN_CAPABILITY_IBSS) {
|
||||||
le16_to_cpu(mgmt->u.beacon.capab_info) & WLAN_CAPABILITY_IBSS &&
|
|
||||||
ether_addr_equal_64bits(mgmt->bssid, common->curbssid)) {
|
|
||||||
/*
|
/*
|
||||||
* Received an IBSS beacon with the same BSSID. Hardware *must*
|
* Received an IBSS beacon with the same BSSID. Hardware *must*
|
||||||
* have updated the local TSF. We have to work around various
|
* 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
|
* 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 ath5k_rx_status *rs)
|
||||||
{
|
{
|
||||||
struct ieee80211_rx_status *rxs;
|
struct ieee80211_rx_status *rxs;
|
||||||
|
struct ath_common *common = ath5k_hw_common(ah);
|
||||||
|
|
||||||
ath5k_remove_padding(skb);
|
ath5k_remove_padding(skb);
|
||||||
|
|
||||||
|
@ -1442,11 +1423,13 @@ ath5k_receive_frame(struct ath5k_hw *ah, struct sk_buff *skb,
|
||||||
|
|
||||||
trace_ath5k_rx(ah, 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 */
|
/* check beacons in IBSS mode */
|
||||||
if (ah->opmode == NL80211_IFTYPE_ADHOC)
|
if (ah->opmode == NL80211_IFTYPE_ADHOC)
|
||||||
ath5k_check_ibss_tsf(ah, skb, rxs);
|
ath5k_check_ibss_tsf(ah, skb, rxs);
|
||||||
|
}
|
||||||
|
|
||||||
ieee80211_rx(ah->hw, skb);
|
ieee80211_rx(ah->hw, skb);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue