mac80211: minstrel_ht: add support for OFDM rates on non-HT clients
[linux-2.6-microblaze.git] / net / mac80211 / rc80211_minstrel_ht_debugfs.c
index bebb719..75ecc33 100644 (file)
@@ -52,7 +52,6 @@ minstrel_ht_stats_dump(struct minstrel_ht_sta *mi, int i, char *p)
 
        for (j = 0; j < MCS_GROUP_RATES; j++) {
                struct minstrel_rate_stats *mrs = &mi->groups[i].rates[j];
-               static const int bitrates[4] = { 10, 20, 55, 110 };
                int idx = i * MCS_GROUP_RATES + j;
                unsigned int duration;
 
@@ -67,6 +66,9 @@ minstrel_ht_stats_dump(struct minstrel_ht_sta *mi, int i, char *p)
                        p += sprintf(p, "VHT%c0 ", htmode);
                        p += sprintf(p, "%cGI ", gimode);
                        p += sprintf(p, "%d  ", mg->streams);
+               } else if (i == MINSTREL_OFDM_GROUP) {
+                       p += sprintf(p, "OFDM       ");
+                       p += sprintf(p, "1 ");
                } else {
                        p += sprintf(p, "CCK    ");
                        p += sprintf(p, "%cP  ", j < 4 ? 'L' : 'S');
@@ -84,7 +86,12 @@ minstrel_ht_stats_dump(struct minstrel_ht_sta *mi, int i, char *p)
                } else if (gflags & IEEE80211_TX_RC_VHT_MCS) {
                        p += sprintf(p, "  MCS%-1u/%1u", j, mg->streams);
                } else {
-                       int r = bitrates[j % 4];
+                       int r;
+
+                       if (i == MINSTREL_OFDM_GROUP)
+                               r = minstrel_ofdm_bitrates[j % 8];
+                       else
+                               r = minstrel_cck_bitrates[j % 4];
 
                        p += sprintf(p, "   %2u.%1uM", r / 10, r % 10);
                }
@@ -124,16 +131,8 @@ minstrel_ht_stats_open(struct inode *inode, struct file *file)
        struct minstrel_ht_sta *mi = &msp->ht;
        struct minstrel_debugfs_info *ms;
        unsigned int i;
-       int ret;
        char *p;
 
-       if (!msp->is_ht) {
-               inode->i_private = &msp->legacy;
-               ret = minstrel_stats_open(inode, file);
-               inode->i_private = msp;
-               return ret;
-       }
-
        ms = kmalloc(32768, GFP_KERNEL);
        if (!ms)
                return -ENOMEM;
@@ -199,7 +198,6 @@ minstrel_ht_stats_csv_dump(struct minstrel_ht_sta *mi, int i, char *p)
 
        for (j = 0; j < MCS_GROUP_RATES; j++) {
                struct minstrel_rate_stats *mrs = &mi->groups[i].rates[j];
-               static const int bitrates[4] = { 10, 20, 55, 110 };
                int idx = i * MCS_GROUP_RATES + j;
                unsigned int duration;
 
@@ -214,6 +212,8 @@ minstrel_ht_stats_csv_dump(struct minstrel_ht_sta *mi, int i, char *p)
                        p += sprintf(p, "VHT%c0,", htmode);
                        p += sprintf(p, "%cGI,", gimode);
                        p += sprintf(p, "%d,", mg->streams);
+               } else if (i == MINSTREL_OFDM_GROUP) {
+                       p += sprintf(p, "OFDM,,1,");
                } else {
                        p += sprintf(p, "CCK,");
                        p += sprintf(p, "%cP,", j < 4 ? 'L' : 'S');
@@ -231,7 +231,13 @@ minstrel_ht_stats_csv_dump(struct minstrel_ht_sta *mi, int i, char *p)
                } else if (gflags & IEEE80211_TX_RC_VHT_MCS) {
                        p += sprintf(p, ",MCS%-1u/%1u,", j, mg->streams);
                } else {
-                       int r = bitrates[j % 4];
+                       int r;
+
+                       if (i == MINSTREL_OFDM_GROUP)
+                               r = minstrel_ofdm_bitrates[j % 8];
+                       else
+                               r = minstrel_cck_bitrates[j % 4];
+
                        p += sprintf(p, ",%2u.%1uM,", r / 10, r % 10);
                }
 
@@ -274,18 +280,9 @@ minstrel_ht_stats_csv_open(struct inode *inode, struct file *file)
        struct minstrel_ht_sta *mi = &msp->ht;
        struct minstrel_debugfs_info *ms;
        unsigned int i;
-       int ret;
        char *p;
 
-       if (!msp->is_ht) {
-               inode->i_private = &msp->legacy;
-               ret = minstrel_stats_csv_open(inode, file);
-               inode->i_private = msp;
-               return ret;
-       }
-
        ms = kmalloc(32768, GFP_KERNEL);
-
        if (!ms)
                return -ENOMEM;