[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