Nate Jiang | 7a7fd84 | 2022-12-06 17:11:13 -0800 | [diff] [blame] | 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 | /* wifi_enable_tdls - enables TDLS-auto mode for a specific route |
| 56 | * |
| 57 | * params specifies hints, which provide more information about |
| 58 | * why TDLS is being sought. The firmware should do its best to |
| 59 | * honor the hints before downgrading regular AP link |
| 60 | * If upper layer has no specific values, this should be NULL |
| 61 | * |
| 62 | * handler is used to inform the upper layer about the status change and the corresponding reason |
| 63 | */ |
| 64 | wifi_error wifi_enable_tdls(wifi_interface_handle iface, mac_addr addr, wifi_tdls_params* params, |
| 65 | wifi_tdls_handler handler); |
| 66 | |
| 67 | /* wifi_disable_tdls - disables TDLS-auto mode for a specific route |
| 68 | * |
| 69 | * This terminates any existing TDLS with addr device, and frees the |
| 70 | * device resources to make TDLS connections on new routes. |
| 71 | * |
| 72 | * DON'T fire any more events on 'handler' specified in earlier call to |
| 73 | * wifi_enable_tdls after this action. |
| 74 | */ |
| 75 | wifi_error wifi_disable_tdls(wifi_interface_handle iface, mac_addr addr); |
| 76 | |
| 77 | /* wifi_get_tdls_status - allows getting the status of TDLS for a specific route */ |
| 78 | wifi_error wifi_get_tdls_status(wifi_interface_handle iface, mac_addr addr, |
| 79 | wifi_tdls_status* status); |
| 80 | |
| 81 | /* return the current HW + Firmware combination's TDLS capabilities */ |
| 82 | wifi_error wifi_get_tdls_capabilities(wifi_interface_handle iface, |
| 83 | wifi_tdls_capabilities* capabilities); |
| 84 | #endif |