mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-02 18:04:38 -04:00
staging: rtl8723au: collect_bss_info23a(): Collect beacon_interval correct
Only retrieve beacon_interval from frames where it is present. This avoids setting BeaconPeriod to garbage for other frame types. Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
7882ef454c
commit
5b124b1aa2
@@ -4547,20 +4547,28 @@ int collect_bss_info23a(struct rtw_adapter *padapter,
|
||||
bssid->reserved = 1;
|
||||
ie_offset = offsetof(struct ieee80211_mgmt, u.beacon.variable);
|
||||
capab_info = mgmt->u.beacon.capab_info;
|
||||
bssid->BeaconPeriod =
|
||||
get_unaligned_le16(&mgmt->u.beacon.beacon_int);
|
||||
} else if (ieee80211_is_probe_req(mgmt->frame_control)) {
|
||||
ie_offset = offsetof(struct ieee80211_mgmt,
|
||||
u.probe_req.variable);
|
||||
bssid->reserved = 2;
|
||||
capab_info = 0;
|
||||
bssid->BeaconPeriod =
|
||||
padapter->registrypriv.dev_network.BeaconPeriod;
|
||||
} else if (ieee80211_is_probe_resp(mgmt->frame_control)) {
|
||||
ie_offset = offsetof(struct ieee80211_mgmt,
|
||||
u.probe_resp.variable);
|
||||
bssid->reserved = 3;
|
||||
capab_info = mgmt->u.probe_resp.capab_info;
|
||||
bssid->BeaconPeriod =
|
||||
get_unaligned_le16(&mgmt->u.probe_resp.beacon_int);
|
||||
} else {
|
||||
bssid->reserved = 0;
|
||||
ie_offset = offsetof(struct ieee80211_mgmt, u.beacon.variable);
|
||||
capab_info = mgmt->u.beacon.capab_info;
|
||||
bssid->BeaconPeriod =
|
||||
padapter->registrypriv.dev_network.BeaconPeriod;
|
||||
}
|
||||
ie_offset -= offsetof(struct ieee80211_mgmt, u);
|
||||
|
||||
@@ -4654,9 +4662,6 @@ int collect_bss_info23a(struct rtw_adapter *padapter,
|
||||
return _SUCCESS;
|
||||
}
|
||||
|
||||
bssid->BeaconPeriod = get_unaligned_le16(
|
||||
rtw_get_beacon_interval23a_from_ie(bssid->IEs));
|
||||
|
||||
if (capab_info & BIT(0)) {
|
||||
bssid->ifmode = NL80211_IFTYPE_STATION;
|
||||
ether_addr_copy(bssid->MacAddress, mgmt->sa);
|
||||
|
||||
Reference in New Issue
Block a user