All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dave Taht <dave@taht.net>
To: Wen Gong <wgong@qti.qualcomm.com>,
	ath10k@lists.infradead.org, linux-wireless@vger.kernel.org
Subject: Re: [PATCH 2/7] ath10k: change max RX bundle size from 8 to 32 for sdio
Date: Tue, 03 Sep 2019 09:09:35 -0700	[thread overview]
Message-ID: <87k1apnyyo.fsf@taht.net> (raw)
In-Reply-To: <1566302108-18219-3-git-send-email-wgong@codeaurora.org> (Wen Gong's message of "Tue, 20 Aug 2019 19:55:03 +0800")


In terms of deeply grokking what increasing buffering to achieve high
bandwidth on a testbench, vs what it can do to clobber latency in the
real world at low bandwidths, I tend to point folk at:

https://www.youtube.com/watch?v=Rb-UnHDw02o&t=25m40s

where I got a whole bunch of hackers to stand up and act like packets
in an aggregating FIFO wifi queue.

This key section is only 8 minutes long, and I promise, y'all laugh
at least 3 times at the demonstration.

At the time, also, the ath10k was so overbuffered that on one test
I could try to start 100 flows, and only get five.

https://lwn.net/Articles/705884/

and on my slides:

https://blog.linuxplumbersconf.org/2016/ocw//system/presentations/3963/original/linuxplumbers_wifi_latency-3Nov.pdf


Wen Gong <wgong@codeaurora.org> writes:

> The max bundle size support by firmware is 32, change it from 8 to 32
> will help performance. This results in significant performance
> improvement on RX path.
>
> Tested with QCA6174 SDIO with firmware
> WLAN.RMH.4.4.1-00007-QCARMSWP-1.
>
> Signed-off-by: Wen Gong <wgong@codeaurora.org>
> ---
>  drivers/net/wireless/ath/ath10k/htc.h  | 2 +-
>  drivers/net/wireless/ath/ath10k/sdio.c | 5 +++--
>  drivers/net/wireless/ath/ath10k/sdio.h | 4 ++--
>  3 files changed, 6 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/net/wireless/ath/ath10k/htc.h b/drivers/net/wireless/ath/ath10k/htc.h
> index f55d3ca..8c79b9e 100644
> --- a/drivers/net/wireless/ath/ath10k/htc.h
> +++ b/drivers/net/wireless/ath/ath10k/htc.h
> @@ -39,7 +39,7 @@
>   * 4-byte aligned.
>   */
>  
> -#define HTC_HOST_MAX_MSG_PER_RX_BUNDLE        8
> +#define HTC_HOST_MAX_MSG_PER_RX_BUNDLE        32
>  
>  enum ath10k_htc_tx_flags {
>  	ATH10K_HTC_FLAG_NEED_CREDIT_UPDATE = 0x01,
> diff --git a/drivers/net/wireless/ath/ath10k/sdio.c b/drivers/net/wireless/ath/ath10k/sdio.c
> index d9395f0..baa6051 100644
> --- a/drivers/net/wireless/ath/ath10k/sdio.c
> +++ b/drivers/net/wireless/ath/ath10k/sdio.c
> @@ -24,8 +24,8 @@
>  #include "trace.h"
>  #include "sdio.h"
>  
> -#define ATH10K_SDIO_DMA_BUF_SIZE	(32 * 1024)
> -#define ATH10K_SDIO_VSG_BUF_SIZE	(32 * 1024)
> +#define ATH10K_SDIO_DMA_BUF_SIZE	(64 * 1024)
> +#define ATH10K_SDIO_VSG_BUF_SIZE	(64 * 1024)
>  
>  /* inlined helper functions */
>  
> @@ -501,6 +501,7 @@ static int ath10k_sdio_mbox_alloc_bundle(struct ath10k *ar,
>  	int ret, i;
>  
>  	*bndl_cnt = FIELD_GET(ATH10K_HTC_FLAG_BUNDLE_MASK, htc_hdr->flags);
> +	*bndl_cnt += (FIELD_GET(GENMASK(3, 2), htc_hdr->flags) << 4);
>  
>  	if (*bndl_cnt > HTC_HOST_MAX_MSG_PER_RX_BUNDLE) {
>  		ath10k_warn(ar,
> diff --git a/drivers/net/wireless/ath/ath10k/sdio.h b/drivers/net/wireless/ath/ath10k/sdio.h
> index 4896eca..3ca76c7 100644
> --- a/drivers/net/wireless/ath/ath10k/sdio.h
> +++ b/drivers/net/wireless/ath/ath10k/sdio.h
> @@ -89,10 +89,10 @@
>   * to the maximum value (HTC_HOST_MAX_MSG_PER_RX_BUNDLE).
>   *
>   * in this case the driver must allocate
> - * (HTC_HOST_MAX_MSG_PER_RX_BUNDLE * HTC_HOST_MAX_MSG_PER_RX_BUNDLE) skb's.
> + * (HTC_HOST_MAX_MSG_PER_RX_BUNDLE * 2) skb's.
>   */
>  #define ATH10K_SDIO_MAX_RX_MSGS \
> -	(HTC_HOST_MAX_MSG_PER_RX_BUNDLE * HTC_HOST_MAX_MSG_PER_RX_BUNDLE)
> +	(HTC_HOST_MAX_MSG_PER_RX_BUNDLE * 2)
>  
>  #define ATH10K_FIFO_TIMEOUT_AND_CHIP_CONTROL   0x00000868u
>  #define ATH10K_FIFO_TIMEOUT_AND_CHIP_CONTROL_DISABLE_SLEEP_OFF 0xFFFEFFFF

WARNING: multiple messages have this Message-ID (diff)
From: Dave Taht <dave@taht.net>
To: Wen Gong <wgong@qti.qualcomm.com>,
	ath10k@lists.infradead.org, linux-wireless@vger.kernel.org
Subject: Re: [PATCH 2/7] ath10k: change max RX bundle size from 8 to 32 for sdio
Date: Tue, 03 Sep 2019 09:09:35 -0700	[thread overview]
Message-ID: <87k1apnyyo.fsf@taht.net> (raw)
In-Reply-To: <1566302108-18219-3-git-send-email-wgong@codeaurora.org> (Wen Gong's message of "Tue, 20 Aug 2019 19:55:03 +0800")


In terms of deeply grokking what increasing buffering to achieve high
bandwidth on a testbench, vs what it can do to clobber latency in the
real world at low bandwidths, I tend to point folk at:

https://www.youtube.com/watch?v=Rb-UnHDw02o&t=25m40s

where I got a whole bunch of hackers to stand up and act like packets
in an aggregating FIFO wifi queue.

This key section is only 8 minutes long, and I promise, y'all laugh
at least 3 times at the demonstration.

At the time, also, the ath10k was so overbuffered that on one test
I could try to start 100 flows, and only get five.

https://lwn.net/Articles/705884/

and on my slides:

https://blog.linuxplumbersconf.org/2016/ocw//system/presentations/3963/original/linuxplumbers_wifi_latency-3Nov.pdf


Wen Gong <wgong@codeaurora.org> writes:

> The max bundle size support by firmware is 32, change it from 8 to 32
> will help performance. This results in significant performance
> improvement on RX path.
>
> Tested with QCA6174 SDIO with firmware
> WLAN.RMH.4.4.1-00007-QCARMSWP-1.
>
> Signed-off-by: Wen Gong <wgong@codeaurora.org>
> ---
>  drivers/net/wireless/ath/ath10k/htc.h  | 2 +-
>  drivers/net/wireless/ath/ath10k/sdio.c | 5 +++--
>  drivers/net/wireless/ath/ath10k/sdio.h | 4 ++--
>  3 files changed, 6 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/net/wireless/ath/ath10k/htc.h b/drivers/net/wireless/ath/ath10k/htc.h
> index f55d3ca..8c79b9e 100644
> --- a/drivers/net/wireless/ath/ath10k/htc.h
> +++ b/drivers/net/wireless/ath/ath10k/htc.h
> @@ -39,7 +39,7 @@
>   * 4-byte aligned.
>   */
>  
> -#define HTC_HOST_MAX_MSG_PER_RX_BUNDLE        8
> +#define HTC_HOST_MAX_MSG_PER_RX_BUNDLE        32
>  
>  enum ath10k_htc_tx_flags {
>  	ATH10K_HTC_FLAG_NEED_CREDIT_UPDATE = 0x01,
> diff --git a/drivers/net/wireless/ath/ath10k/sdio.c b/drivers/net/wireless/ath/ath10k/sdio.c
> index d9395f0..baa6051 100644
> --- a/drivers/net/wireless/ath/ath10k/sdio.c
> +++ b/drivers/net/wireless/ath/ath10k/sdio.c
> @@ -24,8 +24,8 @@
>  #include "trace.h"
>  #include "sdio.h"
>  
> -#define ATH10K_SDIO_DMA_BUF_SIZE	(32 * 1024)
> -#define ATH10K_SDIO_VSG_BUF_SIZE	(32 * 1024)
> +#define ATH10K_SDIO_DMA_BUF_SIZE	(64 * 1024)
> +#define ATH10K_SDIO_VSG_BUF_SIZE	(64 * 1024)
>  
>  /* inlined helper functions */
>  
> @@ -501,6 +501,7 @@ static int ath10k_sdio_mbox_alloc_bundle(struct ath10k *ar,
>  	int ret, i;
>  
>  	*bndl_cnt = FIELD_GET(ATH10K_HTC_FLAG_BUNDLE_MASK, htc_hdr->flags);
> +	*bndl_cnt += (FIELD_GET(GENMASK(3, 2), htc_hdr->flags) << 4);
>  
>  	if (*bndl_cnt > HTC_HOST_MAX_MSG_PER_RX_BUNDLE) {
>  		ath10k_warn(ar,
> diff --git a/drivers/net/wireless/ath/ath10k/sdio.h b/drivers/net/wireless/ath/ath10k/sdio.h
> index 4896eca..3ca76c7 100644
> --- a/drivers/net/wireless/ath/ath10k/sdio.h
> +++ b/drivers/net/wireless/ath/ath10k/sdio.h
> @@ -89,10 +89,10 @@
>   * to the maximum value (HTC_HOST_MAX_MSG_PER_RX_BUNDLE).
>   *
>   * in this case the driver must allocate
> - * (HTC_HOST_MAX_MSG_PER_RX_BUNDLE * HTC_HOST_MAX_MSG_PER_RX_BUNDLE) skb's.
> + * (HTC_HOST_MAX_MSG_PER_RX_BUNDLE * 2) skb's.
>   */
>  #define ATH10K_SDIO_MAX_RX_MSGS \
> -	(HTC_HOST_MAX_MSG_PER_RX_BUNDLE * HTC_HOST_MAX_MSG_PER_RX_BUNDLE)
> +	(HTC_HOST_MAX_MSG_PER_RX_BUNDLE * 2)
>  
>  #define ATH10K_FIFO_TIMEOUT_AND_CHIP_CONTROL   0x00000868u
>  #define ATH10K_FIFO_TIMEOUT_AND_CHIP_CONTROL_DISABLE_SLEEP_OFF 0xFFFEFFFF

_______________________________________________
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k

  parent reply	other threads:[~2019-09-03 16:17 UTC|newest]

Thread overview: 70+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-20 11:55 [PATCH 0/7] ath10k: improve throughout of tcp/udp TX/RX of sdio Wen Gong
2019-08-20 11:55 ` Wen Gong
2019-08-20 11:55 ` [PATCH 1/7] ath10k: enable RX bundle receive for sdio Wen Gong
2019-08-20 11:55   ` Wen Gong
2019-08-27  7:40   ` Nicolas Boichat
2019-08-27  7:40     ` Nicolas Boichat
2019-08-27  8:02     ` Wen Gong
2019-08-27  8:02       ` Wen Gong
2019-08-27  8:08       ` Nicolas Boichat
2019-08-27  8:08         ` Nicolas Boichat
2019-08-28  4:25         ` Wen Gong
2019-08-28  4:25           ` Wen Gong
2019-08-20 11:55 ` [PATCH 2/7] ath10k: change max RX bundle size from 8 to 32 " Wen Gong
2019-08-20 11:55   ` Wen Gong
2019-08-20 12:23   ` Toke Høiland-Jørgensen
2019-08-20 12:23     ` Toke Høiland-Jørgensen
2019-08-21  6:01     ` Wen Gong
2019-08-21  6:01       ` Wen Gong
2019-08-21 10:02       ` Toke Høiland-Jørgensen
2019-08-21 10:02         ` Toke Høiland-Jørgensen
2019-08-27  7:42   ` Nicolas Boichat
2019-08-27  7:42     ` Nicolas Boichat
2019-08-28  2:31     ` Wen Gong
2019-08-28  2:31       ` Wen Gong
2019-09-03 16:09   ` Dave Taht [this message]
2019-09-03 16:09     ` Dave Taht
2019-09-04  4:43     ` Wen Gong
2019-09-04  4:43       ` Wen Gong
2019-09-04 13:34       ` Dave Taht
2019-09-04 13:34         ` Dave Taht
2019-09-05 10:12         ` Wen Gong
2019-09-05 10:12           ` Wen Gong
2019-08-20 11:55 ` [PATCH 3/7] ath10k: add workqueue for RX path of sdio Wen Gong
2019-08-20 11:55   ` Wen Gong
2019-09-04  2:31   ` Wen Gong
2019-09-04  2:31     ` Wen Gong
2019-08-20 11:55 ` [PATCH 4/7] ath10k: disable TX complete indication of htt for sdio Wen Gong
2019-08-20 11:55   ` Wen Gong
2019-08-20 12:23   ` Toke Høiland-Jørgensen
2019-08-20 12:23     ` Toke Høiland-Jørgensen
2019-08-21  6:20     ` Wen Gong
2019-08-21  6:20       ` Wen Gong
2019-08-21 10:10       ` Toke Høiland-Jørgensen
2019-08-21 10:10         ` Toke Høiland-Jørgensen
2019-08-21 10:20         ` Wen Gong
2019-08-21 10:20           ` Wen Gong
2019-08-22 12:12           ` Toke Høiland-Jørgensen
2019-08-22 12:12             ` Toke Høiland-Jørgensen
2019-08-23  2:46             ` Wen Gong
2019-08-23  2:46               ` Wen Gong
2019-08-23  8:39               ` Toke Høiland-Jørgensen
2019-08-23  8:39                 ` Toke Høiland-Jørgensen
2019-08-27  7:56   ` Nicolas Boichat
2019-08-27  7:56     ` Nicolas Boichat
2019-08-28  4:24     ` Wen Gong
2019-08-28  4:24       ` Wen Gong
2019-09-04  2:33   ` Wen Gong
2019-09-04  2:33     ` Wen Gong
2019-08-20 11:55 ` [PATCH 5/7] ath10k: add htt TX bundle " Wen Gong
2019-08-20 11:55   ` Wen Gong
2019-09-04  2:34   ` Wen Gong
2019-09-04  2:34     ` Wen Gong
2019-08-20 11:55 ` [PATCH 6/7] ath10k: enable alt data of TX path " Wen Gong
2019-08-20 11:55   ` Wen Gong
2019-09-04  2:36   ` Wen Gong
2019-09-04  2:36     ` Wen Gong
2019-08-20 11:55 ` [PATCH 7/7] ath10k: enable napi on RX " Wen Gong
2019-08-20 11:55   ` Wen Gong
2019-09-04  2:37   ` Wen Gong
2019-09-04  2:37     ` Wen Gong

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 \
    --in-reply-to=87k1apnyyo.fsf@taht.net \
    --to=dave@taht.net \
    --cc=ath10k@lists.infradead.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=wgong@qti.qualcomm.com \
    /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
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.