summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHimanshu Agarwal <himanaga@qti.qualcomm.com>2016-05-30 20:28:01 +0530
committerAnjaneedevi Kapparapu <akappa@codeaurora.org>2016-06-07 16:32:56 +0530
commit430dcb9efd7e8aa386e4fd4a5d13ba6bfcc22577 (patch)
tree2f6aff117dc2d2ad4dc3c8bca57b957b081e88c5
parent1f941b516d39881c13206f21d5a8c62ab72e9d58 (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.h135
-rw-r--r--CORE/SERVICES/COMMON/wmi_services.h1
-rw-r--r--CORE/SERVICES/COMMON/wmi_tlv_defs.h23
-rw-r--r--CORE/SERVICES/COMMON/wmi_unified.h74
-rw-r--r--CORE/SERVICES/COMMON/wmi_version.h2
-rw-r--r--CORE/SERVICES/WMI/wmi_unified.c2
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";
}