Search Linux Wireless

[PATCH] wifi: brcmfmac: Detect corner error case earlier with log

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



In some corner cases, an I/O read can fail and return -1, and this
patch detects this slightly earlier than is done today and logs an
appropriate message.

Signed-off-by: Neal Sidhwaney <nealsid@xxxxxxxxx>
---
 drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
index 9f9bf08a70bb..9b38c6f2f37f 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
@@ -972,6 +972,7 @@ static int brcmf_chip_recognition(struct
brcmf_chip_priv *ci)
  u32 regdata;
  u32 socitype;
  int ret;
+ u32 READ_FAILED = 0xFFFFFFFF;

  /* Get CC core rev
  * Chipid is assume to be at offset 0 from SI_ENUM_BASE
@@ -980,6 +981,11 @@ static int brcmf_chip_recognition(struct
brcmf_chip_priv *ci)
  */
  regdata = ci->ops->read32(ci->ctx,
   CORE_CC_REG(ci->pub.enum_base, chipid));
+ if (regdata == READ_FAILED) {
+  brcmf_err("MMIO read failed: 0x%08x\n", regdata);
+  return -ENODEV;
+ }
+
  ci->pub.chip = regdata & CID_ID_MASK;
  ci->pub.chiprev = (regdata & CID_REV_MASK) >> CID_REV_SHIFT;
  socitype = (regdata & CID_TYPE_MASK) >> CID_TYPE_SHIFT;
--
2.40.1



[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux