summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Tarnyagin <dmitry.tarnyagin@stericsson.com>2011-08-03 22:24:40 +0200
committerPhilippe LANGLAIS <philippe.langlais@stericsson.com>2011-10-13 09:55:05 +0200
commit6a64664ccd3d7f76845b24e434cb3b62c3f3a391 (patch)
tree91907433fcf1a4beebaf56639863203313d88e30
parent8b037e801c2b95141e35556d0bf86ba310075a1f (diff)
cw1200: Minor fixes.
* Driver unloading without prior "ifconfig wlan0 down" caused warnings in cw1200_remove_interface() and cw1200_setup_mac(). * Entering SoftAP mode caused a warning in cw1200_set_tim_impl(). * Scan request failed with timeout if current BSS was out of range. * wsm_set_pm is failing if scanned BSS is out of range, and it is not a fault. * Some state wariables were not reset to initial state in cw1200_stop(). ST-Ericsson ID: ER354873 ST-Ericsson ID: ER354919 Change-Id: I7f12748c0570de5c6f25aa8bf83b6012b44d87de Signed-off-by: Dmitry Tarnyagin <dmitry.tarnyagin@stericsson.com> Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/28232 Reviewed-by: Bartosz MARKOWSKI <bartosz.markowski@tieto.com> Tested-by: Bartosz MARKOWSKI <bartosz.markowski@tieto.com> Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/33496 Reviewed-by: Philippe LANGLAIS <philippe.langlais@stericsson.com>
-rw-r--r--drivers/staging/cw1200/main.c3
-rw-r--r--drivers/staging/cw1200/scan.c10
-rw-r--r--drivers/staging/cw1200/sta.c4
-rw-r--r--drivers/staging/cw1200/txrx.c3
-rw-r--r--drivers/staging/cw1200/wsm.c6
5 files changed, 16 insertions, 10 deletions
diff --git a/drivers/staging/cw1200/main.c b/drivers/staging/cw1200/main.c
index 8782f92aca7..a704d12d469 100644
--- a/drivers/staging/cw1200/main.c
+++ b/drivers/staging/cw1200/main.c
@@ -390,6 +390,8 @@ void cw1200_unregister_common(struct ieee80211_hw *dev)
struct cw1200_common *priv = dev->priv;
int i;
+ ieee80211_unregister_hw(dev);
+
cw1200_debug_release(priv);
priv->sbus_ops->irq_unsubscribe(priv->sbus_priv);
@@ -399,7 +401,6 @@ void cw1200_unregister_common(struct ieee80211_hw *dev)
cw1200_unregister_leds(priv);
#endif /* CONFIG_CW1200_LEDS */
- ieee80211_unregister_hw(dev);
mutex_destroy(&priv->conf_mutex);
mutex_destroy(&priv->eeprom_mutex);
diff --git a/drivers/staging/cw1200/scan.c b/drivers/staging/cw1200/scan.c
index 7fb42d4ee05..17706e58549 100644
--- a/drivers/staging/cw1200/scan.c
+++ b/drivers/staging/cw1200/scan.c
@@ -16,7 +16,7 @@
static int cw1200_scan_start(struct cw1200_common *priv, struct wsm_scan *scan)
{
int ret, i;
- int tmo = 1000;
+ int tmo = 2000;
for (i = 0; i < scan->numOfChannels; ++i)
tmo += scan->ch[i].maxChannelTime + 10;
@@ -91,7 +91,7 @@ int cw1200_hw_scan(struct ieee80211_hw *hw,
!(priv->powersave_mode.pmMode & WSM_PSM_PS)) {
struct wsm_set_pm pm = priv->powersave_mode;
pm.pmMode = WSM_PSM_PS;
- WARN_ON(wsm_set_pm(priv, &pm));
+ wsm_set_pm(priv, &pm);
}
BUG_ON(priv->scan.req);
@@ -140,7 +140,7 @@ void cw1200_scan_work(struct work_struct *work)
priv->output_power * 10));
if (priv->join_status == CW1200_JOIN_STATUS_STA &&
!(priv->powersave_mode.pmMode & WSM_PSM_PS))
- WARN_ON(wsm_set_pm(priv, &priv->powersave_mode));
+ wsm_set_pm(priv, &priv->powersave_mode);
if (priv->scan.req)
printk(KERN_DEBUG "[SCAN] Scan completed.\n");
@@ -273,8 +273,8 @@ void cw1200_scan_timeout(struct work_struct *work)
struct cw1200_common *priv =
container_of(work, struct cw1200_common, scan.timeout.work);
if (likely(atomic_xchg(&priv->scan.in_progress, 0))) {
- cw1200_dbg(CW1200_DBG_ERROR,
- "CW1200 FW: Timeout waiting for scan " \
+ wiphy_warn(priv->hw->wiphy,
+ "Timeout waiting for scan " \
"complete notification.\n");
cw1200_scan_complete(priv);
}
diff --git a/drivers/staging/cw1200/sta.c b/drivers/staging/cw1200/sta.c
index c24e5c3c8c8..e69bd729f07 100644
--- a/drivers/staging/cw1200/sta.c
+++ b/drivers/staging/cw1200/sta.c
@@ -121,6 +121,10 @@ void cw1200_stop(struct ieee80211_hw *dev)
* through the map and reset each link separately. */
WARN_ON(priv->link_id_map);
priv->sta_asleep_mask = 0;
+ priv->enable_beacon = false;
+ priv->tx_multicast = false;
+ priv->aid0_bit_set = false;
+ priv->buffered_multicasts = false;
wsm_reset(priv, &reset);
break;
case CW1200_JOIN_STATUS_MONITOR:
diff --git a/drivers/staging/cw1200/txrx.c b/drivers/staging/cw1200/txrx.c
index 8531994d3da..6cae1a046d6 100644
--- a/drivers/staging/cw1200/txrx.c
+++ b/drivers/staging/cw1200/txrx.c
@@ -426,7 +426,8 @@ void cw1200_tx(struct ieee80211_hw *dev, struct sk_buff *skb)
int ret;
if ((tx_info->flags | IEEE80211_TX_CTL_SEND_AFTER_DTIM) &&
- (priv->mode == NL80211_IFTYPE_AP))
+ (priv->mode == NL80211_IFTYPE_AP) &&
+ priv->enable_beacon)
link_id = CW1200_LINK_ID_AFTER_DTIM;
else if (tx_info->control.sta)
link_id = sta_priv->link_id;
diff --git a/drivers/staging/cw1200/wsm.c b/drivers/staging/cw1200/wsm.c
index 035f8e3d8ce..097bd6d20f1 100644
--- a/drivers/staging/cw1200/wsm.c
+++ b/drivers/staging/cw1200/wsm.c
@@ -1184,10 +1184,10 @@ int wsm_handle_rx(struct cw1200_common *priv, int id,
WARN_ON(wsm_arg != NULL);
ret = wsm_generic_confirm(priv, wsm_arg, &wsm_buf);
if (ret)
- printk(KERN_ERR
- "[WSM] wsm_generic_confirm "
+ wiphy_warn(priv->hw->wiphy,
+ "wsm_generic_confirm "
"failed for request 0x%.4X.\n",
- id);
+ id & ~0x0400);
break;
default:
BUG_ON(1);