ath10k: reduce transmit msdu count
authorAlagu Sankar <alagusankar@silex-india.com>
Fri, 1 Feb 2019 02:17:09 +0000 (10:17 +0800)
committerKalle Valo <kvalo@codeaurora.org>
Thu, 7 Feb 2019 14:56:09 +0000 (16:56 +0200)
Reduce the transmit MSDU count for SDIO, to match with the descriptors
as used by the firmware. This also acts as a high watermark level for
transmit. Too many packets to the firmware results in transmit overflow
interrupt.

It only affect SDIO chip, it will not cause functionaly changes to
other hardware.

Tested with QCA6174 SDIO with firmware
WLAN.RMH.4.4.1-00005-QCARMSWP-1.

Signed-off-by: Alagu Sankar <alagusankar@silex-india.com>
Signed-off-by: Wen Gong <wgong@codeaurora.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/ath/ath10k/core.c
drivers/net/wireless/ath/ath10k/hw.h
drivers/net/wireless/ath/ath10k/wmi-tlv.c

index 23e88fb6dfd953057f93f416f8be4eed585d6924..753f5764d25c0ebf03490a727427edc6ead5a0e5 100644 (file)
@@ -2309,7 +2309,11 @@ static int ath10k_core_init_firmware_features(struct ath10k *ar)
                ar->max_num_stations = TARGET_TLV_NUM_STATIONS;
                ar->max_num_vdevs = TARGET_TLV_NUM_VDEVS;
                ar->max_num_tdls_vdevs = TARGET_TLV_NUM_TDLS_VDEVS;
-               ar->htt.max_num_pending_tx = TARGET_TLV_NUM_MSDU_DESC;
+               if (ar->hif.bus == ATH10K_BUS_SDIO)
+                       ar->htt.max_num_pending_tx =
+                               TARGET_TLV_NUM_MSDU_DESC_HL;
+               else
+                       ar->htt.max_num_pending_tx = TARGET_TLV_NUM_MSDU_DESC;
                ar->wow.max_num_patterns = TARGET_TLV_NUM_WOW_PATTERNS;
                ar->fw_stats_req_mask = WMI_STAT_PDEV | WMI_STAT_VDEV |
                        WMI_STAT_PEER;
index f03114740040ad1ba14cdddeada9dd9e3884f38b..f9ffed53f2c4864ea6d9d50435de563e8a8a678d 100644 (file)
@@ -736,6 +736,7 @@ ath10k_rx_desc_msdu_limit_error(struct ath10k_hw_params *hw,
 #define TARGET_TLV_NUM_TDLS_VDEVS              1
 #define TARGET_TLV_NUM_TIDS                    ((TARGET_TLV_NUM_PEERS) * 2)
 #define TARGET_TLV_NUM_MSDU_DESC               (1024 + 32)
+#define TARGET_TLV_NUM_MSDU_DESC_HL            64
 #define TARGET_TLV_NUM_WOW_PATTERNS            22
 #define TARGET_TLV_MGMT_NUM_MSDU_DESC          (50)
 
index e6f62bb252ec3695a433b31302ddaf3cccd05efa..90617e1a074c2c917ebe392a5de4e3d1f7c46e3d 100644 (file)
@@ -1673,7 +1673,7 @@ static struct sk_buff *ath10k_wmi_tlv_op_gen_init(struct ath10k *ar)
        cfg->rx_skip_defrag_timeout_dup_detection_check = __cpu_to_le32(0);
        cfg->vow_config = __cpu_to_le32(0);
        cfg->gtk_offload_max_vdev = __cpu_to_le32(2);
-       cfg->num_msdu_desc = __cpu_to_le32(TARGET_TLV_NUM_MSDU_DESC);
+       cfg->num_msdu_desc = __cpu_to_le32(ar->htt.max_num_pending_tx);
        cfg->max_frag_entries = __cpu_to_le32(2);
        cfg->num_tdls_vdevs = __cpu_to_le32(TARGET_TLV_NUM_TDLS_VDEVS);
        cfg->num_tdls_conn_table_entries = __cpu_to_le32(0x20);