[PATCH] Configure dtim_period dynamicly

Eugene Krasnikov k.eugene.e at gmail.com
Fri Jun 28 04:29:23 EDT 2013


Before dtim period was hardcoded to 2. Change it dynamically
based on AP configuration.

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

diff --git a/main.c b/main.c
index de787f3..21d7544 100644
--- a/main.c
+++ b/main.c
@@ -522,6 +522,14 @@ static void wcn36xx_bss_info_changed(struct ieee80211_hw *hw,
 		wcn->beacon_interval = bss_conf->beacon_int;
 	}
 
+	if (changed & BSS_CHANGED_DTIM_PERIOD) {
+		wcn36xx_dbg(WCN36XX_DBG_MAC,
+			    "mac bss changed dtim period%d",
+			    bss_conf->dtim_period);
+
+		wcn->dtim_period = bss_conf->dtim_period;
+	}
+
 	if (changed & BSS_CHANGED_BSSID) {
 		wcn36xx_dbg(WCN36XX_DBG_MAC, "mac bss changed_bssid %pM",
 			    bss_conf->bssid);
diff --git a/smd.c b/smd.c
index 1f64a67..06c5b30 100644
--- a/smd.c
+++ b/smd.c
@@ -736,7 +736,7 @@ int wcn36xx_smd_config_bss(struct wcn36xx *wcn, enum nl80211_iftype type,
 	bss->lsig_tx_op_protection_full_support = 0;
 	bss->rifs_mode = 0;
 	bss->beacon_interval = beacon_interval;
-	bss->dtim_period = 2;
+	bss->dtim_period = wcn->dtim_period;
 	bss->tx_channel_width_set = 0;
 	bss->oper_channel = wcn->ch;
 	bss->ext_channel = 0;
diff --git a/wcn36xx.h b/wcn36xx.h
index 0d0ed0c..1e6eea1 100644
--- a/wcn36xx.h
+++ b/wcn36xx.h
@@ -116,6 +116,7 @@ struct wcn36xx {
 	u16			aid;
 	struct wcn36xx_vif	*current_vif;
 	u16			beacon_interval;
+	u8			dtim_period;
 	enum ani_ed_type	encrypt_type;
 	u8			fw_revision;
 	u8			fw_version;
-- 
1.7.11.3




More information about the wcn36xx mailing list