wifi: iwlwifi: yoyo: skip dump correctly on hw error
authorDaniel Gabay <daniel.gabay@intel.com>
Thu, 13 Apr 2023 18:40:33 +0000 (21:40 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 11 May 2023 14:03:23 +0000 (23:03 +0900)
[ Upstream commit 11195ab0d6f3202cf7af1a4c69570f59c377d8ad ]

When NIC is in a bad state, reading data will return 28 bits as
0xa5a5a5a and the lowest 4 bits are not fixed value.

Mask these bits in a few places to skip the dump correctly.

Fixes: 89639e06d0f3 ("iwlwifi: yoyo: support for new DBGI_SRAM region")
Signed-off-by: Daniel Gabay <daniel.gabay@intel.com>
Signed-off-by: Gregory Greenman <gregory.greenman@intel.com>
Link: https://lore.kernel.org/r/20230413213309.df6c0663179d.I36d8487b2419c6fefa65e5514855d94327c3b1eb@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/wireless/intel/iwlwifi/fw/dbg.c

index abf4902..bde6f07 100644 (file)
@@ -1038,7 +1038,7 @@ iwl_dump_ini_prph_mac_iter(struct iwl_fw_runtime *fwrt,
        range->range_data_size = reg->dev_addr.size;
        for (i = 0; i < le32_to_cpu(reg->dev_addr.size); i += 4) {
                prph_val = iwl_read_prph(fwrt->trans, addr + i);
-               if (prph_val == 0x5a5a5a5a)
+               if ((prph_val & ~0xf) == 0xa5a5a5a0)
                        return -EBUSY;
                *val++ = cpu_to_le32(prph_val);
        }
@@ -1562,7 +1562,7 @@ iwl_dump_ini_dbgi_sram_iter(struct iwl_fw_runtime *fwrt,
                prph_data = iwl_read_prph_no_grab(fwrt->trans, (i % 2) ?
                                          DBGI_SRAM_TARGET_ACCESS_RDATA_MSB :
                                          DBGI_SRAM_TARGET_ACCESS_RDATA_LSB);
-               if (prph_data == 0x5a5a5a5a) {
+               if ((prph_data & ~0xf) == 0xa5a5a5a0) {
                        iwl_trans_release_nic_access(fwrt->trans);
                        return -EBUSY;
                }