[PATCH 1/4] Add ieee80211_sta parameter to config_bss

Eugene Krasnikov k.eugene.e at gmail.com
Tue Jul 16 07:01:48 EDT 2013


Config_bss need to set HT capabilities. For that pass
ieee80211_sta to config_bss function.

Signed-off-by: Eugene Krasnikov <k.eugene.e at gmail.com>
---
 main.c |  8 ++++----
 smd.c  | 22 ++++------------------
 smd.h  |  3 ++-
 3 files changed, 10 insertions(+), 23 deletions(-)

diff --git a/main.c b/main.c
index b87af52..f12812f 100644
--- a/main.c
+++ b/main.c
@@ -388,6 +388,7 @@ static int wcn36xx_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
 			if (NL80211_IFTYPE_STATION == vif->type)
 				wcn36xx_smd_config_bss(wcn,
 						       vif,
+						       sta,
 						       sta->addr,
 						       true,
 						       wcn->beacon_interval);
@@ -525,7 +526,7 @@ static void wcn36xx_bss_info_changed(struct ieee80211_hw *hw,
 			wcn->is_joining = true;
 			wcn36xx_smd_join(wcn, bss_conf->bssid,
 					 vif->addr, WCN36XX_HW_CHANNEL(wcn));
-			wcn36xx_smd_config_bss(wcn, vif,
+			wcn36xx_smd_config_bss(wcn, vif, NULL,
 					       bss_conf->bssid, false,
 					       wcn->beacon_interval);
 		} else {
@@ -567,11 +568,10 @@ static void wcn36xx_bss_info_changed(struct ieee80211_hw *hw,
 			}
 			wcn36xx_update_allowed_rates(wcn, sta);
 
-
 			wcn36xx_smd_set_link_st(wcn, bss_conf->bssid,
 						vif->addr,
 						WCN36XX_HAL_LINK_POSTASSOC_STATE);
-			wcn36xx_smd_config_bss(wcn, vif,
+			wcn36xx_smd_config_bss(wcn, vif, sta,
 					       bss_conf->bssid,
 					       true, wcn->beacon_interval);
 			wcn36xx_smd_config_sta(wcn, vif, sta);
@@ -609,7 +609,7 @@ static void wcn36xx_bss_info_changed(struct ieee80211_hw *hw,
 
 		if (bss_conf->enable_beacon) {
 			wcn->beacon_enable = true;
-			wcn36xx_smd_config_bss(wcn, vif,
+			wcn36xx_smd_config_bss(wcn, vif, NULL,
 					       wcn->addresses[0].addr, false,
 					       wcn->beacon_interval);
 			skb = ieee80211_beacon_get_tim(hw, vif, &tim_off,
diff --git a/smd.c b/smd.c
index 5943db5..3753756 100644
--- a/smd.c
+++ b/smd.c
@@ -755,7 +755,8 @@ static int wcn36xx_smd_config_bss_v1(struct wcn36xx *wcn,
 }
 
 int wcn36xx_smd_config_bss(struct wcn36xx *wcn, struct ieee80211_vif *vif,
-			   const u8 *bssid, bool update, u16 beacon_interval)
+			   struct ieee80211_sta *sta, const u8 *bssid,
+			   bool update, u16 beacon_interval)
 {
 	struct wcn36xx_hal_config_bss_req_msg msg;
 	struct wcn36xx_hal_config_bss_params *bss;
@@ -808,24 +809,13 @@ int wcn36xx_smd_config_bss(struct wcn36xx *wcn, struct ieee80211_vif *vif,
 	bss->oper_channel = WCN36XX_HW_CHANNEL(wcn);
 	bss->ext_channel = 0;
 	bss->reserved = 0;
-
-	memcpy(&sta_params->bssid, bssid, ETH_ALEN);
-
+	if (sta)
+		wcn36xx_smd_set_sta_params(vif, sta, sta_params);
 	sta_params->aid = wcn->aid;
 	sta_params->type = 0;
 	sta_params->short_preamble_supported = 0;
-	memcpy(&sta_params->mac, &wcn->addresses[0], ETH_ALEN);
 	sta_params->listen_interval = 8;
-	sta_params->wmm_enabled = 0;
-	sta_params->ht_capable =
-		wcn->supported_rates.supported_mcs_set[0] ? 1 : 0;
-	sta_params->tx_channel_width_set = 0;
 	sta_params->rifs_mode = 0;
-	sta_params->lsig_txop_protection = 0;
-	sta_params->max_ampdu_size = 0;
-	sta_params->max_ampdu_density = 0;
-	sta_params->sgi_40mhz = 0;
-	sta_params->sgi_20Mhz = 0;
 
 	memcpy(&sta_params->supported_rates, &wcn->supported_rates,
 	       sizeof(wcn->supported_rates));
@@ -834,12 +824,8 @@ int wcn36xx_smd_config_bss(struct wcn36xx *wcn, struct ieee80211_vif *vif,
 	sta_params->encrypt_type = wcn->encrypt_type;
 	sta_params->action = 0;
 	sta_params->uapsd = 0;
-	sta_params->max_sp_len = 0;
-	sta_params->green_field_capable = 0;
 	sta_params->mimo_ps = 0;
-	sta_params->delayed_ba_support = 0;
 	sta_params->max_ampdu_duration = 0;
-	sta_params->dsss_cck_mode_40mhz = 0;
 	sta_params->sta_index = 0xff;
 	sta_params->bssid_index = 0;
 	sta_params->p2p = 0;
diff --git a/smd.h b/smd.h
index 2bd700e..fc8b29c 100644
--- a/smd.h
+++ b/smd.h
@@ -63,7 +63,8 @@ int wcn36xx_smd_set_link_st(struct wcn36xx *wcn, const u8 *bssid,
 			    const u8 *sta_mac,
 			    enum wcn36xx_hal_link_state state);
 int wcn36xx_smd_config_bss(struct wcn36xx *wcn, struct ieee80211_vif *vif,
-			   const u8 *bssid, bool update, u16 beacon_interval);
+			   struct ieee80211_sta *sta, const u8 *bssid,
+			   bool update, u16 beacon_interval);
 int wcn36xx_smd_delete_bss(struct wcn36xx *wcn);
 int wcn36xx_smd_config_sta(struct wcn36xx *wcn, struct ieee80211_vif *vif,
 			   struct ieee80211_sta *sta);
-- 
1.7.11.3




More information about the wcn36xx mailing list