Browse Source

qcacld-3.0: CL 1519524 – update fw common interface files

Propagation from qcacld-2.0 to qcacld-3.0.

P2P listed offload WMI messages

Change-Id: I0f591f9a620587ef77be09e3714c7156d4189172
CRs-Fixed: 865207
Himanshu Agarwal 8 years ago
parent
commit
f7bb67bb6b

+ 69 - 67
target/inc/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.
  *
@@ -31,75 +31,77 @@
 /* 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,
-	WLAN_MODULE_PPS,
-	WLAN_MODULE_SCAN_CH_PREDICT,
-	WLAN_MODULE_MAWC,
-	WLAN_MODULE_CMC_QMIC,
-	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,
 } WLAN_MODULE_ID;
 
+
 #endif /* _WLAN_MODULE_IDS_H_ */

+ 1 - 0
target/inc/wmi_services.h

@@ -175,6 +175,7 @@ typedef enum {
 	 * to filter out
 	 */
 	WMI_SERVICE_VDEV_RX_FILTER,
+	WMI_SERVICE_P2P_LISTEN_OFFLOAD_SUPPORT,
 	WMI_MAX_SERVICE = 128             /* max service */
 } WMI_SERVICE;
 

+ 23 - 0
target/inc/wmi_tlv_defs.h

@@ -711,6 +711,9 @@ typedef enum {
 	WMITLV_TAG_STRUC_wmi_place_holder_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 */
 
 /* TLV definitions of WMI commands */
@@ -1415,6 +1421,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)

+ 73 - 1
target/inc/wmi_unified.h

@@ -561,6 +561,10 @@ typedef enum {
 	WMI_P2P_DISC_OFFLOAD_PATTERN_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 */
@@ -1139,9 +1143,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),
@@ -8045,6 +8050,72 @@ 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 {
+	/* finished as scheduled */
+	P2P_LO_STOPPED_REASON_COMPLETE = 0,
+	/* host stops it */
+	P2P_LO_STOPPED_REASON_RECV_STOP_CMD,
+	/* invalid listen offload par */
+	P2P_LO_STOPPED_REASON_INVALID_LO_PAR,
+	/* vdev cannot support it right now */
+	P2P_LO_STOPPED_REASON_FW_NOT_SUPPORT,
+} 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 */
@@ -8250,6 +8321,7 @@ typedef enum wake_reason_e {
 	WOW_REASON_OEM_RESPONSE_EVENT = WOW_REASON_NAN_RTT,
 	WOW_REASON_TDLS_CONN_TRACKER_EVENT,
 	WOW_REASON_CRITICAL_LOG,
+	WOW_REASON_P2P_LISTEN_OFFLOAD,
 	WOW_REASON_DEBUG_TEST = 0xFF,
 } WOW_WAKE_REASON_TYPE;
 

+ 1 - 1
target/inc/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