[PATCH] wcn36xx: Setup starting bitrate to MCS-5

Bryan O'Donoghue bryan.odonoghue at linaro.org
Tue Aug 25 07:40:44 EDT 2020


On 25/08/2020 09:49, Loic Poulain wrote:
> By default, after associated to an AP, the wcn36xx bitrate adjustment
> algorithm starts sending data at 1Mbps, and increases the rate slowly
> (1Mbps, 2Mbps, 6Mbps...) over the further TX packets.
> 
> Starting at 1Mbps usually causes the initial throughput to be really
> low and the maximum possible bitrate to be reached after about hundreed
> of TX packets.
> 
> That can be improved by setting a different initial bitrate for data
> packets via the ENABLE_DYNAMIC_RA_START_RATE configuration value, this
> value can be a legacy or MCS rate.
> 
> This patch sets the starting bitrate value to MCS-5, which seems to be
> a good compromise given it can be quickly adjusted low or up if necessary.
> (and based on what I observed in the wild with some mobile devices)
> 
> Signed-off-by: Loic Poulain <loic.poulain at linaro.org>
> ---
>   drivers/net/wireless/ath/wcn36xx/hal.h | 8 ++++++++
>   drivers/net/wireless/ath/wcn36xx/smd.c | 1 +
>   2 files changed, 9 insertions(+)
> 
> diff --git a/drivers/net/wireless/ath/wcn36xx/hal.h b/drivers/net/wireless/ath/wcn36xx/hal.h
> index 6ba0fd5..88e1ed5 100644
> --- a/drivers/net/wireless/ath/wcn36xx/hal.h
> +++ b/drivers/net/wireless/ath/wcn36xx/hal.h
> @@ -728,6 +728,14 @@ enum pe_stats_mask {
>   #define WCN36XX_HAL_CFG_ENABLE_TDLS_OXYGEN_MODE		104
>   #define WCN36XX_HAL_CFG_MAX_PARAMS			105
>   
> +/* Specify the starting bitrate, 11B and 11A/G rates can be specified in
> + * multiples of 0.5 So for 5.5 mbps => 11. for MCS 0 - 7 rates, Bit 7 should
> + * set to 1 and Bit 0-6 represent the MCS index. so for MCS2 => 130.
> + * Any invalid non-zero value or unsupported rate will set the start rate
> + * to 6 mbps.
> + */
> +#define WCN36XX_HAL_CFG_ENABLE_DYNAMIC_RA_START_RATE	210
> +
>   /* Message definitons - All the messages below need to be packed */
>   
>   /* Definition for HAL API Version. */
> diff --git a/drivers/net/wireless/ath/wcn36xx/smd.c b/drivers/net/wireless/ath/wcn36xx/smd.c
> index 9864c6f..83247d3 100644
> --- a/drivers/net/wireless/ath/wcn36xx/smd.c
> +++ b/drivers/net/wireless/ath/wcn36xx/smd.c
> @@ -77,6 +77,7 @@ static struct wcn36xx_cfg_val wcn36xx_cfg_vals[] = {
>   	WCN36XX_CFG_VAL(BTC_STATIC_LEN_LE_WLAN, 30000),
>   	WCN36XX_CFG_VAL(MAX_ASSOC_LIMIT, 10),
>   	WCN36XX_CFG_VAL(ENABLE_MCC_ADAPTIVE_SCHEDULER, 0),
> +	WCN36XX_CFG_VAL(ENABLE_DYNAMIC_RA_START_RATE, 133), /* MCS 5 */
>   };
>   
>   static int put_cfg_tlv_u32(struct wcn36xx *wcn, size_t *len, u32 id, u32 value)
> 

Interesting.

I did this to the wcn3680 config I have, which if I've understood your 
description right is MCS8 default

+       WCN36XX_CFG_VAL(ENABLE_DYNAMIC_RA_START_RATE, 136),

I'd say anecdotally I get up to higher data-rates faster. So its 
probably the right thing to do on the 3620/3660 too.

I'll rebase my 3680 patches since this patch will conflict



More information about the wcn36xx mailing list