]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/commitdiff
ath10k: fix boot failure in UTF mode/testmode
authorTamizh chelvam <c_traja@qti.qualcomm.com>
Thu, 2 Feb 2017 06:32:18 +0000 (08:32 +0200)
committerTim Gardner <tim.gardner@canonical.com>
Mon, 13 Mar 2017 21:20:54 +0000 (15:20 -0600)
BugLink: http://bugs.launchpad.net/bugs/1672544
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>
Signed-off-by: Tim Gardner <tim.gardner@canonical.com>
drivers/net/wireless/ath/ath10k/core.c

index 749e381edd380e945bcd7d26c4cab35eb51b3272..01f5d4db4d0ee7206ed3dafd19f7b4b8695904ef 100644 (file)
@@ -1913,7 +1913,8 @@ int ath10k_core_start(struct ath10k *ar, enum ath10k_firmware_mode mode,
        ath10k_dbg(ar, ATH10K_DBG_BOOT, "firmware %s booted\n",
                   ar->hw->wiphy->fw_version);
 
-       if (test_bit(WMI_SERVICE_EXT_RES_CFG_SUPPORT, ar->wmi.svc_map)) {
+       if (test_bit(WMI_SERVICE_EXT_RES_CFG_SUPPORT, ar->wmi.svc_map) &&
+           mode == ATH10K_FIRMWARE_MODE_NORMAL) {
                val = 0;
                if (ath10k_peer_stats_enabled(ar))
                        val = WMI_10_4_PEER_STATS;
@@ -1966,10 +1967,13 @@ int ath10k_core_start(struct ath10k *ar, enum ath10k_firmware_mode mode,
         * possible to implicitly make it correct by creating a dummy vdev and
         * then deleting it.
         */
-       status = ath10k_core_reset_rx_filter(ar);
-       if (status) {
-               ath10k_err(ar, "failed to reset rx filter: %d\n", status);
-               goto err_hif_stop;
+       if (mode == ATH10K_FIRMWARE_MODE_NORMAL) {
+               status = ath10k_core_reset_rx_filter(ar);
+               if (status) {
+                       ath10k_err(ar,
+                                  "failed to reset rx filter: %d\n", status);
+                       goto err_hif_stop;
+               }
        }
 
        /* If firmware indicates Full Rx Reorder support it must be used in a