diff options
author | Juuso Oikarinen <juuso.oikarinen@nokia.com> | 2010-11-24 01:16:57 -0500 |
---|---|---|
committer | Luciano Coelho <luciano.coelho@nokia.com> | 2010-11-26 08:33:41 -0500 |
commit | 2f6724b24525fc989c0707974b23d96b36132385 (patch) | |
tree | ca2890e52f4a17efe2019189652ea09591e10163 /drivers/net/wireless/wl12xx/cmd.c | |
parent | 573c67cf819d52d2e12adf75a9a8cfbd216190a3 (diff) |
wl1271: Fix setting of the hardware connection monitoring probe-req template
The probe-request template used in the hardware connection monitoring feature
thus far has been an empty one, without the SSID IE and without supported rate
IEs. This causes problems with some AP's.
Additionally, after connected scans, the template for connection maintenance
would remain to be the one last used for scanning - potentially incorrect.
Fix these by getting a pre-filled directed probe-request template for the
associated-to AP from mac80211.
Signed-off-by: Juuso Oikarinen <juuso.oikarinen@nokia.com>
Signed-off-by: Luciano Coelho <luciano.coelho@nokia.com>
Diffstat (limited to 'drivers/net/wireless/wl12xx/cmd.c')
-rw-r--r-- | drivers/net/wireless/wl12xx/cmd.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/drivers/net/wireless/wl12xx/cmd.c b/drivers/net/wireless/wl12xx/cmd.c index f3d0541aaad6..8e438e27e496 100644 --- a/drivers/net/wireless/wl12xx/cmd.c +++ b/drivers/net/wireless/wl12xx/cmd.c | |||
@@ -611,6 +611,34 @@ out: | |||
611 | return ret; | 611 | return ret; |
612 | } | 612 | } |
613 | 613 | ||
614 | struct sk_buff *wl1271_cmd_build_ap_probe_req(struct wl1271 *wl, | ||
615 | struct sk_buff *skb) | ||
616 | { | ||
617 | int ret; | ||
618 | |||
619 | if (!skb) | ||
620 | skb = ieee80211_ap_probereq_get(wl->hw, wl->vif); | ||
621 | if (!skb) | ||
622 | goto out; | ||
623 | |||
624 | wl1271_dump(DEBUG_SCAN, "AP PROBE REQ: ", skb->data, skb->len); | ||
625 | |||
626 | if (wl->band == IEEE80211_BAND_2GHZ) | ||
627 | ret = wl1271_cmd_template_set(wl, CMD_TEMPL_CFG_PROBE_REQ_2_4, | ||
628 | skb->data, skb->len, 0, | ||
629 | wl->conf.tx.basic_rate); | ||
630 | else | ||
631 | ret = wl1271_cmd_template_set(wl, CMD_TEMPL_CFG_PROBE_REQ_5, | ||
632 | skb->data, skb->len, 0, | ||
633 | wl->conf.tx.basic_rate_5); | ||
634 | |||
635 | if (ret < 0) | ||
636 | wl1271_error("Unable to set ap probe request template."); | ||
637 | |||
638 | out: | ||
639 | return skb; | ||
640 | } | ||
641 | |||
614 | int wl1271_build_qos_null_data(struct wl1271 *wl) | 642 | int wl1271_build_qos_null_data(struct wl1271 *wl) |
615 | { | 643 | { |
616 | struct ieee80211_qos_hdr template; | 644 | struct ieee80211_qos_hdr template; |