ath11k: update tcl cmd descriptor parameters for STA mode
authorAnilkumar Kolli <akolli@codeaurora.org>
Wed, 27 Nov 2019 16:29:53 +0000 (18:29 +0200)
committerKalle Valo <kvalo@codeaurora.org>
Fri, 29 Nov 2019 07:35:15 +0000 (09:35 +0200)
It is observed that ath11k STA mode UL throughput is low.
This is due to packets delivered to FW from TCL instead of TQM.
TCL AST search fail causes packet delivered to FW, fix this by
properly configuring the TCL address search type and ast_hash.
STA UL throughput is improved 10times with 11AC AP.

Signed-off-by: Anilkumar Kolli <akolli@codeaurora.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/ath/ath11k/dp.c
drivers/net/wireless/ath/ath11k/dp_rx.c
drivers/net/wireless/ath/ath11k/hal_desc.h
drivers/net/wireless/ath/ath11k/hal_tx.c
drivers/net/wireless/ath/ath11k/hal_tx.h

index aa2b28189cda53237aa54543da4fa482e8a43bc8..ff510e821a29196d7a751306b0b855179c656442 100644 (file)
@@ -758,13 +758,12 @@ int ath11k_dp_htt_connect(struct ath11k_dp *dp)
 
 static void ath11k_dp_update_vdev_search(struct ath11k_vif *arvif)
 {
-       /* Enable AddrY (SA based search) for STA mode. All other modes it
-        * is going to be AddrX (DA based search). For STA mode, set search
-        * type based on AST value.
-        */
+        /* For STA mode, enable address search index,
+         * tcl uses ast_hash value in the descriptor.
+         */
        switch (arvif->vdev_type) {
        case WMI_VDEV_TYPE_STA:
-               arvif->hal_addr_search_flags = HAL_TX_ADDRY_EN;
+               arvif->hal_addr_search_flags = HAL_TX_ADDRX_EN;
                arvif->search_type = HAL_TX_ADDR_SEARCH_INDEX;
                break;
        case WMI_VDEV_TYPE_AP:
index 7aade0314e614109a191b62dc074ce4dfcc9a4fd..396658be6f26ba979cdc0e5b0db1a27609cbb392 100644 (file)
@@ -1312,7 +1312,7 @@ void ath11k_dp_htt_htc_t2h_msg_handler(struct ath11k_base *ab,
                ath11k_dp_get_mac_addr(resp->peer_map_ev.mac_addr_l32,
                                       peer_mac_h16, mac_addr);
                ast_hash = FIELD_GET(HTT_T2H_PEER_MAP_INFO2_AST_HASH_VAL,
-                                    resp->peer_map_ev.info1);
+                                    resp->peer_map_ev.info2);
                ath11k_peer_map_event(ab, vdev_id, peer_id, mac_addr, ast_hash);
                break;
        case HTT_T2H_MSG_TYPE_PEER_UNMAP:
index 35e191b7727182f411005211d8d99df21e1412bb..5e200380cca4e8c0cf9fa1a2e9a3919e7a15b30f 100644 (file)
@@ -934,9 +934,8 @@ struct hal_reo_flush_cache {
 #define HAL_TCL_DATA_CMD_INFO0_ENCRYPT_TYPE    GENMASK(7, 4)
 #define HAL_TCL_DATA_CMD_INFO0_SRC_BUF_SWAP    BIT(8)
 #define HAL_TCL_DATA_CMD_INFO0_LNK_META_SWAP   BIT(9)
-#define HAL_TCL_DATA_CMD_INFO0_SEARCH_TYPE     BIT(12)
-#define HAL_TCL_DATA_CMD_INFO0_ADDRX_EN                BIT(14)
-#define HAL_TCL_DATA_CMD_INFO0_ADDRY_EN                BIT(15)
+#define HAL_TCL_DATA_CMD_INFO0_SEARCH_TYPE     GENMASK(13, 12)
+#define HAL_TCL_DATA_CMD_INFO0_ADDR_EN         GENMASK(15, 14)
 #define HAL_TCL_DATA_CMD_INFO0_CMD_NUM         GENMASK(31, 16)
 
 #define HAL_TCL_DATA_CMD_INFO1_DATA_LEN                GENMASK(15, 0)
index bb27591023fe76dbb3c80c842431d29a93e61fa3..cbe54979876203104e1f15b9feab5e554022aacf 100644 (file)
@@ -52,9 +52,9 @@ void ath11k_hal_tx_cmd_desc_setup(struct ath11k_base *ab, void *cmd,
                FIELD_PREP(HAL_TCL_DATA_CMD_INFO0_ENCAP_TYPE, ti->encap_type) |
                FIELD_PREP(HAL_TCL_DATA_CMD_INFO0_ENCRYPT_TYPE,
                           ti->encrypt_type) |
-               FIELD_PREP(HAL_TCL_DATA_CMD_INFO0_ADDRX_EN,
-                          ti->addr_search_flags) |
-               FIELD_PREP(HAL_TCL_DATA_CMD_INFO0_ADDRY_EN,
+               FIELD_PREP(HAL_TCL_DATA_CMD_INFO0_SEARCH_TYPE,
+                          ti->search_type) |
+               FIELD_PREP(HAL_TCL_DATA_CMD_INFO0_ADDR_EN,
                           ti->addr_search_flags) |
                FIELD_PREP(HAL_TCL_DATA_CMD_INFO0_CMD_NUM,
                           ti->meta_data_flags);
index f955070bcf1e4ac0252532e8975055c45c0429dc..5217eaf9da5018ba8a9a649cf0ff7386d41da8ab 100644 (file)
@@ -11,8 +11,8 @@
 #define HAL_TX_ADDRX_EN                        1
 #define HAL_TX_ADDRY_EN                        2
 
-#define HAL_TX_ADDR_SEARCH_INDEX       0
-#define HAL_TX_ADDR_SEARCH_DEFAULT     1
+#define HAL_TX_ADDR_SEARCH_DEFAULT     0
+#define HAL_TX_ADDR_SEARCH_INDEX       1
 
 struct hal_tx_info {
        u16 meta_data_flags; /* %HAL_TCL_DATA_CMD_INFO0_META_ */