aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/cfg80211.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/net/cfg80211.h')
-rw-r--r--include/net/cfg80211.h135
1 files changed, 129 insertions, 6 deletions
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index 885d4e5bc4b5..68e11321ed74 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -605,6 +605,30 @@ struct cfg80211_bss {
605}; 605};
606 606
607/** 607/**
608 * struct cfg80211_crypto_settings - Crypto settings
609 * @wpa_versions: indicates which, if any, WPA versions are enabled
610 * (from enum nl80211_wpa_versions)
611 * @cipher_group: group key cipher suite (or 0 if unset)
612 * @n_ciphers_pairwise: number of AP supported unicast ciphers
613 * @ciphers_pairwise: unicast key cipher suites
614 * @n_akm_suites: number of AKM suites
615 * @akm_suites: AKM suites
616 * @control_port: Whether user space controls IEEE 802.1X port, i.e.,
617 * sets/clears %NL80211_STA_FLAG_AUTHORIZED. If true, the driver is
618 * required to assume that the port is unauthorized until authorized by
619 * user space. Otherwise, port is marked authorized by default.
620 */
621struct cfg80211_crypto_settings {
622 u32 wpa_versions;
623 u32 cipher_group;
624 int n_ciphers_pairwise;
625 u32 ciphers_pairwise[NL80211_MAX_NR_CIPHER_SUITES];
626 int n_akm_suites;
627 u32 akm_suites[NL80211_MAX_NR_AKM_SUITES];
628 bool control_port;
629};
630
631/**
608 * struct cfg80211_auth_request - Authentication request data 632 * struct cfg80211_auth_request - Authentication request data
609 * 633 *
610 * This structure provides information needed to complete IEEE 802.11 634 * This structure provides information needed to complete IEEE 802.11
@@ -658,10 +682,7 @@ struct cfg80211_auth_request {
658 * @ie: Extra IEs to add to (Re)Association Request frame or %NULL 682 * @ie: Extra IEs to add to (Re)Association Request frame or %NULL
659 * @ie_len: Length of ie buffer in octets 683 * @ie_len: Length of ie buffer in octets
660 * @use_mfp: Use management frame protection (IEEE 802.11w) in this association 684 * @use_mfp: Use management frame protection (IEEE 802.11w) in this association
661 * @control_port: Whether user space controls IEEE 802.1X port, i.e., 685 * @crypto: crypto settings
662 * sets/clears %NL80211_STA_FLAG_AUTHORIZED. If true, the driver is
663 * required to assume that the port is unauthorized until authorized by
664 * user space. Otherwise, port is marked authorized by default.
665 */ 686 */
666struct cfg80211_assoc_request { 687struct cfg80211_assoc_request {
667 struct ieee80211_channel *chan; 688 struct ieee80211_channel *chan;
@@ -671,7 +692,7 @@ struct cfg80211_assoc_request {
671 const u8 *ie; 692 const u8 *ie;
672 size_t ie_len; 693 size_t ie_len;
673 bool use_mfp; 694 bool use_mfp;
674 bool control_port; 695 struct cfg80211_crypto_settings crypto;
675}; 696};
676 697
677/** 698/**
@@ -738,6 +759,36 @@ struct cfg80211_ibss_params {
738}; 759};
739 760
740/** 761/**
762 * struct cfg80211_connect_params - Connection parameters
763 *
764 * This structure provides information needed to complete IEEE 802.11
765 * authentication and association.
766 *
767 * @channel: The channel to use or %NULL if not specified (auto-select based
768 * on scan results)
769 * @bssid: The AP BSSID or %NULL if not specified (auto-select based on scan
770 * results)
771 * @ssid: SSID
772 * @ssid_len: Length of ssid in octets
773 * @auth_type: Authentication type (algorithm)
774 * @assoc_ie: IEs for association request
775 * @assoc_ie_len: Length of assoc_ie in octets
776 * @privacy: indicates whether privacy-enabled APs should be used
777 * @crypto: crypto settings
778 */
779struct cfg80211_connect_params {
780 struct ieee80211_channel *channel;
781 u8 *bssid;
782 u8 *ssid;
783 size_t ssid_len;
784 enum nl80211_auth_type auth_type;
785 u8 *ie;
786 size_t ie_len;
787 bool privacy;
788 struct cfg80211_crypto_settings crypto;
789};
790
791/**
741 * enum wiphy_params_flags - set_wiphy_params bitfield values 792 * enum wiphy_params_flags - set_wiphy_params bitfield values
742 * WIPHY_PARAM_RETRY_SHORT: wiphy->retry_short has changed 793 * WIPHY_PARAM_RETRY_SHORT: wiphy->retry_short has changed
743 * WIPHY_PARAM_RETRY_LONG: wiphy->retry_long has changed 794 * WIPHY_PARAM_RETRY_LONG: wiphy->retry_long has changed
@@ -841,6 +892,12 @@ enum tx_power_setting {
841 * @deauth: Request to deauthenticate from the specified peer 892 * @deauth: Request to deauthenticate from the specified peer
842 * @disassoc: Request to disassociate from the specified peer 893 * @disassoc: Request to disassociate from the specified peer
843 * 894 *
895 * @connect: Connect to the ESS with the specified parameters. When connected,
896 * call cfg80211_connect_result() with status code %WLAN_STATUS_SUCCESS.
897 * If the connection fails for some reason, call cfg80211_connect_result()
898 * with the status from the AP.
899 * @disconnect: Disconnect from the BSS/ESS.
900 *
844 * @join_ibss: Join the specified IBSS (or create if necessary). Once done, call 901 * @join_ibss: Join the specified IBSS (or create if necessary). Once done, call
845 * cfg80211_ibss_joined(), also call that function when changing BSSID due 902 * cfg80211_ibss_joined(), also call that function when changing BSSID due
846 * to a merge. 903 * to a merge.
@@ -946,6 +1003,11 @@ struct cfg80211_ops {
946 int (*disassoc)(struct wiphy *wiphy, struct net_device *dev, 1003 int (*disassoc)(struct wiphy *wiphy, struct net_device *dev,
947 struct cfg80211_disassoc_request *req); 1004 struct cfg80211_disassoc_request *req);
948 1005
1006 int (*connect)(struct wiphy *wiphy, struct net_device *dev,
1007 struct cfg80211_connect_params *sme);
1008 int (*disconnect)(struct wiphy *wiphy, struct net_device *dev,
1009 u16 reason_code);
1010
949 int (*join_ibss)(struct wiphy *wiphy, struct net_device *dev, 1011 int (*join_ibss)(struct wiphy *wiphy, struct net_device *dev,
950 struct cfg80211_ibss_params *params); 1012 struct cfg80211_ibss_params *params);
951 int (*leave_ibss)(struct wiphy *wiphy, struct net_device *dev); 1013 int (*leave_ibss)(struct wiphy *wiphy, struct net_device *dev);
@@ -1174,10 +1236,15 @@ struct wireless_dev {
1174 struct list_head list; 1236 struct list_head list;
1175 struct net_device *netdev; 1237 struct net_device *netdev;
1176 1238
1177 /* currently used for IBSS - might be rearranged in the future */ 1239 /* currently used for IBSS and SME - might be rearranged later */
1178 struct cfg80211_bss *current_bss; 1240 struct cfg80211_bss *current_bss;
1179 u8 ssid[IEEE80211_MAX_SSID_LEN]; 1241 u8 ssid[IEEE80211_MAX_SSID_LEN];
1180 u8 ssid_len; 1242 u8 ssid_len;
1243 enum {
1244 CFG80211_SME_IDLE,
1245 CFG80211_SME_CONNECTING, /* ->connect called */
1246 CFG80211_SME_CONNECTED,
1247 } sme_state;
1181 1248
1182#ifdef CONFIG_WIRELESS_EXT 1249#ifdef CONFIG_WIRELESS_EXT
1183 /* wext data */ 1250 /* wext data */
@@ -1788,4 +1855,60 @@ void cfg80211_testmode_event(struct sk_buff *skb, gfp_t gfp);
1788#define CFG80211_TESTMODE_CMD(cmd) 1855#define CFG80211_TESTMODE_CMD(cmd)
1789#endif 1856#endif
1790 1857
1858/**
1859 * cfg80211_connect_result - notify cfg80211 of connection result
1860 *
1861 * @dev: network device
1862 * @bssid: the BSSID of the AP
1863 * @req_ie: association request IEs (maybe be %NULL)
1864 * @req_ie_len: association request IEs length
1865 * @resp_ie: association response IEs (may be %NULL)
1866 * @resp_ie_len: assoc response IEs length
1867 * @status: status code, 0 for successful connection, use
1868 * %WLAN_STATUS_UNSPECIFIED_FAILURE if your device cannot give you
1869 * the real status code for failures.
1870 * @gfp: allocation flags
1871 *
1872 * It should be called by the underlying driver whenever connect() has
1873 * succeeded.
1874 */
1875void cfg80211_connect_result(struct net_device *dev, const u8 *bssid,
1876 const u8 *req_ie, size_t req_ie_len,
1877 const u8 *resp_ie, size_t resp_ie_len,
1878 u16 status, gfp_t gfp);
1879
1880/**
1881 * cfg80211_roamed - notify cfg80211 of roaming
1882 *
1883 * @dev: network device
1884 * @bssid: the BSSID of the new AP
1885 * @req_ie: association request IEs (maybe be %NULL)
1886 * @req_ie_len: association request IEs length
1887 * @resp_ie: association response IEs (may be %NULL)
1888 * @resp_ie_len: assoc response IEs length
1889 * @gfp: allocation flags
1890 *
1891 * It should be called by the underlying driver whenever it roamed
1892 * from one AP to another while connected.
1893 */
1894void cfg80211_roamed(struct net_device *dev, const u8 *bssid,
1895 const u8 *req_ie, size_t req_ie_len,
1896 const u8 *resp_ie, size_t resp_ie_len, gfp_t gfp);
1897
1898/**
1899 * cfg80211_disconnected - notify cfg80211 that connection was dropped
1900 *
1901 * @dev: network device
1902 * @ie: information elements of the deauth/disassoc frame (may be %NULL)
1903 * @ie_len: length of IEs
1904 * @reason: reason code for the disconnection, set it to 0 if unknown
1905 * @gfp: allocation flags
1906 *
1907 * After it calls this function, the driver should enter an idle state
1908 * and not try to connect to any AP any more.
1909 */
1910void cfg80211_disconnected(struct net_device *dev, u16 reason,
1911 u8 *ie, size_t ie_len, gfp_t gfp);
1912
1913
1791#endif /* __NET_CFG80211_H */ 1914#endif /* __NET_CFG80211_H */