summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Tarnyagin <dmitry.tarnyagin@stericsson.com>2012-02-29 15:15:13 +0100
committerPhilippe Langlais <philippe.langlais@stericsson.com>2012-05-22 11:06:46 +0200
commit2694f2ff0f4222b01cccaab18e9486d77547c512 (patch)
tree9fd9046b3978181a4daffd5385e2ff371c39ee1f
parentcf34ec6ed84c0193c1c73d4f453542772dbb3d8b (diff)
cw1200: Set p2p mode info in p2p STA and GO modes.
p2p powersave configuration request is called ar early stage, before p2p STA is associated with a GO. p2p mode info MIB was not set in firmware due to that. The change sets p2p MIB after successful association and inGO mode. ST-Ericsson ID: 400498 Change-Id: Ibee23637899a4e80fd99765aaa04454ce44339f9 Signed-off-by: Dmitry Tarnyagin <dmitry.tarnyagin@stericsson.com> Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/42154 Reviewed-by: Bartosz MARKOWSKI <bartosz.markowski@tieto.com> Tested-by: Bartosz MARKOWSKI <bartosz.markowski@tieto.com>
-rw-r--r--drivers/staging/cw1200/ap.c14
-rw-r--r--drivers/staging/cw1200/sta.c24
2 files changed, 32 insertions, 6 deletions
diff --git a/drivers/staging/cw1200/ap.c b/drivers/staging/cw1200/ap.c
index ca2abbe93b8..e26529dc528 100644
--- a/drivers/staging/cw1200/ap.c
+++ b/drivers/staging/cw1200/ap.c
@@ -500,6 +500,13 @@ void cw1200_bss_info_changed(struct ieee80211_hw *dev,
}
cw1200_set_pm(priv, &priv->powersave_mode);
+ if (priv->vif->p2p) {
+ ap_printk(KERN_DEBUG
+ "[STA] Setting p2p powersave "
+ "configuration.\n");
+ WARN_ON(wsm_set_p2p_ps_modeinfo(priv,
+ &priv->p2p_ps_modeinfo));
+ }
if (priv->is_BT_Present)
WARN_ON(cw1200_set_btcoexinfo(priv));
@@ -864,6 +871,13 @@ static int cw1200_start_ap(struct cw1200_common *priv)
ret = WARN_ON(wsm_start(priv, &start));
if (!ret)
ret = WARN_ON(cw1200_upload_keys(priv));
+ if (!ret && priv->vif->p2p) {
+ ap_printk(KERN_DEBUG
+ "[AP] Setting p2p powersave "
+ "configuration.\n");
+ WARN_ON(wsm_set_p2p_ps_modeinfo(priv,
+ &priv->p2p_ps_modeinfo));
+ }
if (!ret) {
WARN_ON(wsm_set_block_ack_policy(priv,
0, 0));
diff --git a/drivers/staging/cw1200/sta.c b/drivers/staging/cw1200/sta.c
index 6c5ff577e32..ad85f29008a 100644
--- a/drivers/staging/cw1200/sta.c
+++ b/drivers/staging/cw1200/sta.c
@@ -322,6 +322,9 @@ int cw1200_config(struct ieee80211_hw *dev, u32 changed)
struct wsm_p2p_ps_modeinfo *modeinfo;
modeinfo = &priv->p2p_ps_modeinfo;
sta_printk(KERN_DEBUG "[STA] IEEE80211_CONF_CHANGE_P2P_PS\n");
+ sta_printk(KERN_DEBUG "[STA] Legacy PS: %d for AID %d "
+ "in %d mode.\n", conf->p2p_ps.legacy_ps,
+ priv->bss_params.aid, priv->join_status);
if (conf->p2p_ps.legacy_ps >= 0) {
if (conf->p2p_ps.legacy_ps > 0)
@@ -333,11 +336,15 @@ int cw1200_config(struct ieee80211_hw *dev, u32 changed)
cw1200_set_pm(priv, &priv->powersave_mode);
}
+ sta_printk(KERN_DEBUG "[STA] CTWindow: %d\n",
+ conf->p2p_ps.ctwindow);
if (conf->p2p_ps.ctwindow >= 128)
modeinfo->oppPsCTWindow = 127;
else if (conf->p2p_ps.ctwindow >= 0)
modeinfo->oppPsCTWindow = conf->p2p_ps.ctwindow;
+ sta_printk(KERN_DEBUG "[STA] Opportunistic: %d\n",
+ conf->p2p_ps.opp_ps);
switch (conf->p2p_ps.opp_ps) {
case 0:
modeinfo->oppPsCTWindow &= ~(BIT(7));
@@ -349,6 +356,11 @@ int cw1200_config(struct ieee80211_hw *dev, u32 changed)
break;
}
+ sta_printk(KERN_DEBUG "[STA] NOA: %d, %d, %d, %d\n",
+ conf->p2p_ps.count,
+ conf->p2p_ps.start,
+ conf->p2p_ps.duration,
+ conf->p2p_ps.interval);
/* Notice of Absence */
modeinfo->count = conf->p2p_ps.count;
modeinfo->startTime = __cpu_to_le32(conf->p2p_ps.start);
@@ -360,14 +372,14 @@ int cw1200_config(struct ieee80211_hw *dev, u32 changed)
else
modeinfo->dtimCount = 0;
- if (priv->join_status == CW1200_JOIN_STATUS_STA ||
- priv->join_status == CW1200_JOIN_STATUS_AP) {
#if defined(CONFIG_CW1200_STA_DEBUG)
- print_hex_dump_bytes("p2p_ps_modeinfo: ",
- DUMP_PREFIX_NONE,
- (u8 *)modeinfo,
- sizeof(*modeinfo));
+ print_hex_dump_bytes("p2p_ps_modeinfo: ",
+ DUMP_PREFIX_NONE,
+ (u8 *)modeinfo,
+ sizeof(*modeinfo));
#endif /* CONFIG_CW1200_STA_DEBUG */
+ if (priv->join_status == CW1200_JOIN_STATUS_STA ||
+ priv->join_status == CW1200_JOIN_STATUS_AP) {
WARN_ON(wsm_set_p2p_ps_modeinfo(priv, modeinfo));
}
}