diff options
| author | Krishna Kumaar Natarajan <kknatara@qca.qualcomm.com> | 2014-06-21 15:32:04 -0700 |
|---|---|---|
| committer | Akash Patel <c_akashp@qca.qualcomm.com> | 2014-06-24 18:39:12 -0700 |
| commit | 76d433e1fab6e60270872ce2f505243659714779 (patch) | |
| tree | 0ad78bcbac7c5645242af1623bbc6b3471e202a8 | |
| parent | 47681be44694e2c7faac60d5ff4b4ec1f0c9b13d (diff) | |
qcacld: CL 992741 994298 994458 995875 - update fw common interface files
This commit adds wmi interface changes which includes
new WLAN module ID for HIF UART module, vdev_id to the ERE offload
messages, LPI (Low Power Interface) module and add response for
peer authorize.
Change-Id: Ibabe86540453f38a8f39d1df7fc846c5fd4ad674
CRs-Fixed: 682949
| -rw-r--r-- | CORE/SERVICES/COMMON/wlan_module_ids.h | 2 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/wmi.h | 7 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/wmi_services.h | 1 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/wmi_tlv_defs.h | 46 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/wmi_unified.h | 138 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/wmi_version.h | 2 | ||||
| -rw-r--r-- | CORE/SERVICES/WMI/wmi_unified.c | 3 |
7 files changed, 194 insertions, 5 deletions
diff --git a/CORE/SERVICES/COMMON/wlan_module_ids.h b/CORE/SERVICES/COMMON/wlan_module_ids.h index 5246b704a8d6..7d8ca1d8914e 100644 --- a/CORE/SERVICES/COMMON/wlan_module_ids.h +++ b/CORE/SERVICES/COMMON/wlan_module_ids.h @@ -80,6 +80,8 @@ typedef enum { WLAN_MODULE_STATS, WLAN_MODULE_NAN, WLAN_MODULE_IBSS_PWRSAVE, + WLAN_MODULE_HIF_UART, + WLAN_MODULE_LPI, WLAN_MODULE_ID_MAX, WLAN_MODULE_ID_INVALID = WLAN_MODULE_ID_MAX, } WLAN_MODULE_ID; diff --git a/CORE/SERVICES/COMMON/wmi.h b/CORE/SERVICES/COMMON/wmi.h index f2df8907e9f1..2a7d095fcc84 100644 --- a/CORE/SERVICES/COMMON/wmi.h +++ b/CORE/SERVICES/COMMON/wmi.h @@ -91,18 +91,23 @@ PREPACK struct host_app_area_s { #define WMI_SET_FIELD(_msg_buf, _msg_type, _f, _val) \ SET_FIELD(_msg_buf, _msg_type ## _ ## _f, _val) +#define WMI_EP_APASS 0x0 +#define WMI_EP_LPASS 0x1 + /* * Control Path */ typedef PREPACK struct { A_UINT32 commandId : 24, - reserved : 2, /* reserved for future WMI */ + reserved : 2, /* used for WMI endpoint ID */ plt_priv : 6; /* platform private */ } POSTPACK WMI_CMD_HDR; /* used for commands and events */ #define WMI_CMD_HDR_COMMANDID_LSB 0 #define WMI_CMD_HDR_COMMANDID_MASK 0x00ffffff #define WMI_CMD_HDR_COMMANDID_OFFSET 0x00000000 +#define WMI_CMD_HDR_WMI_ENDPOINTID_MASK 0x03000000 +#define WMI_CMD_HDR_WMI_ENDPOINTID_OFFSET 24 #define WMI_CMD_HDR_PLT_PRIV_LSB 24 #define WMI_CMD_HDR_PLT_PRIV_MASK 0xff000000 #define WMI_CMD_HDR_PLT_PRIV_OFFSET 0x00000000 diff --git a/CORE/SERVICES/COMMON/wmi_services.h b/CORE/SERVICES/COMMON/wmi_services.h index 31d1d534e69b..fd6e9b274eac 100644 --- a/CORE/SERVICES/COMMON/wmi_services.h +++ b/CORE/SERVICES/COMMON/wmi_services.h @@ -105,6 +105,7 @@ typedef enum { WMI_SERVICE_TDLS_UAPSD_BUFFER_STA, /* TDLS UAPSD Buffer STA support */ WMI_SERVICE_TDLS_UAPSD_SLEEP_STA, /* TDLS UAPSD Sleep STA support */ WMI_SERVICE_IBSS_PWRSAVE, /* IBSS power save support */ + WMI_SERVICE_LPASS, /*Service to support LPASS*/ WMI_MAX_SERVICE=128 /* max service */ } WMI_SERVICE; diff --git a/CORE/SERVICES/COMMON/wmi_tlv_defs.h b/CORE/SERVICES/COMMON/wmi_tlv_defs.h index 4feaa72e83ce..6f6bef686855 100644 --- a/CORE/SERVICES/COMMON/wmi_tlv_defs.h +++ b/CORE/SERVICES/COMMON/wmi_tlv_defs.h @@ -457,6 +457,11 @@ typedef enum { WMITLV_TAG_STRUC_wmi_peer_link_stats, WMITLV_TAG_STRUC_wmi_wmm_ac_stats, WMITLV_TAG_STRUC_wmi_iface_link_stats, + WMITLV_TAG_STRUC_wmi_lpi_mgmt_snooping_config_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_lpi_start_scan_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_lpi_stop_scan_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_lpi_result_event_fixed_param, + WMITLV_TAG_STRUC_wmi_peer_state_event_fixed_param, } WMITLV_TAG_ID; /* @@ -623,7 +628,10 @@ typedef enum { OP(WMI_WOW_ACER_IOAC_DEL_WAKE_PATTERN_CMDID) \ OP(WMI_REQUEST_LINK_STATS_CMDID) \ OP(WMI_START_LINK_STATS_CMDID) \ - OP(WMI_CLEAR_LINK_STATS_CMDID) + OP(WMI_CLEAR_LINK_STATS_CMDID) \ + OP(WMI_LPI_MGMT_SNOOPING_CONFIG_CMDID) \ + OP(WMI_LPI_START_SCAN_CMDID) \ + OP(WMI_LPI_STOP_SCAN_CMDID) /* * IMPORTANT: Please add _ALL_ WMI Events Here. @@ -696,7 +704,9 @@ typedef enum { OP(WMI_UPDATE_WHAL_MIB_STATS_EVENTID) \ OP(WMI_IFACE_LINK_STATS_EVENTID) \ OP(WMI_PEER_LINK_STATS_EVENTID) \ - OP(WMI_RADIO_LINK_STATS_EVENTID) + OP(WMI_RADIO_LINK_STATS_EVENTID) \ + OP(WMI_LPI_RESULT_EVENTID) \ + OP(WMI_PEER_STATE_EVENTID) /* TLV definitions of WMI commands */ @@ -1615,6 +1625,33 @@ WMITLV_CREATE_PARAM_STRUC(WMI_BATCH_SCAN_DISABLE_CMDID); WMITLV_CREATE_PARAM_STRUC(WMI_BATCH_SCAN_TRIGGER_RESULT_CMDID); +/* LPI mgmt snooping config Cmd */ +#define WMITLV_TABLE_WMI_LPI_MGMT_SNOOPING_CONFIG_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_lpi_mgmt_snooping_config_cmd_fixed_param, wmi_lpi_mgmt_snooping_config_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) + +WMITLV_CREATE_PARAM_STRUC(WMI_LPI_MGMT_SNOOPING_CONFIG_CMDID); + +/* LPI start scan Cmd */ +#define WMITLV_TABLE_WMI_LPI_START_SCAN_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_lpi_start_scan_cmd_fixed_param, wmi_lpi_start_scan_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, channel_list, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_FIXED_STRUC, wmi_ssid, ssid_list, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_FIXED_STRUC, wmi_mac_addr, bssid_list, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, ie_data, WMITLV_SIZE_VAR) + +WMITLV_CREATE_PARAM_STRUC(WMI_LPI_START_SCAN_CMDID); + +/* LPI stop scan Cmd */ +#define WMITLV_TABLE_WMI_LPI_STOP_SCAN_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_lpi_stop_scan_cmd_fixed_param, wmi_lpi_stop_scan_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) + +WMITLV_CREATE_PARAM_STRUC(WMI_LPI_STOP_SCAN_CMDID); + +#define WMITLV_TABLE_WMI_LPI_RESULT_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_lpi_result_event_fixed_param, wmi_lpi_result_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, data, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_LPI_RESULT_EVENTID); + /* Thermal Manager Params*/ #define WMITLV_TABLE_WMI_THERMAL_MGMT_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_thermal_mgmt_cmd_fixed_param, wmi_thermal_mgmt_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) @@ -2049,7 +2086,10 @@ WMITLV_CREATE_PARAM_STRUC(WMI_OFFLOAD_PROB_RESP_TX_STATUS_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_host_auto_shutdown_event_fixed_param, wmi_host_auto_shutdown_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_HOST_AUTO_SHUTDOWN_EVENTID); - +/* peer state Event */ +#define WMITLV_TABLE_WMI_PEER_STATE_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_state_event_fixed_param, wmi_peer_state_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_PEER_STATE_EVENTID); #ifdef __cplusplus } diff --git a/CORE/SERVICES/COMMON/wmi_unified.h b/CORE/SERVICES/COMMON/wmi_unified.h index 70e35ab942c4..6ae00301d51d 100644 --- a/CORE/SERVICES/COMMON/wmi_unified.h +++ b/CORE/SERVICES/COMMON/wmi_unified.h @@ -173,6 +173,7 @@ typedef enum { WMI_GRP_NAN, WMI_GRP_COEX, WMI_GRP_OBSS_OFL, + WMI_GRP_LPI, } WMI_GRP_ID; #define WMI_CMD_GRP_START_ID(grp_id) (((grp_id) << 12) | 0x1) @@ -636,6 +637,15 @@ typedef enum { */ WMI_OBSS_SCAN_ENABLE_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_OBSS_OFL), WMI_OBSS_SCAN_DISABLE_CMDID, + + /**LPI commands*/ + /**LPI mgmt snooping config command*/ + WMI_LPI_MGMT_SNOOPING_CONFIG_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_LPI), + /**LPI scan start command*/ + WMI_LPI_START_SCAN_CMDID, + /**LPI scan stop command*/ + WMI_LPI_STOP_SCAN_CMDID, + } WMI_CMD_ID; typedef enum { @@ -696,6 +706,10 @@ typedef enum { * WMI_PEER_GET_ESTIMATED_LINKSPEED_CMDID command. */ WMI_PEER_ESTIMATED_LINKSPEED_EVENTID, + /* Return the peer state + * WMI_PEER_SET_PARAM_CMDID, WMI_PEER_AUTHORIZE + */ + WMI_PEER_STATE_EVENTID, /* beacon/mgmt specific events */ /** RX management frame. the entire frame is carried along with the event. */ @@ -855,6 +869,10 @@ typedef enum { /* NAN Event */ WMI_NAN_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_NAN), + + /* LPI Event */ + WMI_LPI_RESULT_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_LPI), + } WMI_EVT_ID; /* defines for OEM message sub-types */ @@ -6777,6 +6795,115 @@ typedef struct A_UINT32 netWorkStartIndex; /* indicate the start index of network info*/ } wmi_batch_scan_result_scan_list; +#define LPI_IE_BITMAP_BSSID 0x0001 +#define LPI_IE_BITMAP_SSID 0x0002 +#define LPI_IE_BITMAP_RSSI 0x0004 +#define LPI_IE_BITMAP_CHAN 0x0008 + +typedef struct { + A_UINT32 tlv_header; + /**A_BOOL indicates LPI mgmt snooping enable/disable*/ + A_UINT32 enable; + /**LPI snooping mode*/ + A_UINT32 snooping_mode; + /** LPI interested IEs in snooping context */ + A_UINT32 ie_bitmap; +} wmi_lpi_mgmt_snooping_config_cmd_fixed_param; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_start_scan_cmd_fixed_param */ + /** Scan ID */ + A_UINT32 scan_id; + /** Scan requestor ID */ + A_UINT32 scan_req_id; + /** VDEV id(interface) that is requesting scan */ + A_UINT32 vdev_id; + /** LPI interested IEs in scan context */ + A_UINT32 ie_bitmap; + /** Scan Priority, input to scan scheduler */ + A_UINT32 scan_priority; + /** dwell time in msec on active channels */ + A_UINT32 dwell_time_active; + /** dwell time in msec on passive channels */ + A_UINT32 dwell_time_passive; + /** min time in msec on the BSS channel,only valid if atleast one VDEV is active*/ + A_UINT32 min_rest_time; + /** max rest time in msec on the BSS channel,only valid if at least one VDEV is active*/ + /** the scanner will rest on the bss channel at least min_rest_time. after min_rest_time the scanner + * will start checking for tx/rx activity on all VDEVs. if there is no activity the scanner will + * switch to off channel. if there is activity the scanner will let the radio on the bss channel + * until max_rest_time expires.at max_rest_time scanner will switch to off channel + * irrespective of activity. activity is determined by the idle_time parameter. + */ + A_UINT32 max_rest_time; + /** time before sending next set of probe requests. + * The scanner keeps repeating probe requests transmission with period specified by repeat_probe_time. + * The number of probe requests specified depends on the ssid_list and bssid_list + */ + A_UINT32 repeat_probe_time; + /** time in msec between 2 consequetive probe requests with in a set. */ + A_UINT32 probe_spacing_time; + /** data inactivity time in msec on bss channel that will be used by scanner for measuring the inactivity */ + A_UINT32 idle_time; + /** maximum time in msec allowed for scan */ + A_UINT32 max_scan_time; + /** delay in msec before sending first probe request after switching to a channel */ + A_UINT32 probe_delay; + /** Scan control flags */ + A_UINT32 scan_ctrl_flags; + /** Burst duration time in msec*/ + A_UINT32 burst_duration; + + /** # if channels to scan. In the TLV channel_list[] */ + A_UINT32 num_chan; + /** number of bssids. In the TLV bssid_list[] */ + A_UINT32 num_bssid; + /** number of ssid. In the TLV ssid_list[] */ + A_UINT32 num_ssids; + /** number of bytes in ie data. In the TLV ie_data[] */ + A_UINT32 ie_len; + +/** + * TLV (tag length value ) parameters follow the scan_cmd + * structure. The TLV's are: + * A_UINT32 channel_list[]; + * wmi_ssid ssid_list[]; + * wmi_mac_addr bssid_list[]; + * A_UINT8 ie_data[]; + */ +} wmi_lpi_start_scan_cmd_fixed_param; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_stop_scan_cmd_fixed_param */ + /** requestor requesting cancel */ + A_UINT32 requestor; + /** Scan ID */ + A_UINT32 scan_id; + /** + * Req Type + * req_type should be WMI_SCAN_STOP_ONE, WMI_SCN_STOP_VAP_ALL or WMI_SCAN_STOP_ALL + * WMI_SCAN_STOP_ONE indicates to stop a specific scan with scan_id + * WMI_SCN_STOP_VAP_ALL indicates to stop all scan requests on a specific vDev with vdev_id + * WMI_SCAN_STOP_ALL indicates to stop all scan requests in both Scheduler's queue and Scan Engine + */ + A_UINT32 req_type; + /** + * vDev ID + * used when req_type equals to WMI_SCN_STOP_VAP_ALL, it indexed the vDev on which to stop the scan + */ + A_UINT32 vdev_id; +} wmi_lpi_stop_scan_cmd_fixed_param; + +typedef struct +{ + A_UINT32 tlv_header; + A_UINT32 ie_bitmap; + A_UINT32 data_len; + /* This buffer is used to send lpi scan result data + * A_UINT8 data[]; // length in byte given by field data_len. + */ +} wmi_lpi_result_event_fixed_param; + typedef struct { A_UINT32 tlv_header; @@ -7008,6 +7135,8 @@ typedef struct { /** TLV tag and len; tag equals * WMITLV_TAG_STRUC_wmi_mhf_offload_plumb_routing_table_cmd_fixed_param */ A_UINT32 tlv_header; + /** vdev id*/ + A_UINT32 vdev_id; /** action corresponds to values from enum * wmi_mhf_ofl_table_action */ A_UINT32 action; @@ -7238,6 +7367,15 @@ typedef struct { */ } wmi_stats_ext_event_fixed_param; +typedef struct { + /* TLV tag and len; tag equals WMITLV_TAG_STRUC_ wmi_peer_state_event_fixed_param */ + A_UINT32 tlv_header; + A_UINT32 vdev_id; /* vdev ID */ + /* MAC address of the peer for which the estimated link speed is required.*/ + wmi_mac_addr peer_macaddr; + A_UINT32 state; /* peer state */ +} wmi_peer_state_event_fixed_param; + enum { WMI_2G4_HT40_OBSS_SCAN_PASSIVE = 0, /** scan_type: passive */ WMI_2G4_HT40_OBSS_SCAN_ACTIVE, /** scan_type: active */ diff --git a/CORE/SERVICES/COMMON/wmi_version.h b/CORE/SERVICES/COMMON/wmi_version.h index c7d4f8b3f6f3..3a1d8b0c2b18 100644 --- a/CORE/SERVICES/COMMON/wmi_version.h +++ b/CORE/SERVICES/COMMON/wmi_version.h @@ -36,7 +36,7 @@ #define __WMI_VER_MINOR_ 0 /** WMI revision number has to be incremented when there is a * change that may or may not break compatibility. */ -#define __WMI_REVISION_ 52 +#define __WMI_REVISION_ 54 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work diff --git a/CORE/SERVICES/WMI/wmi_unified.c b/CORE/SERVICES/WMI/wmi_unified.c index 9ba48a9edc47..a241117f75fe 100644 --- a/CORE/SERVICES/WMI/wmi_unified.c +++ b/CORE/SERVICES/WMI/wmi_unified.c @@ -537,6 +537,9 @@ static u_int8_t* get_wmi_cmd_string(WMI_CMD_ID wmi_command) CASE_RETURN_STRING(WMI_REQUEST_LINK_STATS_CMDID); CASE_RETURN_STRING(WMI_START_LINK_STATS_CMDID); CASE_RETURN_STRING(WMI_CLEAR_LINK_STATS_CMDID); + CASE_RETURN_STRING(WMI_LPI_MGMT_SNOOPING_CONFIG_CMDID); + CASE_RETURN_STRING(WMI_LPI_START_SCAN_CMDID); + CASE_RETURN_STRING(WMI_LPI_STOP_SCAN_CMDID); } return "Invalid WMI cmd"; } |
