summaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/wl12xx/cmd.c
diff options
context:
space:
mode:
authorArik Nemtsov <arik@wizery.com>2011-09-03 20:22:03 +0300
committerLuciano Coelho <coelho@ti.com>2011-09-23 14:43:32 +0300
commit68eaaf6ee5ac35d8e592834219cee9c9e88fdb24 (patch)
tree45bb00cb06c9b1cedbe8e19cfd641086a8688cee /drivers/net/wireless/wl12xx/cmd.c
parentdf4c849f4608e8962f019fea6021ebd602a11641 (diff)
downloadop-kernel-dev-68eaaf6ee5ac35d8e592834219cee9c9e88fdb24.zip
op-kernel-dev-68eaaf6ee5ac35d8e592834219cee9c9e88fdb24.tar.gz
wl12xx: AP mode - support hidden SSID
If a hidden SSID is requested, generate a probe response template containing the real SSID. Depends on the patch "mac80211: add ssid config to bss information in AP-mode". Signed-off-by: Arik Nemtsov <arik@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
Diffstat (limited to 'drivers/net/wireless/wl12xx/cmd.c')
-rw-r--r--drivers/net/wireless/wl12xx/cmd.c24
1 files changed, 15 insertions, 9 deletions
diff --git a/drivers/net/wireless/wl12xx/cmd.c b/drivers/net/wireless/wl12xx/cmd.c
index 084262f..51be8f7 100644
--- a/drivers/net/wireless/wl12xx/cmd.c
+++ b/drivers/net/wireless/wl12xx/cmd.c
@@ -661,12 +661,9 @@ int wl12xx_cmd_role_start_ap(struct wl1271 *wl)
wl1271_debug(DEBUG_CMD, "cmd role start ap %d", wl->role_id);
- /*
- * We currently do not support hidden SSID. The real SSID
- * should be fetched from mac80211 first.
- */
- if (wl->ssid_len == 0) {
- wl1271_warning("Hidden SSID currently not supported for AP");
+ /* trying to use hidden SSID with an old hostapd version */
+ if (wl->ssid_len == 0 && !bss_conf->hidden_ssid) {
+ wl1271_error("got a null SSID from beacon/bss");
ret = -EINVAL;
goto out;
}
@@ -695,9 +692,18 @@ int wl12xx_cmd_role_start_ap(struct wl1271 *wl)
cmd->ap.dtim_interval = bss_conf->dtim_period;
cmd->ap.beacon_expiry = WL1271_AP_DEF_BEACON_EXP;
cmd->channel = wl->channel;
- cmd->ap.ssid_len = wl->ssid_len;
- cmd->ap.ssid_type = WL12XX_SSID_TYPE_PUBLIC;
- memcpy(cmd->ap.ssid, wl->ssid, wl->ssid_len);
+
+ if (!bss_conf->hidden_ssid) {
+ /* take the SSID from the beacon for backward compatibility */
+ cmd->ap.ssid_type = WL12XX_SSID_TYPE_PUBLIC;
+ cmd->ap.ssid_len = wl->ssid_len;
+ memcpy(cmd->ap.ssid, wl->ssid, wl->ssid_len);
+ } else {
+ cmd->ap.ssid_type = WL12XX_SSID_TYPE_HIDDEN;
+ cmd->ap.ssid_len = bss_conf->ssid_len;
+ memcpy(cmd->ap.ssid, bss_conf->ssid, bss_conf->ssid_len);
+ }
+
cmd->ap.local_rates = cpu_to_le32(0xffffffff);
switch (wl->band) {
OpenPOWER on IntegriCloud