Date: Sat, 4 Dec 2004 00:57:30 GMT From: Sam Leffler <sam@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 66380 for review Message-ID: <200412040057.iB40vUi1014144@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=66380 Change 66380 by sam@sam_ebb on 2004/12/04 00:57:02 suppress more meaningless status by default Affected files ... .. //depot/projects/wifi/sbin/ifconfig/ifieee80211.c#26 edit Differences ... ==== //depot/projects/wifi/sbin/ifconfig/ifieee80211.c#26 (text+ko) ==== @@ -1178,6 +1178,31 @@ return 0; } +static const struct ieee80211_channel * +getchaninfo(int s, int chan) +{ + struct ieee80211req ireq; + static struct ieee80211req_chaninfo chans; + static struct ieee80211_channel undef; + const struct ieee80211_channel *c; + int i, freq; + + (void) memset(&ireq, 0, sizeof(ireq)); + (void) strncpy(ireq.i_name, name, sizeof(ireq.i_name)); + ireq.i_type = IEEE80211_IOC_CHANINFO; + ireq.i_data = &chans; + ireq.i_len = sizeof(chans); + if (ioctl(s, SIOCG80211, &ireq) < 0) + errx(1, "unable to get channel information"); + freq = ieee80211_ieee2mhz(chan); + for (i = 0; i < chans.ic_nchans; i++) { + c = &chans.ic_chans[i]; + if (c->ic_freq == freq) + return c; + } + return &undef; +} + static void ieee80211_status(int s, const struct rt_addrinfo *info __unused) { @@ -1186,6 +1211,7 @@ int i, num, wpa, wme; struct ieee80211req ireq; u_int8_t data[32]; + const struct ieee80211_channel *c; char spacer; (void) memset(&ireq, 0, sizeof(ireq)); @@ -1219,10 +1245,11 @@ ireq.i_type = IEEE80211_IOC_CHANNEL; if (ioctl(s, SIOCG80211, &ireq) < 0) goto end; + c = getchaninfo(s, ireq.i_val); if (ireq.i_val != -1) { printf(" channel %d", ireq.i_val); if (verbose) - printf(" (%u)", ieee80211_ieee2mhz(ireq.i_val)); + printf(" (%u)", c->ic_freq); } else if (verbose) printf(" channel UNDEF"); @@ -1361,27 +1388,27 @@ ireq.i_type = IEEE80211_IOC_POWERSAVE; if (ioctl(s, SIOCG80211, &ireq) != -1 && ireq.i_val != IEEE80211_POWERSAVE_NOSUP ) { - printf("%cpowersavemode", spacer); - spacer = ' '; - switch (ireq.i_val) { - case IEEE80211_POWERSAVE_OFF: - printf(" OFF"); - break; - case IEEE80211_POWERSAVE_CAM: - printf(" CAM"); - break; - case IEEE80211_POWERSAVE_PSP: - printf(" PSP"); - break; - case IEEE80211_POWERSAVE_PSP_CAM: - printf(" PSP-CAM"); - break; - } - - ireq.i_type = IEEE80211_IOC_POWERSAVESLEEP; - if (ioctl(s, SIOCG80211, &ireq) != -1) { - if (ireq.i_val) + if (ireq.i_val != IEEE80211_POWERSAVE_OFF || verbose) { + printf("%cpowersavemode", spacer); + switch (ireq.i_val) { + case IEEE80211_POWERSAVE_OFF: + printf(" OFF"); + break; + case IEEE80211_POWERSAVE_CAM: + printf(" CAM"); + break; + case IEEE80211_POWERSAVE_PSP: + printf(" PSP"); + break; + case IEEE80211_POWERSAVE_PSP_CAM: + printf(" PSP-CAM"); + break; + } + ireq.i_type = IEEE80211_IOC_POWERSAVESLEEP; + if (ioctl(s, SIOCG80211, &ireq) != -1) { printf(" powersavesleep %d", ireq.i_val); + } + spacer = ' '; } } @@ -1409,24 +1436,26 @@ spacer = ' '; } - ireq.i_type = IEEE80211_IOC_PROTMODE; - if (ioctl(s, SIOCG80211, &ireq) != -1) { - printf("%cprotmode ", spacer); - switch (ireq.i_val) { - case IEEE80211_PROTMODE_OFF: - printf("OFF"); - break; - case IEEE80211_PROTMODE_CTS: - printf("CTS"); - break; - case IEEE80211_PROTMODE_RTSCTS: - printf("RTSCTS"); - break; - default: - printf("UNKNOWN (0x%x)", ireq.i_val); - break; + if (IEEE80211_IS_CHAN_G(c) || IEEE80211_IS_CHAN_PUREG(c) || verbose) { + ireq.i_type = IEEE80211_IOC_PROTMODE; + if (ioctl(s, SIOCG80211, &ireq) != -1) { + printf("%cprotmode ", spacer); + switch (ireq.i_val) { + case IEEE80211_PROTMODE_OFF: + printf("OFF"); + break; + case IEEE80211_PROTMODE_CTS: + printf("CTS"); + break; + case IEEE80211_PROTMODE_RTSCTS: + printf("RTSCTS"); + break; + default: + printf("UNKNOWN (0x%x)", ireq.i_val); + break; + } + spacer = ' '; } - spacer = ' '; } ireq.i_type = IEEE80211_IOC_WME; @@ -1473,22 +1502,24 @@ } else { ireq.i_type = IEEE80211_IOC_ROAMING; if (ioctl(s, SIOCG80211, &ireq) != -1) { - printf("%croaming ", spacer); - switch (ireq.i_val) { - case IEEE80211_ROAMING_DEVICE: - printf("DEVICE"); - break; - case IEEE80211_ROAMING_AUTO: - printf("AUTO"); - break; - case IEEE80211_ROAMING_MANUAL: - printf("MANUAL"); - break; - default: - printf("UNKNOWN (0x%x)", ireq.i_val); - break; + if (ireq.i_val != IEEE80211_ROAMING_AUTO || verbose) { + printf("%croaming ", spacer); + switch (ireq.i_val) { + case IEEE80211_ROAMING_DEVICE: + printf("DEVICE"); + break; + case IEEE80211_ROAMING_AUTO: + printf("AUTO"); + break; + case IEEE80211_ROAMING_MANUAL: + printf("MANUAL"); + break; + default: + printf("UNKNOWN (0x%x)", ireq.i_val); + break; + } + spacer = ' '; } - spacer = ' '; } } ireq.i_type = IEEE80211_IOC_BEACON_INTERVAL;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200412040057.iB40vUi1014144>
