From owner-svn-src-head@FreeBSD.ORG Thu Feb 5 20:39:54 2009 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 09D78106564A; Thu, 5 Feb 2009 20:39:54 +0000 (UTC) (envelope-from sam@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E215F8FC1C; Thu, 5 Feb 2009 20:39:53 +0000 (UTC) (envelope-from sam@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n15Kdr0E038028; Thu, 5 Feb 2009 20:39:53 GMT (envelope-from sam@svn.freebsd.org) Received: (from sam@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n15KdrmU038027; Thu, 5 Feb 2009 20:39:53 GMT (envelope-from sam@svn.freebsd.org) Message-Id: <200902052039.n15KdrmU038027@svn.freebsd.org> From: Sam Leffler Date: Thu, 5 Feb 2009 20:39:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r188187 - head/tools/tools/net80211/wlanstats X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Feb 2009 20:39:54 -0000 Author: sam Date: Thu Feb 5 20:39:53 2009 New Revision: 188187 URL: http://svn.freebsd.org/changeset/base/188187 Log: o fix identification of ahdemo mode o split out code to get the bssid for use in the future o include more information in error diags when unable to collect sta info/stats Modified: head/tools/tools/net80211/wlanstats/wlanstats.c Modified: head/tools/tools/net80211/wlanstats/wlanstats.c ============================================================================== --- head/tools/tools/net80211/wlanstats/wlanstats.c Thu Feb 5 20:37:07 2009 (r188186) +++ head/tools/tools/net80211/wlanstats/wlanstats.c Thu Feb 5 20:39:53 2009 (r188187) @@ -390,9 +390,12 @@ wlan_getopmode(struct wlanstatfoo *wf0) strlcpy(ifmr.ifm_name, wf->ifr.ifr_name, sizeof(ifmr.ifm_name)); if (ioctl(wf->s, SIOCGIFMEDIA, &ifmr) < 0) err(1, "%s (SIOCGIFMEDIA)", wf->ifr.ifr_name); - if (ifmr.ifm_current & IFM_IEEE80211_ADHOC) - wf->opmode = IEEE80211_M_IBSS; /* XXX ahdemo */ - else if (ifmr.ifm_current & IFM_IEEE80211_HOSTAP) + if (ifmr.ifm_current & IFM_IEEE80211_ADHOC) { + if (ifmr.ifm_current & IFM_FLAG0) + wf->opmode = IEEE80211_M_AHDEMO; + else + wf->opmode = IEEE80211_M_IBSS; + } else if (ifmr.ifm_current & IFM_IEEE80211_HOSTAP) wf->opmode = IEEE80211_M_HOSTAP; else if (ifmr.ifm_current & IFM_IEEE80211_MONITOR) wf->opmode = IEEE80211_M_MONITOR; @@ -422,6 +425,15 @@ getlladdr(struct wlanstatfoo_p *wf) freeifaddrs(ifp); } +static int +getbssid(struct wlanstatfoo_p *wf) +{ + wf->ireq.i_type = IEEE80211_IOC_BSSID; + wf->ireq.i_data = wf->mac; + wf->ireq.i_len = IEEE80211_ADDR_LEN; + return ioctl(wf->s, SIOCG80211, &wf->ireq); +} + static void wlan_setstamac(struct wlanstatfoo *wf0, const uint8_t *mac) { @@ -436,11 +448,9 @@ wlan_setstamac(struct wlanstatfoo *wf0, getlladdr(wf); break; case IEEE80211_M_STA: - wf->ireq.i_type = IEEE80211_IOC_BSSID; - wf->ireq.i_data = wf->mac; - wf->ireq.i_len = IEEE80211_ADDR_LEN; - if (ioctl(wf->s, SIOCG80211, &wf->ireq) <0) - err(1, "%s (IEEE80211_IOC_BSSID)", wf->ireq.i_name); + if (getbssid(wf) < 0) + err(1, "%s (IEEE80211_IOC_BSSID)", + wf->ireq.i_name); break; } } else @@ -457,15 +467,18 @@ wlan_collect(struct wlanstatfoo_p *wf, wf->ireq.i_type = IEEE80211_IOC_STA_INFO; wf->ireq.i_data = (caddr_t) &wf->u_info; wf->ireq.i_len = sizeof(wf->u_info); - if (ioctl(wf->s, SIOCG80211, &wf->ireq) < 0) - warn("%s (IEEE80211_IOC_STA_INFO)", wf->ireq.i_name); + if (ioctl(wf->s, SIOCG80211, &wf->ireq) < 0) { + warn("%s:%s (IEEE80211_IOC_STA_INFO)", wf->ireq.i_name, + ether_ntoa((const struct ether_addr*) wf->mac)); + } IEEE80211_ADDR_COPY(nstats->is_u.macaddr, wf->mac); wf->ireq.i_type = IEEE80211_IOC_STA_STATS; wf->ireq.i_data = (caddr_t) nstats; wf->ireq.i_len = sizeof(*nstats); if (ioctl(wf->s, SIOCG80211, &wf->ireq) < 0) - warn("%s (IEEE80211_IOC_STA_STATS)", wf->ireq.i_name); + warn("%s:%s (IEEE80211_IOC_STA_STATS)", wf->ireq.i_name, + ether_ntoa((const struct ether_addr*) wf->mac)); wf->ifr.ifr_data = (caddr_t) stats; if (ioctl(wf->s, SIOCG80211STATS, &wf->ifr) < 0)