summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomasz Hliwiak <tomasz.hliwiak@tieto.com>2012-02-29 15:15:03 +0100
committerPhilippe Langlais <philippe.langlais@stericsson.com>2012-05-22 11:06:44 +0200
commit7cb93f57126b23f8c4bba967ed47d59b63c06652 (patch)
tree510063c0b5c0009d50f8f930ccefd15c1246b385
parent8ce53620a98111d7364adc85df5d3b3bfb24af9e (diff)
cw1200: Always update template on scan request.
Send probe request template to FW before each scan. It corrects wrong destination address in probe requests after p2p_connect in sta mode. ST-Ericsson ID: 364811 ST-Ericsson FOSS-OUT ID: NA Signed-off-by: Tomasz Hliwiak <tomasz.hliwiak@tieto.com> Change-Id: I90cbba678a916390f035c5664e25ea13428541cf Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/39816 Tested-by: Tomasz HLIWIAK <tomasz.hliwiak@tieto.com> Reviewed-by: Bartosz MARKOWSKI <bartosz.markowski@tieto.com>
-rw-r--r--drivers/staging/cw1200/main.c3
-rw-r--r--drivers/staging/cw1200/scan.c21
-rw-r--r--drivers/staging/cw1200/scan.h2
3 files changed, 4 insertions, 22 deletions
diff --git a/drivers/staging/cw1200/main.c b/drivers/staging/cw1200/main.c
index 4ca98d2f777..7a2e12d23a7 100644
--- a/drivers/staging/cw1200/main.c
+++ b/drivers/staging/cw1200/main.c
@@ -443,9 +443,6 @@ void cw1200_unregister_common(struct ieee80211_hw *dev)
wsm_buf_deinit(&priv->wsm_cmd_buf);
- kfree(priv->scan.ie);
- priv->scan.ie = NULL;
- priv->scan.ie_len = 0;
destroy_workqueue(priv->workqueue);
priv->workqueue = NULL;
diff --git a/drivers/staging/cw1200/scan.c b/drivers/staging/cw1200/scan.c
index db4150fcd77..32faf2b1c3f 100644
--- a/drivers/staging/cw1200/scan.c
+++ b/drivers/staging/cw1200/scan.c
@@ -64,23 +64,10 @@ int cw1200_hw_scan(struct ieee80211_hw *hw,
if (req->n_ssids > WSM_SCAN_MAX_NUM_OF_SSIDS)
return -EINVAL;
- if (req->ie_len != priv->scan.ie_len ||
- memcmp(req->ie, priv->scan.ie, req->ie_len)) {
- frame.skb = ieee80211_probereq_get(hw, priv->vif, NULL, 0,
- req->ie, req->ie_len);
- if (!frame.skb)
- return -ENOMEM;
- kfree(priv->scan.ie);
- priv->scan.ie = NULL;
- priv->scan.ie_len = 0;
- if (req->ie_len) {
- priv->scan.ie = kmalloc(req->ie_len, GFP_KERNEL);
- if (priv->scan.ie) {
- memcpy(priv->scan.ie, req->ie, req->ie_len);
- priv->scan.ie_len = req->ie_len;
- }
- }
- }
+ frame.skb = ieee80211_probereq_get(hw, priv->vif, NULL, 0,
+ req->ie, req->ie_len);
+ if (!frame.skb)
+ return -ENOMEM;
/* will be unlocked in cw1200_scan_work() */
down(&priv->scan.lock);
diff --git a/drivers/staging/cw1200/scan.h b/drivers/staging/cw1200/scan.h
index fd59123e742..abffd1d796f 100644
--- a/drivers/staging/cw1200/scan.h
+++ b/drivers/staging/cw1200/scan.h
@@ -30,8 +30,6 @@ struct cw1200_scan {
struct ieee80211_channel **curr;
struct ieee80211_channel **end;
struct wsm_ssid ssids[WSM_SCAN_MAX_NUM_OF_SSIDS];
- u8 *ie;
- size_t ie_len;
int output_power;
int n_ssids;
int status;