Message ID | 20210326180819.142480-1-toke@redhat.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 7dd9a40fd6e0d0f1fd8e1931c007e080801dfdce |
Delegated to: | Kalle Valo |
Headers | show |
Series | ath9k: Fix error check in ath9k_hw_read_revisions() for PCI devices | expand |
> 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> Hi Kalle This patch is merged as "deferred" in patchwork - what's up with that? -Toke
Toke Høiland-Jørgensen <toke@redhat.com> writes: >> 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> > > Hi Kalle > > This patch is merged as "deferred" in patchwork - what's up with that? Just lack of time on my part. Reviewed-by tags would help a lot :)
Kalle Valo <kvalo@codeaurora.org> writes: > Toke Høiland-Jørgensen <toke@redhat.com> writes: > >>> 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> >> >> Hi Kalle >> >> This patch is merged as "deferred" in patchwork - what's up with that? > > Just lack of time on my part. Reviewed-by tags would help a lot :) Right, gotcha - will see if I can find someone to review :) -Toke
> Toke Høiland-Jørgensen <toke@redhat.com> writes: > > >> 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> > > > > Hi Kalle > > > > This patch is merged as "deferred" in patchwork - what's up with that? > > Just lack of time on my part. Reviewed-by tags would help a lot :) Reviewed-by: Lorenzo Bianconi <lorenzo@kernel.org> > > -- > https://patchwork.kernel.org/project/linux-wireless/list/ > > https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
Toke Høiland-Jørgensen <toke@redhat.com> wrote: > 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> Patch applied to ath-next branch of ath.git, thanks. 7dd9a40fd6e0 ath9k: Fix error check in ath9k_hw_read_revisions() for PCI devices
diff --git a/drivers/net/wireless/ath/ath9k/htc_drv_init.c b/drivers/net/wireless/ath/ath9k/htc_drv_init.c index db0c6fa9c9dc..ff61ae34ecdf 100644 --- a/drivers/net/wireless/ath/ath9k/htc_drv_init.c +++ b/drivers/net/wireless/ath/ath9k/htc_drv_init.c @@ -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); diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c index b66eeb577272..504e316d3394 100644 --- a/drivers/net/wireless/ath/ath9k/hw.c +++ b/drivers/net/wireless/ath/ath9k/hw.c @@ -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;
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> --- drivers/net/wireless/ath/ath9k/htc_drv_init.c | 2 +- drivers/net/wireless/ath/ath9k/hw.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)