diff options
author | Tomasz Hliwiak <tomasz.hliwiak@tieto.com> | 2012-02-29 15:15:03 +0100 |
---|---|---|
committer | Philippe Langlais <philippe.langlais@linaro.org> | 2012-03-19 09:02:06 +0100 |
commit | 44345e642d37ef47d5a8b1e8d67f9d8fca12140b (patch) | |
tree | efb3eddbeee97e70bedeb4d0a0a8c80372624321 /drivers | |
parent | bedf153e64008f9fd3ae253422d9a0d87d8a647f (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>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/staging/cw1200/main.c | 3 | ||||
-rw-r--r-- | drivers/staging/cw1200/scan.c | 21 | ||||
-rw-r--r-- | drivers/staging/cw1200/scan.h | 2 |
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; |