Browse Source

fw-api: CL 12378129 - update fw common interface files

WMI/HTT: negotiate support for split AST

Change-Id: I508e24322a86cacbe8e5bcba80c27b7d658a8415
CRs-Fixed: 2262693
spuligil 4 years ago
parent
commit
6f1c4a182d
4 changed files with 78 additions and 21 deletions
  1. 54 19
      fw/htt.h
  2. 1 0
      fw/wmi_services.h
  3. 22 1
      fw/wmi_unified.h
  4. 1 1
      fw/wmi_version.h

+ 54 - 19
fw/htt.h

@@ -208,9 +208,10 @@
  * 3.84 Add fisa_control_bits_v2 def.
  * 3.85 Add HTT_RX_PEER_META_DATA defs.
  * 3.86 Add HTT_T2H_MSG_TYPE_FSE_CMEM_BASE_SEND def.
+ * 3.87 Add on-chip AST index field to PEER_MAP_V2 msg.
  */
 #define HTT_CURRENT_VERSION_MAJOR 3
-#define HTT_CURRENT_VERSION_MINOR 86
+#define HTT_CURRENT_VERSION_MINOR 87
 
 #define HTT_NUM_TX_FRAG_DESC  1024
 
@@ -9181,27 +9182,28 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t
  * AST 3, check the AST_VALID_MASK(3) to see if the corresponding extension
  * AST is valid.
  *
- * |31    28|27    24|23    20|19 17|16|15              8|7               0|
- * |-----------------------------------------------------------------------|
- * |            SW peer ID             |     VDEV ID     |     msg type    |
- * |-----------------------------------------------------------------------|
- * |    MAC addr 3   |    MAC addr 2   |    MAC addr 1   |    MAC addr 0   |
- * |-----------------------------------------------------------------------|
- * |      HW peer ID / AST index 0     |    MAC addr 5   |    MAC addr 4   |
- * |-----------------------------------------------------------------------|
- * |     Reserved_20_31       |ASTVM|NH|          AST Hash Value           |
- * |-----------------------------------------------------------------------|
- * | ASTFM3 | ASTFM2 | ASTFM1 | ASTFM0 |           AST index 1             |
- * |-----------------------------------------------------------------------|
- * |TID valid low pri| TID valid hi pri|           AST index 2             |
- * |-----------------------------------------------------------------------|
- * |           Reserved_1              |           AST index 3             |
- * |-----------------------------------------------------------------------|
- * |                               Reserved_2                              |
- * |-----------------------------------------------------------------------|
+ * |31    28|27    24|23   21|20|19 17|16|15              8|7               0|
+ * |-------------------------------------------------------------------------|
+ * |              SW peer ID             |     VDEV ID     |     msg type    |
+ * |-------------------------------------------------------------------------|
+ * |    MAC addr 3   |    MAC addr 2     |    MAC addr 1   |    MAC addr 0   |
+ * |-------------------------------------------------------------------------|
+ * |       HW peer ID / AST index 0      |    MAC addr 5   |    MAC addr 4   |
+ * |-------------------------------------------------------------------------|
+ * |     Reserved_21_31      |OA|ASTVM|NH|          AST Hash Value           |
+ * |-------------------------------------------------------------------------|
+ * | ASTFM3 | ASTFM2 |  ASTFM1  | ASTFM0 |           AST index 1             |
+ * |-------------------------------------------------------------------------|
+ * |TID valid low pri|  TID valid hi pri |           AST index 2             |
+ * |-------------------------------------------------------------------------|
+ * |      LMAC/PMAC_RXPCU AST index      |           AST index 3             |
+ * |-------------------------------------------------------------------------|
+ * |                                 Reserved_2                              |
+ * |-------------------------------------------------------------------------|
  * Where:
  *    NH = Next Hop
  *    ASTVM = AST valid mask
+ *    OA = on-chip AST valid bit
  *    ASTFM = AST flow mask
  *
  * The following field definitions describe the format of the rx peer map v2
@@ -9244,6 +9246,10 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t
  *   - AST_VALID_MASK
  *     Bits  19:17
  *     Purpose: Indicate if the AST 1 through AST 3 are valid
+ *   - ONCHIP_AST_VALID_FLAG
+ *     Bit 20
+ *     Purpose: Indicate if the on-chip AST index field (ONCHIP_AST_IDX)
+ *         is valid.
  *   - AST_INDEX_1
  *     Bits 15:0
  *     Purpose: indicate the second AST index for this peer
@@ -9271,6 +9277,13 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t
  *   - AST_INDEX_3
  *     Bits 15:0
  *     Purpose: indicate the fourth AST index for this peer
+ *   - ONCHIP_AST_IDX / RESERVED
+ *     Bits 31:16
+ *     Purpose: This field is valid only when split AST feature is enabled.
+ *         The ONCHIP_AST_VALID_FLAG identifies whether this field is valid.
+ *         If valid, identifies the HW peer ID corresponding to the peer MAC
+ *         address, this ast_idx is used for LMAC modules for RXPCU.
+ *     Value: ID used by the LMAC HW to identify the peer
  */
 #define HTT_RX_PEER_MAP_V2_VDEV_ID_M        0xff00
 #define HTT_RX_PEER_MAP_V2_VDEV_ID_S        8
@@ -9289,6 +9302,9 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t
 #define HTT_RX_PEER_MAP_V2_AST_VALID_MASK_M     0x000e0000
 #define HTT_RX_PEER_MAP_V2_AST_VALID_MASK_S     17
 
+#define HTT_RX_PEER_MAP_V2_ONCHIP_AST_VALID_FLAG_M 0x00100000
+#define HTT_RX_PEER_MAP_V2_ONCHIP_AST_VALID_FLAG_S 20
+
 #define HTT_RX_PEER_MAP_V2_AST_INDEX_1_M        0xffff
 #define HTT_RX_PEER_MAP_V2_AST_INDEX_1_S        0
 #define HTT_RX_PEER_MAP_V2_AST_0_FLOW_MASK_M    0x000f0000
@@ -9310,6 +9326,9 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t
 #define HTT_RX_PEER_MAP_V2_AST_INDEX_3_M        0xffff
 #define HTT_RX_PEER_MAP_V2_AST_INDEX_3_S        0
 
+#define HTT_RX_PEER_MAP_V2_ONCHIP_AST_HASH_VALUE_M 0xffff0000
+#define HTT_RX_PEER_MAP_V2_ONCHIP_AST_HASH_VALUE_S 16
+
 #define HTT_RX_PEER_MAP_V2_VDEV_ID_SET(word, value)           \
     do {                                                      \
         HTT_CHECK_SET_VAL(HTT_RX_PEER_MAP_V2_VDEV_ID, value); \
@@ -9342,6 +9361,14 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t
 #define HTT_RX_PEER_MAP_V2_AST_HASH_VALUE_GET(word) \
     (((word) & HTT_RX_PEER_MAP_V2_AST_HASH_VALUE_M) >> HTT_RX_PEER_MAP_V2_AST_HASH_VALUE_S)
 
+#define HTT_RX_PEER_MAP_V2_ONCHIP_AST_HASH_VALUE_SET(word, value)             \
+    do {                                                                      \
+        HTT_CHECK_SET_VAL(HTT_RX_PEER_MAP_V2_ONCHIP_AST_HASH_VALUE_M, value); \
+        (word) |= (value)  << HTT_RX_PEER_MAP_V2_ONCHIP_AST_HASH_VALUE_S;     \
+    } while (0)
+#define HTT_RX_PEER_MAP_V2_ONCHIP_AST_HASH_VALUE_GET(word) \
+    (((word) & HTT_RX_PEER_MAP_V2_ONCHIP_AST_HASH_VALUE_M) >> HTT_RX_PEER_MAP_V2_ONCHIP_AST_HASH_VALUE_S)
+
 #define HTT_RX_PEER_MAP_V2_NEXT_HOP_SET(word, value)            \
     do {                                                        \
         HTT_CHECK_SET_VAL(HTT_RX_PEER_MAP_V2_NEXT_HOP, value);  \
@@ -9358,6 +9385,14 @@ PREPACK struct htt_tx_offload_deliver_ind_hdr_t
 #define HTT_RX_PEER_MAP_V2_AST_VALID_MASK_GET(word) \
     (((word) & HTT_RX_PEER_MAP_V2_AST_VALID_MASK_M) >> HTT_RX_PEER_MAP_V2_AST_VALID_MASK_S)
 
+#define HTT_RX_PEER_MAP_V2_ONCHIP_AST_VALID_FLAG_SET(word, value) \
+    do { \
+        HTT_CHECK_SET_VAL(HTT_RX_PEER_MAP_V2_ONCHIP_AST_VALID_FLAG_M, value); \
+        (word) |= (value)  << HTT_RX_PEER_MAP_V2_ONCHIP_AST_VALID_FLAG_S; \
+    } while (0)
+#define HTT_RX_PEER_MAP_V2_ONCHIP_AST_VALID_MASK_GET(word) \
+    (((word) & HTT_RX_PEER_MAP_V2_ONCHIP_AST_VALID_FLAG_M) >> HTT_RX_PEER_MAP_V2_ONCHIP_AST_VALID_FLAG_S)
+
 #define HTT_RX_PEER_MAP_V2_AST_INDEX_1_SET(word, value) \
     do { \
         HTT_CHECK_SET_VAL(HTT_RX_PEER_MAP_V2_AST_INDEX_1, value); \

+ 1 - 0
fw/wmi_services.h

@@ -489,6 +489,7 @@ typedef  enum  {
     WMI_SERVICE_TWT_NUDGE = 269, /* Indicates that FW supports TWT Nudge command and event */
     WMI_SERVICE_TWT_STATS = 270, /* Indicates that FW supports TWT Get_stats command and event */
     WMI_SERVICE_TWT_ALL_DIALOG_ID = 271, /* Indicates that FW supports TWT ALL dialog ID(255) for all commands and events, except for TWT add dialog and TWT get stats */
+    WMI_SERVICE_SPLIT_AST_SUPPORT = 272, /* Indicate that FW supports SPLIT AST table */
 
 
     WMI_MAX_EXT2_SERVICE

+ 22 - 1
fw/wmi_unified.h

@@ -3108,6 +3108,17 @@ typedef struct {
      */
     A_UINT32 pktlog_defs_checksum;
 
+    /*
+     * max_onchip_ast_index - max AST index that Firmware can generate
+     * max_onchip_ast_index = (ast_table_size-1), where ast_table_size is
+     * dynamically chosen based on num_peers configutation from Host.
+     * Hence Host needs to know the max_onchip_ast_index that Firmware can
+     * generate.
+     * A 0x0 value for max_onchip_ast_index means the target has not specified
+     * a limit.
+     */
+    A_UINT32 max_onchip_ast_index;
+
 /*
  * This fixed_param TLV is followed by these additional TLVs:
  * mac_addr_list[num_extra_mac_addr];
@@ -3783,7 +3794,12 @@ typedef struct {
      *
      *      Refer to WMI_RSRC_CFG_HOST_SERVICE_FLAG_HOST_SUPPORT_MULTI_RADIO_EVTS_PER_RADIO_GET/SET
      *      macros defined below.
-     *  Bits 31:2 - Reserved
+     *  Bit 2
+     *      This bit will be set when host is able to handle split AST feature.
+     *      Refer to the below definitions of the
+     *      WMI_RSRC_CFG_HOST_SERVICE_FLAG_SPLIT_AST_FEATURE_HOST_SUPPORT_GET
+     *      and _SET macros.
+     *  Bits 31:3 - Reserved
      */
     A_UINT32 host_service_flags;
 
@@ -4047,6 +4063,11 @@ typedef struct {
 #define WMI_RSRC_CFG_HOST_SERVICE_FLAG_HOST_SUPPORT_MULTI_RADIO_EVTS_PER_RADIO_SET(host_service_flags, val) \
     WMI_SET_BITS(host_service_flags, 1, 1, val)
 
+#define WMI_RSRC_CFG_HOST_SERVICE_FLAG_SPLIT_AST_FEATURE_HOST_SUPPORT_GET(host_service_flags) \
+    WMI_GET_BITS(host_service_flags, 2, 1)
+#define WMI_RSRC_CFG_HOST_SERVICE_FLAG_SPLIT_AST_FEATURE_HOST_SUPPORT_SET(host_service_flags, val) \
+    WMI_SET_BITS(host_service_flags, 2, 1, val)
+
 typedef struct {
     A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_init_cmd_fixed_param */
 

+ 1 - 1
fw/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_ 935
+#define __WMI_REVISION_ 936
 
 /** The Version Namespace should not be normally changed. Only
  *  host and firmware of the same WMI namespace will work