diff options
| author | Himanshu Agarwal <himanaga@qti.qualcomm.com> | 2016-05-30 20:28:01 +0530 |
|---|---|---|
| committer | Anjaneedevi Kapparapu <akappa@codeaurora.org> | 2016-06-07 16:32:56 +0530 |
| commit | 430dcb9efd7e8aa386e4fd4a5d13ba6bfcc22577 (patch) | |
| tree | 2f6aff117dc2d2ad4dc3c8bca57b957b081e88c5 | |
| parent | 1f941b516d39881c13206f21d5a8c62ab72e9d58 (diff) | |
qcacld-2.0: CL 1519524 – update fw common interface files
P2P listed offload WMI messages
Change-Id: I0f591f9a620587ef77be09e3714c7156d4189172
CRs-Fixed: 865207
| -rw-r--r-- | CORE/SERVICES/COMMON/wlan_module_ids.h | 135 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/wmi_services.h | 1 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/wmi_tlv_defs.h | 23 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/wmi_unified.h | 74 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/wmi_version.h | 2 | ||||
| -rw-r--r-- | CORE/SERVICES/WMI/wmi_unified.c | 2 |
6 files changed, 166 insertions, 71 deletions
diff --git a/CORE/SERVICES/COMMON/wlan_module_ids.h b/CORE/SERVICES/COMMON/wlan_module_ids.h index 5573f75d28b2..ac69a90da7e2 100644 --- a/CORE/SERVICES/COMMON/wlan_module_ids.h +++ b/CORE/SERVICES/COMMON/wlan_module_ids.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2014-2015 The Linux Foundation. All rights reserved. + * Copyright (c) 2011, 2014-2016 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -32,72 +32,73 @@ /* Wlan module ids , global across all the modules */ typedef enum { WLAN_MODULE_ID_MIN = 0, - WLAN_MODULE_INF = WLAN_MODULE_ID_MIN, /* 0x00 */ - WLAN_MODULE_WMI, - WLAN_MODULE_STA_PWRSAVE, - WLAN_MODULE_WHAL, - WLAN_MODULE_COEX, - WLAN_MODULE_ROAM, - WLAN_MODULE_RESMGR_CHAN_MANAGER, - WLAN_MODULE_RESMGR, - WLAN_MODULE_VDEV_MGR, - WLAN_MODULE_SCAN, - WLAN_MODULE_RATECTRL, - WLAN_MODULE_AP_PWRSAVE, - WLAN_MODULE_BLOCKACK, - WLAN_MODULE_MGMT_TXRX, - WLAN_MODULE_DATA_TXRX, - WLAN_MODULE_HTT, - WLAN_MODULE_HOST, /* 0x10 */ - WLAN_MODULE_BEACON, - WLAN_MODULE_OFFLOAD, - WLAN_MODULE_WAL, - WAL_MODULE_DE, - WLAN_MODULE_PCIELP, - WLAN_MODULE_RTT, - WLAN_MODULE_RESOURCE, - WLAN_MODULE_DCS, - WLAN_MODULE_CACHEMGR, - WLAN_MODULE_ANI, - WLAN_MODULE_P2P, - WLAN_MODULE_CSA, - WLAN_MODULE_NLO, - WLAN_MODULE_CHATTER, - WLAN_MODULE_WOW, - WLAN_MODULE_WAL_VDEV, /* 0x20 */ - WLAN_MODULE_WAL_PDEV, - WLAN_MODULE_TEST, - WLAN_MODULE_STA_SMPS, - WLAN_MODULE_SWBMISS, - WLAN_MODULE_WMMAC, - WLAN_MODULE_TDLS, - WLAN_MODULE_HB, - WLAN_MODULE_TXBF, - WLAN_MODULE_BATCH_SCAN, - WLAN_MODULE_THERMAL_MGR, - WLAN_MODULE_PHYERR_DFS, - WLAN_MODULE_RMC, - WLAN_MODULE_STATS, - WLAN_MODULE_NAN, - WLAN_MODULE_IBSS_PWRSAVE, - WLAN_MODULE_HIF_UART, /* 0x30 */ - WLAN_MODULE_LPI, - WLAN_MODULE_EXTSCAN, - WLAN_MODULE_UNIT_TEST, - WLAN_MODULE_MLME, - WLAN_MODULE_SUPPL, - WLAN_MODULE_ERE, - WLAN_MODULE_OCB, - WLAN_MODULE_RSSI_MONITOR, - WLAN_MODULE_WPM, - WLAN_MODULE_CSS, /* 0x3a */ - WLAN_MODULE_PPS, /* 0x3b */ - WLAN_MODULE_SCAN_CH_PREDICT, /* 0x3c */ - WLAN_MODULE_MAWC, - WLAN_MODULE_CMC_QMIC, /* 0x3e */ - WLAN_MODULE_EGAP, /* 0x3f */ - WLAN_MODULE_NAN20, - WLAN_MODULE_QBOOST, + WLAN_MODULE_INF = WLAN_MODULE_ID_MIN, /* 0x0 */ + WLAN_MODULE_WMI, /* 0x1 */ + WLAN_MODULE_STA_PWRSAVE, /* 0x2 */ + WLAN_MODULE_WHAL, /* 0x3 */ + WLAN_MODULE_COEX, /* 0x4 */ + WLAN_MODULE_ROAM, /* 0x5 */ + WLAN_MODULE_RESMGR_CHAN_MANAGER, /* 0x6 */ + WLAN_MODULE_RESMGR, /* 0x7 */ + WLAN_MODULE_VDEV_MGR, /* 0x8 */ + WLAN_MODULE_SCAN, /* 0x9 */ + WLAN_MODULE_RATECTRL, /* 0xa */ + WLAN_MODULE_AP_PWRSAVE, /* 0xb */ + WLAN_MODULE_BLOCKACK, /* 0xc */ + WLAN_MODULE_MGMT_TXRX, /* 0xd */ + WLAN_MODULE_DATA_TXRX, /* 0xe */ + WLAN_MODULE_HTT, /* 0xf */ + WLAN_MODULE_HOST, /* 0x10 */ + WLAN_MODULE_BEACON, /* 0x11 */ + WLAN_MODULE_OFFLOAD, /* 0x12 */ + WLAN_MODULE_WAL, /* 0x13 */ + WAL_MODULE_DE, /* 0x14 */ + WLAN_MODULE_PCIELP, /* 0x15 */ + WLAN_MODULE_RTT, /* 0x16 */ + WLAN_MODULE_RESOURCE, /* 0x17 */ + WLAN_MODULE_DCS, /* 0x18 */ + WLAN_MODULE_CACHEMGR, /* 0x19 */ + WLAN_MODULE_ANI, /* 0x1a */ + WLAN_MODULE_P2P, /* 0x1b */ + WLAN_MODULE_CSA, /* 0x1c */ + WLAN_MODULE_NLO, /* 0x1d */ + WLAN_MODULE_CHATTER, /* 0x1e */ + WLAN_MODULE_WOW, /* 0x1f */ + WLAN_MODULE_WAL_VDEV, /* 0x20 */ + WLAN_MODULE_WAL_PDEV, /* 0x21 */ + WLAN_MODULE_TEST, /* 0x22 */ + WLAN_MODULE_STA_SMPS, /* 0x23 */ + WLAN_MODULE_SWBMISS, /* 0x24 */ + WLAN_MODULE_WMMAC, /* 0x25 */ + WLAN_MODULE_TDLS, /* 0x26 */ + WLAN_MODULE_HB, /* 0x27 */ + WLAN_MODULE_TXBF, /* 0x28 */ + WLAN_MODULE_BATCH_SCAN, /* 0x29 */ + WLAN_MODULE_THERMAL_MGR, /* 0x2a */ + WLAN_MODULE_PHYERR_DFS, /* 0x2b */ + WLAN_MODULE_RMC, /* 0x2c */ + WLAN_MODULE_STATS, /* 0x2d */ + WLAN_MODULE_NAN, /* 0x2e */ + WLAN_MODULE_IBSS_PWRSAVE, /* 0x2f */ + WLAN_MODULE_HIF_UART, /* 0x30 */ + WLAN_MODULE_LPI, /* 0x31 */ + WLAN_MODULE_EXTSCAN, /* 0x32 */ + WLAN_MODULE_UNIT_TEST, /* 0x33 */ + WLAN_MODULE_MLME, /* 0x34 */ + WLAN_MODULE_SUPPL, /* 0x35 */ + WLAN_MODULE_ERE, /* 0x36 */ + WLAN_MODULE_OCB, /* 0x37 */ + WLAN_MODULE_RSSI_MONITOR, /* 0x38 */ + WLAN_MODULE_WPM, /* 0x39 */ + WLAN_MODULE_CSS, /* 0x3a */ + WLAN_MODULE_PPS, /* 0x3b */ + WLAN_MODULE_SCAN_CH_PREDICT, /* 0x3c */ + WLAN_MODULE_MAWC, /* 0x3d */ + WLAN_MODULE_CMC_QMIC, /* 0x3e */ + WLAN_MODULE_EGAP, /* 0x3f */ + WLAN_MODULE_NAN20, /* 0x40 */ + WLAN_MODULE_QBOOST, /* 0x41 */ + WLAN_MODULE_P2P_LISTEN_OFFLOAD, /* 0x42 */ WLAN_MODULE_ID_MAX, WLAN_MODULE_ID_INVALID = WLAN_MODULE_ID_MAX, diff --git a/CORE/SERVICES/COMMON/wmi_services.h b/CORE/SERVICES/COMMON/wmi_services.h index 102c0210972e..c34b16a1cbaf 100644 --- a/CORE/SERVICES/COMMON/wmi_services.h +++ b/CORE/SERVICES/COMMON/wmi_services.h @@ -160,6 +160,7 @@ typedef enum { WMI_SERVICE_MESH_11S, WMI_SERVICE_HALF_RATE_QUARTER_RATE_SUPPORT, /* FW+HW supports 10 MHz (half rate) and 5 MHz (quarter rate) channel bandwidth */ WMI_SERVICE_VDEV_RX_FILTER, /* Support per-vdev specs of which rx frames to filter out */ + WMI_SERVICE_P2P_LISTEN_OFFLOAD_SUPPORT, 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 4fb2f7cfa854..640244e4d260 100644 --- a/CORE/SERVICES/COMMON/wmi_tlv_defs.h +++ b/CORE/SERVICES/COMMON/wmi_tlv_defs.h @@ -711,6 +711,9 @@ typedef enum { _place_holder_tlv_tag_2, WMITLV_TAG_STRUC_wmi_per_chain_rssi_stats, WMITLV_TAG_STRUC_wmi_rssi_stats, + WMITLV_TAG_STRUC_wmi_p2p_lo_start_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_p2p_lo_stop_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_p2p_lo_stopped_event_fixed_param, } WMITLV_TAG_ID; /* @@ -998,6 +1001,8 @@ typedef enum { OP(WMI_WOW_SET_ACTION_WAKE_UP_CMDID) \ OP(WMI_PEER_BWF_REQUEST_CMDID) \ OP(WMI_DBGLOG_TIME_STAMP_SYNC_CMDID) \ + OP(WMI_P2P_LISTEN_OFFLOAD_START_CMDID) \ + OP(WMI_P2P_LISTEN_OFFLOAD_STOP_CMDID) \ /* add new CMD_LIST elements above this line */ /* @@ -1148,6 +1153,7 @@ typedef enum { OP(WMI_PDEV_HW_MODE_TRANSITION_EVENTID) \ OP(WMI_PDEV_SET_MAC_CONFIG_RESP_EVENTID) \ OP(WMI_RADIO_TX_POWER_LEVEL_STATS_EVENTID) \ + OP(WMI_P2P_LISTEN_OFFLOAD_STOPPED_EVENTID) \ /* add new EVT_LIST elements above this line */ @@ -1417,6 +1423,23 @@ WMITLV_CREATE_PARAM_STRUC(WMI_P2P_SET_VENDOR_IE_DATA_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_p2p_set_oppps_cmd_fixed_param, wmi_p2p_set_oppps_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_P2P_SET_OPPPS_PARAM_CMDID); +/* P2P set listen offload start parameters Cmd */ +#define WMITLV_TABLE_WMI_P2P_LISTEN_OFFLOAD_START_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_p2p_lo_start_cmd_fixed_param, wmi_p2p_lo_start_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, device_types_data, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, prob_resp_data, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_P2P_LISTEN_OFFLOAD_START_CMDID); + +/* P2P set listen offload stop parameters Cmd */ +#define WMITLV_TABLE_WMI_P2P_LISTEN_OFFLOAD_STOP_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_p2p_lo_stop_cmd_fixed_param, wmi_p2p_lo_stop_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_P2P_LISTEN_OFFLOAD_STOP_CMDID); + +/* P2P set listen offload stopped parameters Event */ +#define WMITLV_TABLE_WMI_P2P_LISTEN_OFFLOAD_STOPPED_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_p2p_lo_stopped_event_fixed_param, wmi_p2p_lo_stopped_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_P2P_LISTEN_OFFLOAD_STOPPED_EVENTID); + /* Pdev set channel Cmd */ #define WMITLV_TABLE_WMI_PDEV_SET_CHANNEL_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_channel, wmi_channel, chan, WMITLV_SIZE_FIX) diff --git a/CORE/SERVICES/COMMON/wmi_unified.h b/CORE/SERVICES/COMMON/wmi_unified.h index 20ab28020914..65e1bc4a0a62 100644 --- a/CORE/SERVICES/COMMON/wmi_unified.h +++ b/CORE/SERVICES/COMMON/wmi_unified.h @@ -551,8 +551,12 @@ typedef enum { WMI_P2P_DISC_OFFLOAD_APPIE_CMDID, /** set the BSSID/device name pattern of p2p find offload */ WMI_P2P_DISC_OFFLOAD_PATTERN_CMDID, - /** set OppPS related parameters **/ - WMI_P2P_SET_OPPPS_PARAM_CMDID, + /** set OppPS related parameters **/ + WMI_P2P_SET_OPPPS_PARAM_CMDID, + /** set listen offload start related parameters */ + WMI_P2P_LISTEN_OFFLOAD_START_CMDID, + /** set listen offload stop related parameters */ + WMI_P2P_LISTEN_OFFLOAD_STOP_CMDID, /** AP power save specific config */ /** set AP power save specific param */ @@ -1103,9 +1107,10 @@ typedef enum { /** P2P disc found */ WMI_P2P_DISC_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_P2P), - /*send noa info to host when noa is changed for beacon tx offload enable*/ WMI_P2P_NOA_EVENTID, + /** send p2p listen offload stopped event with different reason */ + WMI_P2P_LISTEN_OFFLOAD_STOPPED_EVENTID, /** Send EGAP Info to host */ WMI_AP_PS_EGAP_INFO_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_AP_PS), @@ -7645,6 +7650,68 @@ typedef struct { WMI_F_RMW((hdr)->oppps_attr, (v) & 0x7f, \ WMI_UNIFIED_OPPPS_ATTR_CTWIN); +typedef enum p2p_lo_start_ctrl_flags_e { + /* flush prob. req when host is awake */ + P2P_LO_START_CTRL_FLAG_FLUSH_LISTEN_RESULT = 1 << 0, +} p2p_lo_start_ctrl_flags; + +typedef struct { + A_UINT32 tlv_header; + A_UINT32 vdev_id; + A_UINT32 ctl_flags; /* refer to enum_p2p_lo_start_ctrl_flags_e */ + A_UINT32 channel; /* MHz */ + A_UINT32 period; /* ms */ + A_UINT32 interval; /* ms, interval should be larger than period */ + A_UINT32 count; /* 0 means forever */ + /* + * device_types_len specifies the number of bytes in the + * device_types_data[] byte-array TLV that follows this TLV. + * The data in device_types_data[] is in 8-byte elements, so + * device_types_len will be a multiple of 8. + */ + A_UINT32 device_types_len; + /* + * prob_resp_len specifies the number of bytes in the + * prob_resp_data[] byte-array TLV that follows this TLV. + */ + A_UINT32 prob_resp_len; + /* + * Two other TLVs follow this TLV: + * A_UINT8 device_types_data[device_types_len]; + * A_UINT8 prob_resp_data[prob_resp_len]; + * The information in device_types_data[] and prob_resp_data[] + * needs to be provided to the target in over-the-air byte order. + * On a big-endian host, if device_types_data and prob_resp_data + * are initially in the correct over-the-air byte order, + * the automatic byteswap for endianness-correction during WMI + * message download will mess up the byte order. + * Thus, a big-endian host needs to explicitly byte-swap the bytes + * within each quad-byte segment of device_types_data[] and + * prob_resp_data[], so that the automatic byte-swap applied during + * WMI download from a big-endian host to the little-endian target + * will restore device_types_data and prob_resp_data into the + * correct byte ordering. + */ +} wmi_p2p_lo_start_cmd_fixed_param; + +typedef struct { + A_UINT32 tlv_header; + A_UINT32 vdev_id; +} wmi_p2p_lo_stop_cmd_fixed_param; + +typedef enum p2p_lo_stopped_reason_e { + P2P_LO_STOPPED_REASON_COMPLETE = 0, /* finished as scheduled */ + P2P_LO_STOPPED_REASON_RECV_STOP_CMD, /* host stops it */ + P2P_LO_STOPPED_REASON_INVALID_LO_PAR, /* invalid listen offload par */ + P2P_LO_STOPPED_REASON_FW_NOT_SUPPORT, /* vdev cannot support it right now */ +} p2p_lo_stopped_reason; + +typedef struct { + A_UINT32 tlv_header; + A_UINT32 vdev_id; + A_UINT32 reason;/* refer to p2p_lo_stopped_reason_e */ +} wmi_p2p_lo_stopped_event_fixed_param; + typedef struct { A_UINT32 time32; //upper 32 bits of time stamp A_UINT32 time0; //lower 32 bits of time stamp @@ -7843,6 +7910,7 @@ typedef enum wake_reason_e { WOW_REASON_OEM_RESPONSE_EVENT = WOW_REASON_NAN_RTT, /* reuse deprecated reason value */ WOW_REASON_TDLS_CONN_TRACKER_EVENT, WOW_REASON_CRITICAL_LOG, + WOW_REASON_P2P_LISTEN_OFFLOAD, WOW_REASON_DEBUG_TEST = 0xFF, } WOW_WAKE_REASON_TYPE; diff --git a/CORE/SERVICES/COMMON/wmi_version.h b/CORE/SERVICES/COMMON/wmi_version.h index b2d1ee568eb0..489dd09e90fd 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_ 255 +#define __WMI_REVISION_ 256 /** 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 c5bd9ad31b7e..b371ed06b251 100644 --- a/CORE/SERVICES/WMI/wmi_unified.c +++ b/CORE/SERVICES/WMI/wmi_unified.c @@ -703,6 +703,8 @@ static u_int8_t* get_wmi_cmd_string(WMI_CMD_ID wmi_command) CASE_RETURN_STRING(WMI_PEER_BWF_REQUEST_CMDID); CASE_RETURN_STRING(WMI_DBGLOG_TIME_STAMP_SYNC_CMDID); CASE_RETURN_STRING(_place_holder_cmd_1); + CASE_RETURN_STRING(WMI_P2P_LISTEN_OFFLOAD_START_CMDID); + CASE_RETURN_STRING(WMI_P2P_LISTEN_OFFLOAD_STOP_CMDID); } return "Invalid WMI cmd"; } |
