Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cfadc3ff authored by Emmanuel Grumbach's avatar Emmanuel Grumbach
Browse files

iwlwifi: pcie: stop the firmware when we restart it



In case the firmware didn't assert but we want to restart
it, e.g. we didn't get the reply for a host command, or the
Tx queues are stuck, we should stop the firmware by
provoking an interrupt. This allows to better debug the
firmware in these bad scenarios.

Signed-off-by: default avatarEmmanuel Grumbach <emmanuel.grumbach@intel.com>
parent 1270c416
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -207,7 +207,7 @@ static void iwl_pcie_txq_stuck_timer(unsigned long data)
		IWL_ERR(trans, "scratch %d = 0x%08x\n", i,
			le32_to_cpu(txq->scratchbufs[i].scratch));

	iwl_trans_fw_error(trans);
	iwl_write_prph(trans, DEVICE_SET_NMI_REG, 1);
}

/*
@@ -1024,7 +1024,7 @@ static void iwl_pcie_cmdq_reclaim(struct iwl_trans *trans, int txq_id, int idx)
		if (nfreed++ > 0) {
			IWL_ERR(trans, "HCMD skipped: index (%d) %d %d\n",
				idx, q->write_ptr, q->read_ptr);
			iwl_trans_fw_error(trans);
			iwl_write_prph(trans, DEVICE_SET_NMI_REG, 1);
		}
	}

@@ -1583,6 +1583,7 @@ static int iwl_pcie_send_hcmd_sync(struct iwl_trans *trans,
			       get_cmd_string(trans_pcie, cmd->id));
		ret = -ETIMEDOUT;

		iwl_write_prph(trans, DEVICE_SET_NMI_REG, 1);
		iwl_trans_fw_error(trans);

		goto cancel;