diff options
author | Arik Nemtsov <arik@wizery.com> | 2011-09-03 13:22:03 -0400 |
---|---|---|
committer | Luciano Coelho <coelho@ti.com> | 2011-09-23 07:43:32 -0400 |
commit | 68eaaf6ee5ac35d8e592834219cee9c9e88fdb24 (patch) | |
tree | 45bb00cb06c9b1cedbe8e19cfd641086a8688cee /drivers/net/wireless/wl12xx/cmd.c | |
parent | df4c849f4608e8962f019fea6021ebd602a11641 (diff) |
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.c | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/drivers/net/wireless/wl12xx/cmd.c b/drivers/net/wireless/wl12xx/cmd.c index 084262f169b2..51be8f7fbb88 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) | |||
661 | 661 | ||
662 | wl1271_debug(DEBUG_CMD, "cmd role start ap %d", wl->role_id); | 662 | wl1271_debug(DEBUG_CMD, "cmd role start ap %d", wl->role_id); |
663 | 663 | ||
664 | /* | 664 | /* trying to use hidden SSID with an old hostapd version */ |
665 | * We currently do not support hidden SSID. The real SSID | 665 | if (wl->ssid_len == 0 && !bss_conf->hidden_ssid) { |
666 | * should be fetched from mac80211 first. | 666 | wl1271_error("got a null SSID from beacon/bss"); |
667 | */ | ||
668 | if (wl->ssid_len == 0) { | ||
669 | wl1271_warning("Hidden SSID currently not supported for AP"); | ||
670 | ret = -EINVAL; | 667 | ret = -EINVAL; |
671 | goto out; | 668 | goto out; |
672 | } | 669 | } |
@@ -695,9 +692,18 @@ int wl12xx_cmd_role_start_ap(struct wl1271 *wl) | |||
695 | cmd->ap.dtim_interval = bss_conf->dtim_period; | 692 | cmd->ap.dtim_interval = bss_conf->dtim_period; |
696 | cmd->ap.beacon_expiry = WL1271_AP_DEF_BEACON_EXP; | 693 | cmd->ap.beacon_expiry = WL1271_AP_DEF_BEACON_EXP; |
697 | cmd->channel = wl->channel; | 694 | cmd->channel = wl->channel; |
698 | cmd->ap.ssid_len = wl->ssid_len; | 695 | |
699 | cmd->ap.ssid_type = WL12XX_SSID_TYPE_PUBLIC; | 696 | if (!bss_conf->hidden_ssid) { |
700 | memcpy(cmd->ap.ssid, wl->ssid, wl->ssid_len); | 697 | /* take the SSID from the beacon for backward compatibility */ |
698 | cmd->ap.ssid_type = WL12XX_SSID_TYPE_PUBLIC; | ||
699 | cmd->ap.ssid_len = wl->ssid_len; | ||
700 | memcpy(cmd->ap.ssid, wl->ssid, wl->ssid_len); | ||
701 | } else { | ||
702 | cmd->ap.ssid_type = WL12XX_SSID_TYPE_HIDDEN; | ||
703 | cmd->ap.ssid_len = bss_conf->ssid_len; | ||
704 | memcpy(cmd->ap.ssid, bss_conf->ssid, bss_conf->ssid_len); | ||
705 | } | ||
706 | |||
701 | cmd->ap.local_rates = cpu_to_le32(0xffffffff); | 707 | cmd->ap.local_rates = cpu_to_le32(0xffffffff); |
702 | 708 | ||
703 | switch (wl->band) { | 709 | switch (wl->band) { |