forked from Minki/linux
mac80211: minstrel_ht: move short preamble check out of get_rate
Test short preamble support in minstrel_ht_update_caps instead of looking at the per-packet flag. Makes the code more efficient. Signed-off-by: Felix Fietkau <nbd@nbd.name> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
41d085835d
commit
782dda00ab
@ -14,6 +14,7 @@
|
|||||||
#include <linux/ieee80211.h>
|
#include <linux/ieee80211.h>
|
||||||
#include <net/mac80211.h>
|
#include <net/mac80211.h>
|
||||||
#include "rate.h"
|
#include "rate.h"
|
||||||
|
#include "sta_info.h"
|
||||||
#include "rc80211_minstrel.h"
|
#include "rc80211_minstrel.h"
|
||||||
#include "rc80211_minstrel_ht.h"
|
#include "rc80211_minstrel_ht.h"
|
||||||
|
|
||||||
@ -1048,22 +1049,6 @@ minstrel_get_sample_rate(struct minstrel_priv *mp, struct minstrel_ht_sta *mi)
|
|||||||
return sample_idx;
|
return sample_idx;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
minstrel_ht_check_cck_shortpreamble(struct minstrel_priv *mp,
|
|
||||||
struct minstrel_ht_sta *mi, bool val)
|
|
||||||
{
|
|
||||||
u8 supported = mi->supported[MINSTREL_CCK_GROUP];
|
|
||||||
|
|
||||||
if (!supported || !mi->cck_supported_short)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (supported & (mi->cck_supported_short << (val * 4)))
|
|
||||||
return;
|
|
||||||
|
|
||||||
supported ^= mi->cck_supported_short | (mi->cck_supported_short << 4);
|
|
||||||
mi->supported[MINSTREL_CCK_GROUP] = supported;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
minstrel_ht_get_rate(void *priv, struct ieee80211_sta *sta, void *priv_sta,
|
minstrel_ht_get_rate(void *priv, struct ieee80211_sta *sta, void *priv_sta,
|
||||||
struct ieee80211_tx_rate_control *txrc)
|
struct ieee80211_tx_rate_control *txrc)
|
||||||
@ -1087,7 +1072,6 @@ minstrel_ht_get_rate(void *priv, struct ieee80211_sta *sta, void *priv_sta,
|
|||||||
minstrel_aggr_check(sta, txrc->skb);
|
minstrel_aggr_check(sta, txrc->skb);
|
||||||
|
|
||||||
info->flags |= mi->tx_flags;
|
info->flags |= mi->tx_flags;
|
||||||
minstrel_ht_check_cck_shortpreamble(mp, mi, txrc->short_preamble);
|
|
||||||
|
|
||||||
#ifdef CONFIG_MAC80211_DEBUGFS
|
#ifdef CONFIG_MAC80211_DEBUGFS
|
||||||
if (mp->fixed_rate_idx != -1)
|
if (mp->fixed_rate_idx != -1)
|
||||||
@ -1168,6 +1152,7 @@ minstrel_ht_update_caps(void *priv, struct ieee80211_supported_band *sband,
|
|||||||
struct ieee80211_mcs_info *mcs = &sta->ht_cap.mcs;
|
struct ieee80211_mcs_info *mcs = &sta->ht_cap.mcs;
|
||||||
u16 sta_cap = sta->ht_cap.cap;
|
u16 sta_cap = sta->ht_cap.cap;
|
||||||
struct ieee80211_sta_vht_cap *vht_cap = &sta->vht_cap;
|
struct ieee80211_sta_vht_cap *vht_cap = &sta->vht_cap;
|
||||||
|
struct sta_info *sinfo = container_of(sta, struct sta_info, sta);
|
||||||
int use_vht;
|
int use_vht;
|
||||||
int n_supported = 0;
|
int n_supported = 0;
|
||||||
int ack_dur;
|
int ack_dur;
|
||||||
@ -1293,6 +1278,9 @@ minstrel_ht_update_caps(void *priv, struct ieee80211_supported_band *sband,
|
|||||||
if (!n_supported)
|
if (!n_supported)
|
||||||
goto use_legacy;
|
goto use_legacy;
|
||||||
|
|
||||||
|
if (test_sta_flag(sinfo, WLAN_STA_SHORT_PREAMBLE))
|
||||||
|
mi->cck_supported_short |= mi->cck_supported_short << 4;
|
||||||
|
|
||||||
/* create an initial rate table with the lowest supported rates */
|
/* create an initial rate table with the lowest supported rates */
|
||||||
minstrel_ht_update_stats(mp, mi);
|
minstrel_ht_update_stats(mp, mi);
|
||||||
minstrel_ht_update_rates(mp, mi);
|
minstrel_ht_update_rates(mp, mi);
|
||||||
|
Loading…
Reference in New Issue
Block a user