What to do about hung firmware?

Michal Kazior michal.kazior at tieto.com
Wed Nov 6 02:07:15 EST 2013

On 5 November 2013 19:51, Ben Greear <greearb at candelatech.com> wrote:
> I'm seeing cases where it appears the firmware just gets
> stuck and will not answer any WMI requests.

You probably mean FW doesn't replenish HTT TX credits for WMI.

> ath10k just patiently keeps timing out WMI commands,
> (while holding locks, and making the whole system run slow).
> Should we maybe keep a last-msg-from firmware time stamp
> and just whack the firmware if we detect it hung?  In addition
> to this, we could add some 'ping' message that will get sent
> periodically to the firmware to make sure it is alive.
> We should be able to do this with existing WMI API, just
> need to pick a message to send that expects some response.

Probably the easiest/shortest way to do this is to store a timestamp
in ath10k_wmi_op_ep_tx_credits() and check against it in
ath10k_wmi_cmd_send(). Once you deem FW stopped responding you could
queue ar->restat_work.

You probably could try WMI_ECHO_CMDID to implement a keep alive when
idling (i.e. not sending WMI commands for a few seconds at least).


More information about the ath10k mailing list