diff mbox

[v2] ath10k: Increase AST table SKID length limit

Message ID 1423841776-16288-1-git-send-email-sjegadee@qti.qualcomm.com (mailing list archive)
State Accepted
Headers show

Commit Message

SenthilKumar Jegadeesan Feb. 13, 2015, 3:36 p.m. UTC
The current SKID length configuration causes firmware
to reject peer creation for not able to allocate
AST entries for peers. This issue is observed when
least significant 3 bytes are used ramdomly to create
client MAC addresses.

AST table SKID length configuration is increased to
maximum value to fix this issue.

Signed-off-by: SenthilKumar Jegadeesan <sjegadee@qti.qualcomm.com>
---
 drivers/net/wireless/ath/ath10k/hw.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--
1.9.1

Comments

Ben Greear Feb. 18, 2015, 8:23 p.m. UTC | #1
Have you tried testing this with 30+ stations
associated and streaming data, and with other traffic on
nearby channels (say, channel 1 and 6)?

We see bad performance drop-off when we set number-of-peers above
100 (with CT firmware).  My kernel will set AST skid limit to number-of-peers + number-of-vdevs.

Performance is best at 32 peers or less (so skid is about 40).

I am wondering if the root cause is firmware/hardware walking the full skid-length for pkts
from un-associated peers on same (or neighbouring) channels, or maybe unlucky hash distribution
in existing peers?

Thanks,
Ben


On 02/13/2015 07:36 AM, SenthilKumar Jegadeesan wrote:
> The current SKID length configuration causes firmware
> to reject peer creation for not able to allocate
> AST entries for peers. This issue is observed when
> least significant 3 bytes are used ramdomly to create
> client MAC addresses.
> 
> AST table SKID length configuration is increased to
> maximum value to fix this issue.
> 
> Signed-off-by: SenthilKumar Jegadeesan <sjegadee@qti.qualcomm.com>
> ---
>  drivers/net/wireless/ath/ath10k/hw.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/net/wireless/ath/ath10k/hw.h b/drivers/net/wireless/ath/ath10k/hw.h
> index 460771f..7f04645 100644
> --- a/drivers/net/wireless/ath/ath10k/hw.h
> +++ b/drivers/net/wireless/ath/ath10k/hw.h
> @@ -223,7 +223,7 @@ struct ath10k_pktlog_hdr {
>  #define TARGET_10X_NUM_WDS_ENTRIES		32
>  #define TARGET_10X_DMA_BURST_SIZE		0
>  #define TARGET_10X_MAC_AGGR_DELIM		0
> -#define TARGET_10X_AST_SKID_LIMIT		16
> +#define TARGET_10X_AST_SKID_LIMIT		128
>  #define TARGET_10X_NUM_STATIONS			128
>  #define TARGET_10X_NUM_PEERS			((TARGET_10X_NUM_STATIONS) + \
>  						 (TARGET_10X_NUM_VDEVS))
> --
> 1.9.1
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
SenthilKumar Jegadeesan Feb. 19, 2015, 11:41 a.m. UTC | #2
This fix is specific to ath10K driver + 10.x firmware combinations. This has been tested extensively, didn't observe the mentioned issue.

Thanks,
Senthil J

-----Original Message-----
From: Ben Greear [mailto:greearb@candelatech.com] 
Sent: Thursday, February 19, 2015 1:53 AM
To: Salakava Jegadeesan, Senthil
Cc: ath10k@lists.infradead.org; linux-wireless@vger.kernel.org
Subject: Re: [PATCH v2] ath10k: Increase AST table SKID length limit

Have you tried testing this with 30+ stations associated and streaming data, and with other traffic on nearby channels (say, channel 1 and 6)?

We see bad performance drop-off when we set number-of-peers above
100 (with CT firmware).  My kernel will set AST skid limit to number-of-peers + number-of-vdevs.

Performance is best at 32 peers or less (so skid is about 40).

I am wondering if the root cause is firmware/hardware walking the full skid-length for pkts from un-associated peers on same (or neighbouring) channels, or maybe unlucky hash distribution in existing peers?

Thanks,
Ben


On 02/13/2015 07:36 AM, SenthilKumar Jegadeesan wrote:
> The current SKID length configuration causes firmware to reject peer 
> creation for not able to allocate AST entries for peers. This issue is 
> observed when least significant 3 bytes are used ramdomly to create 
> client MAC addresses.
> 
> AST table SKID length configuration is increased to maximum value to 
> fix this issue.
> 
> Signed-off-by: SenthilKumar Jegadeesan <sjegadee@qti.qualcomm.com>
> ---
>  drivers/net/wireless/ath/ath10k/hw.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/net/wireless/ath/ath10k/hw.h 
> b/drivers/net/wireless/ath/ath10k/hw.h
> index 460771f..7f04645 100644
> --- a/drivers/net/wireless/ath/ath10k/hw.h
> +++ b/drivers/net/wireless/ath/ath10k/hw.h
> @@ -223,7 +223,7 @@ struct ath10k_pktlog_hdr {
>  #define TARGET_10X_NUM_WDS_ENTRIES		32
>  #define TARGET_10X_DMA_BURST_SIZE		0
>  #define TARGET_10X_MAC_AGGR_DELIM		0
> -#define TARGET_10X_AST_SKID_LIMIT		16
> +#define TARGET_10X_AST_SKID_LIMIT		128
>  #define TARGET_10X_NUM_STATIONS			128
>  #define TARGET_10X_NUM_PEERS			((TARGET_10X_NUM_STATIONS) + \
>  						 (TARGET_10X_NUM_VDEVS))
> --
> 1.9.1
> 
> --
> To unsubscribe from this list: send the line "unsubscribe 
> linux-wireless" in the body of a message to majordomo@vger.kernel.org 
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 


--
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc  http://www.candelatech.com
Kalle Valo March 5, 2015, 1:57 p.m. UTC | #3
SenthilKumar Jegadeesan <sjegadee@qti.qualcomm.com> writes:

> The current SKID length configuration causes firmware
> to reject peer creation for not able to allocate
> AST entries for peers. This issue is observed when
> least significant 3 bytes are used ramdomly to create
> client MAC addresses.
>
> AST table SKID length configuration is increased to
> maximum value to fix this issue.
>
> Signed-off-by: SenthilKumar Jegadeesan <sjegadee@qti.qualcomm.com>

Thanks, applied.
diff mbox

Patch

diff --git a/drivers/net/wireless/ath/ath10k/hw.h b/drivers/net/wireless/ath/ath10k/hw.h
index 460771f..7f04645 100644
--- a/drivers/net/wireless/ath/ath10k/hw.h
+++ b/drivers/net/wireless/ath/ath10k/hw.h
@@ -223,7 +223,7 @@  struct ath10k_pktlog_hdr {
 #define TARGET_10X_NUM_WDS_ENTRIES		32
 #define TARGET_10X_DMA_BURST_SIZE		0
 #define TARGET_10X_MAC_AGGR_DELIM		0
-#define TARGET_10X_AST_SKID_LIMIT		16
+#define TARGET_10X_AST_SKID_LIMIT		128
 #define TARGET_10X_NUM_STATIONS			128
 #define TARGET_10X_NUM_PEERS			((TARGET_10X_NUM_STATIONS) + \
 						 (TARGET_10X_NUM_VDEVS))