]> git.ipfire.org Git - thirdparty/iw.git/blobdiff - survey.c
iw: Support associated-at station statistic.
[thirdparty/iw.git] / survey.c
index 83c54b39a3caf09ca7ee619d136ace9a59ed5024..9325353e4ba1d35acc190a6b26d2852f7b43fbca 100644 (file)
--- a/survey.c
+++ b/survey.c
@@ -1,6 +1,4 @@
 #include <net/if.h>
-#include <errno.h>
-#include <string.h>
 
 #include <netlink/genl/genl.h>
 #include <netlink/genl/family.h>
@@ -44,21 +42,36 @@ static int print_survey_handler(struct nl_msg *msg, void *arg)
        }
 
        if (sinfo[NL80211_SURVEY_INFO_FREQUENCY])
-               printf("\tfrequency:\t%u MHz%s\n",
+               printf("\tfrequency:\t\t\t%u MHz%s\n",
                        nla_get_u32(sinfo[NL80211_SURVEY_INFO_FREQUENCY]),
                        sinfo[NL80211_SURVEY_INFO_IN_USE] ? " [in use]" : "");
        if (sinfo[NL80211_SURVEY_INFO_NOISE])
-               printf("\tnoise:\t\t%d dBm\n",
+               printf("\tnoise:\t\t\t\t%d dBm\n",
                        (int8_t)nla_get_u8(sinfo[NL80211_SURVEY_INFO_NOISE]));
+       if (sinfo[NL80211_SURVEY_INFO_CHANNEL_TIME])
+               printf("\tchannel active time:\t\t%llu ms\n",
+                       (unsigned long long)nla_get_u64(sinfo[NL80211_SURVEY_INFO_CHANNEL_TIME]));
+       if (sinfo[NL80211_SURVEY_INFO_CHANNEL_TIME_BUSY])
+               printf("\tchannel busy time:\t\t%llu ms\n",
+                       (unsigned long long)nla_get_u64(sinfo[NL80211_SURVEY_INFO_CHANNEL_TIME_BUSY]));
+       if (sinfo[NL80211_SURVEY_INFO_CHANNEL_TIME_EXT_BUSY])
+               printf("\textension channel busy time:\t%llu ms\n",
+                       (unsigned long long)nla_get_u64(sinfo[NL80211_SURVEY_INFO_CHANNEL_TIME_EXT_BUSY]));
+       if (sinfo[NL80211_SURVEY_INFO_CHANNEL_TIME_RX])
+               printf("\tchannel receive time:\t\t%llu ms\n",
+                       (unsigned long long)nla_get_u64(sinfo[NL80211_SURVEY_INFO_CHANNEL_TIME_RX]));
+       if (sinfo[NL80211_SURVEY_INFO_CHANNEL_TIME_TX])
+               printf("\tchannel transmit time:\t\t%llu ms\n",
+                       (unsigned long long)nla_get_u64(sinfo[NL80211_SURVEY_INFO_CHANNEL_TIME_TX]));
        return NL_SKIP;
 }
 
 static int handle_survey_dump(struct nl80211_state *state,
-                              struct nl_cb *cb,
-                              struct nl_msg *msg,
-                              int argc, char **argv)
+                             struct nl_msg *msg,
+                             int argc, char **argv,
+                             enum id_input id)
 {
-       nl_cb_set(cb, NL_CB_VALID, NL_CB_CUSTOM, print_survey_handler, NULL);
+       register_handler(print_survey_handler, NULL);
        return 0;
 }
 COMMAND(survey, dump, NULL,