aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless
diff options
context:
space:
mode:
authorTamizh chelvam <c_traja@qti.qualcomm.com>2017-02-02 01:32:18 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2017-03-12 00:41:46 -0500
commitbac7f7135d51144ff193002b296b8bdf06c9855f (patch)
tree873c4cfe2edcd6d759defced910fa0808f057782 /drivers/net/wireless
parentd2a8cd3eee0fe9b14fe3a72c02cffa7df31a2383 (diff)
ath10k: fix boot failure in UTF mode/testmode
commit cb4281528b62207918b1e95827cad7527aa4dbaa upstream. Rx filter reset and the dynamic tx switch mode (EXT_RESOURCE_CFG) configuration are causing the following errors when UTF firmware is loaded to the target. Error message 1: [ 598.015629] ath10k_pci 0001:01:00.0: failed to ping firmware: -110 [ 598.020828] ath10k_pci 0001:01:00.0: failed to reset rx filter: -110 [ 598.141556] ath10k_pci 0001:01:00.0: failed to start core (testmode): -110 Error message 2: [ 668.615839] ath10k_ahb a000000.wifi: failed to send ext resource cfg command : -95 [ 668.618902] ath10k_ahb a000000.wifi: failed to start core (testmode): -95 Avoiding these configurations while bringing the target in testmode is solving the problem. Signed-off-by: Tamizh chelvam <c_traja@qti.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r--drivers/net/wireless/ath/ath10k/core.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/net/wireless/ath/ath10k/core.c b/drivers/net/wireless/ath/ath10k/core.c
index 0c4532227f25..972b5e224d5d 100644
--- a/drivers/net/wireless/ath/ath10k/core.c
+++ b/drivers/net/wireless/ath/ath10k/core.c
@@ -1901,7 +1901,8 @@ int ath10k_core_start(struct ath10k *ar, enum ath10k_firmware_mode mode,
1901 ath10k_dbg(ar, ATH10K_DBG_BOOT, "firmware %s booted\n", 1901 ath10k_dbg(ar, ATH10K_DBG_BOOT, "firmware %s booted\n",
1902 ar->hw->wiphy->fw_version); 1902 ar->hw->wiphy->fw_version);
1903 1903
1904 if (test_bit(WMI_SERVICE_EXT_RES_CFG_SUPPORT, ar->wmi.svc_map)) { 1904 if (test_bit(WMI_SERVICE_EXT_RES_CFG_SUPPORT, ar->wmi.svc_map) &&
1905 mode == ATH10K_FIRMWARE_MODE_NORMAL) {
1905 val = 0; 1906 val = 0;
1906 if (ath10k_peer_stats_enabled(ar)) 1907 if (ath10k_peer_stats_enabled(ar))
1907 val = WMI_10_4_PEER_STATS; 1908 val = WMI_10_4_PEER_STATS;
@@ -1954,10 +1955,13 @@ int ath10k_core_start(struct ath10k *ar, enum ath10k_firmware_mode mode,
1954 * possible to implicitly make it correct by creating a dummy vdev and 1955 * possible to implicitly make it correct by creating a dummy vdev and
1955 * then deleting it. 1956 * then deleting it.
1956 */ 1957 */
1957 status = ath10k_core_reset_rx_filter(ar); 1958 if (mode == ATH10K_FIRMWARE_MODE_NORMAL) {
1958 if (status) { 1959 status = ath10k_core_reset_rx_filter(ar);
1959 ath10k_err(ar, "failed to reset rx filter: %d\n", status); 1960 if (status) {
1960 goto err_hif_stop; 1961 ath10k_err(ar,
1962 "failed to reset rx filter: %d\n", status);
1963 goto err_hif_stop;
1964 }
1961 } 1965 }
1962 1966
1963 /* If firmware indicates Full Rx Reorder support it must be used in a 1967 /* If firmware indicates Full Rx Reorder support it must be used in a