Home | History | Annotate | Download | only in hardware_legacy
      1 
      2 #include "wifi_hal.h"
      3 
      4 #ifndef _TDLS_H_
      5 #define _TDLS_H_
      6 
      7 typedef enum {
      8     WIFI_TDLS_DISABLED = 1,                 /* TDLS is not enabled, default status for all STAs */
      9     WIFI_TDLS_ENABLED,                      /* TDLS is enabled, but not yet tried */
     10     WIFI_TDLS_ESTABLISHED,                  /* Direct link is established */
     11     WIFI_TDLS_ESTABLISHED_OFF_CHANNEL,      /* Direct link is established using MCC */
     12     WIFI_TDLS_DROPPED,                      /* Direct link was established,
     13                                              * but is temporarily dropped now */
     14     WIFI_TDLS_FAILED                        /* TDLS permanent failed. Inform error to upper layer
     15                                              * and go back to WIFI_TDLS_DISABLED */
     16 } wifi_tdls_state;
     17 
     18 typedef enum {
     19     WIFI_TDLS_SUCCESS,                              /* Success */
     20     WIFI_TDLS_UNSPECIFIED           = -1,           /* Unspecified reason */
     21     WIFI_TDLS_NOT_SUPPORTED         = -2,           /* Remote side doesn't support TDLS */
     22     WIFI_TDLS_UNSUPPORTED_BAND      = -3,           /* Remote side doesn't support this band */
     23     WIFI_TDLS_NOT_BENEFICIAL        = -4,           /* Going to AP is better than going direct */
     24     WIFI_TDLS_DROPPED_BY_REMOTE     = -5            /* Remote side doesn't want it anymore */
     25 } wifi_tdls_reason;
     26 
     27 typedef struct {
     28     int channel;                        /* channel hint, in channel number (NOT frequency ) */
     29     int global_operating_class;         /* operating class to use */
     30     int max_latency_ms;                 /* max latency that can be tolerated by apps */
     31     int min_bandwidth_kbps;             /* bandwidth required by apps, in kilo bits per second */
     32 } wifi_tdls_params;
     33 
     34 typedef struct {
     35     int channel;
     36     int global_operating_class;
     37     wifi_tdls_state state;
     38     wifi_tdls_reason reason;
     39 } wifi_tdls_status;
     40 
     41 typedef struct {
     42     int max_concurrent_tdls_session_num;      /* Maximum TDLS session number can be supported by the
     43                                               * Firmware and hardware*/
     44     int is_global_tdls_supported;            /* 1 -- support,  0 -- not support */
     45     int is_per_mac_tdls_supported;           /* 1 -- support,  0 -- not support */
     46     int is_off_channel_tdls_supported;       /* 1 -- support,  0 -- not support */
     47 } wifi_tdls_capabilities;
     48 
     49 typedef struct {
     50     /* on_tdls_state_changed - reports state of TDLS link to framework
     51      * Report this event when the state of TDLS link changes */
     52     void (*on_tdls_state_changed)(mac_addr addr, wifi_tdls_status status);
     53 } wifi_tdls_handler;
     54 
     55 
     56 /* wifi_enable_tdls - enables TDLS-auto mode for a specific route
     57  *
     58  * params specifies hints, which provide more information about
     59  * why TDLS is being sought. The firmware should do its best to
     60  * honor the hints before downgrading regular AP link
     61  * If upper layer has no specific values, this should be NULL
     62  *
     63  * handler is used to inform the upper layer about the status change and the corresponding reason
     64  */
     65 wifi_error wifi_enable_tdls(wifi_interface_handle iface, mac_addr addr,
     66         wifi_tdls_params *params, wifi_tdls_handler handler);
     67 
     68 /* wifi_disable_tdls - disables TDLS-auto mode for a specific route
     69  *
     70  * This terminates any existing TDLS with addr device, and frees the
     71  * device resources to make TDLS connections on new routes.
     72  *
     73  * DON'T fire any more events on 'handler' specified in earlier call to
     74  * wifi_enable_tdls after this action.
     75  */
     76 wifi_error wifi_disable_tdls(wifi_interface_handle iface, mac_addr addr);
     77 
     78 /* wifi_get_tdls_status - allows getting the status of TDLS for a specific route */
     79 wifi_error wifi_get_tdls_status(wifi_interface_handle iface, mac_addr addr,
     80         wifi_tdls_status *status);
     81 
     82 /* return the current HW + Firmware combination's TDLS capabilities */
     83 wifi_error wifi_get_tdls_capabilities(wifi_interface_handle iface,
     84         wifi_tdls_capabilities *capabilities);
     85 #endif
     86