Merge tag 'xtensa-next-20141215' of git://github.com/czankel/xtensa-linux
[cascardo/linux.git] / net / mac80211 / rc80211_minstrel_ht.h
index 01570e0..f2217d6 100644 (file)
  * The number of streams can be changed to 2 to reduce code
  * size and memory footprint.
  */
-#define MINSTREL_MAX_STREAMS   3
-#define MINSTREL_STREAM_GROUPS 4
+#define MINSTREL_MAX_STREAMS           3
+#define MINSTREL_HT_STREAM_GROUPS      4 /* BW(=2) * SGI(=2) */
+#ifdef CONFIG_MAC80211_RC_MINSTREL_VHT
+#define MINSTREL_VHT_STREAM_GROUPS     6 /* BW(=3) * SGI(=2) */
+#else
+#define MINSTREL_VHT_STREAM_GROUPS     0
+#endif
 
-#define MCS_GROUP_RATES        8
+#define MINSTREL_HT_GROUPS_NB  (MINSTREL_MAX_STREAMS *         \
+                                MINSTREL_HT_STREAM_GROUPS)
+#define MINSTREL_VHT_GROUPS_NB (MINSTREL_MAX_STREAMS *         \
+                                MINSTREL_VHT_STREAM_GROUPS)
+#define MINSTREL_CCK_GROUPS_NB 1
+#define MINSTREL_GROUPS_NB     (MINSTREL_HT_GROUPS_NB +        \
+                                MINSTREL_VHT_GROUPS_NB +       \
+                                MINSTREL_CCK_GROUPS_NB)
+
+#define MINSTREL_HT_GROUP_0    0
+#define MINSTREL_CCK_GROUP     (MINSTREL_HT_GROUP_0 + MINSTREL_HT_GROUPS_NB)
+#define MINSTREL_VHT_GROUP_0   (MINSTREL_CCK_GROUP + 1)
+
+#ifdef CONFIG_MAC80211_RC_MINSTREL_VHT
+#define MCS_GROUP_RATES                10
+#else
+#define MCS_GROUP_RATES                8
+#endif
 
 struct mcs_group {
        u32 flags;
@@ -31,11 +53,11 @@ struct minstrel_mcs_group_data {
        u8 column;
 
        /* bitfield of supported MCS rates of this group */
-       u8 supported;
+       u16 supported;
 
        /* sorted rate set within a MCS group*/
-       u8 max_group_tp_rate[MAX_THR_RATES];
-       u8 max_group_prob_rate;
+       u16 max_group_tp_rate[MAX_THR_RATES];
+       u16 max_group_prob_rate;
 
        /* MCS rate statistics */
        struct minstrel_rate_stats rates[MCS_GROUP_RATES];
@@ -52,8 +74,8 @@ struct minstrel_ht_sta {
        unsigned int avg_ampdu_len;
 
        /* overall sorted rate set */
-       u8 max_tp_rate[MAX_THR_RATES];
-       u8 max_prob_rate;
+       u16 max_tp_rate[MAX_THR_RATES];
+       u16 max_prob_rate;
 
        /* time of last status update */
        unsigned long stats_update;
@@ -80,7 +102,7 @@ struct minstrel_ht_sta {
        u8 cck_supported_short;
 
        /* MCS rate group info and statistics */
-       struct minstrel_mcs_group_data groups[MINSTREL_MAX_STREAMS * MINSTREL_STREAM_GROUPS + 1];
+       struct minstrel_mcs_group_data groups[MINSTREL_GROUPS_NB];
 };
 
 struct minstrel_ht_sta_priv {