]> git.proxmox.com Git - mirror_ubuntu-focal-kernel.git/commitdiff
ath9k: Fix error check in ath9k_hw_read_revisions() for PCI devices
authorToke Høiland-Jørgensen <toke@redhat.com>
Fri, 26 Mar 2021 18:08:19 +0000 (19:08 +0100)
committerKleber Sacilotto de Souza <kleber.souza@canonical.com>
Wed, 26 May 2021 13:39:23 +0000 (15:39 +0200)
BugLink: https://bugs.launchpad.net/bugs/1929615
[ Upstream commit 7dd9a40fd6e0d0f1fd8e1931c007e080801dfdce ]

When the error check in ath9k_hw_read_revisions() was added, it checked for
-EIO which is what ath9k_regread() in the ath9k_htc driver uses. However,
for plain ath9k, the register read function uses ioread32(), which just
returns -1 on error. So if such a read fails, it still gets passed through
and ends up as a weird mac revision in the log output.

Fix this by changing ath9k_regread() to return -1 on error like ioread32()
does, and fix the error check to look for that instead of -EIO.

Fixes: 2f90c7e5d094 ("ath9k: Check for errors when reading SREV register")
Signed-off-by: Toke Høiland-Jørgensen <toke@redhat.com>
Reviewed-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20210326180819.142480-1-toke@redhat.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Kleber Sacilotto de Souza <kleber.souza@canonical.com>
drivers/net/wireless/ath/ath9k/htc_drv_init.c
drivers/net/wireless/ath/ath9k/hw.c

index 40a065028ebecf219634660e501476a4b25e502a..11054c17a9b54d6a600c667d9e641fc63179ed56 100644 (file)
@@ -246,7 +246,7 @@ static unsigned int ath9k_regread(void *hw_priv, u32 reg_offset)
        if (unlikely(r)) {
                ath_dbg(common, WMI, "REGISTER READ FAILED: (0x%04x, %d)\n",
                        reg_offset, r);
-               return -EIO;
+               return -1;
        }
 
        return be32_to_cpu(val);
index 052deffb4c9d43533c026c1033ca9035c20b6bf2..9fd8e64288ffa4178a7797b70608b126e252c8aa 100644 (file)
@@ -287,7 +287,7 @@ static bool ath9k_hw_read_revisions(struct ath_hw *ah)
 
        srev = REG_READ(ah, AR_SREV);
 
-       if (srev == -EIO) {
+       if (srev == -1) {
                ath_err(ath9k_hw_common(ah),
                        "Failed to read SREV register");
                return false;