OSDN Git Service

ath10k: sdio: set hi_acs_flags
authorAlagu Sankar <alagusankar@silex-india.com>
Mon, 25 Feb 2019 09:45:57 +0000 (11:45 +0200)
committerKalle Valo <kvalo@codeaurora.org>
Tue, 26 Feb 2019 13:01:49 +0000 (15:01 +0200)
The SDIO firmware does not allow transmitting packets with the
reduced tx completion HI_ACS option. SDIO firmware uses 1544 as
alternate credit size, which is not big enough for the maximum sized
mac80211 frames. Disable both these HI_ACS flags for SDIO.

Co-developed-by: Wen Gong <wgong@codeaurora.org>
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

index ac2cf3f..0c62a61 100644 (file)
@@ -637,10 +637,16 @@ static void ath10k_init_sdio(struct ath10k *ar)
        ath10k_bmi_write32(ar, hi_mbox_isr_yield_limit, 99);
        ath10k_bmi_read32(ar, hi_acs_flags, &param);
 
-       param |= (HI_ACS_FLAGS_SDIO_SWAP_MAILBOX_SET |
-                 HI_ACS_FLAGS_SDIO_REDUCE_TX_COMPL_SET |
-                 HI_ACS_FLAGS_ALT_DATA_CREDIT_SIZE);
+       /* Data transfer is not initiated, when reduced Tx completion
+        * is used for SDIO. disable it until fixed
+        */
+       param &= ~HI_ACS_FLAGS_SDIO_REDUCE_TX_COMPL_SET;
 
+       /* Alternate credit size of 1544 as used by SDIO firmware is
+        * not big enough for mac80211 / native wifi frames. disable it
+        */
+       param &= ~HI_ACS_FLAGS_ALT_DATA_CREDIT_SIZE;
+       param |= HI_ACS_FLAGS_SDIO_SWAP_MAILBOX_SET;
        ath10k_bmi_write32(ar, hi_acs_flags, param);
 }