From: Erik Stromdahl <firstname.lastname@example.org> To: Wen Gong <email@example.com>, Kalle Valo <firstname.lastname@example.org>, "email@example.com" <firstname.lastname@example.org>, "email@example.com" <firstname.lastname@example.org> Subject: Re: [PATCH] ath10k: remove TX lock from ath10k_htt_tx_inc_pending Date: Mon, 26 Aug 2019 18:55:55 +0200 [thread overview] Message-ID: <email@example.com> (raw) In-Reply-To: <firstname.lastname@example.org> On 8/26/19 4:44 AM, Wen Gong wrote: >> -----Original Message----- >> From: ath10k <email@example.com> On Behalf Of Erik >> Stromdahl >> Sent: Saturday, August 24, 2019 9:49 PM >> To: Kalle Valo <firstname.lastname@example.org>; email@example.com; >> firstname.lastname@example.org >> Cc: Erik Stromdahl <email@example.com> >> Subject: [EXT] [PATCH] ath10k: remove TX lock from >> ath10k_htt_tx_inc_pending >> >> This commit removes the call to ath10k_mac_tx_lock() from >> ath10k_htt_tx_inc_pending() in case the high water mark is reached. >> >> ath10k_mac_tx_lock() calls ieee80211_stop_queues() in order to stop >> mac80211 from pushing more TX data to the driver (this is the TX lock). >> >> If a driver is trying to fetch an skb from a queue while the queue is >> stopped, ieee80211_tx_dequeue() will return NULL. >> >> So, in ath10k_mac_tx_push_txq(), there is a risk that the call to >> ath10k_htt_tx_inc_pending() results in a stop of the mac80211 TX queues >> just before the skb is fetched. >> >> This will cause ieee80211_tx_dequeue() to return NULL and >> ath10k_mac_tx_push_txq() to exit prematurely and return -ENOENT. >> Before the function returns ath10k_htt_tx_dec_pending() will be called. >> This call will re-enable the TX queues through ath10k_mac_tx_unlock(). >> When ath10k_mac_tx_push_txq() has returned, the TX queue will be >> returned back to mac80211 with ieee80211_return_txq() without the skb >> being properly consumed. >> >> Since the TX queues were re-enabled in the error exit path of >> ath10k_mac_tx_push_txq(), mac80211 can continue pushing data to the >> driver. If the hardware does not consume the data, the above mentioned >> case will be repeated over and over. >> >> A case when the hardware is not able to transmit the data from the host >> is when a STA has been dis-associated from an AP and has not yet been >> able to re-associate. In this case there will be no TX_COMPL_INDs from >> the hardware, resulting in the TX counter not be decremented. >> >> This phenomenon has been observed in both a real and a test setup. >> >> In order to fix this, the actual TX locking (the call to >> ath10k_mac_tx_lock()) was removed from ath10k_htt_tx_inc_pending(). >> Instead, ath10k_mac_tx_lock() is called separately after the skb has >> been fetched (after the call to ieee80211_tx_dequeue()). At this point >> it is OK to stop the queues. > Is this patch will impact throughput? No, I haven't seen any performance degradation. I can't see that it should impact the throughput even in theory (rather the opposite actually since we reduce the likelihood of dropping packets). _______________________________________________ ath10k mailing list firstname.lastname@example.org http://lists.infradead.org/mailman/listinfo/ath10k
next prev parent reply other threads:[~2019-08-26 16:56 UTC|newest] Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-08-24 13:48 Erik Stromdahl 2019-08-26 2:44 ` Wen Gong 2019-08-26 16:55 ` Erik Stromdahl [this message] 2019-09-17 7:12 ` Kalle Valo 2021-05-06 3:20 ` Sebastian Gottschall
Reply instructions: You may reply publicly 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 \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --subject='Re: [PATCH] ath10k: remove TX lock from ath10k_htt_tx_inc_pending' \ /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
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).