Remove unused shared_freq driver op
[mech_eap.git] / src / drivers / driver.h
index e58ea6c..5566201 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Driver interface definition
- * Copyright (c) 2003-2014, Jouni Malinen <j@w1.fi>
+ * Copyright (c) 2003-2015, Jouni Malinen <j@w1.fi>
  *
  * This software may be distributed under the terms of the BSD license.
  * See README for more details.
@@ -198,7 +198,6 @@ struct hostapd_hw_modes {
 #define WPA_SCAN_NOISE_INVALID         BIT(1)
 #define WPA_SCAN_LEVEL_INVALID         BIT(2)
 #define WPA_SCAN_LEVEL_DBM             BIT(3)
-#define WPA_SCAN_AUTHENTICATED         BIT(4)
 #define WPA_SCAN_ASSOCIATED            BIT(5)
 
 /**
@@ -214,6 +213,9 @@ struct hostapd_hw_modes {
  * @tsf: Timestamp
  * @age: Age of the information in milliseconds (i.e., how many milliseconds
  * ago the last Beacon or Probe Response frame was received)
+ * @est_throughput: Estimated throughput in kbps (this is calculated during
+ * scan result processing if left zero by the driver wrapper)
+ * @snr: Signal-to-noise ratio in dB (calculated during scan result processing)
  * @ie_len: length of the following IE field in octets
  * @beacon_ie_len: length of the following Beacon IE field in octets
  *
@@ -242,6 +244,8 @@ struct wpa_scan_res {
        int level;
        u64 tsf;
        unsigned int age;
+       unsigned int est_throughput;
+       int snr;
        size_t ie_len;
        size_t beacon_ie_len;
        /* Followed by ie_len + beacon_ie_len octets of IE data */
@@ -381,6 +385,27 @@ struct wpa_driver_scan_params {
         */
        unsigned int low_priority:1;
 
+       /**
+        * mac_addr_rand - Requests driver to randomize MAC address
+        */
+       unsigned int mac_addr_rand:1;
+
+       /**
+        * mac_addr - MAC address used with randomization. The address cannot be
+        * a multicast one, i.e., bit 0 of byte 0 should not be set.
+        */
+       const u8 *mac_addr;
+
+       /**
+        * mac_addr_mask - MAC address mask used with randomization.
+        *
+        * Bits that are 0 in the mask should be randomized. Bits that are 1 in
+        * the mask should be taken as is from mac_addr. The mask should not
+        * allow the generation of a multicast address, i.e., bit 0 of byte 0
+        * must be set.
+        */
+       const u8 *mac_addr_mask;
+
        /*
         * NOTE: Whenever adding new parameters here, please make sure
         * wpa_scan_clone_params() and wpa_scan_free_params() get updated with
@@ -747,6 +772,14 @@ struct wpa_driver_associate_params {
        int fixed_bssid;
 
        /**
+        * fixed_freq - Fix control channel in IBSS mode
+        * 0 = don't fix control channel (default)
+        * 1 = fix control channel; this prevents IBSS merging with another
+        *      channel
+        */
+       int fixed_freq;
+
+       /**
         * disable_ht - Disable HT (IEEE 802.11n) for this connection
         */
        int disable_ht;
@@ -990,6 +1023,11 @@ struct wpa_driver_ap_params {
        int ap_max_inactivity;
 
        /**
+        * ctwindow - Client Traffic Window (in TUs)
+        */
+       u8 p2p_go_ctwindow;
+
+       /**
         * smps_mode - SMPS mode
         *
         * SMPS mode to be used by the AP, specified as the relevant bits of
@@ -1011,6 +1049,11 @@ struct wpa_driver_ap_params {
         * freq - Channel parameters for dynamic bandwidth changes
         */
        struct hostapd_freq_params *freq;
+
+       /**
+        * reenable - Whether this is to re-enable beaconing
+        */
+       int reenable;
 };
 
 struct wpa_driver_mesh_bss_params {
@@ -1020,6 +1063,7 @@ struct wpa_driver_mesh_bss_params {
         * See NL80211_MESHCONF_* for all the mesh config parameters.
         */
        unsigned int flags;
+       int peer_link_timeout;
 };
 
 struct wpa_driver_mesh_join_params {
@@ -1028,10 +1072,9 @@ struct wpa_driver_mesh_join_params {
        const int *basic_rates;
        const u8 *ies;
        int ie_len;
-       int freq;
+       struct hostapd_freq_params freq;
        int beacon_int;
        int max_peer_links;
-       enum ht_mode ht_mode;
        struct wpa_driver_mesh_bss_params conf;
 #define WPA_DRIVER_MESH_FLAG_USER_MPM  0x00000001
 #define WPA_DRIVER_MESH_FLAG_DRIVER_MPM        0x00000002
@@ -1052,6 +1095,8 @@ struct wpa_driver_capa {
 #define WPA_DRIVER_CAPA_KEY_MGMT_FT            0x00000020
 #define WPA_DRIVER_CAPA_KEY_MGMT_FT_PSK                0x00000040
 #define WPA_DRIVER_CAPA_KEY_MGMT_WAPI_PSK      0x00000080
+#define WPA_DRIVER_CAPA_KEY_MGMT_SUITE_B       0x00000100
+#define WPA_DRIVER_CAPA_KEY_MGMT_SUITE_B_192   0x00000200
        /** Bitfield of supported key management suites */
        unsigned int key_mgmt;
 
@@ -1162,6 +1207,10 @@ struct wpa_driver_capa {
 #define WPA_DRIVER_FLAGS_KEY_MGMT_OFFLOAD      0x0000000400000000ULL
 /** Driver supports TDLS channel switching */
 #define WPA_DRIVER_FLAGS_TDLS_CHANNEL_SWITCH   0x0000000800000000ULL
+/** Driver supports IBSS with HT datarates */
+#define WPA_DRIVER_FLAGS_HT_IBSS               0x0000001000000000ULL
+/** Driver supports IBSS with VHT datarates */
+#define WPA_DRIVER_FLAGS_VHT_IBSS              0x0000002000000000ULL
        u64 flags;
 
 #define WPA_DRIVER_SMPS_MODE_STATIC                    0x00000001
@@ -1170,6 +1219,9 @@ struct wpa_driver_capa {
 
        unsigned int wmm_ac_supported:1;
 
+       unsigned int mac_addr_rand_scan_supported:1;
+       unsigned int mac_addr_rand_sched_scan_supported:1;
+
        /** Maximum number of supported active probe SSIDs */
        int max_scan_ssids;
 
@@ -1425,6 +1477,7 @@ struct wpa_signal_info {
        int above_threshold;
        int current_signal;
        int avg_signal;
+       int avg_beacon_signal;
        int current_noise;
        int current_txrate;
        enum chan_width chanwidth;
@@ -2604,18 +2657,6 @@ struct wpa_driver_ops {
                          int encrypt);
 
        /**
-        * shared_freq - Get operating frequency of shared interface(s)
-        * @priv: Private driver interface data
-        * Returns: Operating frequency in MHz, 0 if no shared operation in
-        * use, or -1 on failure
-        *
-        * This command can be used to request the current operating frequency
-        * of any virtual interface that shares the same radio to provide
-        * information for channel selection for other virtual interfaces.
-        */
-       int (*shared_freq)(void *priv);
-
-       /**
         * get_noa - Get current Notice of Absence attribute payload
         * @priv: Private driver interface data
         * @buf: Buffer for returning NoA
@@ -2834,14 +2875,17 @@ struct wpa_driver_ops {
         * set_rekey_info - Set rekey information
         * @priv: Private driver interface data
         * @kek: Current KEK
+        * @kek_len: KEK length in octets
         * @kck: Current KCK
+        * @kck_len: KCK length in octets
         * @replay_ctr: Current EAPOL-Key Replay Counter
         *
         * This optional function can be used to provide information for the
         * driver/firmware to process EAPOL-Key frames in Group Key Handshake
         * while the host (including wpa_supplicant) is sleeping.
         */
-       void (*set_rekey_info)(void *priv, const u8 *kek, const u8 *kck,
+       void (*set_rekey_info)(void *priv, const u8 *kek, size_t kek_len,
+                              const u8 *kck, size_t kck_len,
                               const u8 *replay_ctr);
 
        /**
@@ -2993,6 +3037,33 @@ struct wpa_driver_ops {
        int (*del_tx_ts)(void *priv, u8 tsid, const u8 *addr);
 
        /**
+        * Enable channel-switching with TDLS peer
+        * @priv: Private driver interface data
+        * @addr: MAC address of the TDLS peer
+        * @oper_class: Operating class of the switch channel
+        * @params: Channel specification
+        * Returns: 0 on success, -1 on failure
+        *
+        * The function indicates to driver that it can start switching to a
+        * different channel with a specified TDLS peer. The switching is
+        * assumed on until canceled with tdls_disable_channel_switch().
+        */
+       int (*tdls_enable_channel_switch)(
+               void *priv, const u8 *addr, u8 oper_class,
+               const struct hostapd_freq_params *params);
+
+       /**
+        * Disable channel switching with TDLS peer
+        * @priv: Private driver interface data
+        * @addr: MAC address of the TDLS peer
+        * Returns: 0 on success, -1 on failure
+        *
+        * This function indicates to the driver that it should stop switching
+        * with a given TDLS peer.
+        */
+       int (*tdls_disable_channel_switch)(void *priv, const u8 *addr);
+
+       /**
         * start_dfs_cac - Listen for radar interference on the channel
         * @priv: Private driver interface data
         * @freq: Channel parameters
@@ -3701,7 +3772,7 @@ enum wpa_event_type {
        EVENT_CONNECT_FAILED_REASON,
 
        /**
-        * EVENT_RADAR_DETECTED - Notify of radar detection
+        * EVENT_DFS_RADAR_DETECTED - Notify of radar detection
         *
         * A radar has been detected on the supplied frequency, hostapd should
         * react accordingly (e.g., change channel).
@@ -3709,14 +3780,14 @@ enum wpa_event_type {
        EVENT_DFS_RADAR_DETECTED,
 
        /**
-        * EVENT_CAC_FINISHED - Notify that channel availability check has been completed
+        * EVENT_DFS_CAC_FINISHED - Notify that channel availability check has been completed
         *
         * After a successful CAC, the channel can be marked clear and used.
         */
        EVENT_DFS_CAC_FINISHED,
 
        /**
-        * EVENT_CAC_ABORTED - Notify that channel availability check has been aborted
+        * EVENT_DFS_CAC_ABORTED - Notify that channel availability check has been aborted
         *
         * The CAC was not successful, and the channel remains in the previous
         * state. This may happen due to a radar beeing detected or other
@@ -3725,7 +3796,7 @@ enum wpa_event_type {
        EVENT_DFS_CAC_ABORTED,
 
        /**
-        * EVENT_DFS_CAC_NOP_FINISHED - Notify that non-occupancy period is over
+        * EVENT_DFS_NOP_FINISHED - Notify that non-occupancy period is over
         *
         * The channel which was previously unavailable is now available again.
         */
@@ -3774,6 +3845,15 @@ enum wpa_event_type {
         * in device.
         */
        EVENT_ACS_CHANNEL_SELECTED,
+
+       /**
+        * EVENT_DFS_CAC_STARTED - Notify that channel availability check has
+        * been started.
+        *
+        * This event indicates that channel availability check has been started
+        * on a DFS frequency by a driver that supports DFS Offload.
+        */
+       EVENT_DFS_CAC_STARTED,
 };
 
 
@@ -4057,7 +4137,8 @@ union wpa_event_data {
                u8 peer[ETH_ALEN];
                enum {
                        TDLS_REQUEST_SETUP,
-                       TDLS_REQUEST_TEARDOWN
+                       TDLS_REQUEST_TEARDOWN,
+                       TDLS_REQUEST_DISCOVER,
                } oper;
                u16 reason_code; /* for teardown */
        } tdls;