aboutsummaryrefslogtreecommitdiffstats
path: root/net/wireless/nl80211.c
diff options
context:
space:
mode:
authorVivek Natarajan <nataraja@qca.qualcomm.com>2011-08-29 04:53:03 -0400
committerJohn W. Linville <linville@tuxdriver.com>2011-09-13 15:42:31 -0400
commitf4b34b550a5428345f3794e62de48ad5a3db3954 (patch)
tree50d5c3b482bd018069fdde870f0c472808156070 /net/wireless/nl80211.c
parentf0425beda4d404a6e751439b562100b902ba9c98 (diff)
cfg80211/nl80211: Indicate roaming feature capability to userspace.
When the rssi of the current AP drops, both wpa_supplicant and the firmware may do a background scan to find a better AP and try to associate. Since firmware based roaming is faster, inform wpa_supplicant to avoid roaming and let the firmware decide to roam if necessary. For fullmac drivers like ath6kl, it is just enough to provide the ESSID and the firmware will decide on the BSSID. Since it is not possible to do pre-auth during roaming for fullmac drivers, the wpa_supplicant needs to completely disconnect with the old AP and reconnect with the new AP. This consumes lot of time and it is better to leave the roaming decision to the firmware. Signed-off-by: Vivek Natarajan <nataraja@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/wireless/nl80211.c')
-rw-r--r--net/wireless/nl80211.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index bddb5595c659..ad13903c9b89 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -189,6 +189,7 @@ static const struct nla_policy nl80211_policy[NL80211_ATTR_MAX+1] = {
189 .len = IEEE80211_MAX_DATA_LEN }, 189 .len = IEEE80211_MAX_DATA_LEN },
190 [NL80211_ATTR_IE_ASSOC_RESP] = { .type = NLA_BINARY, 190 [NL80211_ATTR_IE_ASSOC_RESP] = { .type = NLA_BINARY,
191 .len = IEEE80211_MAX_DATA_LEN }, 191 .len = IEEE80211_MAX_DATA_LEN },
192 [NL80211_ATTR_ROAM_SUPPORT] = { .type = NLA_FLAG },
192}; 193};
193 194
194/* policy for the key attributes */ 195/* policy for the key attributes */
@@ -720,6 +721,9 @@ static int nl80211_send_wiphy(struct sk_buff *msg, u32 pid, u32 seq, int flags,
720 if (dev->wiphy.flags & WIPHY_FLAG_MESH_AUTH) 721 if (dev->wiphy.flags & WIPHY_FLAG_MESH_AUTH)
721 NLA_PUT_FLAG(msg, NL80211_ATTR_SUPPORT_MESH_AUTH); 722 NLA_PUT_FLAG(msg, NL80211_ATTR_SUPPORT_MESH_AUTH);
722 723
724 if (dev->wiphy.flags & WIPHY_FLAG_SUPPORTS_FW_ROAM)
725 NLA_PUT_FLAG(msg, NL80211_ATTR_ROAM_SUPPORT);
726
723 NLA_PUT(msg, NL80211_ATTR_CIPHER_SUITES, 727 NLA_PUT(msg, NL80211_ATTR_CIPHER_SUITES,
724 sizeof(u32) * dev->wiphy.n_cipher_suites, 728 sizeof(u32) * dev->wiphy.n_cipher_suites,
725 dev->wiphy.cipher_suites); 729 dev->wiphy.cipher_suites);