Author: adrian
Date: Tue Apr 19 05:17:43 2016
New Revision: 298252
URL: https://svnweb.freebsd.org/changeset/base/298252

Log:
  Add VHT power envelope parsing to ifconfig.

Modified:
  head/sbin/ifconfig/ifieee80211.c

Modified: head/sbin/ifconfig/ifieee80211.c
==============================================================================
--- head/sbin/ifconfig/ifieee80211.c    Tue Apr 19 05:04:39 2016        
(r298251)
+++ head/sbin/ifconfig/ifieee80211.c    Tue Apr 19 05:17:43 2016        
(r298252)
@@ -2573,6 +2573,39 @@ printvhtinfo(const char *tag, const u_in
 }
 
 static void
+printvhtpwrenv(const char *tag, const u_int8_t *ie, size_t ielen, int maxlen)
+{
+       printf("%s", tag);
+       static const char *txpwrmap[] = {
+               "20",
+               "40",
+               "80",
+               "160",
+       };
+       if (verbose) {
+               const struct ieee80211_ie_vht_txpwrenv *vhtpwr =
+                   (const struct ieee80211_ie_vht_txpwrenv *) ie;
+               int i, n;
+               const char *sep = "";
+
+               /* Get count; trim at ielen */
+               n = (vhtpwr->tx_info &
+                   IEEE80211_VHT_TXPWRENV_INFO_COUNT_MASK) + 1;
+               /* Trim at ielen */
+               if (n > ielen - 3)
+                       n = ielen - 3;
+               printf("<tx_info 0x%02x pwr:[", vhtpwr->tx_info);
+               for (i = 0; i < n; i++) {
+                       printf("%s%s:%.2f", sep, txpwrmap[i],
+                           ((float) ((int8_t) ie[i+3])) / 2.0);
+                       sep = " ";
+               }
+
+               printf("]>");
+       }
+}
+
+static void
 printhtcap(const char *tag, const u_int8_t *ie, size_t ielen, int maxlen)
 {
        printf("%s", tag);
@@ -3151,7 +3184,6 @@ iename(int elemid)
        case IEEE80211_ELEMID_IBSSDFS:  return " IBSSDFS";
        case IEEE80211_ELEMID_TPC:      return " TPC";
        case IEEE80211_ELEMID_CCKM:     return " CCKM";
-       case IEEE80211_ELEMID_VHT_PWR_ENV:      return " VHTPWRENV";
        }
        return " ???";
 }
@@ -3222,6 +3254,9 @@ printies(const u_int8_t *vp, int ielen, 
                case IEEE80211_ELEMID_VHT_OPMODE:
                        printvhtinfo(" VHTOPMODE", vp, 2+vp[1], maxcols);
                        break;
+               case IEEE80211_ELEMID_VHT_PWR_ENV:
+                       printvhtpwrenv(" VHTPWRENV", vp, 2+vp[1], maxcols);
+                       break;
                case IEEE80211_ELEMID_BSSLOAD:
                        printbssload(" BSSLOAD", vp, 2+vp[1], maxcols);
                        break;
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to