mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-02 16:55:16 -04:00
ath10k: Move rate mask validation function up in the file
This patch does not have any functional changes. Tested-on: QCA9984 hw1.0 PCI 10.4-3.9.0.2-00021 Signed-off-by: Tamizh Chelvam <tamizhr@codeaurora.org> Signed-off-by: Kalle Valo <kvalo@codeaurora.org> Link: https://lore.kernel.org/r/1593875614-5683-3-git-send-email-tamizhr@codeaurora.org
This commit is contained in:
committed by
Kalle Valo
parent
5d582be0bc
commit
1c0b3fbd6e
@@ -6597,6 +6597,93 @@ static int ath10k_sta_set_txpwr(struct ieee80211_hw *hw,
|
||||
return ret;
|
||||
}
|
||||
|
||||
static bool
|
||||
ath10k_mac_bitrate_mask_has_single_rate(struct ath10k *ar,
|
||||
enum nl80211_band band,
|
||||
const struct cfg80211_bitrate_mask *mask,
|
||||
int *vht_num_rates)
|
||||
{
|
||||
int num_rates = 0;
|
||||
int i, tmp;
|
||||
|
||||
num_rates += hweight32(mask->control[band].legacy);
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(mask->control[band].ht_mcs); i++)
|
||||
num_rates += hweight8(mask->control[band].ht_mcs[i]);
|
||||
|
||||
*vht_num_rates = 0;
|
||||
for (i = 0; i < ARRAY_SIZE(mask->control[band].vht_mcs); i++) {
|
||||
tmp = hweight16(mask->control[band].vht_mcs[i]);
|
||||
num_rates += tmp;
|
||||
*vht_num_rates += tmp;
|
||||
}
|
||||
|
||||
return num_rates == 1;
|
||||
}
|
||||
|
||||
static int
|
||||
ath10k_mac_bitrate_mask_get_single_rate(struct ath10k *ar,
|
||||
enum nl80211_band band,
|
||||
const struct cfg80211_bitrate_mask *mask,
|
||||
u8 *rate, u8 *nss, bool vht_only)
|
||||
{
|
||||
int rate_idx;
|
||||
int i;
|
||||
u16 bitrate;
|
||||
u8 preamble;
|
||||
u8 hw_rate;
|
||||
|
||||
if (vht_only)
|
||||
goto next;
|
||||
|
||||
if (hweight32(mask->control[band].legacy) == 1) {
|
||||
rate_idx = ffs(mask->control[band].legacy) - 1;
|
||||
|
||||
if (ar->phy_capability & WHAL_WLAN_11A_CAPABILITY)
|
||||
rate_idx += ATH10K_MAC_FIRST_OFDM_RATE_IDX;
|
||||
|
||||
hw_rate = ath10k_wmi_legacy_rates[rate_idx].hw_value;
|
||||
bitrate = ath10k_wmi_legacy_rates[rate_idx].bitrate;
|
||||
|
||||
if (ath10k_mac_bitrate_is_cck(bitrate))
|
||||
preamble = WMI_RATE_PREAMBLE_CCK;
|
||||
else
|
||||
preamble = WMI_RATE_PREAMBLE_OFDM;
|
||||
|
||||
*nss = 1;
|
||||
*rate = preamble << 6 |
|
||||
(*nss - 1) << 4 |
|
||||
hw_rate << 0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(mask->control[band].ht_mcs); i++) {
|
||||
if (hweight8(mask->control[band].ht_mcs[i]) == 1) {
|
||||
*nss = i + 1;
|
||||
*rate = WMI_RATE_PREAMBLE_HT << 6 |
|
||||
(*nss - 1) << 4 |
|
||||
(ffs(mask->control[band].ht_mcs[i]) - 1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
next:
|
||||
for (i = 0; i < ARRAY_SIZE(mask->control[band].vht_mcs); i++) {
|
||||
if (hweight16(mask->control[band].vht_mcs[i]) == 1) {
|
||||
*nss = i + 1;
|
||||
*rate = WMI_RATE_PREAMBLE_VHT << 6 |
|
||||
(*nss - 1) << 4 |
|
||||
(ffs(mask->control[band].vht_mcs[i]) - 1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static int ath10k_sta_state(struct ieee80211_hw *hw,
|
||||
struct ieee80211_vif *vif,
|
||||
struct ieee80211_sta *sta,
|
||||
@@ -7346,30 +7433,6 @@ static int ath10k_get_survey(struct ieee80211_hw *hw, int idx,
|
||||
return ret;
|
||||
}
|
||||
|
||||
static bool
|
||||
ath10k_mac_bitrate_mask_has_single_rate(struct ath10k *ar,
|
||||
enum nl80211_band band,
|
||||
const struct cfg80211_bitrate_mask *mask,
|
||||
int *vht_num_rates)
|
||||
{
|
||||
int num_rates = 0;
|
||||
int i, tmp;
|
||||
|
||||
num_rates += hweight32(mask->control[band].legacy);
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(mask->control[band].ht_mcs); i++)
|
||||
num_rates += hweight8(mask->control[band].ht_mcs[i]);
|
||||
|
||||
*vht_num_rates = 0;
|
||||
for (i = 0; i < ARRAY_SIZE(mask->control[band].vht_mcs); i++) {
|
||||
tmp = hweight16(mask->control[band].vht_mcs[i]);
|
||||
num_rates += tmp;
|
||||
*vht_num_rates += tmp;
|
||||
}
|
||||
|
||||
return num_rates == 1;
|
||||
}
|
||||
|
||||
static bool
|
||||
ath10k_mac_bitrate_mask_get_single_nss(struct ath10k *ar,
|
||||
enum nl80211_band band,
|
||||
@@ -7419,69 +7482,6 @@ ath10k_mac_bitrate_mask_get_single_nss(struct ath10k *ar,
|
||||
return true;
|
||||
}
|
||||
|
||||
static int
|
||||
ath10k_mac_bitrate_mask_get_single_rate(struct ath10k *ar,
|
||||
enum nl80211_band band,
|
||||
const struct cfg80211_bitrate_mask *mask,
|
||||
u8 *rate, u8 *nss, bool vht_only)
|
||||
{
|
||||
int rate_idx;
|
||||
int i;
|
||||
u16 bitrate;
|
||||
u8 preamble;
|
||||
u8 hw_rate;
|
||||
|
||||
if (vht_only)
|
||||
goto next;
|
||||
|
||||
if (hweight32(mask->control[band].legacy) == 1) {
|
||||
rate_idx = ffs(mask->control[band].legacy) - 1;
|
||||
|
||||
if (ar->phy_capability & WHAL_WLAN_11A_CAPABILITY)
|
||||
rate_idx += ATH10K_MAC_FIRST_OFDM_RATE_IDX;
|
||||
|
||||
hw_rate = ath10k_wmi_legacy_rates[rate_idx].hw_value;
|
||||
bitrate = ath10k_wmi_legacy_rates[rate_idx].bitrate;
|
||||
|
||||
if (ath10k_mac_bitrate_is_cck(bitrate))
|
||||
preamble = WMI_RATE_PREAMBLE_CCK;
|
||||
else
|
||||
preamble = WMI_RATE_PREAMBLE_OFDM;
|
||||
|
||||
*nss = 1;
|
||||
*rate = preamble << 6 |
|
||||
(*nss - 1) << 4 |
|
||||
hw_rate << 0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(mask->control[band].ht_mcs); i++) {
|
||||
if (hweight8(mask->control[band].ht_mcs[i]) == 1) {
|
||||
*nss = i + 1;
|
||||
*rate = WMI_RATE_PREAMBLE_HT << 6 |
|
||||
(*nss - 1) << 4 |
|
||||
(ffs(mask->control[band].ht_mcs[i]) - 1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
next:
|
||||
for (i = 0; i < ARRAY_SIZE(mask->control[band].vht_mcs); i++) {
|
||||
if (hweight16(mask->control[band].vht_mcs[i]) == 1) {
|
||||
*nss = i + 1;
|
||||
*rate = WMI_RATE_PREAMBLE_VHT << 6 |
|
||||
(*nss - 1) << 4 |
|
||||
(ffs(mask->control[band].vht_mcs[i]) - 1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static int ath10k_mac_set_fixed_rate_params(struct ath10k_vif *arvif,
|
||||
u8 rate, u8 nss, u8 sgi, u8 ldpc)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user