12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- From: Felix Fietkau <nbd@nbd.name>
- Date: Wed, 14 Dec 2016 20:06:08 +0100
- Subject: [PATCH] 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>
- ---
- --- a/net/mac80211/rc80211_minstrel_ht.c
- +++ b/net/mac80211/rc80211_minstrel_ht.c
- @@ -14,6 +14,7 @@
- #include <linux/ieee80211.h>
- #include <net/mac80211.h>
- #include "rate.h"
- +#include "sta_info.h"
- #include "rc80211_minstrel.h"
- #include "rc80211_minstrel_ht.h"
-
- @@ -1049,22 +1050,6 @@ minstrel_get_sample_rate(struct minstrel
- }
-
- 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
- minstrel_ht_get_rate(void *priv, struct ieee80211_sta *sta, void *priv_sta,
- struct ieee80211_tx_rate_control *txrc)
- {
- @@ -1087,7 +1072,6 @@ minstrel_ht_get_rate(void *priv, struct
- minstrel_aggr_check(sta, txrc->skb);
-
- info->flags |= mi->tx_flags;
- - minstrel_ht_check_cck_shortpreamble(mp, mi, txrc->short_preamble);
-
- #ifdef CPTCFG_MAC80211_DEBUGFS
- if (mp->fixed_rate_idx != -1)
- @@ -1168,6 +1152,7 @@ minstrel_ht_update_caps(void *priv, stru
- struct ieee80211_mcs_info *mcs = &sta->ht_cap.mcs;
- u16 ht_cap = sta->ht_cap.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 n_supported = 0;
- int ack_dur;
- @@ -1302,6 +1287,9 @@ minstrel_ht_update_caps(void *priv, stru
- if (!n_supported)
- 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 */
- minstrel_ht_update_stats(mp, mi);
- minstrel_ht_update_rates(mp, mi);
|