Pārlūkot izejas kodu

Merge b0737ad0d52b5376d5325c2524bfafbda64deea5 on remote branch

Change-Id: I9c65da2904d4c5fef1a914dc36e18792b8c7a424
Linux Build Service Account 1 gadu atpakaļ
vecāks
revīzija
7dcda15147
6 mainītis faili ar 108 papildinājumiem un 2 dzēšanām
  1. 25 0
      fw/htt_stats.h
  2. 1 0
      fw/wlan_module_ids.h
  3. 3 0
      fw/wmi_services.h
  4. 15 0
      fw/wmi_tlv_defs.h
  5. 63 1
      fw/wmi_unified.h
  6. 1 1
      fw/wmi_version.h

+ 25 - 0
fw/htt_stats.h

@@ -5415,6 +5415,8 @@ typedef struct {
      HTT_TX_PDEV_STATS_NUM_EXTRA2_MCS_COUNTERS)
 
 #define HTT_TX_PDEV_STATS_NUM_PER_COUNTERS 101
+#define HTT_MAX_POWER_LEVEL 32 /* 0 to 32 dBm */
+#define HTT_MAX_NEGATIVE_POWER_LEVEL 10 /* 0 to -10 dBm */
 
 /*
  * Introduce new TX counters to support 320MHz support and punctured modes
@@ -9422,6 +9424,29 @@ typedef struct {
      * units = 0.25dBm
      */
     A_INT32 max_reg_only_allowed_power[HTT_STATS_MAX_CHAINS];
+
+    /** number of PPDUs transmitted for each number of tx chains */
+    A_UINT32 tx_num_chains[HTT_STATS_MAX_CHAINS];
+
+    /** tx_power:
+     * Number of PPDUs transmitted with each power level >= 0 dBm.
+     * tx_power[0]: number of PPDUs with tx power in the [0 dBm, 1 dBm) range
+     * tx_power[1]: number of PPDUs with tx power in the [1 dBm, 2 dBm) range
+     * ...
+     * tx_power[30]: number of PPDUs with tx power in the [30 dBm, 31 dBm) range
+     * tx_power[31]: number of PPDUs with tx power >= 31 dBm
+     */
+    A_UINT32 tx_power[HTT_MAX_POWER_LEVEL];
+
+    /** tx_power_neg:
+     * Number of PPDUs transmitted with each power level < 0 dBm.
+     * tx_power_neg[0]: cnt of PPDUs with tx pwr in the [-1 dBm, 0 dBm) range
+     * tx_power_neg[1]: cnt of PPDUs with tx pwr in the [-2 dBm, -1 dBm) range
+     * ...
+     * tx_power_neg[8]: cnt of PPDUs with tx pwr in the [-9 dBm, -8 dBm) range
+     * tx_power_neg[9]: cnt of PPDUs with tx pwr < -9 dBm
+     */
+    A_UINT32 tx_power_neg[HTT_MAX_NEGATIVE_POWER_LEVEL];
 } htt_stats_phy_tpc_stats_tlv;
 /* preserve old name alias for new name consistent with the tag name */
 typedef htt_stats_phy_tpc_stats_tlv htt_phy_tpc_stats_tlv;

+ 1 - 0
fw/wlan_module_ids.h

@@ -155,6 +155,7 @@ typedef enum {
   WLAN_MODULE_BRIDGE_PEER,              /* 0x72 */
   WLAN_MODULE_AUX_MAC_MGR,              /* 0x73 */
   WLAN_MODULE_TCAM,                     /* 0x74 */
+  WLAN_MODULE_P2P_R2,                   /* 0x75 */
 
   WLAN_MODULE_ID_MAX,
   WLAN_MODULE_ID_INVALID = WLAN_MODULE_ID_MAX,

+ 3 - 0
fw/wmi_services.h

@@ -666,6 +666,9 @@ typedef  enum  {
     WMI_SERVICE_EPM = 412, /* FW supports enhanced power management */
     WMI_SERVICE_CHIPSET_LOGGING_SUPPORT = 413, /* FW supports chipset logging feature */
     WMI_SERVICE_SUPPORT_AP_SUSPEND_RESUME = 414, /* FW supports SAP suspend feature */
+    WMI_SERVICE_STA_P2P_NDP_CONCURRENCY_SUPPORT = 415, /* FW supports STA + P2P + NAN concurrency */
+    WMI_SERVICE_USE_STA_VDEV_FOR_P2P_DEVICE = 416, /* FW supports use of sta vdev to be repurposed for p2p device */
+    WMI_SERVICE_AP_ASSISTED_DFS_CHAN_P2P_SESSION = 417, /* FW supports P2P session on DFS chan enabled by DFS master AP */
 
 
     WMI_MAX_EXT2_SERVICE

+ 15 - 0
fw/wmi_tlv_defs.h

@@ -1438,6 +1438,8 @@ typedef enum {
     WMITLV_TAG_STRUC_wmi_ctrl_path_pdev_bcn_tx_stats_struct,
     WMITLV_TAG_STRUC_wmi_soc_tx_packet_custom_classify_cmd_fixed_param,
     WMITLV_TAG_STRUC_wmi_set_ap_suspend_resume_cmd_fixed_param,
+    WMITLV_TAG_STRUC_wmi_p2p_cli_dfs_ap_bmiss_fixed_param,
+    WMITLV_TAG_STRUC_wmi_p2p_go_dfs_ap_config_fixed_param,
 } WMITLV_TAG_ID;
 /*
  * IMPORTANT: Please add _ALL_ WMI Commands Here.
@@ -1988,6 +1990,7 @@ typedef enum {
     OP(WMI_REQUEST_OPM_STATS_CMDID) \
     OP(WMI_SOC_TX_PACKET_CUSTOM_CLASSIFY_CMDID) \
     OP(WMI_SET_AP_SUSPEND_RESUME_CMDID) \
+    OP(WMI_P2P_GO_DFS_AP_CONFIG_CMDID) \
     /* add new CMD_LIST elements above this line */
 
 
@@ -2312,6 +2315,7 @@ typedef enum {
     OP(WMI_MLO_LINK_INFO_SYNC_EVENTID) \
     OP(WMI_PDEV_ENABLE_XLNA_EVENTID) \
     OP(WMI_REG_CHAN_LIST_CC_EXT2_EVENTID) \
+    OP(WMI_P2P_CLI_DFS_AP_BMISS_DETECTED_EVENTID) \
     /* add new EVT_LIST elements above this line */
 
 
@@ -3905,6 +3909,13 @@ WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_MLO_CONFIG_CMDID);
     WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_pdev_bssid_disallow_list_config_param, bssid_disallow_list, WMITLV_SIZE_VAR)
 WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_DSM_FILTER_CMDID);
 
+/* Add/remove DFS master AP configuration */
+#define WMITLV_TABLE_WMI_P2P_GO_DFS_AP_CONFIG_CMDID(id,op,buf,len) \
+    WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_p2p_go_dfs_ap_config_fixed_param, wmi_p2p_go_dfs_ap_config_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
+    WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_FIXED_STRUC, wmi_mac_addr, bssid, WMITLV_SIZE_VAR) \
+    WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_FIXED_STRUC, wmi_mac_addr, non_tx_bssid, WMITLV_SIZE_VAR)
+WMITLV_CREATE_PARAM_STRUC(WMI_P2P_GO_DFS_AP_CONFIG_CMDID);
+
 #define WMITLV_TABLE_WMI_ROAM_BLACKLIST_EVENTID(id,op,buf,len) \
     WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_roam_blacklist_event_fixed_param, wmi_roam_blacklist_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
     WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_blacklist_with_timeout_tlv_param, blacklist_with_timeout, WMITLV_SIZE_VAR)
@@ -6941,6 +6952,10 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_AUDIO_SYNC_START_STOP_EVENTID);
     WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_audio_sync_q_master_slave_times, audio_sync_q_master_slave_times, WMITLV_SIZE_VAR)
 WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_AUDIO_SYNC_Q_MASTER_SLAVE_OFFSET_EVENTID);
 
+#define WMITLV_TABLE_WMI_P2P_CLI_DFS_AP_BMISS_DETECTED_EVENTID(id, op , buf, len) \
+    WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_p2p_cli_dfs_ap_bmiss_fixed_param , wmi_p2p_cli_dfs_ap_bmiss_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+WMITLV_CREATE_PARAM_STRUC(WMI_P2P_CLI_DFS_AP_BMISS_DETECTED_EVENTID);
+
 /* Layout of WMI_REPORT_STATS_EVENTID message:
  *    fixed_param;
  *    wmi_chan_cca_stats       chan_cca_stats[];         Array length is specified by num_chan_cca_stats

+ 63 - 1
fw/wmi_unified.h

@@ -994,6 +994,8 @@ typedef enum {
     WMI_P2P_LISTEN_OFFLOAD_START_CMDID,
     /** set listen offload stop related parameters */
     WMI_P2P_LISTEN_OFFLOAD_STOP_CMDID,
+    /** set DFS master AP configuration */
+    WMI_P2P_GO_DFS_AP_CONFIG_CMDID,
 
     /** AP power save specific config */
     /** set AP power save specific param */
@@ -2090,6 +2092,9 @@ typedef enum {
     /** send p2p listen offload stopped event with different reason */
     WMI_P2P_LISTEN_OFFLOAD_STOPPED_EVENTID,
 
+    /** send event to AP assisted P2P GO to change current DFS channel */
+    WMI_P2P_CLI_DFS_AP_BMISS_DETECTED_EVENTID,
+
     /** Send EGAP Info to host */
     WMI_AP_PS_EGAP_INFO_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_AP_PS),
 
@@ -6141,6 +6146,7 @@ typedef enum {
 #define WMI_SCAN_FLAG_EXT_FAST_SCAN           0x00020000
 #define WMI_SCAN_FLAG_EXT_LOW_POWER_SCAN      0x00040000
 #define WMI_SCAN_FLAG_EXT_STOP_IF_BSSID_FOUND 0x00080000
+#define WMI_SCAN_FLAG_EXT_P2P_SCAN            0x00100000
 
 
 /**
@@ -6346,6 +6352,11 @@ enum wmi_scan_completion_reason {
     WMI_SCAN_REASON_MAX,
 };
 
+#define WMI_SCAN_EVT_IS_SCAN_TYPE_P2P_FLAG_SET(flag, value) \
+    WMI_SET_BITS(flag, 0, 1, value)
+#define WMI_SCAN_EVT_IS_SCAN_TYPE_P2P_FLAG_GET(flag) \
+    WMI_GET_BITS(flag, 0, 1)
+
 typedef struct {
     A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_scan_event_fixed_param */
     /** scan event (wmi_scan_event_type) */
@@ -6366,6 +6377,11 @@ typedef struct {
      * In case of STA not connected it will be the free running HW timer
      */
     A_UINT32 tsf_timestamp;
+    /** flags:
+     * Bit[0]    - indicate if scan type is for p2p
+     * Bit[1:31] - reserved
+     */
+    A_UINT32 flags;
 } wmi_scan_event_fixed_param;
 
 /* WMI Diag event */
@@ -9632,6 +9648,11 @@ typedef enum {
      */
     WMI_PDEV_PARAM_SCAN_MODE,
 
+    /** configure datastall consecutive no ack interval (units = ms) */
+    WMI_PDEV_PARAM_DSTALL_CONSECUTIVE_TX_NO_ACK_INTERVAL,
+    /** configure datastall consecutive no ack threshold */
+    WMI_PDEV_PARAM_DSTALL_CONSECUTIVE_TX_NO_ACK_THRESHOLD,
+
 } WMI_PDEV_PARAM;
 
 #define WMI_PDEV_ONLY_BSR_TRIG_IS_ENABLED(trig_type) WMI_GET_BITS(trig_type, 0, 1)
@@ -17544,6 +17565,25 @@ typedef struct {
     A_UINT32 vdev_id;
 } wmi_vdev_delete_cmd_fixed_param;
 
+typedef struct {
+    A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_p2p_go_dfs_ap_config_fixed_param */
+    /** unique id identifying the VDEV, generated by the caller */
+    A_UINT32 vdev_id;
+    /** "set" field:
+     * HOST to specify a non-zero value if DFS master AP config is to be added,
+     * or a zero value if it is to be removed.
+     */
+    A_UINT32 set;
+    /* The TLVs follows this structure:
+     *  wmi_mac_addr bssid; <-- bssid for P2P GO's STA's connected AP,
+     *                          STA's connected AP is DFS master
+     *  optional TLV used for bssid
+     * wmi_mac_addr non_tx_bssid; <-- bssid for P2P GO's STA's connected AP,
+     *                                if connected to non TX VAP
+     *  optional TLV used for bssid
+     */
+} wmi_p2p_go_dfs_ap_config_fixed_param;
+
 enum WMI_VDEV_UP_FLAGS {
     /** EMA_MBSSID_AP
      * Valid only for STA VDEV.
@@ -19643,12 +19683,20 @@ typedef struct {
     A_UINT32 cu_vdev_map_cat2_hi; /* bits 63:32 */
 } wmi_prb_resp_tmpl_ml_info;
 
+/** indicates P2P GO only case not replay probe req */
+#define WMI_PRB_TMPL_IGNORE_NONP2P_PRB_REQ 0x1
+
 typedef struct {
     A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_prb_tmpl_cmd_fixed_param */
     /** unique id identifying the VDEV, generated by the caller */
     A_UINT32 vdev_id;
     /** beacon buffer length. data is in TLV data[] */
     A_UINT32 buf_len;
+    /** flags to control probe tmpl:
+     * Bit     0: If set, FW should ignore non-P2P probe req
+     * Bits 31-1: Reserved
+     */
+    A_UINT32 flags;
 /*
  * The TLVs follows:
  *    wmi_bcn_prb_info bcn_prb_info; <-- beacon probe capabilities and IEs
@@ -27321,7 +27369,6 @@ typedef struct
     A_UINT32      scan_req_id;
 }  wmi_lpi_status_event_fixed_param;
 
-
 typedef struct
 {
     A_UINT32      tlv_header;
@@ -27331,6 +27378,7 @@ typedef struct
     A_UINT32      rssi;
     A_UINT32      vdev_id;
 }  wmi_lpi_handoff_event_fixed_param;
+
 typedef struct
 {
     A_UINT32 tlv_header;
@@ -27339,6 +27387,19 @@ typedef struct
     A_UINT32 isLastResult;  /*is this event a last event of the whole batch scan*/
 }  wmi_batch_scan_result_event_fixed_param;
 
+typedef enum {
+    /** beacons not received from P2P GO */
+    WMI_P2P_GO_BMISS = 0,
+    /** beacons not received from P2 GO's STA's connected AP */
+    WMI_DFS_AP_BMISS = 1,
+} wmi_dfs_ap_bmiss_reason;
+
+typedef struct {
+    A_UINT32 tlv_header;  /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_p2p_cli_dfs_ap_bmiss_fixed_param*/
+    A_UINT32 vdev_id;
+    A_UINT32 reason_code; /* contains a wmi_dfs_ap_bmiss_reason value */
+} wmi_p2p_cli_dfs_ap_bmiss_fixed_param;
+
 typedef struct {
     A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_p2p_noa_event_fixed_param  */
     A_UINT32 vdev_id;
@@ -37809,6 +37870,7 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command)
         WMI_RETURN_STRING(WMI_REQUEST_OPM_STATS_CMDID);
         WMI_RETURN_STRING(WMI_SOC_TX_PACKET_CUSTOM_CLASSIFY_CMDID);
         WMI_RETURN_STRING(WMI_SET_AP_SUSPEND_RESUME_CMDID);
+        WMI_RETURN_STRING(WMI_P2P_GO_DFS_AP_CONFIG_CMDID);
     }
 
     return (A_UINT8 *) "Invalid WMI cmd";

+ 1 - 1
fw/wmi_version.h

@@ -37,7 +37,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_ 1481
+#define __WMI_REVISION_ 1485
 
 /** The Version Namespace should not be normally changed. Only
  *  host and firmware of the same WMI namespace will work