Browse Source

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

HTT, WMI: add HTT_H2T RXDMA_RXOLE_PPE_CFG msg def
also add WMI_TX_SEND_PARAM_BEAMFORM_GET,_SET macro defs

Change-Id: I0651382365b72309450919837510b9d00b69b6d6
CRs-Fixed: 2262693
spuligil 3 years ago
parent
commit
5f82a6fc89
4 changed files with 176 additions and 3 deletions
  1. 130 2
      fw/htt.h
  2. 7 0
      fw/wmi_tlv_defs.h
  3. 38 0
      fw/wmi_unified.h
  4. 1 1
      fw/wmi_version.h

+ 130 - 2
fw/htt.h

@@ -212,10 +212,11 @@
  * 3.88 Add HTT_H2T_MSG_TYPE_HOST_PADDR_SIZE def.
  * 3.89 Add MSDU queue enumerations.
  * 3.90 Add HTT_T2H_MSG_TYPE_MLO_TIMESTAMP_OFFSET_IND def.
- * 3.91 Add TT_T2H_MSG_TYPE_MLO_RX_PEER_MAP, _UNMAP defs.
+ * 3.91 Add HTT_T2H_MSG_TYPE_MLO_RX_PEER_MAP, _UNMAP defs.
+ * 3.92 Add HTT_H2T_MSG_TYPE_RXDMA_RXOLE_PPE_CFG def.
  */
 #define HTT_CURRENT_VERSION_MAJOR 3
-#define HTT_CURRENT_VERSION_MINOR 91
+#define HTT_CURRENT_VERSION_MINOR 92
 
 #define HTT_NUM_TX_FRAG_DESC  1024
 
@@ -528,6 +529,7 @@ enum htt_h2t_msg_type {
     HTT_H2T_MSG_TYPE_3_TUPLE_HASH_CFG      = 0x16,
     HTT_H2T_MSG_TYPE_RX_FULL_MONITOR_MODE  = 0x17,
     HTT_H2T_MSG_TYPE_HOST_PADDR_SIZE       = 0x18,
+    HTT_H2T_MSG_TYPE_RXDMA_RXOLE_PPE_CFG   = 0x19,
 
     /* keep this last */
     HTT_H2T_NUM_MSGS
@@ -7002,6 +7004,132 @@ PREPACK struct htt_h2t_host_paddr_size_entry_t {
         ((_var) |= ((_val) << HTT_H2T_HOST_PADDR_SIZE_NUM_ENTRIES_S)); \
     } while (0)
 
+/**
+ * @brief host --> target Host RXDMA RXOLE PPE register configuration
+ *
+ * MSG_TYPE => HTT_H2T_MSG_TYPE_RXDMA_RXOLE_PPE_CFG
+ *
+ * @details
+ *  The HTT_H2T_MSG_TYPE_RXDMA_RXOLE_PPE_CFG message is sent by the host to
+ *  provide the PPE DS register confiuration for RXOLE and RXDMA.
+ *
+ *  The message would appear as follows:
+ *
+ *     |31                 19|18 |17 |16 |15 |14 |13       9|8|7         0|
+ *     |---------------------------------+---+---+----------+-+-----------|
+ *     |      reserved       |IFO|DNO|DRO|IBO|MIO|   RDI    |O| msg_type  |
+ *     |---------------------+---+---+---+---+---+----------+-+-----------|
+ *
+ *
+ * The message is interpreted as follows:
+ * dword0 - b'0:7   - msg_type: This will be set to
+ *                    0x19 (HTT_H2T_MSG_TYPE_RXDMA_RXOLE_PPE_CFG)
+ *          b'8     - override bit to drive MSDUs to PPE ring
+ *          b'9:13  - REO destination ring indication
+ *          b'14    - Multi buffer msdu override enable bit
+ *          b'15    - Intra BSS override
+ *          b'16    - Decap raw override
+ *          b'17    - Decap Native wifi override
+ *          b'18    - IP frag override
+ *          b'19:31 - reserved
+ */
+PREPACK struct htt_h2t_msg_type_rxdma_rxole_ppe_cfg_t {
+   A_UINT32 msg_type:                      8, /* HTT_H2T_MSG_TYPE_RXDMA_RXOLE_PPE_CFG */
+            override:                      1,
+            reo_destination_indication:    5,
+            multi_buffer_msdu_override_en: 1,
+            intra_bss_override:            1,
+            decap_raw_override:            1,
+            decap_nwifi_override:          1,
+            ip_frag_override:              1,
+            reserved:                     13;
+} POSTPACK;
+
+/* DWORD 0: Override */
+#define HTT_PPE_CFG_OVERRIDE_M                  0x00000100
+#define HTT_PPE_CFG_OVERRIDE_S                  8
+#define HTT_PPE_CFG_OVERRIDE_GET(_var) \
+        (((_var) & HTT_PPE_CFG_OVERRIDE_M) >> \
+                HTT_PPE_CFG_OVERRIDE_S)
+#define HTT_PPE_CFG_OVERRIDE_SET(_var, _val) \
+        do { \
+            HTT_CHECK_SET_VAL(HTT_PPE_CFG_OVERRIDE, _val); \
+            ((_var) |= ((_val) << HTT_PPE_CFG_OVERRIDE_S)); \
+        } while (0)
+
+/* DWORD 0: REO Destination Indication*/
+#define HTT_PPE_CFG_REO_DEST_IND_M                  0x00003E00
+#define HTT_PPE_CFG_REO_DEST_IND_S                  9
+#define HTT_PPE_CFG_REO_DEST_IND_GET(_var) \
+        (((_var) & HTT_PPE_CFG_REO_DEST_IND_M) >> \
+                HTT_PPE_CFG_REO_DEST_IND_S)
+#define HTT_PPE_CFG_REO_DEST_IND_SET(_var, _val) \
+        do { \
+            HTT_CHECK_SET_VAL(HTT_PPE_CFG_REO_DEST_IND, _val); \
+            ((_var) |= ((_val) << HTT_PPE_CFG_REO_DEST_IND_S)); \
+        } while (0)
+
+/* DWORD 0: Multi buffer MSDU override */
+#define HTT_PPE_CFG_MULTI_BUF_MSDU_OVERRIDE_EN_M                  0x00004000
+#define HTT_PPE_CFG_MULTI_BUF_MSDU_OVERRIDE_EN_S                  14
+#define HTT_PPE_CFG_MULTI_BUF_MSDU_OVERRIDE_EN_GET(_var) \
+        (((_var) & HTT_PPE_CFG_MULTI_BUF_MSDU_OVERRIDE_EN_M) >> \
+                HTT_PPE_CFG_MULTI_BUF_MSDU_OVERRIDE_EN_S)
+#define HTT_PPE_CFG_MULTI_BUF_MSDU_OVERRIDE_EN_SET(_var, _val) \
+        do { \
+            HTT_CHECK_SET_VAL(HTT_PPE_CFG_MULTI_BUF_MSDU_OVERRIDE_EN, _val); \
+            ((_var) |= ((_val) << HTT_PPE_CFG_MULTI_BUF_MSDU_OVERRIDE_EN_S)); \
+        } while (0)
+
+/* DWORD 0: Intra BSS override */
+#define HTT_PPE_CFG_INTRA_BSS_OVERRIDE_EN_M                  0x00008000
+#define HTT_PPE_CFG_INTRA_BSS_OVERRIDE_EN_S                  15
+#define HTT_PPE_CFG_INTRA_BSS_OVERRIDE_EN_GET(_var) \
+        (((_var) & HTT_PPE_CFG_INTRA_BSS_OVERRIDE_EN_M) >> \
+                HTT_PPE_CFG_INTRA_BSS_OVERRIDE_EN_S)
+#define HTT_PPE_CFG_INTRA_BSS_OVERRIDE_EN_SET(_var, _val) \
+        do { \
+            HTT_CHECK_SET_VAL(HTT_PPE_CFG_INTRA_BSS_OVERRIDE_EN, _val); \
+            ((_var) |= ((_val) << HTT_PPE_CFG_INTRA_BSS_OVERRIDE_EN_S)); \
+        } while (0)
+
+/* DWORD 0: Decap RAW override */
+#define HTT_PPE_CFG_DECAP_RAW_OVERRIDE_EN_M                  0x00010000
+#define HTT_PPE_CFG_DECAP_RAW_OVERRIDE_EN_S                  16
+#define HTT_PPE_CFG_DECAP_RAW_OVERRIDE_EN_GET(_var) \
+        (((_var) & HTT_PPE_CFG_DECAP_RAW_OVERRIDE_EN_M) >> \
+                HTT_PPE_CFG_DECAP_RAW_OVERRIDE_EN_S)
+#define HTT_PPE_CFG_DECAP_RAW_OVERRIDE_EN_SET(_var, _val) \
+        do { \
+            HTT_CHECK_SET_VAL(HTT_PPE_CFG_DECAP_RAW_OVERRIDE_EN, _val); \
+            ((_var) |= ((_val) << HTT_PPE_CFG_DECAP_RAW_OVERRIDE_EN_S)); \
+        } while (0)
+
+/* DWORD 0: Decap NWIFI override */
+#define HTT_PPE_CFG_DECAP_NWIFI_OVERRIDE_EN_M                  0x00020000
+#define HTT_PPE_CFG_DECAP_NWIFI_OVERRIDE_EN_S                  17
+#define HTT_PPE_CFG_DECAP_NWIFI_OVERRIDE_EN_GET(_var) \
+        (((_var) & HTT_PPE_CFG_DECAP_NWIFI_OVERRIDE_EN_M) >> \
+                HTT_PPE_CFG_DECAP_NWIFI_OVERRIDE_EN_S)
+#define HTT_PPE_CFG_DECAP_NWIFI_OVERRIDE_EN_SET(_var, _val) \
+        do { \
+            HTT_CHECK_SET_VAL(HTT_PPE_CFG_DECAP_NWIFI_OVERRIDE_EN, _val); \
+            ((_var) |= ((_val) << HTT_PPE_CFG_DECAP_NWIFI_OVERRIDE_EN_S)); \
+        } while (0)
+
+/* DWORD 0: IP frag override */
+#define HTT_PPE_CFG_IP_FRAG_OVERRIDE_EN_M                  0x00040000
+#define HTT_PPE_CFG_IP_FRAG_OVERRIDE_EN_S                  18
+#define HTT_PPE_CFG_IP_FRAG_OVERRIDE_EN_GET(_var) \
+        (((_var) & HTT_PPE_CFG_IP_FRAG_OVERRIDE_EN_M) >> \
+                HTT_PPE_CFG_IP_FRAG_OVERRIDE_EN_S)
+#define HTT_PPE_CFG_IP_FRAG_OVERRIDE_EN_SET(_var, _val) \
+        do { \
+            HTT_CHECK_SET_VAL(HTT_PPE_CFG_IP_FRAG_OVERRIDE_EN, _val); \
+            ((_var) |= ((_val) << HTT_PPE_CFG_IP_FRAG_OVERRIDE_EN_S)); \
+        } while (0)
+
+
 
 /*=== target -> host messages ===============================================*/
 

+ 7 - 0
fw/wmi_tlv_defs.h

@@ -1182,6 +1182,7 @@ typedef enum {
     WMITLV_TAG_STRUC_wmi_vdev_bcn_offload_ml_quiet_config_params,
     WMITLV_TAG_STRUC_wmi_pdev_multiple_vdev_set_param_cmd_fixed_param,
     WMITLV_TAG_STRUC_wmi_pdev_mec_aging_timer_config_cmd_fixed_param,
+    WMITLV_TAG_STRUC_wmi_peer_config_ppe_ds_cmd_fixed_param,
 } WMITLV_TAG_ID;
 
 /*
@@ -1652,6 +1653,7 @@ typedef enum {
     OP(WMI_AFC_CMDID) \
     OP(WMI_PDEV_MULTIPLE_VDEV_SET_PARAM_CMDID) \
     OP(WMI_PDEV_MEC_AGING_TIMER_CONFIG_CMDID) \
+    OP(WMI_PEER_CONFIG_PPE_DS_CMDID) \
     /* add new CMD_LIST elements above this line */
 
 
@@ -4745,6 +4747,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_MULTIPLE_VDEV_SET_PARAM_CMDID);
     WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_mec_aging_timer_config_cmd_fixed_param, wmi_pdev_mec_aging_timer_config_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
 WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_MEC_AGING_TIMER_CONFIG_CMDID);
 
+/* PPE DS config */
+#define WMITLV_TABLE_WMI_PEER_CONFIG_PPE_DS_CMDID(id,op,buf,len) \
+    WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_config_ppe_ds_cmd_fixed_param, wmi_peer_config_ppe_ds_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+WMITLV_CREATE_PARAM_STRUC(WMI_PEER_CONFIG_PPE_DS_CMDID);
+
 
 
 /************************** TLV definitions of WMI events *******************************/

+ 38 - 0
fw/wmi_unified.h

@@ -654,6 +654,9 @@ typedef enum {
      */
     WMI_PEER_CONFIG_VLAN_CMDID,
 
+    /** WMI command for per-peer configuration of PPE DS */
+    WMI_PEER_CONFIG_PPE_DS_CMDID,
+
 
     /* beacon/management specific commands */
 
@@ -5658,6 +5661,10 @@ typedef struct {
 #define WMI_TX_SEND_PARAM_CFR_CAPTURE_GET(tx_param_dword1) WMI_GET_BITS(tx_param_dword1, 21, 1)
 #define WMI_TX_SEND_PARAM_CFR_CAPTURE_SET(tx_param_dword1, value) WMI_SET_BITS(tx_param_dword1, 21, 1, value)
 
+#define WMI_TX_SEND_PARAM_BEAMFORM_GET(tx_param_dword1) WMI_GET_BITS(tx_param_dword1, 22, 1)
+#define WMI_TX_SEND_PARAM_BEAMFORM_SET(tx_param_dword1, value) WMI_SET_BITS(tx_param_dword1, 22, 1, value)
+
+
 /* TX_SEND flags:
  * Bit 0: set wrong txkey
  *     There is one special WFA test case in STA or AP, setting wrong txkey
@@ -28874,6 +28881,7 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command)
         WMI_RETURN_STRING(WMI_AFC_CMDID);
         WMI_RETURN_STRING(WMI_PDEV_MULTIPLE_VDEV_SET_PARAM_CMDID);
         WMI_RETURN_STRING(WMI_PDEV_MEC_AGING_TIMER_CONFIG_CMDID);
+        WMI_RETURN_STRING(WMI_PEER_CONFIG_PPE_DS_CMDID);
     }
 
     return "Invalid WMI cmd";
@@ -34294,6 +34302,36 @@ typedef struct {
     A_UINT32 vdev_id;
 } wmi_peer_config_vlan_cmd_fixed_param;
 
+typedef struct {
+  /** TLV tag and len; tag equals
+    * WMITLV_TAG_STRUC_wmi_peer_config_ppe_ds_cmd_fixed_param */
+    A_UINT32 tlv_header;
+
+    wmi_mac_addr peer_macaddr;
+    A_UINT32 ppe_routing_enable; /* enum WMI_PPE_ROUTING_TYPE */
+
+    /* The processing stages in PPE that this packet buffer need to go through
+     * and on to which PPE queues these buffers should be mapped to.
+     * Refer pkg/ppe/src/ppe_sc.h for service code types
+     */
+    A_UINT32 service_code;
+
+    A_UINT32 priority_valid;
+
+    /* Unique number that represents a VAP's vdev_id in PPE domain */
+    A_UINT32 src_info;
+
+    /* VDEV identifier */
+    A_UINT32 vdev_id;
+} wmi_peer_config_ppe_ds_cmd_fixed_param;
+
+typedef enum {
+    WMI_PPE_ROUTING_DISABLED = 0,
+    WMI_AST_USE_PPE_ENABLED  = 1,
+    WMI_AST_USE_PPE_DISABLED = 2,
+    WMI_PPE_ROUTING_TYPE_MAX,
+} WMI_PPE_ROUTING_TYPE;
+
 typedef struct {
     /** TLV tag and len; tag equals
     * WMITLV_TAG_STRUC_wmi_pdev_multiple_vdev_restart_resp_event_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_ 1018
+#define __WMI_REVISION_ 1019
 
 /** The Version Namespace should not be normally changed. Only
  *  host and firmware of the same WMI namespace will work