P2P: Reject multi-channel concurrent operations depending on driver
[libeap.git] / src / drivers / driver.h
index 0294652..90b3902 100644 (file)
@@ -481,6 +481,14 @@ struct wpa_driver_associate_params {
         * p2p - Whether this connection is a P2P group
         */
        int p2p;
+
+       /**
+        * uapsd - UAPSD parameters for the network
+        * -1 = do not change defaults
+        * AP mode: 1 = enabled, 0 = disabled
+        * STA mode: bits 0..3 UAPSD enabled for VO,VI,BK,BE
+        */
+       int uapsd;
 };
 
 /**
@@ -534,6 +542,8 @@ struct wpa_driver_capa {
 #define WPA_DRIVER_FLAGS_P2P_DEDICATED_INTERFACE       0x00000400
 /* This interface is P2P capable (P2P Device, GO, or P2P Client */
 #define WPA_DRIVER_FLAGS_P2P_CAPABLE   0x00000800
+/* Driver supports concurrent operations on multiple channels */
+#define WPA_DRIVER_FLAGS_MULTI_CHANNEL_CONCURRENT      0x00001000
        unsigned int flags;
 
        int max_scan_ssids;
@@ -542,6 +552,12 @@ struct wpa_driver_capa {
         * max_remain_on_chan - Maximum remain-on-channel duration in msec
         */
        unsigned int max_remain_on_chan;
+
+       /**
+        * max_stations - Maximum number of associated stations the driver
+        * supports in AP mode
+        */
+       unsigned int max_stations;
 };
 
 
@@ -1644,12 +1660,17 @@ struct wpa_driver_ops {
         * @beacon: WPS IE(s) for Beacon frames or %NULL to remove extra IE(s)
         * @proberesp: WPS IE(s) for Probe Response frames or %NULL to remove
         *      extra IE(s)
+        * @assocresp: WPS IE(s) for (Re)Association Response frames or %NULL
+        *      to remove extra IE(s)
         * Returns: 0 on success, -1 on failure
         *
         * This is an optional function to add WPS IE in the kernel driver for
         * Beacon and Probe Response frames. This can be left undefined (set
         * to %NULL) if the driver uses the Beacon template from set_beacon()
-        * and does not process Probe Request frames.
+        * and does not process Probe Request frames. If the driver takes care
+        * of (Re)Association frame processing, the assocresp buffer includes
+        * WPS IE(s) that need to be added to (Re)Association Response frames
+        * whenever a (Re)Association Request frame indicated use of WPS.
         *
         * This will also be used to add P2P IE(s) into Beacon/Probe Response
         * frames when operating as a GO. The driver is responsible for adding
@@ -1660,7 +1681,8 @@ struct wpa_driver_ops {
         * internally.
         */
        int (*set_ap_wps_ie)(void *priv, const struct wpabuf *beacon,
-                            const struct wpabuf *proberesp);
+                            const struct wpabuf *proberesp,
+                            const struct wpabuf *assocresp);
 
        /**
         * set_supp_port - Set IEEE 802.1X Supplicant Port status
@@ -1860,6 +1882,30 @@ struct wpa_driver_ops {
         * 0.
         */
        int (*set_noa)(void *priv, u8 count, int start, int duration);
+
+       /**
+        * set_p2p_powersave - Set P2P power save options
+        * @priv: Private driver interface data
+        * @legacy_ps: 0 = disable, 1 = enable, 2 = maximum PS, -1 = no change
+        * @opp_ps: 0 = disable, 1 = enable, -1 = no change
+        * @ctwindow: 0.. = change (msec), -1 = no change
+        * Returns: 0 on success or -1 on failure
+        */
+       int (*set_p2p_powersave)(void *priv, int legacy_ps, int opp_ps,
+                                int ctwindow);
+
+       /**
+        * ampdu - Enable/disable aggregation
+        * @priv: Private driver interface data
+        * @ampdu: 1/0 = enable/disable A-MPDU aggregation
+        * Returns: 0 on success or -1 on failure
+        */
+       int (*ampdu)(void *priv, int ampdu);
+
+       /**
+        * set_intra_bss - Enables/Disables intra BSS bridging
+        */
+       int (*set_intra_bss)(void *priv, int enabled);
 };
 
 
@@ -2566,8 +2612,11 @@ union wpa_event_data {
         * struct signal_change - Data for EVENT_SIGNAL_CHANGE events
         */
        struct signal_change {
+               u32 frequency;
                int above_threshold;
                int current_signal;
+               int current_noise;
+               int current_txrate;
        } signal_change;
 };