Commit 486017cc authored by Michal Kazior's avatar Michal Kazior Committed by Kalle Valo

ath10k: derive rate from bitrate

There's no need to store rate values in hw_value.
This frees up the hw_value for better future use.
Signed-off-by: default avatarMichal Kazior <michal.kazior@tieto.com>
Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
parent dcc33098
...@@ -43,19 +43,19 @@ ...@@ -43,19 +43,19 @@
static struct ieee80211_rate ath10k_rates[] = { static struct ieee80211_rate ath10k_rates[] = {
/* CCK */ /* CCK */
RATETAB_ENT(10, 0x82, 0), RATETAB_ENT(10, 0, 0),
RATETAB_ENT(20, 0x84, 0), RATETAB_ENT(20, 0, 0),
RATETAB_ENT(55, 0x8b, 0), RATETAB_ENT(55, 0, 0),
RATETAB_ENT(110, 0x96, 0), RATETAB_ENT(110, 0, 0),
/* OFDM */ /* OFDM */
RATETAB_ENT(60, 0x0c, 0), RATETAB_ENT(60, 0, 0),
RATETAB_ENT(90, 0x12, 0), RATETAB_ENT(90, 0, 0),
RATETAB_ENT(120, 0x18, 0), RATETAB_ENT(120, 0, 0),
RATETAB_ENT(180, 0x24, 0), RATETAB_ENT(180, 0, 0),
RATETAB_ENT(240, 0x30, 0), RATETAB_ENT(240, 0, 0),
RATETAB_ENT(360, 0x48, 0), RATETAB_ENT(360, 0, 0),
RATETAB_ENT(480, 0x60, 0), RATETAB_ENT(480, 0, 0),
RATETAB_ENT(540, 0x6c, 0), RATETAB_ENT(540, 0, 0),
}; };
#define ath10k_a_rates (ath10k_rates + 4) #define ath10k_a_rates (ath10k_rates + 4)
...@@ -63,6 +63,25 @@ static struct ieee80211_rate ath10k_rates[] = { ...@@ -63,6 +63,25 @@ static struct ieee80211_rate ath10k_rates[] = {
#define ath10k_g_rates (ath10k_rates + 0) #define ath10k_g_rates (ath10k_rates + 0)
#define ath10k_g_rates_size (ARRAY_SIZE(ath10k_rates)) #define ath10k_g_rates_size (ARRAY_SIZE(ath10k_rates))
static bool ath10k_mac_bitrate_is_cck(int bitrate)
{
switch (bitrate) {
case 10:
case 20:
case 55:
case 110:
return true;
}
return false;
}
static u8 ath10k_mac_bitrate_to_rate(int bitrate)
{
return DIV_ROUND_UP(bitrate, 5) |
(ath10k_mac_bitrate_is_cck(bitrate) ? BIT(7) : 0);
}
/**********/ /**********/
/* Crypto */ /* Crypto */
/**********/ /**********/
...@@ -1736,6 +1755,7 @@ static void ath10k_peer_assoc_h_rates(struct ath10k *ar, ...@@ -1736,6 +1755,7 @@ static void ath10k_peer_assoc_h_rates(struct ath10k *ar,
const struct ieee80211_supported_band *sband; const struct ieee80211_supported_band *sband;
const struct ieee80211_rate *rates; const struct ieee80211_rate *rates;
u32 ratemask; u32 ratemask;
u8 rate;
int i; int i;
lockdep_assert_held(&ar->conf_mutex); lockdep_assert_held(&ar->conf_mutex);
...@@ -1750,7 +1770,8 @@ static void ath10k_peer_assoc_h_rates(struct ath10k *ar, ...@@ -1750,7 +1770,8 @@ static void ath10k_peer_assoc_h_rates(struct ath10k *ar,
if (!(ratemask & 1)) if (!(ratemask & 1))
continue; continue;
rateset->rates[rateset->num_rates] = rates->hw_value; rate = ath10k_mac_bitrate_to_rate(rates->bitrate);
rateset->rates[rateset->num_rates] = rate;
rateset->num_rates++; rateset->num_rates++;
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment