
The CONVERGED_TDLS_ENABLE feature flag was originally introduced when the TDLS feature was being componentized so that one could select either the legacy implementation or the componentized implementation. That componentization activity has concluded and the legacy implementation no longer exists. To align with the current usage remove all legacy TDLS code and switch to using the FEATURE_WLAN_TDLS feature flag since that more accurately describes the code being protected. Change-Id: Ieef785844bd25b06604167eae2f52e39717f502f CRs-Fixed: 2395694
433 lines
13 KiB
C
433 lines
13 KiB
C
/*
|
|
* Copyright (c) 2013-2019 The Linux Foundation. All rights reserved.
|
|
*
|
|
* Permission to use, copy, modify, and/or distribute this software for
|
|
* any purpose with or without fee is hereby granted, provided that the
|
|
* above copyright notice and this permission notice appear in all
|
|
* copies.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
|
|
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
|
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
|
|
* AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
|
|
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
|
|
* PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
|
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
* PERFORMANCE OF THIS SOFTWARE.
|
|
*/
|
|
|
|
/*
|
|
* This file contains the API definitions for the STA WMI APIs.
|
|
*/
|
|
|
|
#ifndef _WMI_UNIFIED_STA_PARAM_H_
|
|
#define _WMI_UNIFIED_STA_PARAM_H_
|
|
|
|
/**
|
|
* struct sta_params - sta keep alive parameters
|
|
* @vdev_id: vdev id
|
|
* @method: keep alive method
|
|
* @timeperiod: time to keep alive
|
|
* @hostv4addr: host ipv4 address
|
|
* @destv4addr: destination ipv4 address
|
|
* @destmac: destination mac address
|
|
*/
|
|
struct sta_params {
|
|
uint8_t vdev_id;
|
|
uint32_t method;
|
|
uint32_t timeperiod;
|
|
uint8_t *hostv4addr;
|
|
uint8_t *destv4addr;
|
|
uint8_t *destmac;
|
|
};
|
|
|
|
/**
|
|
* struct gtx_config_t - GTX config
|
|
* @gtx_rt_mask: for HT and VHT rate masks
|
|
* @gtx_usrcfg: host request for GTX mask
|
|
* @gtx_threshold: PER Threshold (default: 10%)
|
|
* @gtx_margin: PER margin (default: 2%)
|
|
* @gtx_tcpstep: TCP step (default: 1)
|
|
* @gtx_tpcMin: TCP min (default: 5)
|
|
* @gtx_bwmask: BW mask (20/40/80/160 Mhz)
|
|
*/
|
|
struct wmi_gtx_config {
|
|
uint32_t gtx_rt_mask[2];
|
|
uint32_t gtx_usrcfg;
|
|
uint32_t gtx_threshold;
|
|
uint32_t gtx_margin;
|
|
uint32_t gtx_tpcstep;
|
|
uint32_t gtx_tpcmin;
|
|
uint32_t gtx_bwmask;
|
|
};
|
|
|
|
/**
|
|
* struct wlm_latency_level_param - WLM parameters
|
|
* @wlm_latency_level: wlm latency level to set
|
|
* 0 - normal, 1 - moderate, 2 - low, 3 - ultralow
|
|
* @wlm_latency_flags: wlm latency flags to set
|
|
* |31 12| 11 | 10 |9 8|7 6|5 4|3 2| 1 | 0 |
|
|
* +------+------+------+------+------+------+------+-----+-----+
|
|
* | RSVD | SSLP | CSLP | RSVD | Roam | RSVD | DWLT | DFS | SUP |
|
|
* +------+-------------+-------------+-------------------------+
|
|
* | WAL | PS | Roam | Scan |
|
|
*
|
|
* bit 0: Avoid scan request from HLOS if setting
|
|
* bit 1: Skip DFS channel SCAN if setting
|
|
* bit 2-3: Define policy of dwell time/duration for each foreign channel
|
|
* (b2 b3)
|
|
* (0 0 ): Default scan dwell time
|
|
* (0 1 ): Reserve
|
|
* (1 0 ): Shrink off channel dwell time
|
|
* (1 1 ): Reserve
|
|
* bit 4-5: Reserve for scan
|
|
* bit 6-7: Define roaming policy
|
|
* (b6 b7)
|
|
* (0 0 ): Default roaming behavior, allow roaming in all scenarios
|
|
* (0 1 ): Disallow all roaming
|
|
* (1 0 ): Allow roaming when final bmissed
|
|
* (1 1 ): Reserve
|
|
* bit 8-9: Reserve for roaming
|
|
* bit 10: Disable css power collapse if setting
|
|
* bit 11: Disable sys sleep if setting
|
|
* bit 12-31: Reserve for future useage
|
|
* @vdev_id: vdev id
|
|
*/
|
|
struct wlm_latency_level_param {
|
|
uint16_t wlm_latency_level;
|
|
uint32_t wlm_latency_flags;
|
|
uint16_t vdev_id;
|
|
};
|
|
|
|
#define WMI_TDLS_MAX_SUPP_CHANNELS 128
|
|
#define WMI_TDLS_MAX_SUPP_OPER_CLASSES 32
|
|
#define WMI_2_4_GHZ_MAX_FREQ 3000
|
|
|
|
/**
|
|
* struct tdls_update_ch_params - channel parameters
|
|
* @chanId: ID of the channel
|
|
* @pwr: power level
|
|
* @dfsSet: is dfs supported or not
|
|
* @half_rate: is the channel operating at 10MHz
|
|
* @quarter_rate: is the channel operating at 5MHz
|
|
*/
|
|
struct tdls_update_ch_params {
|
|
uint8_t chanId;
|
|
uint8_t pwr;
|
|
bool dfsSet;
|
|
bool half_rate;
|
|
bool quarter_rate;
|
|
};
|
|
|
|
/**
|
|
* struct tdls_peer_cap_params - TDLS peer capablities parameters
|
|
* @isPeerResponder: is peer responder or not
|
|
* @peerUapsdQueue: peer uapsd queue
|
|
* @peerMaxSp: peer max SP value
|
|
* @peerBuffStaSupport: peer buffer sta supported or not
|
|
* @peerOffChanSupport: peer offchannel support
|
|
* @peerCurrOperClass: peer current operating class
|
|
* @selfCurrOperClass: self current operating class
|
|
* @peerChanLen: peer channel length
|
|
* @peerChan: peer channel list
|
|
* @peerOperClassLen: peer operating class length
|
|
* @peerOperClass: peer operating class
|
|
* @prefOffChanNum: peer offchannel number
|
|
* @prefOffChanBandwidth: peer offchannel bandwidth
|
|
* @opClassForPrefOffChan: operating class for offchannel
|
|
*/
|
|
struct tdls_peer_cap_params {
|
|
uint8_t isPeerResponder;
|
|
uint8_t peerUapsdQueue;
|
|
uint8_t peerMaxSp;
|
|
uint8_t peerBuffStaSupport;
|
|
uint8_t peerOffChanSupport;
|
|
uint8_t peerCurrOperClass;
|
|
uint8_t selfCurrOperClass;
|
|
uint8_t peerChanLen;
|
|
struct tdls_update_ch_params peerChan[WMI_TDLS_MAX_SUPP_CHANNELS];
|
|
uint8_t peerOperClassLen;
|
|
uint8_t peerOperClass[WMI_TDLS_MAX_SUPP_OPER_CLASSES];
|
|
uint8_t prefOffChanNum;
|
|
uint8_t prefOffChanBandwidth;
|
|
uint8_t opClassForPrefOffChan;
|
|
};
|
|
|
|
/**
|
|
* struct tdls_peer_state_params - TDLS peer state parameters
|
|
* @vdevId: vdev id
|
|
* @peerMacAddr: peer mac address
|
|
* @peerCap: peer capabality
|
|
*/
|
|
struct tdls_peer_state_params {
|
|
uint32_t vdevId;
|
|
uint8_t peerMacAddr[IEEE80211_ADDR_LEN];
|
|
uint32_t peerState;
|
|
struct tdls_peer_cap_params peerCap;
|
|
};
|
|
|
|
/**
|
|
* struct vdev_ie_info_param - IE info
|
|
* @vdev_id - vdev for which the IE is being sent
|
|
* @ie_id - ID of the IE
|
|
* @length - length of the IE data
|
|
* @data - IE data
|
|
*
|
|
* This structure is used to store the IE information.
|
|
*/
|
|
struct vdev_ie_info_param {
|
|
uint32_t vdev_id;
|
|
uint32_t ie_id;
|
|
uint32_t length;
|
|
uint32_t ie_source;
|
|
uint32_t band;
|
|
uint8_t *data;
|
|
};
|
|
|
|
#define MAX_SAR_LIMIT_ROWS_SUPPORTED 64
|
|
/**
|
|
* struct sar_limit_cmd_row - sar limits row
|
|
* @band_id: Optional param for frequency band
|
|
* See %enum wmi_sar_band_id_flags for possible values
|
|
* @chain_id: Optional param for antenna chain id
|
|
* @mod_id: Optional param for modulation scheme
|
|
* See %enum wmi_sar_mod_id_flags for possible values
|
|
* @limit_value: Mandatory param providing power limits in steps of 0.5 dbm
|
|
* @validity_bitmap: bitmap of valid optional params in sar_limit_cmd_row struct
|
|
* See WMI_SAR_*_VALID_MASK for possible values
|
|
*/
|
|
struct sar_limit_cmd_row {
|
|
uint32_t band_id;
|
|
uint32_t chain_id;
|
|
uint32_t mod_id;
|
|
uint32_t limit_value;
|
|
uint32_t validity_bitmap;
|
|
};
|
|
|
|
/**
|
|
* struct sar_limit_cmd_params - sar limits params
|
|
* @sar_enable: flag to enable SAR
|
|
* See %enum wmi_sar_feature_state_flags for possible values
|
|
* @num_limit_rows: number of items in sar_limits
|
|
* @commit_limits: indicates firmware to start apply new SAR values
|
|
* @sar_limit_row_list: pointer to array of sar limit rows
|
|
*/
|
|
struct sar_limit_cmd_params {
|
|
uint32_t sar_enable;
|
|
uint32_t num_limit_rows;
|
|
uint32_t commit_limits;
|
|
struct sar_limit_cmd_row *sar_limit_row_list;
|
|
};
|
|
|
|
/**
|
|
* struct sar_limit_event_row - sar limits row
|
|
* @band_id: Frequency band.
|
|
* See %enum wmi_sar_band_id_flags for possible values
|
|
* @chain_id: Chain id
|
|
* @mod_id: Modulation scheme
|
|
* See %enum wmi_sar_mod_id_flags for possible values
|
|
* @limit_value: Power limits in steps of 0.5 dbm that is currently active for
|
|
* the given @band_id, @chain_id, and @mod_id
|
|
*/
|
|
struct sar_limit_event_row {
|
|
uint32_t band_id;
|
|
uint32_t chain_id;
|
|
uint32_t mod_id;
|
|
uint32_t limit_value;
|
|
};
|
|
|
|
/**
|
|
* struct sar_limit_event - sar limits params
|
|
* @sar_enable: Current status of SAR enablement.
|
|
* See %enum wmi_sar_feature_state_flags for possible values
|
|
* @num_limit_rows: number of items in sar_limits
|
|
* @sar_limit_row: array of sar limit rows. Only @num_limit_rows
|
|
* should be considered valid.
|
|
*/
|
|
struct sar_limit_event {
|
|
uint32_t sar_enable;
|
|
uint32_t num_limit_rows;
|
|
struct sar_limit_event_row
|
|
sar_limit_row[MAX_SAR_LIMIT_ROWS_SUPPORTED];
|
|
};
|
|
|
|
#define WMI_UNIFIED_MAX_PMKID_LEN 16
|
|
#define WMI_UNIFIED_MAX_PMK_LEN 64
|
|
|
|
/**
|
|
* struct wmi_unified_pmk_cache - used to set del pmkid cache
|
|
* @vdev_id: ID of the vdev being configured
|
|
* @pmk_len: PMK len
|
|
* for big-endian hosts, manual endian conversion will be needed to keep
|
|
* the array values in their original order in spite of the automatic
|
|
* byte-swap applied to WMI messages during download
|
|
* @pmk: PMK array
|
|
* @pmkid_len: PMK ID Len
|
|
* @pmkid: PMK ID Array
|
|
* @bssid: BSSID
|
|
* @ssid: SSID
|
|
* @cache_id: PMK Cache ID
|
|
* @cat_flag: whether (bssid) or (ssid,cache_id) is valid
|
|
* @action_flag: add/delete the entry
|
|
*/
|
|
struct wmi_unified_pmk_cache {
|
|
uint8_t vdev_id;
|
|
uint32_t pmk_len;
|
|
uint8_t pmk[WMI_UNIFIED_MAX_PMK_LEN];
|
|
uint32_t pmkid_len;
|
|
uint8_t pmkid[WMI_UNIFIED_MAX_PMKID_LEN];
|
|
wmi_host_mac_addr bssid;
|
|
struct mac_ssid ssid;
|
|
uint32_t cache_id;
|
|
uint32_t cat_flag;
|
|
uint32_t action_flag;
|
|
};
|
|
|
|
#define WMI_QOS_NUM_AC_MAX 4
|
|
|
|
/**
|
|
* struct aggr_add_ts_param - ADDTS parameters
|
|
* @staIdx: station index
|
|
* @tspecIdx: TSPEC handler uniquely identifying a TSPEC for a STA in a BSS
|
|
* @tspec: tspec value
|
|
* @status: CDF status
|
|
* @sessionId: session id
|
|
* @vdev_id: vdev id
|
|
*/
|
|
struct aggr_add_ts_param {
|
|
uint16_t staIdx;
|
|
uint16_t tspecIdx;
|
|
struct mac_tspec_ie tspec[WMI_QOS_NUM_AC_MAX];
|
|
QDF_STATUS status[WMI_QOS_NUM_AC_MAX];
|
|
uint8_t sessionId;
|
|
uint8_t vdev_id;
|
|
};
|
|
|
|
#define WMI_PERIODIC_TX_PTRN_MAX_SIZE 1536
|
|
/**
|
|
* struct periodic_tx_pattern - periodic tx pattern
|
|
* @mac_address: MAC Address for the adapter
|
|
* @ucPtrnId: Pattern ID
|
|
* @ucPtrnSize: Pattern size
|
|
* @usPtrnIntervalMs: in ms
|
|
* @ucPattern: Pattern buffer
|
|
*/
|
|
struct periodic_tx_pattern {
|
|
struct qdf_mac_addr mac_address;
|
|
uint8_t ucPtrnId;
|
|
uint16_t ucPtrnSize;
|
|
uint32_t usPtrnIntervalMs;
|
|
uint8_t ucPattern[WMI_PERIODIC_TX_PTRN_MAX_SIZE];
|
|
};
|
|
|
|
/**
|
|
* struct flashing_req_params - led flashing parameter
|
|
* @reqId: request id
|
|
* @pattern_id: pattern identifier. 0: disconnected 1: connected
|
|
* @led_x0: led flashing parameter0
|
|
* @led_x1: led flashing parameter1
|
|
*/
|
|
struct flashing_req_params {
|
|
uint32_t req_id;
|
|
uint32_t pattern_id;
|
|
uint32_t led_x0;
|
|
uint32_t led_x1;
|
|
};
|
|
|
|
#define MAX_NUM_CHAN 128
|
|
|
|
/**
|
|
* struct wmi_pcl_chan_weights - Params to get the valid weighed list
|
|
* @pcl_list: Preferred channel list already sorted in the order of preference
|
|
* @pcl_len: Length of the PCL
|
|
* @saved_chan_list: Valid channel list updated as part of
|
|
* WMA_UPDATE_CHAN_LIST_REQ
|
|
* @saved_num_chan: Length of the valid channel list
|
|
* @weighed_valid_list: Weights of the valid channel list. This will have one
|
|
* to one mapping with valid_chan_list. FW expects channel order and size to be
|
|
* as per the list provided in WMI_SCAN_CHAN_LIST_CMDID.
|
|
* @weight_list: Weights assigned by policy manager
|
|
*/
|
|
struct wmi_pcl_chan_weights {
|
|
uint8_t pcl_list[MAX_NUM_CHAN];
|
|
uint32_t pcl_len;
|
|
uint8_t saved_chan_list[MAX_NUM_CHAN];
|
|
uint32_t saved_num_chan;
|
|
uint8_t weighed_valid_list[MAX_NUM_CHAN];
|
|
uint8_t weight_list[MAX_NUM_CHAN];
|
|
};
|
|
|
|
/**
|
|
* struct wmi_adaptive_dwelltime_params - the adaptive dwelltime params
|
|
* @vdev_id: vdev id
|
|
* @is_enabled: Adaptive dwell time is enabled/disabled
|
|
* @dwelltime_mode: global default adaptive dwell mode
|
|
* @lpf_weight: weight to calculate the average low pass
|
|
* filter for channel congestion
|
|
* @passive_mon_intval: intval to monitor wifi activity in passive scan in msec
|
|
* @wifi_act_threshold: % of wifi activity used in passive scan 0-100
|
|
*
|
|
*/
|
|
struct wmi_adaptive_dwelltime_params {
|
|
uint32_t vdev_id;
|
|
bool is_enabled;
|
|
enum scan_dwelltime_adaptive_mode dwelltime_mode;
|
|
uint8_t lpf_weight;
|
|
uint8_t passive_mon_intval;
|
|
uint8_t wifi_act_threshold;
|
|
};
|
|
|
|
#define WMI_SCAN_CLIENT_MAX 7
|
|
|
|
/**
|
|
* struct wmi_dbs_scan_sel_params - DBS scan selection params
|
|
* @num_clients: Number of scan clients dutycycle
|
|
* @pdev_id: pdev_id for identifying the MAC
|
|
* @module_id: scan client module id
|
|
* @num_dbs_scans: number of DBS scans
|
|
* @num_non_dbs_scans: number of non-DBS scans
|
|
*/
|
|
struct wmi_dbs_scan_sel_params {
|
|
uint32_t num_clients;
|
|
uint32_t pdev_id;
|
|
uint32_t module_id[WMI_SCAN_CLIENT_MAX];
|
|
uint32_t num_dbs_scans[WMI_SCAN_CLIENT_MAX];
|
|
uint32_t num_non_dbs_scans[WMI_SCAN_CLIENT_MAX];
|
|
};
|
|
|
|
/**
|
|
* struct set_arp_stats - set/reset arp stats
|
|
* @vdev_id: session id
|
|
* @flag: enable/disable stats
|
|
* @pkt_type: type of packet(1 - arp)
|
|
* @ip_addr: subnet ipv4 address in case of encrypted packets
|
|
* @pkt_type_bitmap: pkt bitmap
|
|
* @tcp_src_port: tcp src port for pkt tracking
|
|
* @tcp_dst_port: tcp dst port for pkt tracking
|
|
* @icmp_ipv4: target ipv4 address to track ping packets
|
|
* @reserved: reserved
|
|
*/
|
|
struct set_arp_stats {
|
|
uint32_t vdev_id;
|
|
uint8_t flag;
|
|
uint8_t pkt_type;
|
|
uint32_t ip_addr;
|
|
uint32_t pkt_type_bitmap;
|
|
uint32_t tcp_src_port;
|
|
uint32_t tcp_dst_port;
|
|
uint32_t icmp_ipv4;
|
|
uint32_t reserved;
|
|
};
|
|
|
|
/**
|
|
* struct get_arp_stats - get arp stats from firmware
|
|
* @pkt_type: packet type(1 - ARP)
|
|
* @vdev_id: session id
|
|
*/
|
|
struct get_arp_stats {
|
|
uint8_t pkt_type;
|
|
uint32_t vdev_id;
|
|
};
|
|
|
|
#endif /* _WMI_UNIFIED_STA_PARAM_H_ */
|