summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRajesh Chauhan <rajeshc@qca.qualcomm.com>2014-05-23 11:35:34 -0700
committerAkash Patel <c_akashp@qca.qualcomm.com>2014-06-03 15:48:35 -0700
commite90aa4233c7f1ca112b4f7e2338670fd156a5176 (patch)
treee4167dcacded6e2583f990263c4006ca2e252e41
parent8d707d641042bdf5b591e049db82c3632664aaf0 (diff)
qcacld: CL 967091 - update fw common interface files
Added parameters for TDLS P-UAPSD, Off-channel. Added related debuglog ids. Change-Id: I9019387f13b18f3f2fcf759666b220a59654e8dd CRs-Fixed: 670268
-rw-r--r--CORE/SERVICES/COMMON/dbglog_id.h11
-rw-r--r--CORE/SERVICES/COMMON/wmi_services.h3
-rw-r--r--CORE/SERVICES/COMMON/wmi_tlv_defs.h3
-rw-r--r--CORE/SERVICES/COMMON/wmi_unified.h147
-rw-r--r--CORE/SERVICES/COMMON/wmi_version.h2
5 files changed, 134 insertions, 32 deletions
diff --git a/CORE/SERVICES/COMMON/dbglog_id.h b/CORE/SERVICES/COMMON/dbglog_id.h
index a120d9718e9e..d2afa8ccc72b 100644
--- a/CORE/SERVICES/COMMON/dbglog_id.h
+++ b/CORE/SERVICES/COMMON/dbglog_id.h
@@ -911,6 +911,17 @@ extern "C" {
#define TDLS_DBGID_PEER_EVT_DRP_RSSI 17
#define TDLS_DBGID_PEER_EVT_DISCOVER 18
#define TDLS_DBGID_PEER_EVT_DELETE 19
+#define TDLS_DBGID_PEER_CAP_UPDATE 20
+#define TDLS_DBGID_UAPSD_SEND_PTI_FRAME 21
+#define TDLS_DBGID_UAPSD_SEND_PTI_FRAME2PEER 22
+#define TDLS_DBGID_UAPSD_START_PTR_TIMER 23
+#define TDLS_DBGID_UAPSD_CANCEL_PTR_TIMER 24
+#define TDLS_DBGID_UAPSD_PTR_TIMER_TIMEOUT 25
+#define TDLS_DBGID_UAPSD_STA_PS_EVENT_HANDLER 26
+#define TDLS_DBGID_UAPSD_PEER_EVENT_HANDLER 27
+#define TDLS_DBGID_UAPSD_PS_DEFAULT_SETTINGS 28
+#define TDLS_DBGID_UAPSD_GENERIC 29
+
/* TXBF Module IDs */
#define TXBFEE_DBGID_START 0
diff --git a/CORE/SERVICES/COMMON/wmi_services.h b/CORE/SERVICES/COMMON/wmi_services.h
index a83c4c5946e0..4bf2fd900545 100644
--- a/CORE/SERVICES/COMMON/wmi_services.h
+++ b/CORE/SERVICES/COMMON/wmi_services.h
@@ -101,6 +101,9 @@ typedef enum {
WMI_SERVICE_L1SS_STAT, /* L1SS statistics counter report */
WMI_SERVICE_ESTIMATE_LINKSPEED, /* Linkspeed Estimation per peer */
WMI_SERVICE_OBSS_SCAN, /* Service to support OBSS scan */
+ WMI_SERVICE_TDLS_OFFCHAN, /* TDLS off channel support */
+ WMI_SERVICE_TDLS_UAPSD_BUFFER_STA, /* TDLS UAPSD Buffer STA support */
+ WMI_SERVICE_TDLS_UAPSD_SLEEP_STA, /* TDLS UAPSD Sleep STA 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 8e63fbf40bd7..dffd7baf9945 100644
--- a/CORE/SERVICES/COMMON/wmi_tlv_defs.h
+++ b/CORE/SERVICES/COMMON/wmi_tlv_defs.h
@@ -1396,7 +1396,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_TDLS_SET_STATE_CMDID);
/* TDLS Peer Update Cmd */
#define WMITLV_TABLE_WMI_TDLS_PEER_UPDATE_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_tdls_peer_update_cmd_fixed_param, wmi_tdls_peer_update_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
- WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_tdls_peer_capabilities, wmi_tdls_peer_capabilities, peer_caps, WMITLV_SIZE_FIX)
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_tdls_peer_capabilities, wmi_tdls_peer_capabilities, peer_caps, WMITLV_SIZE_FIX) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_channel, peer_chan_list, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_TDLS_PEER_UPDATE_CMDID);
diff --git a/CORE/SERVICES/COMMON/wmi_unified.h b/CORE/SERVICES/COMMON/wmi_unified.h
index 75db37e842a4..ff8f45cbf422 100644
--- a/CORE/SERVICES/COMMON/wmi_unified.h
+++ b/CORE/SERVICES/COMMON/wmi_unified.h
@@ -1378,6 +1378,22 @@ typedef struct {
* @brief keep_alive_pattern_size - keep alive pattern size.
*/
A_UINT32 keep_alive_pattern_size;
+
+ /**
+ * @brief max_tdls_concurrent_sleep_sta - Number of tdls sleep sta supported
+ * @details
+ * Each TDLS STA can become a sleep STA independently. This parameter
+ * mentions how many such sleep STAs can be supported concurrently.
+ */
+ A_UINT32 max_tdls_concurrent_sleep_sta;
+
+ /**
+ * @brief max_tdls_concurrent_buffer_sta - Number of tdls buffer sta supported
+ * @details
+ * Each TDLS STA can become a buffer STA independently. This parameter
+ * mentions how many such buffer STAs can be supported concurrently.
+ */
+ A_UINT32 max_tdls_concurrent_buffer_sta;
} wmi_resource_config;
@@ -5764,6 +5780,16 @@ typedef struct {
/** TDLS Option Control
* Off-Channel, Buffer STA, (later)Sleep STA support */
A_UINT32 tdls_options;
+ /* Buffering time in number of beacon intervals */
+ A_UINT32 tdls_peer_traffic_ind_window;
+ /* Wait time for PTR frame */
+ A_UINT32 tdls_peer_traffic_response_timeout_ms;
+ /* Self PUAPSD mask */
+ A_UINT32 tdls_puapsd_mask;
+ /* Inactivity timeout */
+ A_UINT32 tdls_puapsd_inactivity_time_ms;
+ /* Max of rx frame during SP */
+ A_UINT32 tdls_puapsd_rx_frame_threshold;
} wmi_tdls_set_state_cmd_fixed_param;
/* WMI_TDLS_PEER_UPDATE_CMDID */
@@ -5781,7 +5807,6 @@ enum wmi_tdls_peer_state {
};
/* NB: These defines are fixed, and cannot be changed without breaking WMI compatibility */
-#define WMI_TDLS_MAX_SUPP_CHANNELS 128
#define WMI_TDLS_MAX_SUPP_OPER_CLASSES 32
typedef struct {
/** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_tdls_peer_capabilities */
@@ -5796,10 +5821,25 @@ typedef struct {
A_UINT32 off_chan_support;
A_UINT32 peer_curr_operclass;
A_UINT32 self_curr_operclass;
+ /* Number of channels available for off channel operation */
A_UINT32 peer_chan_len;
- A_UINT8 peer_chan[WMI_TDLS_MAX_SUPP_CHANNELS];
A_UINT32 peer_operclass_len;
A_UINT8 peer_operclass[WMI_TDLS_MAX_SUPP_OPER_CLASSES];
+ /* Is peer initiator or responder of TDLS setup request */
+ A_UINT32 is_peer_responder;
+ /* Preferred off channel number as configured by user */
+ A_UINT32 pref_offchan_num;
+ /* Preferred off channel bandwidth as configured by user */
+ A_UINT32 pref_offchan_bw;
+
+ /** Followed by the variable length TLV peer_chan_list:
+ * wmi_channel peer_chan_list[].
+ * Array size would be peer_chan_len.
+ * This array is intersected channels which is supported by both peer
+ * and DUT. freq1 in chan_info shall be same as mhz, freq2 shall be 0.
+ * FW shall compute BW for an offchan based on peer's ht/vht cap
+ * received in peer_assoc cmd during change STA operation
+ */
} wmi_tdls_peer_capabilities;
#define WMI_TDLS_QOS_VO_FLAG 0
@@ -5810,43 +5850,82 @@ typedef struct {
#define WMI_TDLS_QOS_SP_FLAG 5
#define WMI_TDLS_QOS_MOREDATA_FLAG 7
-#define WMI_TDLS_SET_QOS_FLAG(ppeer_caps,flag) do { \
+#define WMI_TDLS_PEER_SET_QOS_FLAG(ppeer_caps,flag) do { \
(ppeer_caps)->peer_qos |= (1 << flag); \
} while(0)
-#define WMI_TDLS_GET_QOS_FLAG(ppeer_caps,flag) \
+#define WMI_TDLS_PEER_GET_QOS_FLAG(ppeer_caps,flag) \
(((ppeer_caps)->peer_qos & (1 << flag)) >> flag)
-#define WMI_SET_TDLS_VO_UAPSD(ppeer_caps) \
- WMI_TDLS_SET_QOS_FLAG(ppeer_caps, WMI_TDLS_QOS_VO_FLAG)
-#define WMI_GET_TDLS_VO_UAPSD(ppeer_caps) \
- WMI_TDLS_GET_QOS_FLAG(ppeer_caps, WMI_TDLS_QOS_VO_FLAG)
-#define WMI_SET_TDLS_VI_UAPSD(ppeer_caps) \
- WMI_TDLS_SET_QOS_FLAG(ppeer_caps, WMI_TDLS_QOS_VI_FLAG)
-#define WMI_GET_TDLS_VI_UAPSD(ppeer_caps) \
- WMI_TDLS_GET_QOS_FLAG(ppeer_caps, WMI_TDLS_QOS_VI_FLAG)
-#define WMI_SET_TDLS_BK_UAPSD(ppeer_caps) \
- WMI_TDLS_SET_QOS_FLAG(ppeer_caps, WMI_TDLS_QOS_BK_FLAG)
-#define WMI_GET_TDLS_BK_UAPSD(ppeer_caps) \
- WMI_TDLS_GET_QOS_FLAG(ppeer_caps, WMI_TDLS_QOS_BK_FLAG)
-#define WMI_SET_TDLS_BE_UAPSD(ppeer_caps) \
- WMI_TDLS_SET_QOS_FLAG(ppeer_caps, WMI_TDLS_QOS_BE_FLAG)
-#define WMI_GET_TDLS_BE_UAPSD(ppeer_caps) \
- WMI_TDLS_GET_QOS_FLAG(ppeer_caps, WMI_TDLS_QOS_BE_FLAG)
-#define WMI_SET_TDLS_ACK_UAPSD(ppeer_caps) \
- WMI_TDLS_SET_QOS_FLAG(ppeer_caps, WMI_TDLS_QOS_ACK_FLAG)
-#define WMI_GET_TDLS_ACK_UAPSD(ppeer_caps) \
- WMI_TDLS_GET_QOS_FLAG(ppeer_caps, WMI_TDLS_QOS_ACK_FLAG)
+#define WMI_SET_TDLS_PEER_VO_UAPSD(ppeer_caps) \
+ WMI_TDLS_PEER_SET_QOS_FLAG(ppeer_caps, WMI_TDLS_QOS_VO_FLAG)
+#define WMI_GET_TDLS_PEER_VO_UAPSD(ppeer_caps) \
+ WMI_TDLS_PEER_GET_QOS_FLAG(ppeer_caps, WMI_TDLS_QOS_VO_FLAG)
+#define WMI_SET_TDLS_PEER_VI_UAPSD(ppeer_caps) \
+ WMI_TDLS_PEER_SET_QOS_FLAG(ppeer_caps, WMI_TDLS_QOS_VI_FLAG)
+#define WMI_GET_TDLS_PEER_VI_UAPSD(ppeer_caps) \
+ WMI_TDLS_PEER_GET_QOS_FLAG(ppeer_caps, WMI_TDLS_QOS_VI_FLAG)
+#define WMI_SET_TDLS_PEER_BK_UAPSD(ppeer_caps) \
+ WMI_TDLS_PEER_SET_QOS_FLAG(ppeer_caps, WMI_TDLS_QOS_BK_FLAG)
+#define WMI_GET_TDLS_PEER_BK_UAPSD(ppeer_caps) \
+ WMI_TDLS_PEER_GET_QOS_FLAG(ppeer_caps, WMI_TDLS_QOS_BK_FLAG)
+#define WMI_SET_TDLS_PEER_BE_UAPSD(ppeer_caps) \
+ WMI_TDLS_PEER_SET_QOS_FLAG(ppeer_caps, WMI_TDLS_QOS_BE_FLAG)
+#define WMI_GET_TDLS_PEER_BE_UAPSD(ppeer_caps) \
+ WMI_TDLS_PEER_GET_QOS_FLAG(ppeer_caps, WMI_TDLS_QOS_BE_FLAG)
+#define WMI_SET_TDLS_PEER_ACK_UAPSD(ppeer_caps) \
+ WMI_TDLS_PEER_SET_QOS_FLAG(ppeer_caps, WMI_TDLS_QOS_ACK_FLAG)
+#define WMI_GET_TDLS_PEER_ACK_UAPSD(ppeer_caps) \
+ WMI_TDLS_PEER_GET_QOS_FLAG(ppeer_caps, WMI_TDLS_QOS_ACK_FLAG)
/* SP has 2 bits */
-#define WMI_SET_TDLS_SP_UAPSD(ppeer_caps,val) do { \
+#define WMI_SET_TDLS_PEER_SP_UAPSD(ppeer_caps,val) do { \
(ppeer_caps)->peer_qos |= (((val)&0x3) << WMI_TDLS_QOS_SP_FLAG); \
} while(0)
-#define WMI_GET_TDLS_SP_UAPSD(ppeer_caps) \
+#define WMI_GET_TDLS_PEER_SP_UAPSD(ppeer_caps) \
(((ppeer_caps)->peer_qos & (0x3 << WMI_TDLS_QOS_SP_FLAG)) >> WMI_TDLS_QOS_SP_FLAG)
-#define WMI_SET_TDLS_MORE_DATA_ACK_UAPSD(ppeer_caps) \
- WMI_TDLS_SET_QOS_FLAG(ppeer_caps, WMI_TDLS_QOS_MOREDATA_FLAG)
-#define WMI_GET_TDLS_MORE_DATA_ACK_UAPSD(ppeer_caps) \
- WMI_TDLS_GET_QOS_FLAG(ppeer_caps, WMI_TDLS_QOS_MOREDATA_FLAG)
+#define WMI_SET_TDLS_PEER_MORE_DATA_ACK_UAPSD(ppeer_caps) \
+ WMI_TDLS_PEER_SET_QOS_FLAG(ppeer_caps, WMI_TDLS_QOS_MOREDATA_FLAG)
+#define WMI_GET_TDLS_PEER_MORE_DATA_ACK_UAPSD(ppeer_caps) \
+ WMI_TDLS_PEER_GET_QOS_FLAG(ppeer_caps, WMI_TDLS_QOS_MOREDATA_FLAG)
+
+
+#define WMI_TDLS_SELF_SET_QOS_FLAG(pset_cmd,flag) do { \
+ (pset_cmd)->tdls_puapsd_mask |= (1 << flag); \
+ } while(0)
+#define WMI_TDLS_SELF_GET_QOS_FLAG(pset_cmd,flag) \
+ (((pset_cmd)->tdls_puapsd_mask & (1 << flag)) >> flag)
+
+#define WMI_SET_TDLS_SELF_VO_UAPSD(pset_cmd) \
+ WMI_TDLS_SELF_SET_QOS_FLAG(pset_cmd, WMI_TDLS_QOS_VO_FLAG)
+#define WMI_GET_TDLS_SELF_VO_UAPSD(pset_cmd) \
+ WMI_TDLS_SELF_GET_QOS_FLAG(pset_cmd, WMI_TDLS_QOS_VO_FLAG)
+#define WMI_SET_TDLS_SELF_VI_UAPSD(pset_cmd) \
+ WMI_TDLS_SELF_SET_QOS_FLAG(pset_cmd, WMI_TDLS_QOS_VI_FLAG)
+#define WMI_GET_TDLS_SELF_VI_UAPSD(pset_cmd) \
+ WMI_TDLS_SELF_GET_QOS_FLAG(pset_cmd, WMI_TDLS_QOS_VI_FLAG)
+#define WMI_SET_TDLS_SELF_BK_UAPSD(pset_cmd) \
+ WMI_TDLS_SELF_SET_QOS_FLAG(pset_cmd, WMI_TDLS_QOS_BK_FLAG)
+#define WMI_GET_TDLS_SELF__BK_UAPSD(pset_cmd) \
+ WMI_TDLS_SELF_GET_QOS_FLAG(pset_cmd, WMI_TDLS_QOS_BK_FLAG)
+#define WMI_SET_TDLS_SELF_BE_UAPSD(pset_cmd) \
+ WMI_TDLS_SELF_SET_QOS_FLAG(pset_cmd, WMI_TDLS_QOS_BE_FLAG)
+#define WMI_GET_TDLS_SELF_BE_UAPSD(pset_cmd) \
+ WMI_TDLS_SELF_GET_QOS_FLAG(pset_cmd, WMI_TDLS_QOS_BE_FLAG)
+#define WMI_SET_TDLS_SELF_ACK_UAPSD(pset_cmd) \
+ WMI_TDLS_SELF_SET_QOS_FLAG(pset_cmd, WMI_TDLS_QOS_ACK_FLAG)
+#define WMI_GET_TDLS_SELF_ACK_UAPSD(pset_cmd) \
+ WMI_TDLS_SELF_GET_QOS_FLAG(pset_cmd, WMI_TDLS_QOS_ACK_FLAG)
+/* SP has 2 bits */
+#define WMI_SET_TDLS_SELF_SP_UAPSD(pset_cmd,val) do { \
+ (pset_cmd)->tdls_puapsd_mask |= (((val)&0x3) << WMI_TDLS_QOS_SP_FLAG); \
+ } while(0)
+#define WMI_GET_TDLS_SELF_SP_UAPSD(pset_cmd) \
+ (((pset_cmd)->tdls_puapsd_mask & (0x3 << WMI_TDLS_QOS_SP_FLAG)) >> WMI_TDLS_QOS_SP_FLAG)
+
+#define WMI_SET_TDLS_SELF_MORE_DATA_ACK_UAPSD(pset_cmd) \
+ WMI_TDLS_SELF_SET_QOS_FLAG(pset_cmd, WMI_TDLS_QOS_MOREDATA_FLAG)
+#define WMI_GET_TDLS_SELF_MORE_DATA_ACK_UAPSD(pset_cmd) \
+ WMI_TDLS_SELF_GET_QOS_FLAG(pset_cmd, WMI_TDLS_QOS_MOREDATA_FLAG)
typedef struct {
@@ -5861,6 +5940,8 @@ typedef struct {
/* The TLV for wmi_tdls_peer_capabilities will follow.
* wmi_tdls_peer_capabilities peer_caps;
*/
+ /** Followed by the variable length TLV chan_info:
+ * wmi_channel chan_info[] */
} wmi_tdls_peer_update_cmd_fixed_param;
/** TDLS EVENTS */
@@ -5885,6 +5966,12 @@ enum wmi_tdls_peer_reason {
WMI_TDLS_TEARDOWN_REASON_SCAN,
/** tdls peer disconnected due to peer deletion */
WMI_TDLS_DISCONNECTED_REASON_PEER_DELETE,
+ /** tdls peer disconnected due to PTR timeout */
+ WMI_TDLS_TEARDOWN_REASON_PTR_TIMEOUT,
+ /** tdls peer disconnected due wrong PTR format */
+ WMI_TDLS_TEARDOWN_REASON_BAD_PTR,
+ /** tdls peer not responding */
+ WMI_TDLS_TEARDOWN_REASON_NO_RESPONSE,
};
/* WMI_TDLS_PEER_EVENTID */
diff --git a/CORE/SERVICES/COMMON/wmi_version.h b/CORE/SERVICES/COMMON/wmi_version.h
index f5cfd2725348..16b85397e9d2 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_ 43
+#define __WMI_REVISION_ 44
/** The Version Namespace should not be normally changed. Only
* host and firmware of the same WMI namespace will work