From: Kalle Valo <kvalo@codeaurora.org> To: Johannes Berg <johannes@sipsolutions.net> Cc: Linus Torvalds <torvalds@linux-foundation.org>, "David S. Miller" <davem@davemloft.net>, linux-wireless@vger.kernel.org, Netdev <netdev@vger.kernel.org>, Linux List Kernel Mailing <linux-kernel@vger.kernel.org>, ath10k@lists.infradead.org Subject: Re: WARNING at net/mac80211/sta_info.c:1057 (__sta_info_destroy_part2()) Date: Wed, 11 Sep 2019 21:48:09 +0300 Message-ID: <87zhjak6ty.fsf@kamboji.qca.qualcomm.com> (raw) In-Reply-To: <383b145b608e0fe3a35ffb0ceb99fdf938d4e2bb.camel@sipsolutions.net> (Johannes Berg's message of "Wed, 11 Sep 2019 20:23:33 +0200") Johannes Berg <johannes@sipsolutions.net> writes: > On Wed, 2019-09-11 at 21:19 +0300, Kalle Valo wrote: >> > Looks like indeed the driver gives the device at least *3 seconds* for >> > every command, see ath10k_wmi_cmd_send(), so most likely this would >> > eventually have finished, but who knows how many firmware commands it >> > would still have attempted to send... >> >> 3 seconds is a bit short but in normal cases it should be enough. Of >> course we could increase the delay but I'm skeptic it would help here. > > I was thinking 3 seconds is way too long :-) Heh :) >> > Perhaps the driver should mark the device as dead and fail quickly once >> > it timed out once, or so, but I'll let Kalle comment on that. >> >> Actually we do try to restart the device when a timeout happens in >> ath10k_wmi_cmd_send(): >> >> if (ret == -EAGAIN) { >> ath10k_warn(ar, "wmi command %d timeout, restarting hardware\n", >> cmd_id); >> queue_work(ar->workqueue, &ar->restart_work); >> } > > Yeah, and this is the problem, in a sense, I'd think. It seems to me > that at this point the code needs to tag the device as "dead" and > immediately return from any further commands submitted to it with an > error (e.g. -EIO). Yeah, ath10k_core_restart() is supposed change to state ATH10K_STATE_RESTARTING but very few mac80211 ops in ath10k_ops are checking for it, and to me it looks like quite late even. I think a proper fix for ops which can sleep is to check ar->state is ATH10K_STATE_ON and for ops which cannot sleep check ATH10K_FLAG_CRASH_FLUSH. But of course this just fixes the symptoms, the root cause for timeouts needs to be found as well. -- https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
next prev parent reply index Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-09-11 10:05 Linus Torvalds 2019-09-11 10:26 ` Johannes Berg 2019-09-11 11:58 ` Linus Torvalds 2019-09-11 12:04 ` Johannes Berg 2019-09-11 13:03 ` Ben Greear 2019-09-11 13:21 ` Linus Torvalds 2019-09-11 13:31 ` Ben Greear 2019-09-11 13:32 ` Kalle Valo 2019-09-11 18:19 ` Kalle Valo 2019-09-11 18:23 ` Johannes Berg 2019-09-11 18:48 ` Kalle Valo [this message] 2019-09-11 18:10 ` Kalle Valo 2019-10-20 15:12 ` Tomislav Požega 2019-10-21 14:01 ` Ben Greear
Reply instructions: You may reply publically to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=87zhjak6ty.fsf@kamboji.qca.qualcomm.com \ --to=kvalo@codeaurora.org \ --cc=ath10k@lists.infradead.org \ --cc=davem@davemloft.net \ --cc=johannes@sipsolutions.net \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-wireless@vger.kernel.org \ --cc=netdev@vger.kernel.org \ --cc=torvalds@linux-foundation.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Linux-Wireless Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/linux-wireless/0 linux-wireless/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 linux-wireless linux-wireless/ https://lore.kernel.org/linux-wireless \ linux-wireless@vger.kernel.org public-inbox-index linux-wireless Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/org.kernel.vger.linux-wireless AGPL code for this site: git clone https://public-inbox.org/public-inbox.git