[PATCH 2/2] Remove redundant parameters from config_sta

Eugene Krasnikov k.eugene.e at gmail.com
Tue Jul 16 04:49:51 EDT 2013


vif and sta already contains bssid address and address
of the station that is trying to connect to bss.

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

diff --git a/main.c b/main.c
index a417b9a..b87af52 100644
--- a/main.c
+++ b/main.c
@@ -574,8 +574,7 @@ static void wcn36xx_bss_info_changed(struct ieee80211_hw *hw,
 			wcn36xx_smd_config_bss(wcn, vif,
 					       bss_conf->bssid,
 					       true, wcn->beacon_interval);
-			wcn36xx_smd_config_sta(wcn, vif, sta, bss_conf->bssid,
-					       vif->addr);
+			wcn36xx_smd_config_sta(wcn, vif, sta);
 			rcu_read_unlock();
 		} else {
 			wcn36xx_dbg(WCN36XX_DBG_MAC,
@@ -693,7 +692,7 @@ static int wcn36xx_sta_add(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
 	    vif->type == NL80211_IFTYPE_AP ||
 	    vif->type == NL80211_IFTYPE_MESH_POINT) {
 		wcn->aid = sta->aid;
-		wcn36xx_smd_config_sta(wcn, vif, sta, vif->addr, sta->addr);
+		wcn36xx_smd_config_sta(wcn, vif, sta);
 	}
 	return 0;
 }
diff --git a/smd.c b/smd.c
index c4ba0e9..5943db5 100644
--- a/smd.c
+++ b/smd.c
@@ -47,9 +47,22 @@ static void wcn36xx_smd_set_sta_ht_params(struct ieee80211_sta *sta,
 	}
 }
 
-static void wcn36xx_smd_set_sta_params(struct ieee80211_sta *sta,
+static void wcn36xx_smd_set_sta_params(struct ieee80211_vif *vif,
+		struct ieee80211_sta *sta,
 		struct wcn36xx_hal_config_sta_params *sta_params)
 {
+	/*
+	 * In STA mode ieee80211_sta contains bssid and ieee80211_vif
+	 * contains our mac address. In  AP mode we are bssid so vif
+	 * contains bssid and ieee80211_sta contains mac.
+	 */
+	if (NL80211_IFTYPE_STATION == vif->type) {
+		memcpy(&sta_params->bssid, sta->addr, ETH_ALEN);
+		memcpy(&sta_params->mac, vif->addr, ETH_ALEN);
+	} else {
+		memcpy(&sta_params->bssid, vif->addr, ETH_ALEN);
+		memcpy(&sta_params->mac, sta->addr, ETH_ALEN);
+	}
 	sta_params->wmm_enabled = sta->wme;
 	sta_params->max_sp_len = sta->max_sp;
 	wcn36xx_smd_set_sta_ht_params(sta, sta_params);
@@ -535,8 +548,7 @@ static int wcn36xx_smd_config_sta_v1(struct wcn36xx *wcn,
 }
 
 int wcn36xx_smd_config_sta(struct wcn36xx *wcn, struct ieee80211_vif *vif,
-			   struct ieee80211_sta *sta, const u8 *bssid,
-			   const u8 *sta_mac)
+			   struct ieee80211_sta *sta)
 {
 	struct wcn36xx_hal_config_sta_req_msg msg;
 	struct wcn36xx_hal_config_sta_params *sta_params;
@@ -545,8 +557,6 @@ int wcn36xx_smd_config_sta(struct wcn36xx *wcn, struct ieee80211_vif *vif,
 
 	sta_params = &msg.sta_params;
 
-	memcpy(&sta_params->bssid, bssid, ETH_ALEN);
-
 	sta_params->aid = wcn->aid;
 
 	if (vif->type == NL80211_IFTYPE_ADHOC ||
@@ -558,8 +568,7 @@ int wcn36xx_smd_config_sta(struct wcn36xx *wcn, struct ieee80211_vif *vif,
 
 	sta_params->short_preamble_supported = 0;
 
-	memcpy(&sta_params->mac, sta_mac, ETH_ALEN);
-	wcn36xx_smd_set_sta_params(sta, sta_params);
+	wcn36xx_smd_set_sta_params(vif, sta, sta_params);
 	sta_params->listen_interval = 0x8;
 	sta_params->rifs_mode = 0;
 
diff --git a/smd.h b/smd.h
index dacb37c..2bd700e 100644
--- a/smd.h
+++ b/smd.h
@@ -66,8 +66,7 @@ int wcn36xx_smd_config_bss(struct wcn36xx *wcn, struct ieee80211_vif *vif,
 			   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, const u8 *bssid,
-			   const u8 *sta_mac);
+			   struct ieee80211_sta *sta);
 int wcn36xx_smd_send_beacon(struct wcn36xx *wcn, struct sk_buff *skb_beacon,
 			    u16 tim_off, u16 p2p_off);
 int wcn36xx_smd_switch_channel(struct wcn36xx *wcn, int ch);
-- 
1.7.11.3




More information about the wcn36xx mailing list