Message ID | 20250318085013.1296262-1-quic_rdevanat@quicinc.com (mailing list archive) |
---|---|
State | New |
Delegated to: | Jeff Johnson |
Headers | show |
Series | [ath-next] wifi: ath12k: Fix incorrect rates sent to firmware | expand |
> @@ -3450,7 +3450,9 @@ static void ath12k_recalculate_mgmt_rate(struct ath12k *ar, > } > > sband = hw->wiphy->bands[def->chan->band]; > - basic_rate_idx = ffs(bss_conf->basic_rates) - 1; > + basic_rate_idx = ffs(bss_conf->basic_rates); > + if (basic_rate_idx) > + basic_rate_idx -= 1; Using __ffs() might be more readable, like u8 basic_rate_idx = 0; ... if (bss_conf->basic_rates) basic_rate_idx = __ffs(bss_conf->basic_rates);
On 3/19/2025 7:43 AM, Ping-Ke Shih wrote: > >> @@ -3450,7 +3450,9 @@ static void ath12k_recalculate_mgmt_rate(struct ath12k *ar, >> } >> >> sband = hw->wiphy->bands[def->chan->band]; >> - basic_rate_idx = ffs(bss_conf->basic_rates) - 1; >> + basic_rate_idx = ffs(bss_conf->basic_rates); >> + if (basic_rate_idx) >> + basic_rate_idx -= 1; > > Using __ffs() might be more readable, like > > u8 basic_rate_idx = 0; > > ... > > if (bss_conf->basic_rates) > basic_rate_idx = __ffs(bss_conf->basic_rates); > > > Thanks for the suggestion. I'll change this in my next version.
diff --git a/drivers/net/wireless/ath/ath12k/mac.c b/drivers/net/wireless/ath/ath12k/mac.c index 9fda97667d4e..3b6ee1e65f1b 100644 --- a/drivers/net/wireless/ath/ath12k/mac.c +++ b/drivers/net/wireless/ath/ath12k/mac.c @@ -3450,7 +3450,9 @@ static void ath12k_recalculate_mgmt_rate(struct ath12k *ar, } sband = hw->wiphy->bands[def->chan->band]; - basic_rate_idx = ffs(bss_conf->basic_rates) - 1; + basic_rate_idx = ffs(bss_conf->basic_rates); + if (basic_rate_idx) + basic_rate_idx -= 1; bitrate = sband->bitrates[basic_rate_idx].bitrate; hw_rate_code = ath12k_mac_get_rate_hw_value(bitrate); @@ -3983,10 +3985,13 @@ static void ath12k_mac_bss_info_changed(struct ath12k *ar, band = def.chan->band; mcast_rate = info->mcast_rate[band]; - if (mcast_rate > 0) + if (mcast_rate > 0) { rateidx = mcast_rate - 1; - else - rateidx = ffs(info->basic_rates) - 1; + } else { + rateidx = ffs(info->basic_rates); + if (rateidx) + rateidx -= 1; + } if (ar->pdev->cap.supported_bands & WMI_HOST_WLAN_5G_CAP) rateidx += ATH12K_MAC_FIRST_OFDM_RATE_IDX;