|
@@ -34,12 +34,16 @@
|
|
|
/* Transmit duration for the raw data part of an average sized packet */
|
|
|
#define MCS_DURATION(streams, sgi, bps) MCS_SYMBOL_TIME(sgi, MCS_NSYMS((streams) * (bps)))
|
|
|
|
|
|
+#define BW_20 0
|
|
|
+#define BW_40 1
|
|
|
+
|
|
|
/*
|
|
|
* Define group sort order: HT40 -> SGI -> #streams
|
|
|
*/
|
|
|
#define GROUP_IDX(_streams, _sgi, _ht40) \
|
|
|
+ MINSTREL_HT_GROUP_0 + \
|
|
|
MINSTREL_MAX_STREAMS * 2 * _ht40 + \
|
|
|
- MINSTREL_MAX_STREAMS * _sgi + \
|
|
|
+ MINSTREL_MAX_STREAMS * _sgi + \
|
|
|
_streams - 1
|
|
|
|
|
|
/* MCS rate information for an MCS group */
|
|
@@ -76,13 +80,13 @@
|
|
|
CCK_ACK_DURATION(55, _short), \
|
|
|
CCK_ACK_DURATION(110, _short)
|
|
|
|
|
|
-#define CCK_GROUP \
|
|
|
- [MINSTREL_MAX_STREAMS * MINSTREL_STREAM_GROUPS] = { \
|
|
|
- .streams = 0, \
|
|
|
- .duration = { \
|
|
|
- CCK_DURATION_LIST(false), \
|
|
|
- CCK_DURATION_LIST(true) \
|
|
|
- } \
|
|
|
+#define CCK_GROUP \
|
|
|
+ [MINSTREL_CCK_GROUP] = { \
|
|
|
+ .streams = 0, \
|
|
|
+ .duration = { \
|
|
|
+ CCK_DURATION_LIST(false), \
|
|
|
+ CCK_DURATION_LIST(true) \
|
|
|
+ } \
|
|
|
}
|
|
|
|
|
|
/*
|
|
@@ -91,38 +95,36 @@
|
|
|
* use.
|
|
|
*
|
|
|
* Sortorder has to be fixed for GROUP_IDX macro to be applicable:
|
|
|
- * HT40 -> SGI -> #streams
|
|
|
+ * BW -> SGI -> #streams
|
|
|
*/
|
|
|
const struct mcs_group minstrel_mcs_groups[] = {
|
|
|
- MCS_GROUP(1, 0, 0),
|
|
|
- MCS_GROUP(2, 0, 0),
|
|
|
+ MCS_GROUP(1, 0, BW_20),
|
|
|
+ MCS_GROUP(2, 0, BW_20),
|
|
|
#if MINSTREL_MAX_STREAMS >= 3
|
|
|
- MCS_GROUP(3, 0, 0),
|
|
|
+ MCS_GROUP(3, 0, BW_20),
|
|
|
#endif
|
|
|
|
|
|
- MCS_GROUP(1, 1, 0),
|
|
|
- MCS_GROUP(2, 1, 0),
|
|
|
+ MCS_GROUP(1, 1, BW_20),
|
|
|
+ MCS_GROUP(2, 1, BW_20),
|
|
|
#if MINSTREL_MAX_STREAMS >= 3
|
|
|
- MCS_GROUP(3, 1, 0),
|
|
|
+ MCS_GROUP(3, 1, BW_20),
|
|
|
#endif
|
|
|
|
|
|
- MCS_GROUP(1, 0, 1),
|
|
|
- MCS_GROUP(2, 0, 1),
|
|
|
+ MCS_GROUP(1, 0, BW_40),
|
|
|
+ MCS_GROUP(2, 0, BW_40),
|
|
|
#if MINSTREL_MAX_STREAMS >= 3
|
|
|
- MCS_GROUP(3, 0, 1),
|
|
|
+ MCS_GROUP(3, 0, BW_40),
|
|
|
#endif
|
|
|
|
|
|
- MCS_GROUP(1, 1, 1),
|
|
|
- MCS_GROUP(2, 1, 1),
|
|
|
+ MCS_GROUP(1, 1, BW_40),
|
|
|
+ MCS_GROUP(2, 1, BW_40),
|
|
|
#if MINSTREL_MAX_STREAMS >= 3
|
|
|
- MCS_GROUP(3, 1, 1),
|
|
|
+ MCS_GROUP(3, 1, BW_40),
|
|
|
#endif
|
|
|
|
|
|
- /* must be last */
|
|
|
CCK_GROUP
|
|
|
};
|
|
|
|
|
|
-#define MINSTREL_CCK_GROUP (ARRAY_SIZE(minstrel_mcs_groups) - 1)
|
|
|
|
|
|
static u8 sample_table[SAMPLE_COLUMNS][MCS_GROUP_RATES] __read_mostly;
|
|
|
|
|
@@ -971,8 +973,7 @@ minstrel_ht_update_caps(void *priv, struct ieee80211_supported_band *sband,
|
|
|
if (!sta->ht_cap.ht_supported)
|
|
|
goto use_legacy;
|
|
|
|
|
|
- BUILD_BUG_ON(ARRAY_SIZE(minstrel_mcs_groups) !=
|
|
|
- MINSTREL_MAX_STREAMS * MINSTREL_STREAM_GROUPS + 1);
|
|
|
+ BUILD_BUG_ON(ARRAY_SIZE(minstrel_mcs_groups) != MINSTREL_GROUPS_NB);
|
|
|
|
|
|
msp->is_ht = true;
|
|
|
memset(mi, 0, sizeof(*mi));
|