nl80211: Add support for EDMG channels
802.11ay specification defines Enhanced Directional Multi-Gigabit (EDMG) STA and AP which allow channel bonding of 2 channels and more. Introduce new NL attributes that are needed for enabling and configuring EDMG support. Two new attributes are used by kernel to publish driver's EDMG capabilities to the userspace: NL80211_BAND_ATTR_EDMG_CHANNELS - bitmap field that indicates the 2.16 GHz channel(s) that are supported by the driver. When this attribute is not set it means driver does not support EDMG. NL80211_BAND_ATTR_EDMG_BW_CONFIG - represent the channel bandwidth configurations supported by the driver. Additional two new attributes are used by the userspace for connect command and for AP configuration: NL80211_ATTR_WIPHY_EDMG_CHANNELS NL80211_ATTR_WIPHY_EDMG_BW_CONFIG New rate info flag - RATE_INFO_FLAGS_EDMG, can be reported from driver and used for bitrate calculation that will take into account EDMG according to the 802.11ay specification. Signed-off-by: Alexei Avshalom Lazar <ailizaro@codeaurora.org> Link: https://lore.kernel.org/r/1566138918-3823-2-git-send-email-ailizaro@codeaurora.org Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:

committed by
Johannes Berg

parent
5db16ba82f
commit
2a38075cd0
@@ -158,10 +158,10 @@ ieee80211_determine_chantype(struct ieee80211_sub_if_data *sdata,
|
||||
memcpy(&sta_ht_cap, &sband->ht_cap, sizeof(sta_ht_cap));
|
||||
ieee80211_apply_htcap_overrides(sdata, &sta_ht_cap);
|
||||
|
||||
memset(chandef, 0, sizeof(struct cfg80211_chan_def));
|
||||
chandef->chan = channel;
|
||||
chandef->width = NL80211_CHAN_WIDTH_20_NOHT;
|
||||
chandef->center_freq1 = channel->center_freq;
|
||||
chandef->center_freq2 = 0;
|
||||
|
||||
if (!ht_oper || !sta_ht_cap.ht_supported) {
|
||||
ret = IEEE80211_STA_DISABLE_HT | IEEE80211_STA_DISABLE_VHT;
|
||||
|
@@ -262,7 +262,8 @@ static int ieee80211_tx_radiotap_len(struct ieee80211_tx_info *info,
|
||||
/* IEEE80211_RADIOTAP_RATE rate */
|
||||
if (status && status->rate && !(status->rate->flags &
|
||||
(RATE_INFO_FLAGS_MCS |
|
||||
RATE_INFO_FLAGS_60G |
|
||||
RATE_INFO_FLAGS_DMG |
|
||||
RATE_INFO_FLAGS_EDMG |
|
||||
RATE_INFO_FLAGS_VHT_MCS |
|
||||
RATE_INFO_FLAGS_HE_MCS)))
|
||||
len += 2;
|
||||
@@ -329,7 +330,8 @@ ieee80211_add_tx_radiotap_header(struct ieee80211_local *local,
|
||||
|
||||
if (status && status->rate) {
|
||||
if (!(status->rate->flags & (RATE_INFO_FLAGS_MCS |
|
||||
RATE_INFO_FLAGS_60G |
|
||||
RATE_INFO_FLAGS_DMG |
|
||||
RATE_INFO_FLAGS_EDMG |
|
||||
RATE_INFO_FLAGS_VHT_MCS |
|
||||
RATE_INFO_FLAGS_HE_MCS)))
|
||||
legacy_rate = status->rate->legacy;
|
||||
|
Reference in New Issue
Block a user