Commit 687c7c08 authored by Johannes Berg's avatar Johannes Berg Committed by John W. Linville

mac80211: share sta_info->ht_info

Rate control algorithms may need access to a station's
HT capabilities, so share the ht_info struct in the
public station API.
Signed-off-by: default avatarJohannes Berg <johannes@sipsolutions.net>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent ae17e986
...@@ -1154,10 +1154,10 @@ static int rs_switch_to_mimo2(struct iwl_priv *priv, ...@@ -1154,10 +1154,10 @@ static int rs_switch_to_mimo2(struct iwl_priv *priv,
s8 is_green = lq_sta->is_green; s8 is_green = lq_sta->is_green;
if (!(conf->flags & IEEE80211_CONF_SUPPORT_HT_MODE) || if (!(conf->flags & IEEE80211_CONF_SUPPORT_HT_MODE) ||
!sta->ht_info.ht_supported) !sta->sta.ht_info.ht_supported)
return -1; return -1;
if (((sta->ht_info.cap & IEEE80211_HT_CAP_SM_PS) >> 2) if (((sta->sta.ht_info.cap & IEEE80211_HT_CAP_SM_PS) >> 2)
== WLAN_HT_CAP_SM_PS_STATIC) == WLAN_HT_CAP_SM_PS_STATIC)
return -1; return -1;
...@@ -1222,7 +1222,7 @@ static int rs_switch_to_siso(struct iwl_priv *priv, ...@@ -1222,7 +1222,7 @@ static int rs_switch_to_siso(struct iwl_priv *priv,
s32 rate; s32 rate;
if (!(conf->flags & IEEE80211_CONF_SUPPORT_HT_MODE) || if (!(conf->flags & IEEE80211_CONF_SUPPORT_HT_MODE) ||
!sta->ht_info.ht_supported) !sta->sta.ht_info.ht_supported)
return -1; return -1;
IWL_DEBUG_RATE("LQ: try to switch to SISO\n"); IWL_DEBUG_RATE("LQ: try to switch to SISO\n");
......
...@@ -667,6 +667,7 @@ enum set_key_cmd { ...@@ -667,6 +667,7 @@ enum set_key_cmd {
* @addr: MAC address * @addr: MAC address
* @aid: AID we assigned to the station if we're an AP * @aid: AID we assigned to the station if we're an AP
* @supp_rates: Bitmap of supported rates (per band) * @supp_rates: Bitmap of supported rates (per band)
* @ht_info: HT capabilities of this STA
* @drv_priv: data area for driver use, will always be aligned to * @drv_priv: data area for driver use, will always be aligned to
* sizeof(void *), size is determined in hw information. * sizeof(void *), size is determined in hw information.
*/ */
...@@ -674,6 +675,7 @@ struct ieee80211_sta { ...@@ -674,6 +675,7 @@ struct ieee80211_sta {
u64 supp_rates[IEEE80211_NUM_BANDS]; u64 supp_rates[IEEE80211_NUM_BANDS];
u8 addr[ETH_ALEN]; u8 addr[ETH_ALEN];
u16 aid; u16 aid;
struct ieee80211_ht_info ht_info;
/* must be last */ /* must be last */
u8 drv_priv[0] __attribute__((__aligned__(sizeof(void *)))); u8 drv_priv[0] __attribute__((__aligned__(sizeof(void *))));
......
...@@ -672,7 +672,7 @@ static void sta_apply_parameters(struct ieee80211_local *local, ...@@ -672,7 +672,7 @@ static void sta_apply_parameters(struct ieee80211_local *local,
if (params->ht_capa) { if (params->ht_capa) {
ieee80211_ht_cap_ie_to_ht_info(params->ht_capa, ieee80211_ht_cap_ie_to_ht_info(params->ht_capa,
&sta->ht_info); &sta->sta.ht_info);
} }
if (ieee80211_vif_is_mesh(&sdata->vif) && params->plink_action) { if (ieee80211_vif_is_mesh(&sdata->vif) && params->plink_action) {
......
...@@ -1316,11 +1316,11 @@ static void ieee80211_rx_mgmt_assoc_resp(struct ieee80211_sub_if_data *sdata, ...@@ -1316,11 +1316,11 @@ static void ieee80211_rx_mgmt_assoc_resp(struct ieee80211_sub_if_data *sdata,
struct ieee80211_ht_bss_info bss_info; struct ieee80211_ht_bss_info bss_info;
ieee80211_ht_cap_ie_to_ht_info( ieee80211_ht_cap_ie_to_ht_info(
(struct ieee80211_ht_cap *) (struct ieee80211_ht_cap *)
elems.ht_cap_elem, &sta->ht_info); elems.ht_cap_elem, &sta->sta.ht_info);
ieee80211_ht_addt_info_ie_to_ht_bss_info( ieee80211_ht_addt_info_ie_to_ht_bss_info(
(struct ieee80211_ht_addt_info *) (struct ieee80211_ht_addt_info *)
elems.ht_info_elem, &bss_info); elems.ht_info_elem, &bss_info);
ieee80211_handle_ht(local, 1, &sta->ht_info, &bss_info); ieee80211_handle_ht(local, 1, &sta->sta.ht_info, &bss_info);
} }
rate_control_rate_init(sta, local); rate_control_rate_init(sta, local);
......
...@@ -167,7 +167,6 @@ struct sta_ampdu_mlme { ...@@ -167,7 +167,6 @@ struct sta_ampdu_mlme {
* @lock: used for locking all fields that require locking, see comments * @lock: used for locking all fields that require locking, see comments
* in the header file. * in the header file.
* @flaglock: spinlock for flags accesses * @flaglock: spinlock for flags accesses
* @ht_info: HT capabilities of this STA
* @addr: MAC address of this STA * @addr: MAC address of this STA
* @aid: STA's unique AID (1..2007, 0 = not assigned yet), * @aid: STA's unique AID (1..2007, 0 = not assigned yet),
* only used in AP (and IBSS?) mode * only used in AP (and IBSS?) mode
...@@ -226,7 +225,6 @@ struct sta_info { ...@@ -226,7 +225,6 @@ struct sta_info {
void *rate_ctrl_priv; void *rate_ctrl_priv;
spinlock_t lock; spinlock_t lock;
spinlock_t flaglock; spinlock_t flaglock;
struct ieee80211_ht_info ht_info;
u16 listen_interval; u16 listen_interval;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment