diff options
author | Luciano Coelho <coelho@ti.com> | 2011-07-13 07:57:28 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-07-15 13:38:29 -0400 |
commit | 93b6aa693a355932b69c96956596b03f91baec35 (patch) | |
tree | 882cf301349f62c68fcd4df765447cbb969ef67a | |
parent | 77dbbb138986b26cb99f868d4b6410577ef4c040 (diff) |
nl80211/cfg80211: add max_sched_scan_ssids in the hw description
Some chips can scan more SSIDs with a single scheduled scan command
than with a single normal scan command (eg. wl12xx chips).
To support this, this patch creates a separate hardware description
element that describes the amount of SSIDs supported in scheduled
scans.
Signed-off-by: Luciano Coelho <coelho@ti.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | include/linux/nl80211.h | 4 | ||||
-rw-r--r-- | include/net/cfg80211.h | 3 | ||||
-rw-r--r-- | net/wireless/nl80211.c | 4 |
3 files changed, 10 insertions, 1 deletions
diff --git a/include/linux/nl80211.h b/include/linux/nl80211.h index c5f577e9ee27..159dda9c2c9f 100644 --- a/include/linux/nl80211.h +++ b/include/linux/nl80211.h | |||
@@ -756,6 +756,8 @@ enum nl80211_commands { | |||
756 | * | 756 | * |
757 | * @NL80211_ATTR_MAX_NUM_SCAN_SSIDS: number of SSIDs you can scan with | 757 | * @NL80211_ATTR_MAX_NUM_SCAN_SSIDS: number of SSIDs you can scan with |
758 | * a single scan request, a wiphy attribute. | 758 | * a single scan request, a wiphy attribute. |
759 | * @NL80211_ATTR_MAX_NUM_SCHED_SCAN_SSIDS: number of SSIDs you can | ||
760 | * scan with a single scheduled scan request, a wiphy attribute. | ||
759 | * @NL80211_ATTR_MAX_SCAN_IE_LEN: maximum length of information elements | 761 | * @NL80211_ATTR_MAX_SCAN_IE_LEN: maximum length of information elements |
760 | * that can be added to a scan request | 762 | * that can be added to a scan request |
761 | * | 763 | * |
@@ -1210,6 +1212,8 @@ enum nl80211_attrs { | |||
1210 | 1212 | ||
1211 | NL80211_ATTR_REKEY_DATA, | 1213 | NL80211_ATTR_REKEY_DATA, |
1212 | 1214 | ||
1215 | NL80211_ATTR_MAX_NUM_SCHED_SCAN_SSIDS, | ||
1216 | |||
1213 | /* add attributes here, update the policy in nl80211.c */ | 1217 | /* add attributes here, update the policy in nl80211.c */ |
1214 | 1218 | ||
1215 | __NL80211_ATTR_AFTER_LAST, | 1219 | __NL80211_ATTR_AFTER_LAST, |
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index 83d5c387755d..eef480fb177e 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h | |||
@@ -1758,6 +1758,8 @@ struct wiphy_wowlan_support { | |||
1758 | * this variable determines its size | 1758 | * this variable determines its size |
1759 | * @max_scan_ssids: maximum number of SSIDs the device can scan for in | 1759 | * @max_scan_ssids: maximum number of SSIDs the device can scan for in |
1760 | * any given scan | 1760 | * any given scan |
1761 | * @max_sched_scan_ssids: maximum number of SSIDs the device can scan | ||
1762 | * for in any given scheduled scan | ||
1761 | * @max_scan_ie_len: maximum length of user-controlled IEs device can | 1763 | * @max_scan_ie_len: maximum length of user-controlled IEs device can |
1762 | * add to probe request frames transmitted during a scan, must not | 1764 | * add to probe request frames transmitted during a scan, must not |
1763 | * include fixed IEs like supported rates | 1765 | * include fixed IEs like supported rates |
@@ -1812,6 +1814,7 @@ struct wiphy { | |||
1812 | 1814 | ||
1813 | int bss_priv_size; | 1815 | int bss_priv_size; |
1814 | u8 max_scan_ssids; | 1816 | u8 max_scan_ssids; |
1817 | u8 max_sched_scan_ssids; | ||
1815 | u16 max_scan_ie_len; | 1818 | u16 max_scan_ie_len; |
1816 | 1819 | ||
1817 | int n_cipher_suites; | 1820 | int n_cipher_suites; |
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c index a2e1e49c9196..935b58b7caf9 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c | |||
@@ -696,6 +696,8 @@ static int nl80211_send_wiphy(struct sk_buff *msg, u32 pid, u32 seq, int flags, | |||
696 | dev->wiphy.coverage_class); | 696 | dev->wiphy.coverage_class); |
697 | NLA_PUT_U8(msg, NL80211_ATTR_MAX_NUM_SCAN_SSIDS, | 697 | NLA_PUT_U8(msg, NL80211_ATTR_MAX_NUM_SCAN_SSIDS, |
698 | dev->wiphy.max_scan_ssids); | 698 | dev->wiphy.max_scan_ssids); |
699 | NLA_PUT_U8(msg, NL80211_ATTR_MAX_NUM_SCHED_SCAN_SSIDS, | ||
700 | dev->wiphy.max_sched_scan_ssids); | ||
699 | NLA_PUT_U16(msg, NL80211_ATTR_MAX_SCAN_IE_LEN, | 701 | NLA_PUT_U16(msg, NL80211_ATTR_MAX_SCAN_IE_LEN, |
700 | dev->wiphy.max_scan_ie_len); | 702 | dev->wiphy.max_scan_ie_len); |
701 | 703 | ||
@@ -3511,7 +3513,7 @@ static int nl80211_start_sched_scan(struct sk_buff *skb, | |||
3511 | tmp) | 3513 | tmp) |
3512 | n_ssids++; | 3514 | n_ssids++; |
3513 | 3515 | ||
3514 | if (n_ssids > wiphy->max_scan_ssids) | 3516 | if (n_ssids > wiphy->max_sched_scan_ssids) |
3515 | return -EINVAL; | 3517 | return -EINVAL; |
3516 | 3518 | ||
3517 | if (info->attrs[NL80211_ATTR_IE]) | 3519 | if (info->attrs[NL80211_ATTR_IE]) |