|
@@ -1,5 +1,5 @@
|
|
|
/*
|
|
|
- * Copyright (c) 2010-2018 The Linux Foundation. All rights reserved.
|
|
|
+ * Copyright (c) 2010-2019 The Linux Foundation. All rights reserved.
|
|
|
*
|
|
|
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
|
|
|
*
|
|
@@ -474,6 +474,8 @@ typedef enum {
|
|
|
WMI_VDEV_CHAINMASK_CONFIG_CMDID,
|
|
|
|
|
|
WMI_VDEV_GET_BCN_RECEPTION_STATS_CMDID,
|
|
|
+ /* request LTE-Coex info */
|
|
|
+ WMI_VDEV_GET_MWS_COEX_INFO_CMDID,
|
|
|
|
|
|
/* peer specific commands */
|
|
|
|
|
@@ -1321,6 +1323,22 @@ typedef enum {
|
|
|
|
|
|
WMI_VDEV_BCN_RECEPTION_STATS_EVENTID,
|
|
|
|
|
|
+ /* provide LTE-Coex state */
|
|
|
+ WMI_VDEV_GET_MWS_COEX_STATE_EVENTID,
|
|
|
+
|
|
|
+ /* provide LTE-Coex Dynamic Power Back-off info */
|
|
|
+ WMI_VDEV_GET_MWS_COEX_DPWB_STATE_EVENTID,
|
|
|
+
|
|
|
+ /* provide LTE-Coex TDM info */
|
|
|
+ WMI_VDEV_GET_MWS_COEX_TDM_STATE_EVENTID,
|
|
|
+
|
|
|
+ /* provide LTE-Coex IDRx info */
|
|
|
+ WMI_VDEV_GET_MWS_COEX_IDRX_STATE_EVENTID,
|
|
|
+
|
|
|
+ /* provide LTE-Coex antenna sharing info */
|
|
|
+ WMI_VDEV_GET_MWS_COEX_ANTENNA_SHARING_STATE_EVENTID,
|
|
|
+
|
|
|
+
|
|
|
/* peer specific events */
|
|
|
/** FW reauet to kick out the station for reasons like inactivity,lack of response ..etc */
|
|
|
WMI_PEER_STA_KICKOUT_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_PEER),
|
|
@@ -21328,6 +21346,25 @@ typedef struct {
|
|
|
A_UINT32 vdev_id;
|
|
|
} wmi_vdev_get_bcn_recv_stats_cmd_fixed_param;
|
|
|
|
|
|
+/*
|
|
|
+ * wmi mws-coex command IDs
|
|
|
+ */
|
|
|
+typedef enum {
|
|
|
+ WMI_MWS_COEX_STATE = 0x01,
|
|
|
+ WMI_MWS_COEX_DPWB_STATE,
|
|
|
+ WMI_MWS_COEX_TDM_STATE,
|
|
|
+ WMI_MWS_COEX_IDRX_STATE,
|
|
|
+ WMI_MWS_COEX_ANTENNA_SHARING_STATE,
|
|
|
+} wmi_mws_coex_cmd_id;
|
|
|
+
|
|
|
+typedef struct {
|
|
|
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_vdev_get_mws_coex_state_cmd_fixed_param */
|
|
|
+ /** VDEV identifier */
|
|
|
+ A_UINT32 vdev_id;
|
|
|
+ /** Command ID (type: wmi_mws_coex_cmd_id) */
|
|
|
+ A_UINT32 cmd_id;
|
|
|
+} wmi_vdev_get_mws_coex_info_cmd_fixed_param;
|
|
|
+
|
|
|
typedef struct {
|
|
|
A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_tpc_event_fixed_param */
|
|
|
/** pdev_id for identifying the MAC
|
|
@@ -21445,6 +21482,292 @@ typedef struct {
|
|
|
A_UINT32 bmiss_bitmap[8];
|
|
|
} wmi_vdev_bcn_recv_stats_fixed_param;
|
|
|
|
|
|
+typedef struct {
|
|
|
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_vdev_get_mws_coex_state_fixed_param */
|
|
|
+ A_UINT32 vdev_id;
|
|
|
+
|
|
|
+ /* LTE-WLAN coexistence scheme bitmap
|
|
|
+ * Indicates the final schemes applied for the currrent Coex scenario.
|
|
|
+ * Bit 0 - TDM policy
|
|
|
+ * Bit 1 - Forced TDM policy
|
|
|
+ * Bit 2 - Dynamic Power Back-off policy
|
|
|
+ * Bit 3 - Channel Avoidance policy
|
|
|
+ * Bit 4 - Static Power Back-off policy
|
|
|
+ */
|
|
|
+ A_UINT32 coex_scheme_bitmap;
|
|
|
+
|
|
|
+ /* Active conflict count
|
|
|
+ * Indicates the number of Active conflicts for the current WLAN and LTE frequency combinations.
|
|
|
+ */
|
|
|
+ A_UINT32 active_conflict_count;
|
|
|
+
|
|
|
+ /* Potential conflict count
|
|
|
+ * Indicates the number of Potential conflicts for the current WLAN and LTE frequency combinations.
|
|
|
+ */
|
|
|
+ A_UINT32 potential_conflict_count;
|
|
|
+
|
|
|
+ /* Bitmap of the group-0 WLAN channels to be avoided during LTE-WLAN coex operation.
|
|
|
+ * Indicates the WLAN channels to be avoided in b/w WLAN CH-1 and WLAN CH-14.
|
|
|
+ */
|
|
|
+ A_UINT32 chavd_group0_bitmap;
|
|
|
+
|
|
|
+ /* Bitmap of the group-1 WLAN channels to be avoided during LTE-WLAN coex operation.
|
|
|
+ * Indicates the WLAN channels to be avoided in b/w WLAN CH-36 and WLAN CH-64.
|
|
|
+ */
|
|
|
+ A_UINT32 chavd_group1_bitmap;
|
|
|
+
|
|
|
+ /* Bitmap of the group-2 WLAN channels to be avoided during LTE-WLAN coex operation.
|
|
|
+ * Indicates the WLAN channels to be avoided in b/w WLAN CH-100 and WLAN CH-140.
|
|
|
+ */
|
|
|
+ A_UINT32 chavd_group2_bitmap;
|
|
|
+
|
|
|
+ /* Bitmap of the group-3 WLAN channels to be avoided during LTE-WLAN coex operation.
|
|
|
+ * Indicates the WLAN channels to be avoided in b/w WLAN CH-149 and WLAN CH-165.
|
|
|
+ */
|
|
|
+ A_UINT32 chavd_group3_bitmap;
|
|
|
+} wmi_vdev_get_mws_coex_state_fixed_param;
|
|
|
+
|
|
|
+typedef struct {
|
|
|
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_vdev_get_mws_coex_dpwb_state_fixed_param */
|
|
|
+ A_UINT32 vdev_id;
|
|
|
+
|
|
|
+ /* Current state of the Dynamic Power Back-off state machine
|
|
|
+ * MWSCOEX_PWB_UNINIT_STATE = 0, PWB state machine is in un-intialized state.
|
|
|
+ * MWSCOEX_PWB_WLAN_ON_SINR_START_STATE = 1, SINR measurement starts when WLAN is on
|
|
|
+ * MWSCOEX_PWB_WLAN_ON_WAIT_RESP_STATE = 2, Waiting for SINR response when WLAN is on
|
|
|
+ * MWSCOEX_PWB_WLAN_OFF_AWAIT_STATE = 3, WLAN off state for buffer between SINR on/off measurement.
|
|
|
+ * MWSCOEX_PWB_WLAN_OFF_SINR_START_STATE = 4, SINR measurement starts when WLAN is off
|
|
|
+ * MWSCOEX_PWB_WLAN_OFF_WAIT_RESP_STATE = 5, Waiting for SINR response when WLAN is off
|
|
|
+ * MWSCOEX_PWB_WLAN_OFF_SINR_STOP_STATE = 6, SINR measurement stops when WLAN is off
|
|
|
+ * MWSCOEX_PWB_FORCED_TDM_STATE = 7, Entered Forced TDM state.
|
|
|
+ * MWSCOEX_PWB_HALTED_STATE = 8, Power back-off algorithm halted.
|
|
|
+ * MWSCOEX_PWB_WLAN_ALWAYS_ON_SINR_START_STATE = 9, SINR measurement starts in WLAN always on state.
|
|
|
+ * MWSCOEX_PWB_WLAN_ALWAYS_ON_SINR_STOP_STATE = 10, SINR measurement stops in WLAN always on state.
|
|
|
+ */
|
|
|
+ A_UINT32 current_dpwb_state;
|
|
|
+
|
|
|
+ /* P(N+1) value in dBm i.e. Tx power to be applied in the next Dynamic Power Back-off cycle,
|
|
|
+ * where P(N) is the power applied during current cycle.
|
|
|
+ * ranges from 3dBm to 21 dBM
|
|
|
+ */
|
|
|
+ A_INT32 pnp1_value;
|
|
|
+
|
|
|
+ /* Indicates the duty cycle of current LTE frame.
|
|
|
+ * Duty cycle: Number of UL slots with uplink data and allocated RBs.
|
|
|
+ */
|
|
|
+ A_UINT32 lte_dutycycle;
|
|
|
+
|
|
|
+ /* LTE SINR value in dB, when WLAN is ON. */
|
|
|
+ A_INT32 sinr_wlan_on;
|
|
|
+
|
|
|
+ /* LTE SINR value in dB, when WLAN is OFF. */
|
|
|
+ A_INT32 sinr_wlan_off;
|
|
|
+
|
|
|
+ /* LTE blocks with error for the current bler report.
|
|
|
+ * Number of LTE blocks with error for a given number (block_count) of LTE blocks.
|
|
|
+ */
|
|
|
+ A_UINT32 bler_count;
|
|
|
+
|
|
|
+ /* Number of LTE blocks considered for bler count report.
|
|
|
+ * Bler repot will be generated after the reception of every "block_count" number of blocks.
|
|
|
+ */
|
|
|
+ A_UINT32 block_count;
|
|
|
+
|
|
|
+ /* WLAN RSSI level
|
|
|
+ * WLAN RSSI is devided in to 3 levels i.e. Good/Moderate/Low (configurable inside f/w)
|
|
|
+ * 0-Good, 1-Moderate, 2-Low
|
|
|
+ */
|
|
|
+ A_UINT32 wlan_rssi_level;
|
|
|
+
|
|
|
+ /* WLAN RSSI value in dBm considered in Dynamic Power back-off algorithm
|
|
|
+ * Dynamic power back-off algorithm considers either Rx data frame RSSI/Beacon RSSI based on some constraints.
|
|
|
+ */
|
|
|
+ A_INT32 wlan_rssi;
|
|
|
+
|
|
|
+ /* Indicates whether any TDM policy triggered from Dynamic power back-off policy.
|
|
|
+ * 1 - TDM triggered.
|
|
|
+ * 0 - TDM not triggered.
|
|
|
+ */
|
|
|
+ A_UINT32 is_tdm_running;
|
|
|
+} wmi_vdev_get_mws_coex_dpwb_state_fixed_param;
|
|
|
+
|
|
|
+typedef struct {
|
|
|
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_vdev_get_mws_coex_tdm_state_fixed_param */
|
|
|
+ A_UINT32 vdev_id;
|
|
|
+ /* Time Division Multiplexing (TDM) LTE-Coex Policy type.
|
|
|
+ * There are totally 4 types of TDM policies(1-SINR TDM, 2-RSSI TDM, 3-LOW RX RATE TDM, 4-STICKY TDM)
|
|
|
+ * Bit 0 - SINR TDM policy.
|
|
|
+ * Bit 1 - RSSI TDM policy.
|
|
|
+ * Bit 2 - Low Rx rate TDM policy
|
|
|
+ * Bit 3 - Sticky TDM policy
|
|
|
+ */
|
|
|
+ A_UINT32 tdm_policy_bitmap;
|
|
|
+
|
|
|
+ /* TDM LTE/WLAN sub-frame bitmap
|
|
|
+ * Indicates the bitmap of LTE/WLAN sub-frames.
|
|
|
+ * value 0: WLAN slot.
|
|
|
+ * value 1: LTE slot.
|
|
|
+ */
|
|
|
+ A_UINT32 tdm_sf_bitmap;
|
|
|
+} wmi_vdev_get_mws_coex_tdm_state_fixed_param;
|
|
|
+
|
|
|
+typedef struct {
|
|
|
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_vdev_get_mws_coex_idrx_state_fixed_param */
|
|
|
+ A_UINT32 vdev_id;
|
|
|
+
|
|
|
+ /* SUB0 LTE-coex tech.
|
|
|
+ *------------------------
|
|
|
+ * TECH TECH_ID
|
|
|
+ *------------------------
|
|
|
+ * LTE 0
|
|
|
+ * TDSCDMA 1
|
|
|
+ * GSM1 2
|
|
|
+ * ONEX 3
|
|
|
+ * HDR 4
|
|
|
+ * WCDMA 5
|
|
|
+ * GSM2 6
|
|
|
+ * GSM3 7
|
|
|
+ * WCDMA2 8
|
|
|
+ * LTE2 9
|
|
|
+ * Indicates the type of WWAN technology used as SUB0 i.e. SIM slot 1
|
|
|
+ */
|
|
|
+ A_UINT32 sub0_techid;
|
|
|
+
|
|
|
+ /* SUB0 mitigation policy.
|
|
|
+ * Indicates the mitigation policy used to coexist with WLAN.
|
|
|
+ * 1 - Tx blanking
|
|
|
+ * 2 - Static power back-off
|
|
|
+ */
|
|
|
+ A_UINT32 sub0_policy;
|
|
|
+
|
|
|
+ /* Set if SUB0 is in link critical state.
|
|
|
+ * Link critical will be set, if continuous page miss happens or RSSI is below -100 dBm at LTE side.
|
|
|
+ */
|
|
|
+ A_UINT32 sub0_is_link_critical;
|
|
|
+
|
|
|
+ /* LTE SUB0 imposed static power applied to WLAN due to LTE-WLAN coex.
|
|
|
+ * Value of static power applied during LTE page cycle ranges from 3-21 dBm.
|
|
|
+ */
|
|
|
+ A_INT32 sub0_static_power;
|
|
|
+
|
|
|
+ /* LTE SUB0 RSSI value in dBm */
|
|
|
+ A_INT32 sub0_rssi;
|
|
|
+
|
|
|
+ /* SUB1 LTE-coex tech.
|
|
|
+ *------------------------
|
|
|
+ * TECH TECH_ID
|
|
|
+ *------------------------
|
|
|
+ * LTE 0
|
|
|
+ * TDSCDMA 1
|
|
|
+ * GSM1 2
|
|
|
+ * ONEX 3
|
|
|
+ * HDR 4
|
|
|
+ * WCDMA 5
|
|
|
+ * GSM2 6
|
|
|
+ * GSM3 7
|
|
|
+ * WCDMA2 8
|
|
|
+ * LTE2 9
|
|
|
+ * Indicates the type of WWAN technology used as SUB1 i.e. SIM slot 2
|
|
|
+ */
|
|
|
+ A_UINT32 sub1_techid;
|
|
|
+
|
|
|
+ /* SUB1 mitigation policy.
|
|
|
+ * Indicates the mitigation policy used to coexist with WLAN.
|
|
|
+ * 1 - Tx blanking
|
|
|
+ * 2 - Static power back-off
|
|
|
+ */
|
|
|
+ A_UINT32 sub1_policy;
|
|
|
+
|
|
|
+ /* Set if SUB1 is in link critical state.
|
|
|
+ * Link critical will be set, if continuous page miss happens or RSSI is below -100 dBm at LTE side.
|
|
|
+ */
|
|
|
+ A_UINT32 sub1_is_link_critical;
|
|
|
+
|
|
|
+ /* LTE SUB1 imposed static power applied to WLAN due to LTE-WLAN coex.
|
|
|
+ * Value of static power applied during LTE page cycle ranges from 3-21 dBm.
|
|
|
+ */
|
|
|
+ A_INT32 sub1_static_power;
|
|
|
+
|
|
|
+ /* LTE SUB1 RSSI value in dBm */
|
|
|
+ A_INT32 sub1_rssi;
|
|
|
+} wmi_vdev_get_mws_coex_idrx_state_fixed_param;
|
|
|
+
|
|
|
+typedef struct {
|
|
|
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_vdev_get_mws_coex_antenna_sharing_state_fixed_param */
|
|
|
+ A_UINT32 vdev_id;
|
|
|
+
|
|
|
+ /* BDF values of Coex flags.
|
|
|
+ * coexflag 0x1 = MWS Coex enabled
|
|
|
+ * coexflag 0x3 = MWS Coex enabled + Antenna sharing enabled for WLAN operating in 2.4GHz band.
|
|
|
+ */
|
|
|
+ A_UINT32 coex_flags;
|
|
|
+
|
|
|
+ /* BDF values of Coex Antenna sharing config
|
|
|
+ * coex_config 0x0 = no Antenna sharing
|
|
|
+ * coexconfig 0x1 = switched based Antenna sharing
|
|
|
+ * coexconfig 0x2 = splitter based Antenna sharing
|
|
|
+ */
|
|
|
+ A_UINT32 coex_config;
|
|
|
+
|
|
|
+ /* Tx Chain mask value
|
|
|
+ * Bit 0: Tx chain-0
|
|
|
+ * Bit 1: Tx Chain-1
|
|
|
+ * value: 0x1 - Operating in 1X1
|
|
|
+ * value: 0x3 - Operating in 2X2
|
|
|
+ */
|
|
|
+ A_UINT32 tx_chain_mask;
|
|
|
+
|
|
|
+ /* Rx Chain mask value
|
|
|
+ * Bit 0: Rx chain-0
|
|
|
+ * Bit 1: Rx Chain-1
|
|
|
+ * value: 0x1 - Operating in 1X1
|
|
|
+ * value: 0x3 - Operating in 2X2
|
|
|
+ */
|
|
|
+ A_UINT32 rx_chain_mask;
|
|
|
+
|
|
|
+ /* Currently active Rx Spatial streams
|
|
|
+ * Bit 0: Rx Spatial Stream-0
|
|
|
+ * Bit 1: Rx Spatial Stream-1
|
|
|
+ */
|
|
|
+ A_UINT32 rx_nss;
|
|
|
+
|
|
|
+ /* Forced MRC policy type
|
|
|
+ * BTC_FORCED (0x01)
|
|
|
+ * RSSI_FORCED (0x02)
|
|
|
+ * MODEM_ACQ_FORCED (0x04)
|
|
|
+ */
|
|
|
+ A_UINT32 force_mrc;
|
|
|
+
|
|
|
+ /* RSSI value considered for MRC
|
|
|
+ * 1: Data RSSI
|
|
|
+ * 2: Beacon RSSI
|
|
|
+ */
|
|
|
+ A_UINT32 rssi_type;
|
|
|
+
|
|
|
+ /* RSSI value measured at Chain-0 in dBm */
|
|
|
+ A_INT32 chain0_rssi;
|
|
|
+
|
|
|
+ /* RSSI value measured at Chain-1 in dBm */
|
|
|
+ A_INT32 chain1_rssi;
|
|
|
+
|
|
|
+ /* RSSI value of two chains combined in dBm */
|
|
|
+ A_INT32 combined_rssi;
|
|
|
+
|
|
|
+ /* Absolute imbalance between two Rx chains in dB */
|
|
|
+ A_UINT32 imbalance;
|
|
|
+
|
|
|
+ /* RSSI threshold defined for the above imbalance value in dBm.
|
|
|
+ * Based on the degree of imbalance between the rx chains, different
|
|
|
+ * RSSI thresholds are used to determine whether MRC (Maximum-Ratio
|
|
|
+ * Combining) use of multiple rx chains is suitable.
|
|
|
+ * This field shows the RSSI threshold below which MRC is used.
|
|
|
+ */
|
|
|
+ A_INT32 mrc_threshold;
|
|
|
+
|
|
|
+ /* Antenna grant duration to WLAN, in milliseconds */
|
|
|
+ A_UINT32 grant_duration;
|
|
|
+} wmi_vdev_get_mws_coex_antenna_sharing_state_fixed_param;
|
|
|
+
|
|
|
typedef enum wmi_chip_power_save_failure_reason_code_type {
|
|
|
WMI_PROTOCOL_POWER_SAVE_FAILURE_REASON,
|
|
|
WMI_HW_POWER_SAVE_FAILURE_REASON,
|
|
@@ -22910,6 +23233,7 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command)
|
|
|
WMI_RETURN_STRING(WMI_VDEV_GET_BCN_RECEPTION_STATS_CMDID);
|
|
|
WMI_RETURN_STRING(WMI_PEER_TX_PN_REQUEST_CMDID);
|
|
|
WMI_RETURN_STRING(WMI_ROAM_BSS_LOAD_CONFIG_CMDID);
|
|
|
+ WMI_RETURN_STRING(WMI_VDEV_GET_MWS_COEX_INFO_CMDID);
|
|
|
}
|
|
|
|
|
|
return "Invalid WMI cmd";
|
|
@@ -24041,7 +24365,7 @@ typedef struct {
|
|
|
*/
|
|
|
A_UINT32 mode;
|
|
|
A_UINT32 rate; /* rate index */
|
|
|
- A_UINT32 nss; /* number of spacial stream */
|
|
|
+ A_UINT32 nss; /* number of spatial stream */
|
|
|
A_UINT32 beamforming; /* beamforming parameter 0:disabled, 1:enabled */
|
|
|
A_UINT32 chain_mask; /* mask for the antenna set to get power */
|
|
|
A_UINT32 chain_index; /* index for the antenna */
|