diff options
author | Tamizh chelvam <c_traja@qti.qualcomm.com> | 2017-02-02 01:32:18 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2017-03-12 00:41:46 -0500 |
commit | bac7f7135d51144ff193002b296b8bdf06c9855f (patch) | |
tree | 873c4cfe2edcd6d759defced910fa0808f057782 /drivers/net/wireless | |
parent | d2a8cd3eee0fe9b14fe3a72c02cffa7df31a2383 (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.c | 14 |
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 |