mac80211: add to bss_conf if broadcast TWT is supported
Add to struct ieee80211_bss_conf a twt_broadcast field. Set it to true if both STA and AP support broadcast TWT. Signed-off-by: Shaul Triebitz <shaul.triebitz@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com> Link: https://lore.kernel.org/r/iwlwifi.20210618133832.f7c105237541.I50b302044e2b35e5ed4d3fb8bc7bd3d8bb89b1e1@changeid Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
Родитель
7da70d6cdf
Коммит
d8b261548d
|
@ -7,7 +7,7 @@
|
|||
* Copyright 2007-2010 Johannes Berg <johannes@sipsolutions.net>
|
||||
* Copyright 2013-2014 Intel Mobile Communications GmbH
|
||||
* Copyright (C) 2015 - 2017 Intel Deutschland GmbH
|
||||
* Copyright (C) 2018 - 2020 Intel Corporation
|
||||
* Copyright (C) 2018 - 2021 Intel Corporation
|
||||
*/
|
||||
|
||||
#ifndef MAC80211_H
|
||||
|
@ -526,6 +526,7 @@ struct ieee80211_fils_discovery {
|
|||
* @twt_responder: does this BSS support TWT requester (relevant for managed
|
||||
* mode only, set if the AP advertises TWT responder role)
|
||||
* @twt_protected: does this BSS support protected TWT frames
|
||||
* @twt_broadcast: does this BSS support broadcast TWT
|
||||
* @assoc: association status
|
||||
* @ibss_joined: indicates whether this station is part of an IBSS
|
||||
* or not
|
||||
|
@ -642,6 +643,7 @@ struct ieee80211_bss_conf {
|
|||
bool twt_requester;
|
||||
bool twt_responder;
|
||||
bool twt_protected;
|
||||
bool twt_broadcast;
|
||||
/* association related data */
|
||||
bool assoc, ibss_joined;
|
||||
bool ibss_creator;
|
||||
|
|
|
@ -3218,6 +3218,21 @@ static int ieee80211_recalc_twt_req(struct ieee80211_sub_if_data *sdata,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static bool ieee80211_twt_bcast_support(struct ieee80211_bss_conf *bss_conf,
|
||||
struct ieee80211_supported_band *sband,
|
||||
struct sta_info *sta)
|
||||
{
|
||||
const struct ieee80211_sta_he_cap *own_he_cap =
|
||||
ieee80211_get_he_sta_cap(sband);
|
||||
|
||||
return bss_conf->he_support &&
|
||||
(sta->sta.he_cap.he_cap_elem.mac_cap_info[2] &
|
||||
IEEE80211_HE_MAC_CAP2_BCAST_TWT) &&
|
||||
own_he_cap &&
|
||||
(own_he_cap->he_cap_elem.mac_cap_info[2] &
|
||||
IEEE80211_HE_MAC_CAP2_BCAST_TWT);
|
||||
}
|
||||
|
||||
static bool ieee80211_assoc_success(struct ieee80211_sub_if_data *sdata,
|
||||
struct cfg80211_bss *cbss,
|
||||
struct ieee80211_mgmt *mgmt, size_t len,
|
||||
|
@ -3433,6 +3448,9 @@ static bool ieee80211_assoc_success(struct ieee80211_sub_if_data *sdata,
|
|||
bss_conf->twt_protected = false;
|
||||
}
|
||||
|
||||
bss_conf->twt_broadcast =
|
||||
ieee80211_twt_bcast_support(bss_conf, sband, sta);
|
||||
|
||||
if (bss_conf->he_support) {
|
||||
bss_conf->he_bss_color.color =
|
||||
le32_get_bits(elems->he_operation->he_oper_params,
|
||||
|
|
Загрузка…
Ссылка в новой задаче