提交 9ed6bcce 编写于 作者: J Johannes Berg 提交者: John W. Linville

mac80211: move HT operation mode BSS info

There really is no need to have a separate struct for a
single variable. The fact that it exists is due to the
code legacy, but we can remove that now. Very simple.
Signed-off-by: NJohannes Berg <johannes@sipsolutions.net>
Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
上级 5a994011
...@@ -2225,9 +2225,9 @@ static void iwl_ht_conf(struct iwl_priv *priv, ...@@ -2225,9 +2225,9 @@ static void iwl_ht_conf(struct iwl_priv *priv,
iwl_conf->tx_chan_width = iwl_conf->supported_chan_width != 0; iwl_conf->tx_chan_width = iwl_conf->supported_chan_width != 0;
iwl_conf->ht_protection = iwl_conf->ht_protection =
bss_conf->ht.operation_mode & IEEE80211_HT_OP_MODE_PROTECTION; bss_conf->ht_operation_mode & IEEE80211_HT_OP_MODE_PROTECTION;
iwl_conf->non_GF_STA_present = iwl_conf->non_GF_STA_present =
!!(bss_conf->ht.operation_mode & IEEE80211_HT_OP_MODE_NON_GF_STA_PRSNT); !!(bss_conf->ht_operation_mode & IEEE80211_HT_OP_MODE_NON_GF_STA_PRSNT);
rcu_read_unlock(); rcu_read_unlock();
......
...@@ -642,7 +642,7 @@ static void mac80211_hwsim_bss_info_changed(struct ieee80211_hw *hw, ...@@ -642,7 +642,7 @@ static void mac80211_hwsim_bss_info_changed(struct ieee80211_hw *hw,
if (changed & BSS_CHANGED_HT) { if (changed & BSS_CHANGED_HT) {
printk(KERN_DEBUG " %s: HT: op_mode=0x%x\n", printk(KERN_DEBUG " %s: HT: op_mode=0x%x\n",
wiphy_name(hw->wiphy), wiphy_name(hw->wiphy),
info->ht.operation_mode); info->ht_operation_mode);
} }
if (changed & BSS_CHANGED_BASIC_RATES) { if (changed & BSS_CHANGED_BASIC_RATES) {
......
...@@ -2369,7 +2369,7 @@ static int mwl8k_cmd_set_aid(struct ieee80211_hw *hw, ...@@ -2369,7 +2369,7 @@ static int mwl8k_cmd_set_aid(struct ieee80211_hw *hw,
if (info->use_cts_prot) { if (info->use_cts_prot) {
prot_mode = MWL8K_FRAME_PROT_11G; prot_mode = MWL8K_FRAME_PROT_11G;
} else { } else {
switch (info->ht.operation_mode & switch (info->ht_operation_mode &
IEEE80211_HT_OP_MODE_PROTECTION) { IEEE80211_HT_OP_MODE_PROTECTION) {
case IEEE80211_HT_OP_MODE_PROTECTION_20MHZ: case IEEE80211_HT_OP_MODE_PROTECTION_20MHZ:
prot_mode = MWL8K_FRAME_PROT_11N_HT_40MHZ_ONLY; prot_mode = MWL8K_FRAME_PROT_11N_HT_40MHZ_ONLY;
......
...@@ -170,14 +170,6 @@ enum ieee80211_bss_change { ...@@ -170,14 +170,6 @@ enum ieee80211_bss_change {
BSS_CHANGED_BEACON_ENABLED = 1<<9, BSS_CHANGED_BEACON_ENABLED = 1<<9,
}; };
/**
* struct ieee80211_bss_ht_conf - BSS's changing HT configuration
* @operation_mode: HT operation mode (like in &struct ieee80211_ht_info)
*/
struct ieee80211_bss_ht_conf {
u16 operation_mode;
};
/** /**
* struct ieee80211_bss_conf - holds the BSS's changing parameters * struct ieee80211_bss_conf - holds the BSS's changing parameters
* *
...@@ -203,6 +195,8 @@ struct ieee80211_bss_ht_conf { ...@@ -203,6 +195,8 @@ struct ieee80211_bss_ht_conf {
* the current band. * the current band.
* @bssid: The BSSID for this BSS * @bssid: The BSSID for this BSS
* @enable_beacon: whether beaconing should be enabled or not * @enable_beacon: whether beaconing should be enabled or not
* @ht_operation_mode: HT operation mode (like in &struct ieee80211_ht_info).
* This field is only valid when the channel type is one of the HT types.
*/ */
struct ieee80211_bss_conf { struct ieee80211_bss_conf {
const u8 *bssid; const u8 *bssid;
...@@ -219,7 +213,7 @@ struct ieee80211_bss_conf { ...@@ -219,7 +213,7 @@ struct ieee80211_bss_conf {
u16 assoc_capability; u16 assoc_capability;
u64 timestamp; u64 timestamp;
u32 basic_rates; u32 basic_rates;
struct ieee80211_bss_ht_conf ht; u16 ht_operation_mode;
}; };
/** /**
......
...@@ -95,16 +95,14 @@ static u32 ieee80211_enable_ht(struct ieee80211_sub_if_data *sdata, ...@@ -95,16 +95,14 @@ static u32 ieee80211_enable_ht(struct ieee80211_sub_if_data *sdata,
struct ieee80211_local *local = sdata->local; struct ieee80211_local *local = sdata->local;
struct ieee80211_supported_band *sband; struct ieee80211_supported_band *sband;
struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; struct ieee80211_if_managed *ifmgd = &sdata->u.mgd;
struct ieee80211_bss_ht_conf ht;
struct sta_info *sta; struct sta_info *sta;
u32 changed = 0; u32 changed = 0;
u16 ht_opmode;
bool enable_ht = true, ht_changed; bool enable_ht = true, ht_changed;
enum nl80211_channel_type channel_type = NL80211_CHAN_NO_HT; enum nl80211_channel_type channel_type = NL80211_CHAN_NO_HT;
sband = local->hw.wiphy->bands[local->hw.conf.channel->band]; sband = local->hw.wiphy->bands[local->hw.conf.channel->band];
memset(&ht, 0, sizeof(ht));
/* HT is not supported */ /* HT is not supported */
if (!sband->ht_cap.ht_supported) if (!sband->ht_cap.ht_supported)
enable_ht = false; enable_ht = false;
...@@ -148,19 +146,18 @@ static u32 ieee80211_enable_ht(struct ieee80211_sub_if_data *sdata, ...@@ -148,19 +146,18 @@ static u32 ieee80211_enable_ht(struct ieee80211_sub_if_data *sdata,
IEEE80211_RC_HT_CHANGED); IEEE80211_RC_HT_CHANGED);
rcu_read_unlock(); rcu_read_unlock();
} }
/* disable HT */ /* disable HT */
if (!enable_ht) if (!enable_ht)
return 0; return 0;
ht.operation_mode = le16_to_cpu(hti->operation_mode); ht_opmode = le16_to_cpu(hti->operation_mode);
/* if bss configuration changed store the new one */ /* if bss configuration changed store the new one */
if (memcmp(&sdata->vif.bss_conf.ht, &ht, sizeof(ht))) { if (sdata->vif.bss_conf.ht_operation_mode != ht_opmode) {
changed |= BSS_CHANGED_HT; changed |= BSS_CHANGED_HT;
sdata->vif.bss_conf.ht = ht; sdata->vif.bss_conf.ht_operation_mode = ht_opmode;
} }
return changed; return changed;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册