From owner-svn-src-user@FreeBSD.ORG Mon Jan 19 11:10:14 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B2DE0106586C; Mon, 19 Jan 2009 11:10:14 +0000 (UTC) (envelope-from edwin@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B16568FC7F; Mon, 19 Jan 2009 11:10:02 +0000 (UTC) (envelope-from edwin@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 n0JBA2lS008707; Mon, 19 Jan 2009 11:10:02 GMT (envelope-from edwin@svn.freebsd.org) Received: (from edwin@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n0JBA2aq008706; Mon, 19 Jan 2009 11:10:02 GMT (envelope-from edwin@svn.freebsd.org) Message-Id: <200901191110.n0JBA2aq008706@svn.freebsd.org> From: Edwin Groothuis Date: Mon, 19 Jan 2009 11:10:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r187432 - user/edwin/top/top-3.8b1/contrib/top X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Jan 2009 11:10:31 -0000 Author: edwin Date: Mon Jan 19 11:10:02 2009 New Revision: 187432 URL: http://svn.freebsd.org/changeset/base/187432 Log: On mentors request, remove extra spaces after Swap: and Mem: Modified: user/edwin/top/top-3.8b1/contrib/top/layout.h Modified: user/edwin/top/top-3.8b1/contrib/top/layout.h ============================================================================== --- user/edwin/top/top-3.8b1/contrib/top/layout.h Mon Jan 19 10:44:16 2009 (r187431) +++ user/edwin/top/top-3.8b1/contrib/top/layout.h Mon Jan 19 11:10:02 2009 (r187432) @@ -61,9 +61,9 @@ #define Y_CPUSTATES 2 #define X_KERNEL 8 #define Y_KERNEL 3 -#define X_MEM 8 +#define X_MEM 5 #define Y_MEM 3 -#define X_SWAP 8 +#define X_SWAP 6 #define Y_SWAP 4 #define Y_MESSAGE 4 #define X_HEADER 0 From owner-svn-src-user@FreeBSD.ORG Tue Jan 20 21:51:01 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 76C2010656C5; Tue, 20 Jan 2009 21:51:01 +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 66C318FC0C; Tue, 20 Jan 2009 21:51:01 +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 n0KLp1PU057536; Tue, 20 Jan 2009 21:51:01 GMT (envelope-from sam@svn.freebsd.org) Received: (from sam@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n0KLp18N057535; Tue, 20 Jan 2009 21:51:01 GMT (envelope-from sam@svn.freebsd.org) Message-Id: <200901202151.n0KLp18N057535@svn.freebsd.org> From: Sam Leffler Date: Tue, 20 Jan 2009 21:51:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r187487 - user/sam/wifi/sys/net80211 X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Jan 2009 21:51:02 -0000 Author: sam Date: Tue Jan 20 21:51:01 2009 New Revision: 187487 URL: http://svn.freebsd.org/changeset/base/187487 Log: fill in ieee channel #'s and max tx power for drivers that work exclusively with frequencies; this mimics how ieee80211_setregdomain works Modified: user/sam/wifi/sys/net80211/ieee80211.c Modified: user/sam/wifi/sys/net80211/ieee80211.c ============================================================================== --- user/sam/wifi/sys/net80211/ieee80211.c Tue Jan 20 21:37:41 2009 (r187486) +++ user/sam/wifi/sys/net80211/ieee80211.c Tue Jan 20 21:51:01 2009 (r187487) @@ -126,6 +126,21 @@ ieee80211_chan_init(struct ieee80211com for (i = 0; i < ic->ic_nchans; i++) { c = &ic->ic_channels[i]; KASSERT(c->ic_flags != 0, ("channel with no flags")); + /* + * Help drivers that work only with frequencies by filling + * in IEEE channel #'s if not already calculated. Note this + * mimics similar work done in ieee80211_setregdomain when + * changing regulatory state. + */ + if (c->ic_ieee == 0) + c->ic_ieee = ieee80211_mhz2ieee(c->ic_freq,c->ic_flags); + if (IEEE80211_IS_CHAN_HT40(c) && c->ic_extieee == 0) + c->ic_extieee = ieee80211_mhz2ieee(c->ic_freq + + (IEEE80211_IS_CHAN_HT40U(c) ? 20 : -20), + c->ic_flags); + /* default max tx power to max regulatory */ + if (c->ic_maxpower == 0) + c->ic_maxpower = 2*c->ic_maxregpower; setbit(ic->ic_chan_avail, c->ic_ieee); /* * Identify mode capabilities. From owner-svn-src-user@FreeBSD.ORG Tue Jan 20 21:54:02 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6DA691065670; Tue, 20 Jan 2009 21:54:02 +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 5E70A8FC08; Tue, 20 Jan 2009 21:54:02 +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 n0KLs2Wr057621; Tue, 20 Jan 2009 21:54:02 GMT (envelope-from sam@svn.freebsd.org) Received: (from sam@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n0KLs2Yq057620; Tue, 20 Jan 2009 21:54:02 GMT (envelope-from sam@svn.freebsd.org) Message-Id: <200901202154.n0KLs2Yq057620@svn.freebsd.org> From: Sam Leffler Date: Tue, 20 Jan 2009 21:54:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r187488 - user/sam/wifi/sys/net80211 X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Jan 2009 21:54:02 -0000 Author: sam Date: Tue Jan 20 21:54:02 2009 New Revision: 187488 URL: http://svn.freebsd.org/changeset/base/187488 Log: Extend channel definition with: o max antenna gain o driver private opaque data Note this grows the size of a channel to 16 bytes (1 byte unallocated); which makes the default channel table 4Kbytes (up from 3Kbytes). The driver private data might be shrunk to a byte. Modified: user/sam/wifi/sys/net80211/_ieee80211.h Modified: user/sam/wifi/sys/net80211/_ieee80211.h ============================================================================== --- user/sam/wifi/sys/net80211/_ieee80211.h Tue Jan 20 21:51:01 2009 (r187487) +++ user/sam/wifi/sys/net80211/_ieee80211.h Tue Jan 20 21:54:02 2009 (r187488) @@ -135,6 +135,9 @@ struct ieee80211_channel { int8_t ic_minpower; /* minimum tx power in .5 dBm */ uint8_t ic_state; /* dynamic state */ uint8_t ic_extieee; /* HT40 extension channel number */ + int8_t ic_maxantgain; /* maximum antenna gain in .5 dBm */ + uint8_t ic_pad; + uint16_t ic_devdata; /* opaque device/driver data */ }; #define IEEE80211_CHAN_MAX 256 From owner-svn-src-user@FreeBSD.ORG Tue Jan 20 21:57:07 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 92FF6106564A; Tue, 20 Jan 2009 21:57:07 +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 835088FC0C; Tue, 20 Jan 2009 21:57:07 +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 n0KLv7Ou057723; Tue, 20 Jan 2009 21:57:07 GMT (envelope-from sam@svn.freebsd.org) Received: (from sam@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n0KLv7lX057722; Tue, 20 Jan 2009 21:57:07 GMT (envelope-from sam@svn.freebsd.org) Message-Id: <200901202157.n0KLv7lX057722@svn.freebsd.org> From: Sam Leffler Date: Tue, 20 Jan 2009 21:57:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r187489 - user/sam/wifi/sys/net80211 X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Jan 2009 21:57:07 -0000 Author: sam Date: Tue Jan 20 21:57:07 2009 New Revision: 187489 URL: http://svn.freebsd.org/changeset/base/187489 Log: o add country codes from Atheros regulatory; these are not listed in the ISO tables, mark them accordingly o add sku's for handling 900MHz cards o add opaque struct defs and change []'s to *'s so this file can be included w/o requiring all of net80211 to be pulled in Modified: user/sam/wifi/sys/net80211/ieee80211_regdomain.h Modified: user/sam/wifi/sys/net80211/ieee80211_regdomain.h ============================================================================== --- user/sam/wifi/sys/net80211/ieee80211_regdomain.h Tue Jan 20 21:54:02 2009 (r187488) +++ user/sam/wifi/sys/net80211/ieee80211_regdomain.h Tue Jan 20 21:57:07 2009 (r187489) @@ -142,11 +142,6 @@ enum ISOCountryCode { CTRY_ITALY = 380, /* Italy */ CTRY_JAMAICA = 388, /* Jamaica */ CTRY_JAPAN = 392, /* Japan */ - CTRY_JAPAN1 = 393, /* Japan (JP1) */ - CTRY_JAPAN2 = 394, /* Japan (JP0) */ - CTRY_JAPAN3 = 395, /* Japan (JP1-1) */ - CTRY_JAPAN4 = 396, /* Japan (JE1) */ - CTRY_JAPAN5 = 397, /* Japan (JE2) */ CTRY_JORDAN = 400, /* Jordan */ CTRY_KAZAKHSTAN = 398, /* Kazakhstan */ CTRY_KENYA = 404, /* Kenya */ @@ -209,6 +204,35 @@ enum ISOCountryCode { CTRY_VIET_NAM = 704, /* Viet Nam */ CTRY_YEMEN = 887, /* Yemen */ CTRY_ZIMBABWE = 716, /* Zimbabwe */ + + /* NB: from here down not listed in 3166; they come from Atheros */ + CTRY_UNITED_STATES_FCC49 = 842, /* United States (Public Safety)*/ + CTRY_KOREA_ROC3 = 412, /* South Korea */ + + CTRY_JAPAN1 = 393, /* Japan (JP1) */ + CTRY_JAPAN2 = 394, /* Japan (JP0) */ + CTRY_JAPAN3 = 395, /* Japan (JP1-1) */ + CTRY_JAPAN4 = 396, /* Japan (JE1) */ + CTRY_JAPAN5 = 397, /* Japan (JE2) */ + CTRY_JAPAN6 = 399, /* Japan (JP6) */ + CTRY_JAPAN7 = 4007, /* Japan (J7) */ + CTRY_JAPAN8 = 4008, /* Japan (J8) */ + CTRY_JAPAN9 = 4009, /* Japan (J9) */ + CTRY_JAPAN10 = 4010, /* Japan (J10) */ + CTRY_JAPAN11 = 4011, /* Japan (J11) */ + CTRY_JAPAN12 = 4012, /* Japan (J12) */ + CTRY_JAPAN13 = 4013, /* Japan (J13) */ + CTRY_JAPAN14 = 4014, /* Japan (J14) */ + CTRY_JAPAN15 = 4015, /* Japan (J15) */ + CTRY_JAPAN16 = 4016, /* Japan (J16) */ + CTRY_JAPAN17 = 4017, /* Japan (J17) */ + CTRY_JAPAN18 = 4018, /* Japan (J18) */ + CTRY_JAPAN19 = 4019, /* Japan (J19) */ + CTRY_JAPAN20 = 4020, /* Japan (J20) */ + CTRY_JAPAN21 = 4021, /* Japan (J21) */ + CTRY_JAPAN22 = 4022, /* Japan (J22) */ + CTRY_JAPAN23 = 4023, /* Japan (J23) */ + CTRY_JAPAN24 = 4024, /* Japan (J24) */ }; enum RegdomainCode { @@ -225,21 +249,30 @@ enum RegdomainCode { SKU_APAC3 = 0x5d, /* Asia Pacific w/o ISM band */ SKU_ROW = 0x81, /* China/Taiwan/Rest of World */ SKU_NONE = 0xf0, /* "Region Free" */ - SKU_DEBUG = 0x1ff + SKU_DEBUG = 0x1ff, + + /* NB: from here down private */ + SKU_SR9 = 0x0298, /* Ubiquiti SR9 (900MHz/GSM) */ + SKU_XR9 = 0x0299, /* Ubiquiti XR9 (900MHz/GSM) */ + SKU_GZ901 = 0x029a, /* Zcomax GZ-901 (900MHz/GSM) */ }; #if defined(__KERNEL__) || defined(_KERNEL) #define CTRY_DEBUG 0x1ff /* debug */ #define CTRY_DEFAULT 0 /* default */ +struct ieee80211com; void ieee80211_regdomain_attach(struct ieee80211com *); void ieee80211_regdomain_detach(struct ieee80211com *); +struct ieee80211vap; void ieee80211_regdomain_vattach(struct ieee80211vap *); void ieee80211_regdomain_vdetach(struct ieee80211vap *); +struct ieee80211_regdomain; int ieee80211_init_channels(struct ieee80211com *, const struct ieee80211_regdomain *, const uint8_t bands[]); -void ieee80211_sort_channels(struct ieee80211_channel chans[], int nchans); +struct ieee80211_channel; +void ieee80211_sort_channels(struct ieee80211_channel *chans, int nchans); struct ieee80211_appie; struct ieee80211_appie *ieee80211_alloc_countryie(struct ieee80211com *); struct ieee80211_regdomain_req; From owner-svn-src-user@FreeBSD.ORG Tue Jan 20 22:01:08 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 811341065676; Tue, 20 Jan 2009 22:01:08 +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 70D608FC14; Tue, 20 Jan 2009 22:01:08 +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 n0KM18LL057894; Tue, 20 Jan 2009 22:01:08 GMT (envelope-from sam@svn.freebsd.org) Received: (from sam@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n0KM18lY057891; Tue, 20 Jan 2009 22:01:08 GMT (envelope-from sam@svn.freebsd.org) Message-Id: <200901202201.n0KM18lY057891@svn.freebsd.org> From: Sam Leffler Date: Tue, 20 Jan 2009 22:01:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r187491 - user/sam/wifi/sys/net80211 X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Jan 2009 22:01:09 -0000 Author: sam Date: Tue Jan 20 22:01:08 2009 New Revision: 187491 URL: http://svn.freebsd.org/changeset/base/187491 Log: Add ieee80211_notify_reghint to broadcast regulatory information to user space; this may be used to handle initial card setup for drivers that can provide proper regulatory data like an ISO country code--we want this done in user space because that's where the regdomain tables are. Note this may not be used; it's likely we can do what we need w/ existing mechanisms on device discovery. Modified: user/sam/wifi/sys/net80211/ieee80211_freebsd.c user/sam/wifi/sys/net80211/ieee80211_freebsd.h user/sam/wifi/sys/net80211/ieee80211_proto.h Modified: user/sam/wifi/sys/net80211/ieee80211_freebsd.c ============================================================================== --- user/sam/wifi/sys/net80211/ieee80211_freebsd.c Tue Jan 20 22:00:19 2009 (r187490) +++ user/sam/wifi/sys/net80211/ieee80211_freebsd.c Tue Jan 20 22:01:08 2009 (r187491) @@ -682,6 +682,18 @@ ieee80211_notify_country(struct ieee8021 } void +ieee80211_notify_reghint(struct ieee80211com *ic, int sku, int cc) +{ + struct ifnet *ifp = ic->ic_ifp; + struct ieee80211_reghint_event iev; + + memset(&iev, 0, sizeof(iev)); + iev.iev_sku = sku; + iev.iev_cc = cc; + rt_ieee80211msg(ifp, RTM_IEEE80211_REGHINT, &iev, sizeof(iev)); +} + +void ieee80211_notify_radio(struct ieee80211com *ic, int state) { struct ifnet *ifp = ic->ic_ifp; Modified: user/sam/wifi/sys/net80211/ieee80211_freebsd.h ============================================================================== --- user/sam/wifi/sys/net80211/ieee80211_freebsd.h Tue Jan 20 22:00:19 2009 (r187490) +++ user/sam/wifi/sys/net80211/ieee80211_freebsd.h Tue Jan 20 22:01:08 2009 (r187491) @@ -461,13 +461,18 @@ struct ieee80211_deauth_event { struct ieee80211_country_event { uint8_t iev_addr[6]; - uint8_t iev_cc[2]; /* ISO country code */ + uint8_t iev_cc[2]; /* ISO 3166 country code string */ }; struct ieee80211_radio_event { uint8_t iev_state; /* 1 on, 0 off */ }; +struct ieee80211_reghint_event { + uint16_t iev_sku; /* SKU */ + uint16_t iev_cc; /* ISO 3166 country code */ +}; + #define RTM_IEEE80211_ASSOC 100 /* station associate (bss mode) */ #define RTM_IEEE80211_REASSOC 101 /* station re-associate (bss mode) */ #define RTM_IEEE80211_DISASSOC 102 /* station disassociate (bss mode) */ @@ -485,6 +490,7 @@ struct ieee80211_radio_event { #define RTM_IEEE80211_AUTH 114 /* station authenticate (ap mode) */ #define RTM_IEEE80211_COUNTRY 115 /* discovered country code (sta mode) */ #define RTM_IEEE80211_RADIO 116 /* RF kill switch state change */ +#define RTM_IEEE80211_REGHINT 117 /* regulatory hint from system */ /* * Structure prepended to raw packets sent through the bpf Modified: user/sam/wifi/sys/net80211/ieee80211_proto.h ============================================================================== --- user/sam/wifi/sys/net80211/ieee80211_proto.h Tue Jan 20 22:00:19 2009 (r187490) +++ user/sam/wifi/sys/net80211/ieee80211_proto.h Tue Jan 20 22:01:08 2009 (r187491) @@ -362,5 +362,6 @@ void ieee80211_notify_node_deauth(struct void ieee80211_notify_node_auth(struct ieee80211_node *); void ieee80211_notify_country(struct ieee80211vap *, const uint8_t [], const uint8_t cc[2]); +void ieee80211_notify_reghint(struct ieee80211com *, int sku, int cc); void ieee80211_notify_radio(struct ieee80211com *, int); #endif /* _NET80211_IEEE80211_PROTO_H_ */ From owner-svn-src-user@FreeBSD.ORG Tue Jan 20 22:04:31 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2CE0D10657D2; Tue, 20 Jan 2009 22:04:31 +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 0F8AF8FC23; Tue, 20 Jan 2009 22:04:31 +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 n0KM4UOT057990; Tue, 20 Jan 2009 22:04:30 GMT (envelope-from sam@svn.freebsd.org) Received: (from sam@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n0KM4UR6057988; Tue, 20 Jan 2009 22:04:30 GMT (envelope-from sam@svn.freebsd.org) Message-Id: <200901202204.n0KM4UR6057988@svn.freebsd.org> From: Sam Leffler Date: Tue, 20 Jan 2009 22:04:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r187492 - user/sam/wifi/sys/net80211 X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Jan 2009 22:04:35 -0000 Author: sam Date: Tue Jan 20 22:04:30 2009 New Revision: 187492 URL: http://svn.freebsd.org/changeset/base/187492 Log: Change ic_getradiocaps driver callback to include the max # channels so callers know the size of the array passed down (previously this was fixed to be IEEE80211_CHAN_MAX). Modified: user/sam/wifi/sys/net80211/ieee80211_regdomain.c user/sam/wifi/sys/net80211/ieee80211_var.h Modified: user/sam/wifi/sys/net80211/ieee80211_regdomain.c ============================================================================== --- user/sam/wifi/sys/net80211/ieee80211_regdomain.c Tue Jan 20 22:01:08 2009 (r187491) +++ user/sam/wifi/sys/net80211/ieee80211_regdomain.c Tue Jan 20 22:04:30 2009 (r187492) @@ -44,12 +44,14 @@ __FBSDID("$FreeBSD$"); #include static void -null_getradiocaps(struct ieee80211com *ic, int *n, struct ieee80211_channel *c) +null_getradiocaps(struct ieee80211com *ic, int maxchan, + int *n, struct ieee80211_channel *c) { /* just feed back the current channel list */ - *n = ic->ic_nchans; - memcpy(c, ic->ic_channels, - ic->ic_nchans*sizeof(struct ieee80211_channel)); + *n = ic->ic_nchans; /* XXX return count copied? */ + if (maxchan > ic->ic_nchans) + maxchan = ic->ic_nchans; + memcpy(c, ic->ic_channels, maxchan*sizeof(struct ieee80211_channel)); } static int @@ -69,7 +71,7 @@ ieee80211_regdomain_attach(struct ieee80 ic->ic_regdomain.location = ' '; /* both */ ic->ic_regdomain.isocc[0] = 'U'; /* XXX */ ic->ic_regdomain.isocc[1] = 'S'; /* XXX */ - /* XXX? too late to setup default channel list */ + /* NB: driver calls ieee80211_init_channels or similar */ } ic->ic_getradiocaps = null_getradiocaps; ic->ic_setregdomain = null_setregdomain; Modified: user/sam/wifi/sys/net80211/ieee80211_var.h ============================================================================== --- user/sam/wifi/sys/net80211/ieee80211_var.h Tue Jan 20 22:01:08 2009 (r187491) +++ user/sam/wifi/sys/net80211/ieee80211_var.h Tue Jan 20 22:04:30 2009 (r187492) @@ -208,7 +208,7 @@ struct ieee80211com { ieee80211vap_attach ic_vattach[IEEE80211_OPMODE_MAX]; /* return hardware/radio capabilities */ void (*ic_getradiocaps)(struct ieee80211com *, - int *, struct ieee80211_channel []); + int, int *, struct ieee80211_channel []); /* check and/or prepare regdomain state change */ int (*ic_setregdomain)(struct ieee80211com *, struct ieee80211_regdomain *, From owner-svn-src-user@FreeBSD.ORG Tue Jan 20 22:06:07 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E33C61065690; Tue, 20 Jan 2009 22:06:07 +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 D25ED8FC1B; Tue, 20 Jan 2009 22:06:07 +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 n0KM67mY058064; Tue, 20 Jan 2009 22:06:07 GMT (envelope-from sam@svn.freebsd.org) Received: (from sam@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n0KM67xX058062; Tue, 20 Jan 2009 22:06:07 GMT (envelope-from sam@svn.freebsd.org) Message-Id: <200901202206.n0KM67xX058062@svn.freebsd.org> From: Sam Leffler Date: Tue, 20 Jan 2009 22:06:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r187493 - user/sam/wifi/sys/net80211 X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Jan 2009 22:06:08 -0000 Author: sam Date: Tue Jan 20 22:06:07 2009 New Revision: 187493 URL: http://svn.freebsd.org/changeset/base/187493 Log: Change ioctl's that pass channel lists in/out to handle variable-size arrays instead of a fixed (compile-time) value. We do this in a way that maintains binary compatibility. Modified: user/sam/wifi/sys/net80211/ieee80211_ioctl.c user/sam/wifi/sys/net80211/ieee80211_ioctl.h Modified: user/sam/wifi/sys/net80211/ieee80211_ioctl.c ============================================================================== --- user/sam/wifi/sys/net80211/ieee80211_ioctl.c Tue Jan 20 22:04:30 2009 (r187492) +++ user/sam/wifi/sys/net80211/ieee80211_ioctl.c Tue Jan 20 22:06:07 2009 (r187493) @@ -695,21 +695,27 @@ ieee80211_ioctl_getdevcaps(struct ieee80 { struct ieee80211_devcaps_req *dc; struct ieee80211req_chaninfo *ci; - int error; + int maxchans, error; - if (ireq->i_len != sizeof(struct ieee80211_devcaps_req)) - return EINVAL; - dc = (struct ieee80211_devcaps_req *) malloc( - sizeof(struct ieee80211_devcaps_req), M_TEMP, M_NOWAIT | M_ZERO); + maxchans = 1 + ((ireq->i_len - sizeof(struct ieee80211_devcaps_req)) / + sizeof(struct ieee80211_channel)); + /* NB: require 1 so we know ic_nchans is accessible */ + if (maxchans < 1) + return EINVAL; + /* constrain max request size, 2K channels is ~24Kbytes */ + if (maxchans > 2048) + maxchans = 2048; + dc = (struct ieee80211_devcaps_req *) + malloc(IEEE80211_DEVCAPS_SIZE(maxchans), M_TEMP, M_NOWAIT | M_ZERO); if (dc == NULL) return ENOMEM; dc->dc_drivercaps = ic->ic_caps; dc->dc_cryptocaps = ic->ic_cryptocaps; dc->dc_htcaps = ic->ic_htcaps; ci = &dc->dc_chaninfo; - ic->ic_getradiocaps(ic, &ci->ic_nchans, ci->ic_chans); + ic->ic_getradiocaps(ic, maxchans, &ci->ic_nchans, ci->ic_chans); ieee80211_sort_channels(ci->ic_chans, ci->ic_nchans); - error = copyout(dc, ireq->i_data, sizeof(*dc)); + error = copyout(dc, ireq->i_data, IEEE80211_DEVCAPS_SPACE(dc)); free(dc, M_TEMP); return error; } @@ -1992,17 +1998,34 @@ ieee80211_ioctl_setregdomain(struct ieee const struct ieee80211req *ireq) { struct ieee80211_regdomain_req *reg; - int error; + int nchans, error; - if (ireq->i_len != sizeof(struct ieee80211_regdomain_req)) + nchans = 1 + ((ireq->i_len - sizeof(struct ieee80211_regdomain_req)) / + sizeof(struct ieee80211_channel)); + if (!(1 <= nchans && nchans <= IEEE80211_CHAN_MAX)) { + IEEE80211_DPRINTF(vap, IEEE80211_MSG_IOCTL, + "%s: bad # chans, i_len %d nchans %d\n", __func__, + ireq->i_len, nchans); return EINVAL; - reg = (struct ieee80211_regdomain_req *) malloc( - sizeof(struct ieee80211_regdomain_req), M_TEMP, M_NOWAIT); - if (reg == NULL) + } + reg = (struct ieee80211_regdomain_req *) + malloc(IEEE80211_REGDOMAIN_SIZE(nchans), M_TEMP, M_NOWAIT); + if (reg == NULL) { + IEEE80211_DPRINTF(vap, IEEE80211_MSG_IOCTL, + "%s: no memory, nchans %d\n", __func__, nchans); return ENOMEM; - error = copyin(ireq->i_data, reg, sizeof(*reg)); - if (error == 0) - error = ieee80211_setregdomain(vap, reg); + } + error = copyin(ireq->i_data, reg, IEEE80211_REGDOMAIN_SIZE(nchans)); + if (error == 0) { + /* NB: validate inline channel count against storage size */ + if (reg->chaninfo.ic_nchans != nchans) { + IEEE80211_DPRINTF(vap, IEEE80211_MSG_IOCTL, + "%s: chan cnt mismatch, %d != %d\n", __func__, + reg->chaninfo.ic_nchans, nchans); + error = EINVAL; + } else + error = ieee80211_setregdomain(vap, reg); + } free(reg, M_TEMP); return (error == 0 ? ENETRESET : error); Modified: user/sam/wifi/sys/net80211/ieee80211_ioctl.h ============================================================================== --- user/sam/wifi/sys/net80211/ieee80211_ioctl.h Tue Jan 20 22:04:30 2009 (r187492) +++ user/sam/wifi/sys/net80211/ieee80211_ioctl.h Tue Jan 20 22:06:07 2009 (r187493) @@ -313,8 +313,13 @@ struct ieee80211req_chanlist { */ struct ieee80211req_chaninfo { u_int ic_nchans; - struct ieee80211_channel ic_chans[IEEE80211_CHAN_MAX]; + struct ieee80211_channel ic_chans[1]; /* NB: variable length */ }; +#define IEEE80211_CHANINFO_SIZE(_nchan) \ + (sizeof(struct ieee80211req_chaninfo) + \ + (((_nchan)-1) * sizeof(struct ieee80211_channel))) +#define IEEE80211_CHANINFO_SPACE(_ci) \ + IEEE80211_CHANINFO_SIZE((_ci)->ic_nchans) /* * Retrieve the WPA/RSN information element for an associated station. @@ -463,6 +468,11 @@ struct ieee80211_regdomain_req { struct ieee80211_regdomain rd; struct ieee80211req_chaninfo chaninfo; }; +#define IEEE80211_REGDOMAIN_SIZE(_nchan) \ + (sizeof(struct ieee80211_regdomain_req) + \ + (((_nchan)-1) * sizeof(struct ieee80211_channel))) +#define IEEE80211_REGDOMAIN_SPACE(_req) \ + IEEE80211_REGDOMAIN_SIZE((_req)->chaninfo.ic_nchans) /* * Get driver capabilities. Driver, hardware crypto, and @@ -475,6 +485,11 @@ struct ieee80211_devcaps_req { uint32_t dc_htcaps; /* HT/802.11n support */ struct ieee80211req_chaninfo dc_chaninfo; }; +#define IEEE80211_DEVCAPS_SIZE(_nchan) \ + (sizeof(struct ieee80211_devcaps_req) + \ + (((_nchan)-1) * sizeof(struct ieee80211_channel))) +#define IEEE80211_DEVCAPS_SPACE(_dc) \ + IEEE80211_DEVCAPS_SIZE((_dc)->dc_chaninfo.ic_nchans) struct ieee80211_chanswitch_req { struct ieee80211_channel csa_chan; /* new channel */ From owner-svn-src-user@FreeBSD.ORG Tue Jan 20 23:06:07 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6E546106564A; Tue, 20 Jan 2009 23:06:07 +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 5EBCF8FC0C; Tue, 20 Jan 2009 23:06:07 +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 n0KN679E059738; Tue, 20 Jan 2009 23:06:07 GMT (envelope-from sam@svn.freebsd.org) Received: (from sam@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n0KN67uN059736; Tue, 20 Jan 2009 23:06:07 GMT (envelope-from sam@svn.freebsd.org) Message-Id: <200901202306.n0KN67uN059736@svn.freebsd.org> From: Sam Leffler Date: Tue, 20 Jan 2009 23:06:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r187502 - user/sam/wifi/sys/net80211 X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Jan 2009 23:06:07 -0000 Author: sam Date: Tue Jan 20 23:06:06 2009 New Revision: 187502 URL: http://svn.freebsd.org/changeset/base/187502 Log: remove dependency on max #'s channels for IEEE80211_IOC_CHANLIST (set) Modified: user/sam/wifi/sys/net80211/ieee80211_ioctl.c user/sam/wifi/sys/net80211/ieee80211_ioctl.h Modified: user/sam/wifi/sys/net80211/ieee80211_ioctl.c ============================================================================== --- user/sam/wifi/sys/net80211/ieee80211_ioctl.c Tue Jan 20 22:49:49 2009 (r187501) +++ user/sam/wifi/sys/net80211/ieee80211_ioctl.c Tue Jan 20 23:06:06 2009 (r187502) @@ -1571,17 +1571,21 @@ static __noinline int ieee80211_ioctl_setchanlist(struct ieee80211vap *vap, struct ieee80211req *ireq) { struct ieee80211com *ic = vap->iv_ic; - struct ieee80211req_chanlist list; - u_char chanlist[IEEE80211_CHAN_BYTES]; - int i, nchan, error; + uint8_t *chanlist, *list; + int i, nchan, maxchan, error; - if (ireq->i_len != sizeof(list)) - return EINVAL; - error = copyin(ireq->i_data, &list, sizeof(list)); + if (ireq->i_len > sizeof(ic->ic_chan_active)) + ireq->i_len = sizeof(ic->ic_chan_active); + list = malloc(ireq->i_len + IEEE80211_CHAN_BYTES, M_TEMP, + M_NOWAIT | M_ZERO); + if (list == NULL) + return ENOMEM; + error = copyin(ireq->i_data, list, ireq->i_len); if (error) return error; - memset(chanlist, 0, sizeof(chanlist)); nchan = 0; + chanlist = list + ireq->i_len; /* NB: zero'd already */ + maxchan = ireq->i_len * NBBY; for (i = 0; i < ic->ic_nchans; i++) { const struct ieee80211_channel *c = &ic->ic_channels[i]; /* @@ -1589,7 +1593,7 @@ ieee80211_ioctl_setchanlist(struct ieee8 * available channels so users can do things like specify * 1-255 to get all available channels. */ - if (isset(list.ic_channels, c->ic_ieee)) { + if (c->ic_ieee < maxchan && isset(list, c->ic_ieee)) { setbit(chanlist, c->ic_ieee); nchan++; } @@ -1599,8 +1603,9 @@ ieee80211_ioctl_setchanlist(struct ieee8 if (ic->ic_bsschan != IEEE80211_CHAN_ANYC && /* XXX */ isclr(chanlist, ic->ic_bsschan->ic_ieee)) ic->ic_bsschan = IEEE80211_CHAN_ANYC; - memcpy(ic->ic_chan_active, chanlist, sizeof(ic->ic_chan_active)); + memcpy(ic->ic_chan_active, chanlist, IEEE80211_CHAN_BYTES); ieee80211_scan_flush(vap); + free(list, M_TEMP); return ENETRESET; } Modified: user/sam/wifi/sys/net80211/ieee80211_ioctl.h ============================================================================== --- user/sam/wifi/sys/net80211/ieee80211_ioctl.h Tue Jan 20 22:49:49 2009 (r187501) +++ user/sam/wifi/sys/net80211/ieee80211_ioctl.h Tue Jan 20 23:06:06 2009 (r187502) @@ -299,13 +299,13 @@ struct ieee80211req_maclist { }; /* - * Set the active channel list. Note this list is - * intersected with the available channel list in - * calculating the set of channels actually used in - * scanning. + * Set the active channel list by IEEE channel #: each channel + * to be marked active is set in a bit vector. Note this list is + * intersected with the available channel list in calculating + * the set of channels actually used in scanning. */ struct ieee80211req_chanlist { - uint8_t ic_channels[IEEE80211_CHAN_BYTES]; + uint8_t ic_channels[32]; /* NB: can be variable length */ }; /* From owner-svn-src-user@FreeBSD.ORG Tue Jan 20 23:10:17 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3E8F410656DF; Tue, 20 Jan 2009 23:10:17 +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 147B78FC24; Tue, 20 Jan 2009 23:10:17 +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 n0KNAGKf059864; Tue, 20 Jan 2009 23:10:16 GMT (envelope-from sam@svn.freebsd.org) Received: (from sam@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n0KNAGnP059863; Tue, 20 Jan 2009 23:10:16 GMT (envelope-from sam@svn.freebsd.org) Message-Id: <200901202310.n0KNAGnP059863@svn.freebsd.org> From: Sam Leffler Date: Tue, 20 Jan 2009 23:10:16 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r187503 - user/sam/wifi/sbin/ifconfig X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Jan 2009 23:10:17 -0000 Author: sam Date: Tue Jan 20 23:10:16 2009 New Revision: 187503 URL: http://svn.freebsd.org/changeset/base/187503 Log: merge r187342: fix 1/2 and 1/4 width channel handling for non-GSM operation Modified: user/sam/wifi/sbin/ifconfig/ (props changed) user/sam/wifi/sbin/ifconfig/ifieee80211.c Modified: user/sam/wifi/sbin/ifconfig/ifieee80211.c ============================================================================== --- user/sam/wifi/sbin/ifconfig/ifieee80211.c Tue Jan 20 23:06:06 2009 (r187502) +++ user/sam/wifi/sbin/ifconfig/ifieee80211.c Tue Jan 20 23:10:16 2009 (r187503) @@ -1782,7 +1782,7 @@ regdomain_addchans(struct ieee80211req_c continue; } if ((flags & IEEE80211_CHAN_QUARTER) && - ((chanFlags & IEEE80211_CHAN_HALF) == 0 && + ((chanFlags & IEEE80211_CHAN_QUARTER) == 0 && (flags & IEEE80211_CHAN_GSM) == 0)) { if (verbose) printf("%u: skip, device does not support quarter-rate channels\n", freq); @@ -1876,12 +1876,26 @@ regdomain_makechannels( if (!LIST_EMPTY(&rd->bands_11b)) regdomain_addchans(ci, &rd->bands_11b, reg, IEEE80211_CHAN_B, &dc->dc_chaninfo); - if (!LIST_EMPTY(&rd->bands_11g)) + if (!LIST_EMPTY(&rd->bands_11g)) { regdomain_addchans(ci, &rd->bands_11g, reg, IEEE80211_CHAN_G, &dc->dc_chaninfo); - if (!LIST_EMPTY(&rd->bands_11a)) + regdomain_addchans(ci, &rd->bands_11g, reg, + IEEE80211_CHAN_G | IEEE80211_CHAN_HALF, + &dc->dc_chaninfo); + regdomain_addchans(ci, &rd->bands_11g, reg, + IEEE80211_CHAN_G | IEEE80211_CHAN_QUARTER, + &dc->dc_chaninfo); + } + if (!LIST_EMPTY(&rd->bands_11a)) { regdomain_addchans(ci, &rd->bands_11a, reg, IEEE80211_CHAN_A, &dc->dc_chaninfo); + regdomain_addchans(ci, &rd->bands_11a, reg, + IEEE80211_CHAN_A | IEEE80211_CHAN_HALF, + &dc->dc_chaninfo); + regdomain_addchans(ci, &rd->bands_11a, reg, + IEEE80211_CHAN_A | IEEE80211_CHAN_QUARTER, + &dc->dc_chaninfo); + } if (!LIST_EMPTY(&rd->bands_11na)) { regdomain_addchans(ci, &rd->bands_11na, reg, IEEE80211_CHAN_A | IEEE80211_CHAN_HT20, From owner-svn-src-user@FreeBSD.ORG Tue Jan 20 23:20:09 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id ED1F6106566B; Tue, 20 Jan 2009 23:20:09 +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 DC8588FC13; Tue, 20 Jan 2009 23:20:09 +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 n0KNK99W060074; Tue, 20 Jan 2009 23:20:09 GMT (envelope-from sam@svn.freebsd.org) Received: (from sam@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n0KNK92v060073; Tue, 20 Jan 2009 23:20:09 GMT (envelope-from sam@svn.freebsd.org) Message-Id: <200901202320.n0KNK92v060073@svn.freebsd.org> From: Sam Leffler Date: Tue, 20 Jan 2009 23:20:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r187504 - user/sam/wifi/sbin/ifconfig X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Jan 2009 23:20:10 -0000 Author: sam Date: Tue Jan 20 23:20:09 2009 New Revision: 187504 URL: http://svn.freebsd.org/changeset/base/187504 Log: Remove assumptions about the max # channels: all channel list data structures are now allocated to hold MAXCHAN entries (1536). This, for example, allows the kernel to return > IEEE80211_CHAN_MAX entries for calls like IEEE80211_IOC_DEVCAPS. Note that with the size of struct ieee80211_channel now 16 bytes 1.5K entries is near the max we can pass through the ioctl api's because i_len is 16-bits. However that should be sufficient for the forseeable future as the max channel list that currently is passed back has 550 entries and before that grows much more we're likely to switch to an alternate scheme for passing info back+forth. Modified: user/sam/wifi/sbin/ifconfig/ifieee80211.c Modified: user/sam/wifi/sbin/ifconfig/ifieee80211.c ============================================================================== --- user/sam/wifi/sbin/ifconfig/ifieee80211.c Tue Jan 20 23:10:16 2009 (r187503) +++ user/sam/wifi/sbin/ifconfig/ifieee80211.c Tue Jan 20 23:20:09 2009 (r187504) @@ -79,6 +79,7 @@ #include +#include #include #include #include @@ -119,6 +120,8 @@ #define IEEE80211_NODE_RIFS 0x4000 /* RIFS enabled */ #endif +#define MAXCHAN 1536 /* max 1.5K channels */ + #define MAXCOL 78 static int col; static char spacer; @@ -145,7 +148,7 @@ static void print_channels(int, const st static void regdomain_makechannels(struct ieee80211_regdomain_req *, const struct ieee80211_devcaps_req *); -static struct ieee80211req_chaninfo chaninfo; +static struct ieee80211req_chaninfo *chaninfo; static struct ieee80211_regdomain regdomain; static int gotregdomain = 0; static struct ieee80211_roamparams_req roamparams; @@ -175,10 +178,14 @@ gethtconf(int s) static void getchaninfo(int s) { - if (chaninfo.ic_nchans != 0) + if (chaninfo != NULL) return; - if (get80211(s, IEEE80211_IOC_CHANINFO, &chaninfo, sizeof(chaninfo)) < 0) - errx(1, "unable to get channel information"); + chaninfo = malloc(IEEE80211_CHANINFO_SIZE(MAXCHAN)); + if (chaninfo == NULL) + errx(1, "no space for channel list"); + if (get80211(s, IEEE80211_IOC_CHANINFO, chaninfo, + IEEE80211_CHANINFO_SIZE(MAXCHAN)) < 0) + err(1, "unable to get channel information"); ifmr = ifmedia_getstate(s); gethtconf(s); } @@ -205,19 +212,19 @@ getregdata(void) static int canpromote(int i, int from, int to) { - const struct ieee80211_channel *fc = &chaninfo.ic_chans[i]; + const struct ieee80211_channel *fc = &chaninfo->ic_chans[i]; int j; if ((fc->ic_flags & from) != from) return i; /* NB: quick check exploiting ordering of chans w/ same frequency */ - if (i+1 < chaninfo.ic_nchans && - chaninfo.ic_chans[i+1].ic_freq == fc->ic_freq && - (chaninfo.ic_chans[i+1].ic_flags & to) == to) + if (i+1 < chaninfo->ic_nchans && + chaninfo->ic_chans[i+1].ic_freq == fc->ic_freq && + (chaninfo->ic_chans[i+1].ic_flags & to) == to) return i+1; /* brute force search in case channel list is not ordered */ - for (j = 0; j < chaninfo.ic_nchans; j++) { - const struct ieee80211_channel *tc = &chaninfo.ic_chans[j]; + for (j = 0; j < chaninfo->ic_nchans; j++) { + const struct ieee80211_channel *tc = &chaninfo->ic_chans[j]; if (j != i && tc->ic_freq == fc->ic_freq && (tc->ic_flags & to) == to) return j; @@ -287,13 +294,13 @@ mapfreq(struct ieee80211_channel *chan, { int i; - for (i = 0; i < chaninfo.ic_nchans; i++) { - const struct ieee80211_channel *c = &chaninfo.ic_chans[i]; + for (i = 0; i < chaninfo->ic_nchans; i++) { + const struct ieee80211_channel *c = &chaninfo->ic_chans[i]; if (c->ic_freq == freq && (c->ic_flags & flags) == flags) { if (flags == 0) { /* when ambiguous promote to ``best'' */ - c = &chaninfo.ic_chans[promote(i)]; + c = &chaninfo->ic_chans[promote(i)]; } *chan = *c; return; @@ -307,13 +314,13 @@ mapchan(struct ieee80211_channel *chan, { int i; - for (i = 0; i < chaninfo.ic_nchans; i++) { - const struct ieee80211_channel *c = &chaninfo.ic_chans[i]; + for (i = 0; i < chaninfo->ic_nchans; i++) { + const struct ieee80211_channel *c = &chaninfo->ic_chans[i]; if (c->ic_ieee == ieee && (c->ic_flags & flags) == flags) { if (flags == 0) { /* when ambiguous promote to ``best'' */ - c = &chaninfo.ic_chans[promote(i)]; + c = &chaninfo->ic_chans[promote(i)]; } *chan = *c; return; @@ -331,7 +338,7 @@ getcurchan(int s) int val; /* fall back to legacy ioctl */ if (get80211val(s, IEEE80211_IOC_CHANNEL, &val) < 0) - errx(-1, "cannot figure out current channel"); + err(-1, "cannot figure out current channel"); getchaninfo(s); mapchan(&curchan, val, 0); } @@ -370,7 +377,7 @@ getroam(int s) return; if (get80211(s, IEEE80211_IOC_ROAM, &roamparams, sizeof(roamparams)) < 0) - errx(1, "unable to get roaming parameters"); + err(1, "unable to get roaming parameters"); gotroam = 1; } @@ -388,7 +395,7 @@ gettxparams(int s) return; if (get80211(s, IEEE80211_IOC_TXPARAMS, &txparams, sizeof(txparams)) < 0) - errx(1, "unable to get transmit parameters"); + err(1, "unable to get transmit parameters"); gottxparams = 1; } @@ -406,23 +413,24 @@ getregdomain(int s) return; if (get80211(s, IEEE80211_IOC_REGDOMAIN, ®domain, sizeof(regdomain)) < 0) - errx(1, "unable to get regulatory domain info"); + err(1, "unable to get regulatory domain info"); gotregdomain = 1; } static void getdevcaps(int s, struct ieee80211_devcaps_req *dc) { - if (get80211(s, IEEE80211_IOC_DEVCAPS, dc, sizeof(*dc)) < 0) - errx(1, "unable to get device capabilities"); + if (get80211(s, IEEE80211_IOC_DEVCAPS, dc, + IEEE80211_DEVCAPS_SPACE(dc)) < 0) + err(1, "unable to get device capabilities"); } static void setregdomain_cb(int s, void *arg) { - struct ieee80211_regdomain_req req; + struct ieee80211_regdomain_req *req; struct ieee80211_regdomain *rd = arg; - struct ieee80211_devcaps_req dc; + struct ieee80211_devcaps_req *dc; struct regdata *rdp = getregdata(); if (rd->country != NO_COUNTRY) { @@ -462,34 +470,52 @@ setregdomain_cb(int s, void *arg) rp->name); } } - req.rd = *rd; /* * Fetch the device capabilities and calculate the * full set of netbands for which we request a new * channel list be constructed. Once that's done we * push the regdomain info + channel list to the kernel. */ - getdevcaps(s, &dc); + dc = malloc(IEEE80211_DEVCAPS_SIZE(MAXCHAN)); + if (dc == NULL) + errx(1, "no space for device capabilities"); + dc->dc_chaninfo.ic_nchans = MAXCHAN; + getdevcaps(s, dc); #if 0 if (verbose) { - printf("drivercaps: 0x%x\n", dc.dc_drivercaps); - printf("cryptocaps: 0x%x\n", dc.dc_cryptocaps); - printf("htcaps : 0x%x\n", dc.dc_htcaps); - memcpy(&chaninfo, &dc.dc_chaninfo, sizeof(chaninfo)); - print_channels(s, &dc.dc_chaninfo, 1/*allchans*/, 1/*verbose*/); + printf("drivercaps: 0x%x\n", dc->dc_drivercaps); + printf("cryptocaps: 0x%x\n", dc->dc_cryptocaps); + printf("htcaps : 0x%x\n", dc->dc_htcaps); + memcpy(chaninfo, &dc->dc_chaninfo, + IEEE80211_CHANINFO_SPACE(&dc->dc_chaninfo)); + print_channels(s, &dc->dc_chaninfo, 1/*allchans*/, 1/*verbose*/); } #endif - regdomain_makechannels(&req, &dc); + req = malloc(IEEE80211_REGDOMAIN_SIZE(dc->dc_chaninfo.ic_nchans)); + if (req == NULL) + errx(1, "no space for regdomain request"); + req->rd = *rd; + regdomain_makechannels(req, dc); if (verbose) { LINE_INIT(':'); print_regdomain(rd, 1/*verbose*/); LINE_BREAK(); - memcpy(&chaninfo, &req.chaninfo, sizeof(chaninfo)); - print_channels(s, &req.chaninfo, 1/*allchans*/, 1/*verbose*/); + /* blech, reallocate channel list for new data */ + if (chaninfo != NULL) + free(chaninfo); + chaninfo = malloc(IEEE80211_CHANINFO_SPACE(&req->chaninfo)); + if (chaninfo == NULL) + errx(1, "no space for channel list"); + memcpy(chaninfo, &req->chaninfo, + IEEE80211_CHANINFO_SPACE(&req->chaninfo)); + print_channels(s, &req->chaninfo, 1/*allchans*/, 1/*verbose*/); } - if (req.chaninfo.ic_nchans == 0) + if (req->chaninfo.ic_nchans == 0) errx(1, "no channels calculated"); - set80211(s, IEEE80211_IOC_REGDOMAIN, 0, sizeof(req), &req); + set80211(s, IEEE80211_IOC_REGDOMAIN, 0, + IEEE80211_REGDOMAIN_SPACE(req), req); + free(req); + free(dc); } static int @@ -980,7 +1006,6 @@ static void set80211chanlist(const char *val, int d, int s, const struct afswtch *rafp) { struct ieee80211req_chanlist chanlist; -#define MAXCHAN (sizeof(chanlist.ic_channels)*NBBY) char *temp, *cp, *tp; temp = malloc(strlen(val) + 1); @@ -997,18 +1022,18 @@ set80211chanlist(const char *val, int d, *tp++ = '\0'; switch (sscanf(cp, "%u-%u", &first, &last)) { case 1: - if (first > MAXCHAN) + if (first > IEEE80211_CHAN_MAX) errx(-1, "channel %u out of range, max %zu", - first, MAXCHAN); + first, IEEE80211_CHAN_MAX); setbit(chanlist.ic_channels, first); break; case 2: - if (first > MAXCHAN) + if (first > IEEE80211_CHAN_MAX) errx(-1, "channel %u out of range, max %zu", - first, MAXCHAN); - if (last > MAXCHAN) + first, IEEE80211_CHAN_MAX); + if (last > IEEE80211_CHAN_MAX) errx(-1, "channel %u out of range, max %zu", - last, MAXCHAN); + last, IEEE80211_CHAN_MAX); if (first > last) errx(-1, "void channel range, %u > %u", first, last); @@ -1026,7 +1051,6 @@ set80211chanlist(const char *val, int d, cp = tp; } set80211(s, IEEE80211_IOC_CHANLIST, 0, sizeof(chanlist), &chanlist); -#undef MAXCHAN } static void @@ -1641,7 +1665,7 @@ set80211amsdu(const char *val, int d, in int amsdu; if (get80211val(s, IEEE80211_IOC_AMSDU, &amsdu) < 0) - errx(-1, "cannot get AMSDU setting"); + err(-1, "cannot get AMSDU setting"); if (d < 0) { d = -d; amsdu &= ~d; @@ -1824,6 +1848,7 @@ regdomain_addchans(struct ieee80211req_c break; } c = &ci->ic_chans[ci->ic_nchans++]; + memset(c, 0, sizeof(*c)); c->ic_freq = freq; c->ic_flags = chanFlags | (flags &~ (REQ_FLAGS | IEEE80211_CHAN_HT40)); @@ -1872,7 +1897,14 @@ regdomain_makechannels( errx(1, "internal error, regdomain %d not found", reg->regdomain); if (rd->sku != SKU_DEBUG) { - memset(ci, 0, sizeof(*ci)); + /* + * regdomain_addchans incrememnts the channel count for + * each channel it adds so initialize ic_nchans to zero. + * Note that we know we have enough space to hold all possible + * channels because the devcaps list size was used to + * allocate our request. + */ + ci->ic_nchans = 0; if (!LIST_EMPTY(&rd->bands_11b)) regdomain_addchans(ci, &rd->bands_11b, reg, IEEE80211_CHAN_B, &dc->dc_chaninfo); @@ -1921,7 +1953,8 @@ regdomain_makechannels( qsort(ci->ic_chans, ci->ic_nchans, sizeof(ci->ic_chans[0]), regdomain_sort); } else - *ci = dc->dc_chaninfo; + memcpy(ci, &dc->dc_chaninfo, + IEEE80211_CHANINFO_SPACE(&dc->dc_chaninfo)); } static void @@ -3065,19 +3098,21 @@ static void print_channels(int s, const struct ieee80211req_chaninfo *chans, int allchans, int verb) { - struct ieee80211req_chaninfo achans; + struct ieee80211req_chaninfo *achans; uint8_t reported[IEEE80211_CHAN_BYTES]; const struct ieee80211_channel *c; int i, half; - memset(&achans, 0, sizeof(achans)); + achans = malloc(IEEE80211_CHANINFO_SPACE(chans)); + if (achans == NULL) + errx(1, "no space for active channel list"); + achans->ic_nchans = 0; memset(reported, 0, sizeof(reported)); if (!allchans) { struct ieee80211req_chanlist active; if (get80211(s, IEEE80211_IOC_CHANLIST, &active, sizeof(active)) < 0) errx(1, "unable to get active channel list"); - memset(&achans, 0, sizeof(achans)); for (i = 0; i < chans->ic_nchans; i++) { c = &chans->ic_chans[i]; if (!isset(active.ic_channels, c->ic_ieee)) @@ -3090,9 +3125,9 @@ print_channels(int s, const struct ieee8 */ if (isset(reported, c->ic_ieee) && !verb) { /* XXX we assume duplicates are adjacent */ - achans.ic_chans[achans.ic_nchans-1] = *c; + achans->ic_chans[achans->ic_nchans-1] = *c; } else { - achans.ic_chans[achans.ic_nchans++] = *c; + achans->ic_chans[achans->ic_nchans++] = *c; setbit(reported, c->ic_ieee); } } @@ -3102,33 +3137,34 @@ print_channels(int s, const struct ieee8 /* suppress duplicates as above */ if (isset(reported, c->ic_ieee) && !verb) { /* XXX we assume duplicates are adjacent */ - achans.ic_chans[achans.ic_nchans-1] = *c; + achans->ic_chans[achans->ic_nchans-1] = *c; } else { - achans.ic_chans[achans.ic_nchans++] = *c; + achans->ic_chans[achans->ic_nchans++] = *c; setbit(reported, c->ic_ieee); } } } - half = achans.ic_nchans / 2; - if (achans.ic_nchans % 2) + half = achans->ic_nchans / 2; + if (achans->ic_nchans % 2) half++; - for (i = 0; i < achans.ic_nchans / 2; i++) { - print_chaninfo(&achans.ic_chans[i], verb); - print_chaninfo(&achans.ic_chans[half+i], verb); + for (i = 0; i < achans->ic_nchans / 2; i++) { + print_chaninfo(&achans->ic_chans[i], verb); + print_chaninfo(&achans->ic_chans[half+i], verb); printf("\n"); } - if (achans.ic_nchans % 2) { - print_chaninfo(&achans.ic_chans[i], verb); + if (achans->ic_nchans % 2) { + print_chaninfo(&achans->ic_chans[i], verb); printf("\n"); } + free(achans); } static void list_channels(int s, int allchans) { getchaninfo(s); - print_channels(s, &chaninfo, allchans, verbose); + print_channels(s, chaninfo, allchans, verbose); } static void @@ -3153,48 +3189,52 @@ print_txpow_verbose(const struct ieee802 static void list_txpow(int s) { - struct ieee80211req_chaninfo achans; + struct ieee80211req_chaninfo *achans; uint8_t reported[IEEE80211_CHAN_BYTES]; struct ieee80211_channel *c, *prev; int i, half; getchaninfo(s); - memset(&achans, 0, sizeof(achans)); + achans = malloc(IEEE80211_CHANINFO_SPACE(chaninfo)); + if (achans == NULL) + errx(1, "no space for active channel list"); + achans->ic_nchans = 0; memset(reported, 0, sizeof(reported)); - for (i = 0; i < chaninfo.ic_nchans; i++) { - c = &chaninfo.ic_chans[i]; + for (i = 0; i < chaninfo->ic_nchans; i++) { + c = &chaninfo->ic_chans[i]; /* suppress duplicates as above */ if (isset(reported, c->ic_ieee) && !verbose) { /* XXX we assume duplicates are adjacent */ - prev = &achans.ic_chans[achans.ic_nchans-1]; + prev = &achans->ic_chans[achans->ic_nchans-1]; /* display highest power on channel */ if (c->ic_maxpower > prev->ic_maxpower) *prev = *c; } else { - achans.ic_chans[achans.ic_nchans++] = *c; + achans->ic_chans[achans->ic_nchans++] = *c; setbit(reported, c->ic_ieee); } } if (!verbose) { - half = achans.ic_nchans / 2; - if (achans.ic_nchans % 2) + half = achans->ic_nchans / 2; + if (achans->ic_nchans % 2) half++; - for (i = 0; i < achans.ic_nchans / 2; i++) { - print_txpow(&achans.ic_chans[i]); - print_txpow(&achans.ic_chans[half+i]); + for (i = 0; i < achans->ic_nchans / 2; i++) { + print_txpow(&achans->ic_chans[i]); + print_txpow(&achans->ic_chans[half+i]); printf("\n"); } - if (achans.ic_nchans % 2) { - print_txpow(&achans.ic_chans[i]); + if (achans->ic_nchans % 2) { + print_txpow(&achans->ic_chans[i]); printf("\n"); } } else { - for (i = 0; i < achans.ic_nchans; i++) { - print_txpow_verbose(&achans.ic_chans[i]); + for (i = 0; i < achans->ic_nchans; i++) { + print_txpow_verbose(&achans->ic_chans[i]); printf("\n"); } } + free(achans); } static void @@ -3218,19 +3258,24 @@ list_keys(int s) static void list_capabilities(int s) { - struct ieee80211_devcaps_req dc; + struct ieee80211_devcaps_req *dc; - getdevcaps(s, &dc); - printb("drivercaps", dc.dc_drivercaps, IEEE80211_C_BITS); - if (dc.dc_cryptocaps != 0 || verbose) { + dc = malloc(IEEE80211_DEVCAPS_SIZE(1)); + if (dc == NULL) + errx(1, "no space for device capabilities"); + dc->dc_chaninfo.ic_nchans = 1; + getdevcaps(s, dc); + printb("drivercaps", dc->dc_drivercaps, IEEE80211_C_BITS); + if (dc->dc_cryptocaps != 0 || verbose) { putchar('\n'); - printb("cryptocaps", dc.dc_cryptocaps, IEEE80211_CRYPTO_BITS); + printb("cryptocaps", dc->dc_cryptocaps, IEEE80211_CRYPTO_BITS); } - if (dc.dc_htcaps != 0 || verbose) { + if (dc->dc_htcaps != 0 || verbose) { putchar('\n'); - printb("htcaps", dc.dc_htcaps, IEEE80211_HTCAP_BITS); + printb("htcaps", dc->dc_htcaps, IEEE80211_HTCAP_BITS); } putchar('\n'); + free(dc); } static int @@ -3509,7 +3554,7 @@ list_regdomain(int s, int channelsalso) spacer = ':'; print_regdomain(®domain, 1); LINE_BREAK(); - print_channels(s, &chaninfo, 1/*allchans*/, 1/*verbose*/); + print_channels(s, chaninfo, 1/*allchans*/, 1/*verbose*/); } else print_regdomain(®domain, verbose); } @@ -4312,6 +4357,7 @@ get80211len(int s, int type, void *data, (void) strncpy(ireq.i_name, name, sizeof(ireq.i_name)); ireq.i_type = type; ireq.i_len = len; + assert(ireq.i_len == len); /* NB: check for 16-bit truncation */ ireq.i_data = data; if (ioctl(s, SIOCG80211, &ireq) < 0) return -1; @@ -4343,6 +4389,7 @@ set80211(int s, int type, int val, int l ireq.i_type = type; ireq.i_val = val; ireq.i_len = len; + assert(ireq.i_len == len); /* NB: check for 16-bit truncation */ ireq.i_data = data; if (ioctl(s, SIOCS80211, &ireq) < 0) err(1, "SIOCS80211"); From owner-svn-src-user@FreeBSD.ORG Wed Jan 21 00:54:48 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D9BC6106566B; Wed, 21 Jan 2009 00:54:48 +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 C9A588FC0C; Wed, 21 Jan 2009 00:54:48 +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 n0L0sm7j061881; Wed, 21 Jan 2009 00:54:48 GMT (envelope-from sam@svn.freebsd.org) Received: (from sam@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n0L0smg9061880; Wed, 21 Jan 2009 00:54:48 GMT (envelope-from sam@svn.freebsd.org) Message-Id: <200901210054.n0L0smg9061880@svn.freebsd.org> From: Sam Leffler Date: Wed, 21 Jan 2009 00:54:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r187507 - user/sam/wifi/sbin/ifconfig X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jan 2009 00:54:49 -0000 Author: sam Date: Wed Jan 21 00:54:48 2009 New Revision: 187507 URL: http://svn.freebsd.org/changeset/base/187507 Log: Fixup gsm handling after 1/2 and 1/4 width channel fix and to mesh with hal changes: o the frequency mapping now happens entirely in the driver so we will never find 900MHz frequencies in the master channel list passed back by the kernel; hack it for gsm channels (just add the channel and the kernel will reject if the mapped value is invalid) o don't ignore 1/2 and 1/4 width channel attribute mismatch; we now get called explicitly to construct them Still getting dup'd channel entries; fix separately. Modified: user/sam/wifi/sbin/ifconfig/ifieee80211.c Modified: user/sam/wifi/sbin/ifconfig/ifieee80211.c ============================================================================== --- user/sam/wifi/sbin/ifconfig/ifieee80211.c Wed Jan 21 00:26:45 2009 (r187506) +++ user/sam/wifi/sbin/ifconfig/ifieee80211.c Wed Jan 21 00:54:48 2009 (r187507) @@ -1781,47 +1781,54 @@ regdomain_addchans(struct ieee80211req_c LIST_FOREACH(nb, bands, next) { b = nb->band; if (verbose) - printf("%s: chanFlags 0x%x b %p\n", - __func__, chanFlags, b); + printf("%s: chanFlags 0x%x bandFlags 0x%x\n", + __func__, chanFlags, nb->flags | b->flags); prev = NULL; for (freq = b->freqStart; freq <= b->freqEnd; freq += b->chanSep) { uint32_t flags = nb->flags | b->flags; /* check if device can operate on this frequency */ - if (chanlookup(avail->ic_chans, avail->ic_nchans, freq, chanFlags) == NULL) { + /* + * XXX GSM frequency mapping is handled in the kernel + * so we cannot find them in the calibration table; + * just construct the list and the kernel will reject + * if it's wrong. + */ + if (chanlookup(avail->ic_chans, avail->ic_nchans, freq, chanFlags) == NULL && + (flags & IEEE80211_CHAN_GSM) == 0) { if (verbose) - printf("%u: skip, flags 0x%x not available\n", freq, chanFlags); + printf("%u: skip, flags 0x%x not " + "available\n", freq, chanFlags); continue; } - /* - * NB: don't enforce 1/2 and 1/4 rate channels being - * specified in the device's calibration list for - * 900MHz cards because most are not self-identifying. - */ if ((flags & IEEE80211_CHAN_HALF) && - ((chanFlags & IEEE80211_CHAN_HALF) == 0 && - (flags & IEEE80211_CHAN_GSM) == 0)) { + (chanFlags & IEEE80211_CHAN_HALF) == 0) { if (verbose) - printf("%u: skip, device does not support half-rate channels\n", freq); + printf("%u: skip, device does not " + "support half-rate channel\n", + freq); continue; } if ((flags & IEEE80211_CHAN_QUARTER) && - ((chanFlags & IEEE80211_CHAN_QUARTER) == 0 && - (flags & IEEE80211_CHAN_GSM) == 0)) { + (chanFlags & IEEE80211_CHAN_QUARTER) == 0) { if (verbose) - printf("%u: skip, device does not support quarter-rate channels\n", freq); + printf("%u: skip, device does not " + "support quarter-rate channel\n", + freq); continue; } if ((flags & IEEE80211_CHAN_HT20) && (chanFlags & IEEE80211_CHAN_HT20) == 0) { if (verbose) - printf("%u: skip, device does not support HT20 operation\n", freq); + printf("%u: skip, device does not " + "support HT20 operation\n", freq); continue; } if ((flags & IEEE80211_CHAN_HT40) && (chanFlags & IEEE80211_CHAN_HT40) == 0) { if (verbose) - printf("%u: skip, device does not support HT40 operation\n", freq); + printf("%u: skip, device does not " + "support HT40 operation\n", freq); continue; } if ((flags & REQ_ECM) && !reg->ecm) { @@ -1844,7 +1851,8 @@ regdomain_addchans(struct ieee80211req_c } if (ci->ic_nchans == IEEE80211_CHAN_MAX) { if (verbose) - printf("%u: skip, channel table full\n", freq); + printf("%u: skip, channel table full\n", + freq); break; } c = &ci->ic_chans[ci->ic_nchans++]; From owner-svn-src-user@FreeBSD.ORG Wed Jan 21 00:56:28 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8E3D0106564A; Wed, 21 Jan 2009 00:56:28 +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 7E9648FC0A; Wed, 21 Jan 2009 00:56:28 +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 n0L0uSRS061959; Wed, 21 Jan 2009 00:56:28 GMT (envelope-from sam@svn.freebsd.org) Received: (from sam@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n0L0uSDm061958; Wed, 21 Jan 2009 00:56:28 GMT (envelope-from sam@svn.freebsd.org) Message-Id: <200901210056.n0L0uSDm061958@svn.freebsd.org> From: Sam Leffler Date: Wed, 21 Jan 2009 00:56:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r187508 - user/sam/wifi/etc X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jan 2009 00:56:28 -0000 Author: sam Date: Wed Jan 21 00:56:28 2009 New Revision: 187508 URL: http://svn.freebsd.org/changeset/base/187508 Log: Remove gsm hacks now that we can do this "right": o no need for special country codes; it's sufficient to use the sku o no need to specify bands w/ 2.4G frequencies, use the real values o remove duplicate band specs Modified: user/sam/wifi/etc/regdomain.xml Modified: user/sam/wifi/etc/regdomain.xml ============================================================================== --- user/sam/wifi/etc/regdomain.xml Wed Jan 21 00:54:48 2009 (r187507) +++ user/sam/wifi/etc/regdomain.xml Wed Jan 21 00:56:28 2009 (r187508) @@ -1084,7 +1084,6 @@ SR9 0x0298 - @@ -1107,20 +1106,19 @@ XR9 0x299 - - + 30 IEEE80211_CHAN_G - + 30 IEEE80211_CHAN_G - + 30 IEEE80211_CHAN_G @@ -1130,7 +1128,6 @@ GZ901 0x29a - @@ -1270,9 +1267,6 @@ 320 Guatemala - - 5002 ZComax GZ-901 - 340 Honduras @@ -1468,12 +1462,6 @@ 792 Turkey - - 5000 Ubiquiti SR9 - - - 5001 Ubiquiti XR9 - 804 Ukraine @@ -1659,55 +1647,37 @@ - 2422 2437 + 907 922 5 5 IEEE80211_CHAN_GSM IEEE80211_CHAN_QUARTER - 2422 2437 + 907 922 10 5 IEEE80211_CHAN_GSM IEEE80211_CHAN_HALF - 2427 2432 - 20 5 - IEEE80211_CHAN_GSM - - - - 2427 2442 - 5 5 - IEEE80211_CHAN_GSM - IEEE80211_CHAN_QUARTER - - - 2427 2442 - 10 5 - IEEE80211_CHAN_GSM - IEEE80211_CHAN_HALF - - - 2432 2437 + 912 917 20 5 IEEE80211_CHAN_GSM - 2447 2467 + 908 923 5 5 IEEE80211_CHAN_GSM IEEE80211_CHAN_QUARTER - 2457 2462 + 913 918 10 5 IEEE80211_CHAN_GSM IEEE80211_CHAN_HALF - 2457 2462 + 913 918 20 5 IEEE80211_CHAN_GSM From owner-svn-src-user@FreeBSD.ORG Wed Jan 21 01:31:09 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EA1881065670; Wed, 21 Jan 2009 01:31:08 +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 D7A098FC0C; Wed, 21 Jan 2009 01:31:08 +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 n0L1V8Ij062594; Wed, 21 Jan 2009 01:31:08 GMT (envelope-from sam@svn.freebsd.org) Received: (from sam@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n0L1V8qb062589; Wed, 21 Jan 2009 01:31:08 GMT (envelope-from sam@svn.freebsd.org) Message-Id: <200901210131.n0L1V8qb062589@svn.freebsd.org> From: Sam Leffler Date: Wed, 21 Jan 2009 01:31:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r187509 - in user/sam/wifi/sys/dev/ath: . ath_hal ath_hal/ar5210 ath_hal/ar5211 ath_hal/ar5212 ath_hal/ar5312 ath_hal/ar5416 X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jan 2009 01:31:09 -0000 Author: sam Date: Wed Jan 21 01:31:08 2009 New Revision: 187509 URL: http://svn.freebsd.org/changeset/base/187509 Log: Checkpoint regulatory gutting: o move toward eliminating HAL_CHANNEL; for now it's still present but rework api's so a switch to an 802.11 channel is more possible o move toward stripping duplicate info from HAL_CHANNEL_INTERNAL; this is now referenced using ic_devdata in the 802.11 channel and real soon all callers will have the 802.11 channel to find the frequency and channel attributes (the only issue remaining is ath_hal_process_noisefloor) o eliminate code to write the HAL_CHANNEL on channel change; this was done to update the tx power for AR/DFS after a reset (so tx power scaling and CTL enforcement was applied) but was wrong and needs to be handled differently o change getChipPowerLimits api to work on a single channel o change ath_hal_getctl api to work on an internal channel o overhaul regulatory code: - remove per-country regulatory constraint work: having the hal construct this state duplicates what's already done in layers above; instead we'll push any initial sku/country code up as a hint that can be acted on to form regulatory state that is plumbed - switch to net80211 country code definitions - strip 900Mhz stuff; we can now handle this entirely in the driver - remove channel sorting; instead tag 802.11 channels with the index of the internal channel table (for now we check the frequency and flags to insure a match but eventually we'll ditch that and also compress all entries for a frequency into one) - remove various enforcements that are now meaningless; all we want to do is construct an initial regulatory hint/channel list from the EEPROM and thereafter trust channel lists that come down from above - move CTL to HAL_CHANNEL_INTERNAL for now; it'll be constructed on the fly once we merge channel entries for the same frequency - change ath_hal_init_channels api to operate directly on 802.11 channels; this call is used to check the EEPROM and construct an initial channel list (but the api also permits explicit override, use CTRY_DEFAULT/SKU_NONE to use the EEPROM contents) - add ath_hal_getchannels api to retrieve a channel list according to builtin rules but without altering any runtime state (unlike ath_hal_init_channels); this is used, in particular, to retrieve the device capabilities needed by the getradiocaps driver callback - add ath_hal_set_channels api to take 802.11 regulatory state and setup required internal state such as CTL's; this is used to implement the setregdomain driver callback - remove ah_countryCode from the internal state; it's no longer needed - move CHANNEL_NFCREQUIRED from privFlags to channelFlags (for now); it will eventually use one of the driver-private bits in ic_flags - change ar5212GetChipPowerLimits to not apply power scaling and CTL's to the values returned for min/max tx power; using ar5212SetRateTable to do this was bad as it clobbers runtime state (need to revisit) - add new status codes to disambiguate errors in regulatory calls - move CHANNEL_DFS to match net80211 definition - move CHANNEL_4MS_LIMIT to match net80211 definition - remove CTRY_DEBUG and CTRY_DEFAULT in favor of net80211 defs - remove ath_hal_isgsmsku; the hal no longer knows about GSM Modified: user/sam/wifi/sys/dev/ath/ath_hal/ah.c user/sam/wifi/sys/dev/ath/ath_hal/ah.h user/sam/wifi/sys/dev/ath/ath_hal/ah_internal.h user/sam/wifi/sys/dev/ath/ath_hal/ah_regdomain.c user/sam/wifi/sys/dev/ath/ath_hal/ar5210/ar5210.h user/sam/wifi/sys/dev/ath/ath_hal/ar5210/ar5210_attach.c user/sam/wifi/sys/dev/ath/ath_hal/ar5210/ar5210_misc.c user/sam/wifi/sys/dev/ath/ath_hal/ar5210/ar5210_reset.c user/sam/wifi/sys/dev/ath/ath_hal/ar5211/ar5211.h user/sam/wifi/sys/dev/ath/ath_hal/ar5211/ar5211_attach.c user/sam/wifi/sys/dev/ath/ath_hal/ar5211/ar5211_misc.c user/sam/wifi/sys/dev/ath/ath_hal/ar5211/ar5211_reset.c user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar2413.c user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar2425.c user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar5111.c user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar5112.c user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar5212.h user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar5212_ani.c user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar5212_attach.c user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar5212_reset.c user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar5413.c user/sam/wifi/sys/dev/ath/ath_hal/ar5312/ar5312_reset.c user/sam/wifi/sys/dev/ath/ath_hal/ar5416/ar2133.c user/sam/wifi/sys/dev/ath/ath_hal/ar5416/ar5416.h user/sam/wifi/sys/dev/ath/ath_hal/ar5416/ar5416_ani.c user/sam/wifi/sys/dev/ath/ath_hal/ar5416/ar5416_cal.c user/sam/wifi/sys/dev/ath/ath_hal/ar5416/ar5416_cal.h user/sam/wifi/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c user/sam/wifi/sys/dev/ath/if_ath.c Modified: user/sam/wifi/sys/dev/ath/ath_hal/ah.c ============================================================================== --- user/sam/wifi/sys/dev/ath/ath_hal/ah.c Wed Jan 21 00:56:28 2009 (r187508) +++ user/sam/wifi/sys/dev/ath/ath_hal/ah.c Wed Jan 21 01:31:08 2009 (r187509) @@ -272,7 +272,7 @@ typedef enum { } WIRELESS_MODE; static WIRELESS_MODE -ath_hal_chan2wmode(struct ath_hal *ah, const HAL_CHANNEL *chan) +ath_hal_chan2wmode(struct ath_hal *ah, const HAL_CHANNEL_INTERNAL *chan) { if (IS_CHAN_CCK(chan)) return WIRELESS_MODE_11b; @@ -294,7 +294,7 @@ static const uint8_t CLOCK_RATE[] = { 4 u_int ath_hal_mac_clks(struct ath_hal *ah, u_int usecs) { - const HAL_CHANNEL *c = (const HAL_CHANNEL *) AH_PRIVATE(ah)->ah_curchan; + const HAL_CHANNEL_INTERNAL *c = AH_PRIVATE(ah)->ah_curchan; u_int clks; /* NB: ah_curchan may be null when called attach time */ @@ -314,7 +314,7 @@ ath_hal_mac_clks(struct ath_hal *ah, u_i u_int ath_hal_mac_usec(struct ath_hal *ah, u_int clks) { - const HAL_CHANNEL *c = (const HAL_CHANNEL *) AH_PRIVATE(ah)->ah_curchan; + const HAL_CHANNEL_INTERNAL *c = AH_PRIVATE(ah)->ah_curchan; u_int usec; /* NB: ah_curchan may be null when called attach time */ @@ -704,7 +704,7 @@ static const int16_t NOISE_FLOOR[] = { - * implement the ah_getChanNoise method. */ int16_t -ath_hal_getChanNoise(struct ath_hal *ah, HAL_CHANNEL *chan) +ath_hal_getChanNoise(struct ath_hal *ah, const HAL_CHANNEL *chan) { HAL_CHANNEL_INTERNAL *ichan; @@ -716,7 +716,7 @@ ath_hal_getChanNoise(struct ath_hal *ah, return 0; } if (ichan->rawNoiseFloor == 0) { - WIRELESS_MODE mode = ath_hal_chan2wmode(ah, chan); + WIRELESS_MODE mode = ath_hal_chan2wmode(ah, ichan); HALASSERT(mode < WIRELESS_MODE_MAX); return NOISE_FLOOR[mode] + ath_hal_getNfAdjust(ah, ichan); @@ -751,7 +751,7 @@ ath_hal_process_noisefloor(struct ath_ha c = &AH_PRIVATE(ah)->ah_channels[i]; if (c->rawNoiseFloor >= 0) continue; - mode = ath_hal_chan2wmode(ah, (HAL_CHANNEL *) c); + mode = ath_hal_chan2wmode(ah, c); HALASSERT(mode < WIRELESS_MODE_MAX); nf = c->rawNoiseFloor + NOISE_FLOOR[mode] + ath_hal_getNfAdjust(ah, c); Modified: user/sam/wifi/sys/dev/ath/ath_hal/ah.h ============================================================================== --- user/sam/wifi/sys/dev/ath/ath_hal/ah.h Wed Jan 21 00:56:28 2009 (r187508) +++ user/sam/wifi/sys/dev/ath/ath_hal/ah.h Wed Jan 21 01:31:08 2009 (r187509) @@ -63,6 +63,8 @@ typedef enum { HAL_ENOTSUPP = 13, /* Hardware revision not supported */ HAL_ESELFTEST = 14, /* Hardware self-test failed */ HAL_EINPROGRESS = 15, /* Operation incomplete */ + HAL_EEBADREG = 16, /* EEPROM invalid regulatory contents */ + HAL_EEBADCC = 17, /* EEPROM invalid country code */ } HAL_STATUS; typedef enum { @@ -362,19 +364,17 @@ typedef enum { HAL_RFGAIN_NEED_CHANGE = 2 } HAL_RFGAIN; -/* - * Channels are specified by frequency. - */ +typedef uint16_t HAL_CTRY_CODE; /* country code */ +typedef uint16_t HAL_REG_DOMAIN; /* regulatory domain code */ + typedef struct { - uint32_t channelFlags; /* see below */ - uint16_t channel; /* setting in Mhz */ - uint8_t privFlags; - int8_t maxRegTxPower; /* max regulatory tx power in dBm */ - int8_t maxTxPower; /* max true tx power in 0.5 dBm */ - int8_t minTxPower; /* min true tx power in 0.5 dBm */ + uint32_t channelFlags; + uint16_t channel; /* NB: must be first for casting */ + uint16_t devdata; /* XXX temp */ } HAL_CHANNEL; /* channelFlags */ +#define CHANNEL_NFCREQUIRED 0x01 /* channel requires noise floor check */ #define CHANNEL_CW_INT 0x00002 /* CW interference detected on channel */ #define CHANNEL_TURBO 0x00010 /* Turbo Channel */ #define CHANNEL_CCK 0x00020 /* CCK channel */ @@ -389,15 +389,8 @@ typedef struct { #define CHANNEL_HT20 0x10000 /* 11n 20MHZ channel */ #define CHANNEL_HT40PLUS 0x20000 /* 11n 40MHZ channel w/ ext chan above */ #define CHANNEL_HT40MINUS 0x40000 /* 11n 40MHZ channel w/ ext chan below */ - -/* privFlags */ -#define CHANNEL_INTERFERENCE 0x01 /* Software use: channel interference - used for as AR as well as RADAR - interference detection */ -#define CHANNEL_DFS 0x02 /* DFS required on channel */ -#define CHANNEL_4MS_LIMIT 0x04 /* 4msec packet limit on this channel */ -#define CHANNEL_NFCREQUIRED 0x08 /* channel requires noise floor check */ -#define CHANNEL_IQVALID 0x10 /* IQ calibration valid */ +#define CHANNEL_DFS 0x80000 /* DFS required on channel */ +#define CHANNEL_4MS_LIMIT 0x00100000 /* 4msec packet limit on this channel */ #define CHANNEL_A (CHANNEL_5GHZ|CHANNEL_OFDM) #define CHANNEL_B (CHANNEL_2GHZ|CHANNEL_CCK) @@ -435,14 +428,6 @@ typedef struct { uint32_t beacons; } HAL_MIB_STATS; -typedef uint16_t HAL_CTRY_CODE; /* country code */ -typedef uint16_t HAL_REG_DOMAIN; /* regulatory domain code */ - -enum { - CTRY_DEBUG = 0x1ff, /* debug country code */ - CTRY_DEFAULT = 0 /* default country code */ -}; - enum { HAL_MODE_11A = 0x001, /* 11a channels */ HAL_MODE_TURBO = 0x002, /* 11a turbo-only channels */ @@ -666,16 +651,18 @@ struct ath_hal { /* Reset functions */ HAL_BOOL __ahdecl(*ah_reset)(struct ath_hal *, HAL_OPMODE, - HAL_CHANNEL *, HAL_BOOL bChannelChange, - HAL_STATUS *status); + HAL_CHANNEL *, + HAL_BOOL bChannelChange, HAL_STATUS *status); HAL_BOOL __ahdecl(*ah_phyDisable)(struct ath_hal *); HAL_BOOL __ahdecl(*ah_disable)(struct ath_hal *); void __ahdecl(*ah_setPCUConfig)(struct ath_hal *); - HAL_BOOL __ahdecl(*ah_perCalibration)(struct ath_hal*, HAL_CHANNEL *, - HAL_BOOL *); - HAL_BOOL __ahdecl(*ah_perCalibrationN)(struct ath_hal *, HAL_CHANNEL *, - u_int chainMask, HAL_BOOL longCal, HAL_BOOL *isCalDone); - HAL_BOOL __ahdecl(*ah_resetCalValid)(struct ath_hal *, HAL_CHANNEL *); + HAL_BOOL __ahdecl(*ah_perCalibration)(struct ath_hal*, + HAL_CHANNEL *, HAL_BOOL *); + HAL_BOOL __ahdecl(*ah_perCalibrationN)(struct ath_hal *, + HAL_CHANNEL *, u_int chainMask, + HAL_BOOL longCal, HAL_BOOL *isCalDone); + HAL_BOOL __ahdecl(*ah_resetCalValid)(struct ath_hal *, + const HAL_CHANNEL *); HAL_BOOL __ahdecl(*ah_setTxPowerLimit)(struct ath_hal *, uint32_t); /* Transmit functions */ @@ -736,7 +723,8 @@ struct ath_hal { struct ath_desc *next, uint64_t tsf, struct ath_rx_status *); void __ahdecl(*ah_rxMonitor)(struct ath_hal *, - const HAL_NODE_STATS *, HAL_CHANNEL *); + const HAL_NODE_STATS *, + const HAL_CHANNEL *); void __ahdecl(*ah_procMibEvent)(struct ath_hal *, const HAL_NODE_STATS *); @@ -805,7 +793,8 @@ struct ath_hal { HAL_BOOL __ahdecl(*ah_setPowerMode)(struct ath_hal*, HAL_POWER_MODE mode, int setChip); HAL_POWER_MODE __ahdecl(*ah_getPowerMode)(struct ath_hal*); - int16_t __ahdecl(*ah_getChanNoise)(struct ath_hal *, HAL_CHANNEL *); + int16_t __ahdecl(*ah_getChanNoise)(struct ath_hal *, + const HAL_CHANNEL *); /* Beacon Management Functions */ void __ahdecl(*ah_setBeaconTimers)(struct ath_hal*, @@ -848,20 +837,48 @@ extern struct ath_hal * __ahdecl ath_hal HAL_BUS_TAG, HAL_BUS_HANDLE, HAL_STATUS* status); /* - * Return a list of channels available for use with the hardware. - * The list is based on what the hardware is capable of, the specified - * country code, the modeSelect mask, and whether or not outdoor - * channels are to be permitted. + * Regulatory interfaces. Drivers should use ath_hal_init_channels to + * request a set of channels for a particular country code and/or + * regulatory domain. If CTRY_DEFAULT and SKU_NONE are specified then + * this list is constructed according to the contents of the EEPROM. + * ath_hal_getchannels acts similarly but does not alter the operating + * state; this can be used to collect information for a particular + * regulatory configuration. Finally ath_hal_set_channels installs a + * channel list constructed outside the driver. The HAL will adopt the + * channel list and setup internal state according to the specified + * regulatory configuration (e.g. conformance test limits). * - * The channel list is returned in the supplied array. maxchans - * defines the maximum size of this array. nchans contains the actual - * number of channels returned. If a problem occurred or there were - * no channels that met the criteria then AH_FALSE is returned. - */ -extern HAL_BOOL __ahdecl ath_hal_init_channels(struct ath_hal *, - HAL_CHANNEL *chans, u_int maxchans, u_int *nchans, - HAL_CTRY_CODE cc, u_int modeSelect, - HAL_BOOL enableExtendedChannels); + * For all interfaces the channel list is returned in the supplied array. + * maxchans defines the maximum size of this array. nchans contains the + * actual number of channels returned. If a problem occurred then a + * status code != HAL_OK is returned. + */ +struct ieee80211_channel; + +/* + * Return a list of channels according to the specified regulatory. + */ +extern HAL_STATUS __ahdecl ath_hal_getchannels(struct ath_hal *, + struct ieee80211_channel *chans, u_int maxchans, int *nchans, + u_int modeSelect, HAL_CTRY_CODE cc, HAL_REG_DOMAIN regDmn, + HAL_BOOL enableExtendedChannels); + +/* + * Return a list of channels and install it as the current operating + * regulatory list. + */ +extern HAL_STATUS __ahdecl ath_hal_init_channels(struct ath_hal *, + struct ieee80211_channel *chans, u_int maxchans, int *nchans, + u_int modeSelect, HAL_CTRY_CODE cc, HAL_REG_DOMAIN rd, + HAL_BOOL enableExtendedChannels); + +/* + * Install the list of channels as the current operating regulatory + * and setup related state according to the country code and sku. + */ +extern HAL_STATUS __ahdecl ath_hal_set_channels(struct ath_hal *, + struct ieee80211_channel *chans, int nchans, + HAL_CTRY_CODE cc, HAL_REG_DOMAIN regDmn); /* * Calibrate noise floor data following a channel scan or similar. @@ -880,9 +897,4 @@ extern u_int __ahdecl ath_hal_getwireles extern uint16_t __ahdecl ath_hal_computetxtime(struct ath_hal *, const HAL_RATE_TABLE *rates, uint32_t frameLen, uint16_t rateix, HAL_BOOL shortPreamble); - -/* - * Return if device is operating in 900 MHz band. - */ -extern HAL_BOOL ath_hal_isgsmsku(struct ath_hal *); #endif /* _ATH_AH_H_ */ Modified: user/sam/wifi/sys/dev/ath/ath_hal/ah_internal.h ============================================================================== --- user/sam/wifi/sys/dev/ath/ath_hal/ah_internal.h Wed Jan 21 00:56:28 2009 (r187508) +++ user/sam/wifi/sys/dev/ath/ath_hal/ah_internal.h Wed Jan 21 01:31:08 2009 (r187509) @@ -108,27 +108,35 @@ OS_DATA_SET(ah_rfs, _name##_rf) struct ath_hal_rf *ath_hal_rfprobe(struct ath_hal *ah, HAL_STATUS *ecode); /* - * Internal form of a HAL_CHANNEL. Note that the structure - * must be defined such that you can cast references to a - * HAL_CHANNEL so don't shuffle the first two members. + * Internal per-channel state. These are found + * using ic_devdata in the ieee80211_channel. */ typedef struct { uint32_t channelFlags; uint16_t channel; /* NB: must be first for casting */ - uint8_t privFlags; + uint16_t devdata; /* XXX temp */ int8_t maxRegTxPower; int8_t maxTxPower; - int8_t minTxPower; /* as above... */ + int8_t minTxPower; + uint8_t antennaMax; + uint8_t privFlags; + uint8_t ctl; /* conformance test limit */ uint8_t calValid; /* bitmask of cal types */ int8_t iCoff; int8_t qCoff; - int8_t antennaMax; + uint8_t pad; /* NB: hole */ int16_t rawNoiseFloor; int16_t noiseFloorAdjust; uint16_t mainSpur; /* cached spur value for this channel */ } HAL_CHANNEL_INTERNAL; +/* privFlags */ +#define CHANNEL_INTERFERENCE 0x01 /* Software use: channel interference + used for as AR as well as RADAR + interference detection */ +#define CHANNEL_IQVALID 0x02 /* IQ calibration valid */ + typedef struct { uint32_t halChanSpreadSupport : 1, halSleepAfterBeaconBroken : 1, @@ -226,7 +234,7 @@ struct ath_hal_private { uint32_t gpio, uint32_t val); void (*ah_gpioSetIntr)(struct ath_hal*, u_int, uint32_t); HAL_BOOL (*ah_getChipPowerLimits)(struct ath_hal *, - HAL_CHANNEL *, uint32_t); + HAL_CHANNEL_INTERNAL *); int16_t (*ah_getNfAdjust)(struct ath_hal *, const HAL_CHANNEL_INTERNAL*); void (*ah_getNoiseFloor)(struct ath_hal *, @@ -255,6 +263,7 @@ struct ath_hal_private { HAL_OPMODE ah_opmode; /* operating mode from reset */ + HAL_CHANNEL_INTERNAL *ah_curchan; /* operating channel */ HAL_CAPABILITIES ah_caps; /* device capabilities */ uint32_t ah_diagreg; /* user-specified AR_DIAG_SW */ int16_t ah_powerLimit; /* tx power cap */ @@ -265,11 +274,9 @@ struct ath_hal_private { /* * State for regulatory domain handling. */ - HAL_REG_DOMAIN ah_currentRD; /* Current regulatory domain */ - HAL_CTRY_CODE ah_countryCode; /* current country code */ + HAL_REG_DOMAIN ah_currentRD; /* EEPROM regulatory domain */ HAL_CHANNEL_INTERNAL ah_channels[256]; /* calculated channel list */ u_int ah_nchan; /* valid channels in list */ - HAL_CHANNEL_INTERNAL *ah_curchan; /* current channel */ const struct regDomainPair *ah_regpair; /* reg state */ const struct regDomain *ah_reg2G; /* reg state for 2G band */ const struct regDomain *ah_reg5G; /* reg state for 5G band */ @@ -308,8 +315,8 @@ struct ath_hal_private { AH_PRIVATE(_ah)->ah_gpioGet(_ah, _gpio, _val) #define ath_hal_gpioSetIntr(_ah, _gpio, _ilevel) \ AH_PRIVATE(_ah)->ah_gpioSetIntr(_ah, _gpio, _ilevel) -#define ath_hal_getpowerlimits(_ah, _chans, _nchan) \ - AH_PRIVATE(_ah)->ah_getChipPowerLimits(_ah, _chans, _nchan) +#define ath_hal_getpowerlimits(_ah, _chan) \ + AH_PRIVATE(_ah)->ah_getChipPowerLimits(_ah, _chan) #define ath_hal_getNfAdjust(_ah, _c) \ AH_PRIVATE(_ah)->ah_getNfAdjust(_ah, _c) #define ath_hal_getNoiseFloor(_ah, _nfArray) \ @@ -328,7 +335,7 @@ struct ath_hal_private { #define ath_hal_eepromDiag(_ah, _request, _a, _asize, _r, _rsize) \ AH_PRIVATE(_ah)->ah_eepromDiag(_ah, _request, _a, _asize, _r, _rsize) -#if !defined(_NET_IF_IEEE80211_H_) && !defined(_NET80211__IEEE80211_H_) +#ifndef _NET_IF_IEEE80211_H_ /* * Stuff that would naturally come from _ieee80211.h */ @@ -344,7 +351,9 @@ struct ath_hal_private { #define IEEE80211_MTU 1500 #define IEEE80211_MAX_LEN (2300 + IEEE80211_CRC_LEN + \ (IEEE80211_WEP_IVLEN + IEEE80211_WEP_KIDLEN + IEEE80211_WEP_CRCLEN)) +#endif /* _NET_IF_IEEE80211_H_ */ +#ifndef _NET80211__IEEE80211_H_ enum { IEEE80211_T_DS, /* direct sequence spread spectrum */ IEEE80211_T_FH, /* frequency hopping */ @@ -492,16 +501,31 @@ isBigEndian(void) */ /* - * Return the max allowed antenna gain based on the current - * regulatory domain. - */ -extern u_int ath_hal_getantennareduction(struct ath_hal *, - HAL_CHANNEL *, u_int twiceGain); + * Return the max allowed antenna gain and apply any regulatory + * domain specific changes. + * + * NOTE: a negative reduction is possible in RD's that only + * measure radiated power (e.g., ETSI) which would increase + * that actual conducted output power (though never beyond + * the calibrated target power). + */ +static OS_INLINE u_int +ath_hal_getantennareduction(struct ath_hal *ah, + const HAL_CHANNEL_INTERNAL *chan, u_int twiceGain) +{ + int8_t antennaMax = twiceGain - chan->antennaMax*2; + return (antennaMax < 0) ? 0 : antennaMax; +} + /* * Return the test group for the specific channel based on * the current regulator domain. */ -extern u_int ath_hal_getctl(struct ath_hal *, HAL_CHANNEL *); +static OS_INLINE u_int +ath_hal_getctl(struct ath_hal *ah, const HAL_CHANNEL_INTERNAL *chan) +{ + return chan->ctl; +} /* * Map a public channel definition to the corresponding @@ -728,7 +752,7 @@ extern void ath_hal_setupratetable(struc /* * Common routine for implementing getChanNoise api. */ -extern int16_t ath_hal_getChanNoise(struct ath_hal *ah, HAL_CHANNEL *chan); +extern int16_t ath_hal_getChanNoise(struct ath_hal *ah, const HAL_CHANNEL* ); /* * Initialization support. Modified: user/sam/wifi/sys/dev/ath/ath_hal/ah_regdomain.c ============================================================================== --- user/sam/wifi/sys/dev/ath/ath_hal/ah_regdomain.c Wed Jan 21 00:56:28 2009 (r187508) +++ user/sam/wifi/sys/dev/ath/ath_hal/ah_regdomain.c Wed Jan 21 01:31:08 2009 (r187509) @@ -20,6 +20,10 @@ #include "opt_ah.h" #include "ah.h" + +#include +#include + #include "ah_internal.h" #include "ah_eeprom.h" #include "ah_devid.h" @@ -72,160 +76,6 @@ typedef uint64_t chanbmask_t[BMLEN]; W1(_fg) | W1(_fh) } /* - * Country/Region Codes - * Numbering from ISO 3166 - */ -enum { - CTRY_ALBANIA = 8, /* Albania */ - CTRY_ALGERIA = 12, /* Algeria */ - CTRY_ARGENTINA = 32, /* Argentina */ - CTRY_ARMENIA = 51, /* Armenia */ - CTRY_AUSTRALIA = 36, /* Australia */ - CTRY_AUSTRIA = 40, /* Austria */ - CTRY_AZERBAIJAN = 31, /* Azerbaijan */ - CTRY_BAHRAIN = 48, /* Bahrain */ - CTRY_BELARUS = 112, /* Belarus */ - CTRY_BELGIUM = 56, /* Belgium */ - CTRY_BELIZE = 84, /* Belize */ - CTRY_BOLIVIA = 68, /* Bolivia */ - CTRY_BRAZIL = 76, /* Brazil */ - CTRY_BRUNEI_DARUSSALAM = 96, /* Brunei Darussalam */ - CTRY_BULGARIA = 100, /* Bulgaria */ - CTRY_CANADA = 124, /* Canada */ - CTRY_CHILE = 152, /* Chile */ - CTRY_CHINA = 156, /* People's Republic of China */ - CTRY_COLOMBIA = 170, /* Colombia */ - CTRY_COSTA_RICA = 188, /* Costa Rica */ - CTRY_CROATIA = 191, /* Croatia */ - CTRY_CYPRUS = 196, - CTRY_CZECH = 203, /* Czech Republic */ - CTRY_DENMARK = 208, /* Denmark */ - CTRY_DOMINICAN_REPUBLIC = 214, /* Dominican Republic */ - CTRY_ECUADOR = 218, /* Ecuador */ - CTRY_EGYPT = 818, /* Egypt */ - CTRY_EL_SALVADOR = 222, /* El Salvador */ - CTRY_ESTONIA = 233, /* Estonia */ - CTRY_FAEROE_ISLANDS = 234, /* Faeroe Islands */ - CTRY_FINLAND = 246, /* Finland */ - CTRY_FRANCE = 250, /* France */ - CTRY_FRANCE2 = 255, /* France2 */ - CTRY_GEORGIA = 268, /* Georgia */ - CTRY_GERMANY = 276, /* Germany */ - CTRY_GREECE = 300, /* Greece */ - CTRY_GUATEMALA = 320, /* Guatemala */ - CTRY_HONDURAS = 340, /* Honduras */ - CTRY_HONG_KONG = 344, /* Hong Kong S.A.R., P.R.C. */ - CTRY_HUNGARY = 348, /* Hungary */ - CTRY_ICELAND = 352, /* Iceland */ - CTRY_INDIA = 356, /* India */ - CTRY_INDONESIA = 360, /* Indonesia */ - CTRY_IRAN = 364, /* Iran */ - CTRY_IRAQ = 368, /* Iraq */ - CTRY_IRELAND = 372, /* Ireland */ - CTRY_ISRAEL = 376, /* Israel */ - CTRY_ITALY = 380, /* Italy */ - CTRY_JAMAICA = 388, /* Jamaica */ - CTRY_JAPAN = 392, /* Japan */ - CTRY_JAPAN1 = 393, /* Japan (JP1) */ - CTRY_JAPAN2 = 394, /* Japan (JP0) */ - CTRY_JAPAN3 = 395, /* Japan (JP1-1) */ - CTRY_JAPAN4 = 396, /* Japan (JE1) */ - CTRY_JAPAN5 = 397, /* Japan (JE2) */ - CTRY_JAPAN6 = 399, /* Japan (JP6) */ - - CTRY_JAPAN7 = 4007, /* Japan (J7) */ - CTRY_JAPAN8 = 4008, /* Japan (J8) */ - CTRY_JAPAN9 = 4009, /* Japan (J9) */ - - CTRY_JAPAN10 = 4010, /* Japan (J10) */ - CTRY_JAPAN11 = 4011, /* Japan (J11) */ - CTRY_JAPAN12 = 4012, /* Japan (J12) */ - - CTRY_JAPAN13 = 4013, /* Japan (J13) */ - CTRY_JAPAN14 = 4014, /* Japan (J14) */ - CTRY_JAPAN15 = 4015, /* Japan (J15) */ - - CTRY_JAPAN16 = 4016, /* Japan (J16) */ - CTRY_JAPAN17 = 4017, /* Japan (J17) */ - CTRY_JAPAN18 = 4018, /* Japan (J18) */ - - CTRY_JAPAN19 = 4019, /* Japan (J19) */ - CTRY_JAPAN20 = 4020, /* Japan (J20) */ - CTRY_JAPAN21 = 4021, /* Japan (J21) */ - - CTRY_JAPAN22 = 4022, /* Japan (J22) */ - CTRY_JAPAN23 = 4023, /* Japan (J23) */ - CTRY_JAPAN24 = 4024, /* Japan (J24) */ - - CTRY_JORDAN = 400, /* Jordan */ - CTRY_KAZAKHSTAN = 398, /* Kazakhstan */ - CTRY_KENYA = 404, /* Kenya */ - CTRY_KOREA_NORTH = 408, /* North Korea */ - CTRY_KOREA_ROC = 410, /* South Korea */ - CTRY_KOREA_ROC2 = 411, /* South Korea */ - CTRY_KOREA_ROC3 = 412, /* South Korea */ - CTRY_KUWAIT = 414, /* Kuwait */ - CTRY_LATVIA = 428, /* Latvia */ - CTRY_LEBANON = 422, /* Lebanon */ - CTRY_LIBYA = 434, /* Libya */ - CTRY_LIECHTENSTEIN = 438, /* Liechtenstein */ - CTRY_LITHUANIA = 440, /* Lithuania */ - CTRY_LUXEMBOURG = 442, /* Luxembourg */ - CTRY_MACAU = 446, /* Macau */ - CTRY_MACEDONIA = 807, /* the Former Yugoslav Republic of Macedonia */ - CTRY_MALAYSIA = 458, /* Malaysia */ - CTRY_MALTA = 470, /* Malta */ - CTRY_MEXICO = 484, /* Mexico */ - CTRY_MONACO = 492, /* Principality of Monaco */ - CTRY_MOROCCO = 504, /* Morocco */ - CTRY_NETHERLANDS = 528, /* Netherlands */ - CTRY_NEW_ZEALAND = 554, /* New Zealand */ - CTRY_NICARAGUA = 558, /* Nicaragua */ - CTRY_NORWAY = 578, /* Norway */ - CTRY_OMAN = 512, /* Oman */ - CTRY_PAKISTAN = 586, /* Islamic Republic of Pakistan */ - CTRY_PANAMA = 591, /* Panama */ - CTRY_PARAGUAY = 600, /* Paraguay */ - CTRY_PERU = 604, /* Peru */ - CTRY_PHILIPPINES = 608, /* Republic of the Philippines */ - CTRY_POLAND = 616, /* Poland */ - CTRY_PORTUGAL = 620, /* Portugal */ - CTRY_PUERTO_RICO = 630, /* Puerto Rico */ - CTRY_QATAR = 634, /* Qatar */ - CTRY_ROMANIA = 642, /* Romania */ - CTRY_RUSSIA = 643, /* Russia */ - CTRY_SAUDI_ARABIA = 682, /* Saudi Arabia */ - CTRY_SINGAPORE = 702, /* Singapore */ - CTRY_SLOVAKIA = 703, /* Slovak Republic */ - CTRY_SLOVENIA = 705, /* Slovenia */ - CTRY_SOUTH_AFRICA = 710, /* South Africa */ - CTRY_SPAIN = 724, /* Spain */ - CTRY_SR9 = 5000, /* Ubiquiti SR9 (900MHz/GSM) */ - CTRY_SWEDEN = 752, /* Sweden */ - CTRY_SWITZERLAND = 756, /* Switzerland */ - CTRY_SYRIA = 760, /* Syria */ - CTRY_TAIWAN = 158, /* Taiwan */ - CTRY_THAILAND = 764, /* Thailand */ - CTRY_TRINIDAD_Y_TOBAGO = 780, /* Trinidad y Tobago */ - CTRY_TUNISIA = 788, /* Tunisia */ - CTRY_TURKEY = 792, /* Turkey */ - CTRY_UAE = 784, /* U.A.E. */ - CTRY_UKRAINE = 804, /* Ukraine */ - CTRY_UNITED_KINGDOM = 826, /* United Kingdom */ - CTRY_UNITED_STATES = 840, /* United States */ - CTRY_UNITED_STATES_FCC49 = 842, /* United States (Public Safety)*/ - CTRY_URUGUAY = 858, /* Uruguay */ - CTRY_UZBEKISTAN = 860, /* Uzbekistan */ - CTRY_VENEZUELA = 862, /* Venezuela */ - CTRY_VIET_NAM = 704, /* Viet Nam */ - CTRY_XR9 = 5001, /* Ubiquiti XR9 (900MHz/GSM) */ - CTRY_GZ901 = 5002, /* Zcomax GZ-901 (900MHz/GSM) */ - CTRY_YEMEN = 887, /* Yemen */ - CTRY_ZIMBABWE = 716 /* Zimbabwe */ -}; - - -/* * Mask to check whether a domain is a multidomain or a single domain */ #define MULTI_DOMAIN_MASK 0xFF00 @@ -403,9 +253,6 @@ enum { NULL1 = 0x0198, WORLD = 0x0199, - SR9_WORLD = 0x0298, - XR9_WORLD = 0x0299, - GZ901_WORLD = 0x029a, DEBUG_REG_DMN = 0x01ff, }; @@ -482,44 +329,44 @@ typedef struct regDomainPair { } REG_DMN_PAIR_MAPPING; static REG_DMN_PAIR_MAPPING regDomainPairs[] = { - {NO_ENUMRD, DEBUG_REG_DMN, DEBUG_REG_DMN, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {NULL1_WORLD, NULL1, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {NULL1_ETSIB, NULL1, ETSIB, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {NULL1_ETSIC, NULL1, ETSIC, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - - {FCC2_FCCA, FCC2, FCCA, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {FCC2_WORLD, FCC2, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {FCC2_ETSIC, FCC2, ETSIC, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {FCC3_FCCA, FCC3, FCCA, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {FCC3_WORLD, FCC3, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {FCC4_FCCA, FCC4, FCCA, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, 0 }, - {FCC5_FCCB, FCC5, FCCB, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - - {ETSI1_WORLD, ETSI1, WORLD, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, 0 }, - {ETSI2_WORLD, ETSI2, WORLD, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, 0 }, - {ETSI3_WORLD, ETSI3, WORLD, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, 0 }, - {ETSI4_WORLD, ETSI4, WORLD, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, 0 }, - {ETSI5_WORLD, ETSI5, WORLD, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, 0 }, - {ETSI6_WORLD, ETSI6, WORLD, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, 0 }, - - {ETSI3_ETSIA, ETSI3, WORLD, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, 0 }, - {FRANCE_RES, ETSI3, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - - {FCC1_WORLD, FCC1, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {FCC1_FCCA, FCC1, FCCA, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {APL1_WORLD, APL1, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {APL2_WORLD, APL2, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {APL3_WORLD, APL3, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {APL4_WORLD, APL4, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {APL5_WORLD, APL5, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {APL6_WORLD, APL6, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {APL8_WORLD, APL8, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {APL9_WORLD, APL9, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - - {APL3_FCCA, APL3, FCCA, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {APL1_ETSIC, APL1, ETSIC, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {APL2_ETSIC, APL2, ETSIC, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {APL2_APLD, APL2, APLD, NO_REQ, NO_REQ, PSCAN_DEFER, }, + {NO_ENUMRD, DEBUG_REG_DMN, DEBUG_REG_DMN, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {NULL1_WORLD, NULL1, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {NULL1_ETSIB, NULL1, ETSIB, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {NULL1_ETSIC, NULL1, ETSIC, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + + {FCC2_FCCA, FCC2, FCCA, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {FCC2_WORLD, FCC2, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {FCC2_ETSIC, FCC2, ETSIC, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {FCC3_FCCA, FCC3, FCCA, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {FCC3_WORLD, FCC3, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {FCC4_FCCA, FCC4, FCCA, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {FCC5_FCCB, FCC5, FCCB, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + + {ETSI1_WORLD, ETSI1, WORLD, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {ETSI2_WORLD, ETSI2, WORLD, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {ETSI3_WORLD, ETSI3, WORLD, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {ETSI4_WORLD, ETSI4, WORLD, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {ETSI5_WORLD, ETSI5, WORLD, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {ETSI6_WORLD, ETSI6, WORLD, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + + {ETSI3_ETSIA, ETSI3, WORLD, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {FRANCE_RES, ETSI3, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + + {FCC1_WORLD, FCC1, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {FCC1_FCCA, FCC1, FCCA, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {APL1_WORLD, APL1, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {APL2_WORLD, APL2, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {APL3_WORLD, APL3, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {APL4_WORLD, APL4, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {APL5_WORLD, APL5, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {APL6_WORLD, APL6, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {APL8_WORLD, APL8, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {APL9_WORLD, APL9, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + + {APL3_FCCA, APL3, FCCA, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {APL1_ETSIC, APL1, ETSIC, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {APL2_ETSIC, APL2, ETSIC, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {APL2_APLD, APL2, APLD, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, {MKK1_MKKA, MKK1, MKKA, DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKK1 | PSCAN_MKKA, CTRY_JAPAN }, {MKK1_MKKB, MKK1, MKKA, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB | NEED_NFC| LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKK1 | PSCAN_MKKA | PSCAN_MKKA_G, CTRY_JAPAN1 }, @@ -532,19 +379,19 @@ static REG_DMN_PAIR_MAPPING regDomainPai {MKK2_MKKA, MKK2, MKKA, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB | NEED_NFC| LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKK2 | PSCAN_MKKA | PSCAN_MKKA_G, CTRY_JAPAN3 }, /* MKK3 */ - {MKK3_MKKA, MKK3, MKKA, DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC , PSCAN_MKKA, 0 }, + {MKK3_MKKA, MKK3, MKKA, DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC , PSCAN_MKKA, CTRY_DEFAULT }, {MKK3_MKKB, MKK3, MKKA, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKKA | PSCAN_MKKA_G, CTRY_JAPAN7 }, - {MKK3_MKKA1, MKK3, MKKA, DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKKA1 | PSCAN_MKKA1_G, 0 }, + {MKK3_MKKA1, MKK3, MKKA, DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKKA1 | PSCAN_MKKA1_G, CTRY_DEFAULT }, {MKK3_MKKA2,MKK3, MKKA, DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKKA2 | PSCAN_MKKA2_G, CTRY_JAPAN8 }, {MKK3_MKKC, MKK3, MKKC, DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC, NO_PSCAN, CTRY_JAPAN9 }, - {MKK3_FCCA, MKK3, FCCA, DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC, NO_PSCAN, 0 }, + {MKK3_FCCA, MKK3, FCCA, DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC, NO_PSCAN, CTRY_DEFAULT }, /* MKK4 */ {MKK4_MKKB, MKK4, MKKA, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKK3 | PSCAN_MKKA | PSCAN_MKKA_G, CTRY_JAPAN10 }, - {MKK4_MKKA1, MKK4, MKKA, DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKK3 | PSCAN_MKKA1 | PSCAN_MKKA1_G, 0 }, + {MKK4_MKKA1, MKK4, MKKA, DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKK3 | PSCAN_MKKA1 | PSCAN_MKKA1_G, CTRY_DEFAULT }, {MKK4_MKKA2, MKK4, MKKA, DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKK3 |PSCAN_MKKA2 | PSCAN_MKKA2_G, CTRY_JAPAN11 }, {MKK4_MKKC, MKK4, MKKC, DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKK3, CTRY_JAPAN12 }, - {MKK4_FCCA, MKK4, FCCA, DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKK3, 0 }, + {MKK4_FCCA, MKK4, FCCA, DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKK3, CTRY_DEFAULT }, /* MKK5 */ {MKK5_MKKB, MKK5, MKKA, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKK3 | PSCAN_MKKA | PSCAN_MKKA_G, CTRY_JAPAN13 }, @@ -566,24 +413,21 @@ static REG_DMN_PAIR_MAPPING regDomainPai {MKK8_MKKA2,MKK8, MKKA, DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKK1 | PSCAN_MKK3 | PSCAN_MKKA2 | PSCAN_MKKA2_G, CTRY_JAPAN23 }, {MKK8_MKKC, MKK8, MKKC, DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKK1 | PSCAN_MKK3 , CTRY_JAPAN24 }, - {MKK9_MKKA, MKK9, MKKA, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKK3 | PSCAN_MKKA | PSCAN_MKKA_G, 0 }, - {MKK10_MKKA, MKK10, MKKA, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKK3 | PSCAN_MKKA | PSCAN_MKKA_G, 0 }, + {MKK9_MKKA, MKK9, MKKA, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKK3 | PSCAN_MKKA | PSCAN_MKKA_G, CTRY_DEFAULT }, + {MKK10_MKKA, MKK10, MKKA, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKK3 | PSCAN_MKKA | PSCAN_MKKA_G, CTRY_DEFAULT }, /* These are super domains */ - {WOR0_WORLD, WOR0_WORLD, WOR0_WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {WOR1_WORLD, WOR1_WORLD, WOR1_WORLD, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, 0 }, - {WOR2_WORLD, WOR2_WORLD, WOR2_WORLD, DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, 0 }, - {WOR3_WORLD, WOR3_WORLD, WOR3_WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {WOR4_WORLD, WOR4_WORLD, WOR4_WORLD, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, 0 }, - {WOR5_ETSIC, WOR5_ETSIC, WOR5_ETSIC, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, 0 }, - {WOR01_WORLD, WOR01_WORLD, WOR01_WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {WOR02_WORLD, WOR02_WORLD, WOR02_WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {EU1_WORLD, EU1_WORLD, EU1_WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {WOR9_WORLD, WOR9_WORLD, WOR9_WORLD, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, 0 }, - {WORA_WORLD, WORA_WORLD, WORA_WORLD, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, 0 }, - {SR9_WORLD, NULL1, SR9_WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_SR9 }, - {XR9_WORLD, NULL1, XR9_WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_XR9 }, - {GZ901_WORLD, NULL1, GZ901_WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_GZ901 }, + {WOR0_WORLD, WOR0_WORLD, WOR0_WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {WOR1_WORLD, WOR1_WORLD, WOR1_WORLD, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {WOR2_WORLD, WOR2_WORLD, WOR2_WORLD, DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {WOR3_WORLD, WOR3_WORLD, WOR3_WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {WOR4_WORLD, WOR4_WORLD, WOR4_WORLD, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {WOR5_ETSIC, WOR5_ETSIC, WOR5_ETSIC, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {WOR01_WORLD, WOR01_WORLD, WOR01_WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {WOR02_WORLD, WOR02_WORLD, WOR02_WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {EU1_WORLD, EU1_WORLD, EU1_WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {WOR9_WORLD, WOR9_WORLD, WOR9_WORLD, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {WORA_WORLD, WORA_WORLD, WORA_WORLD, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, }; /* @@ -600,162 +444,149 @@ static REG_DMN_PAIR_MAPPING regDomainPai #define SUPER_DOMAIN_MASK 0x0fff #define COUNTRY_CODE_MASK 0x3fff -#define YES AH_TRUE -#define NO AH_FALSE - typedef struct { HAL_CTRY_CODE countryCode; HAL_REG_DOMAIN regDmnEnum; - HAL_BOOL allow11aTurbo; - HAL_BOOL allow11gTurbo; - HAL_BOOL allow11ng20; - HAL_BOOL allow11ng40; - HAL_BOOL allow11na20; - HAL_BOOL allow11na40; } COUNTRY_CODE_TO_ENUM_RD; static COUNTRY_CODE_TO_ENUM_RD allCountries[] = { - {CTRY_DEBUG, NO_ENUMRD, YES, YES, YES,YES, YES,YES }, - {CTRY_DEFAULT, DEF_REGDMN, YES, YES, YES,YES, YES,YES }, - {CTRY_ALBANIA, NULL1_WORLD, NO, YES, YES, NO, NO, NO }, - {CTRY_ALGERIA, NULL1_WORLD, NO, YES, YES, NO, NO, NO }, - {CTRY_ARGENTINA, APL3_WORLD, NO, NO, NO, NO, NO, NO }, - {CTRY_ARMENIA, ETSI4_WORLD, NO, YES, YES,YES, NO, NO }, - {CTRY_AUSTRALIA, FCC2_WORLD, YES, YES, YES,YES, YES,YES }, - {CTRY_AUSTRIA, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_AZERBAIJAN, ETSI4_WORLD, YES, YES, YES,YES, YES,YES }, - {CTRY_BAHRAIN, APL6_WORLD, NO, YES, YES,YES, YES, NO }, - {CTRY_BELARUS, NULL1_WORLD, NO, YES, YES,YES, YES, NO }, - {CTRY_BELGIUM, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_BELIZE, APL1_ETSIC, YES, YES, YES,YES, YES,YES }, - {CTRY_BOLIVIA, APL1_ETSIC, YES, YES, YES,YES, YES,YES }, - {CTRY_BRAZIL, FCC3_WORLD, NO, NO, YES, NO, YES, NO }, - {CTRY_BRUNEI_DARUSSALAM,APL1_WORLD, YES, YES, YES,YES, YES,YES }, - {CTRY_BULGARIA, ETSI6_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_CANADA, FCC2_FCCA, YES, YES, YES,YES, YES,YES }, - {CTRY_CHILE, APL6_WORLD, YES, YES, YES,YES, YES,YES }, - {CTRY_CHINA, APL1_WORLD, YES, YES, YES,YES, YES,YES }, - {CTRY_COLOMBIA, FCC1_FCCA, NO, YES, YES,YES, YES, NO }, - {CTRY_COSTA_RICA, NULL1_WORLD, NO, YES, YES,YES, YES, NO }, - {CTRY_CROATIA, ETSI3_WORLD, NO, YES, YES,YES, YES, NO }, - {CTRY_CYPRUS, ETSI1_WORLD, YES, YES, YES,YES, YES,YES }, - {CTRY_CZECH, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_DENMARK, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_DOMINICAN_REPUBLIC,FCC1_FCCA, YES, YES, YES,YES, YES,YES }, - {CTRY_ECUADOR, NULL1_WORLD, NO, NO, NO, NO, NO, NO }, - {CTRY_EGYPT, ETSI3_WORLD, NO, YES, YES,YES, YES, NO }, - {CTRY_EL_SALVADOR, NULL1_WORLD, NO, YES, YES,YES, NO, NO }, - {CTRY_ESTONIA, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_FINLAND, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_FRANCE, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_FRANCE2, ETSI3_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_GEORGIA, ETSI4_WORLD, YES, YES, YES,YES, YES,YES }, - {CTRY_GERMANY, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_GREECE, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_GUATEMALA, FCC1_FCCA, YES, YES, YES,YES, YES,YES }, - {CTRY_GZ901, GZ901_WORLD, NO, NO, NO, NO, NO, NO }, - {CTRY_HONDURAS, NULL1_WORLD, NO, YES, YES,YES, YES, NO }, - {CTRY_HONG_KONG, FCC2_WORLD, YES, YES, YES,YES, YES,YES }, - {CTRY_HUNGARY, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_ICELAND, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_INDIA, APL6_WORLD, NO, YES, YES,YES, YES, NO }, - {CTRY_INDONESIA, APL1_WORLD, NO, YES, YES,YES, YES, NO }, - {CTRY_IRAN, APL1_WORLD, YES, YES, YES,YES, YES,YES }, - {CTRY_IRELAND, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_ISRAEL, NULL1_WORLD, NO, YES, YES,YES, YES, NO }, - {CTRY_ITALY, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_JAPAN, MKK1_MKKA, NO, NO, YES, NO, YES, NO }, - {CTRY_JAPAN1, MKK1_MKKB, NO, NO, NO, NO, NO, NO }, - {CTRY_JAPAN2, MKK1_FCCA, NO, NO, NO, NO, NO, NO }, - {CTRY_JAPAN3, MKK2_MKKA, NO, NO, NO, NO, NO, NO }, - {CTRY_JAPAN4, MKK1_MKKA1, NO, NO, NO, NO, NO, NO }, - {CTRY_JAPAN5, MKK1_MKKA2, NO, NO, NO, NO, NO, NO }, - {CTRY_JAPAN6, MKK1_MKKC, NO, NO, NO, NO, NO, NO }, - - {CTRY_JAPAN7, MKK3_MKKB, NO, NO, NO, NO, NO, NO }, - {CTRY_JAPAN8, MKK3_MKKA2, NO, NO, NO, NO, NO, NO }, - {CTRY_JAPAN9, MKK3_MKKC, NO, NO, NO, NO, NO, NO }, - - {CTRY_JAPAN10, MKK4_MKKB, NO, NO, NO, NO, NO, NO }, - {CTRY_JAPAN11, MKK4_MKKA2, NO, NO, NO, NO, NO, NO }, - {CTRY_JAPAN12, MKK4_MKKC, NO, NO, NO, NO, NO, NO }, - - {CTRY_JAPAN13, MKK5_MKKB, NO, NO, NO, NO, NO, NO }, - {CTRY_JAPAN14, MKK5_MKKA2, NO, NO, NO, NO, NO, NO }, - {CTRY_JAPAN15, MKK5_MKKC, NO, NO, NO, NO, NO, NO }, - - {CTRY_JAPAN16, MKK6_MKKB, NO, NO, NO, NO, NO, NO }, - {CTRY_JAPAN17, MKK6_MKKA2, NO, NO, NO, NO, NO, NO }, - {CTRY_JAPAN18, MKK6_MKKC, NO, NO, NO, NO, NO, NO }, - - {CTRY_JAPAN19, MKK7_MKKB, NO, NO, NO, NO, NO, NO }, - {CTRY_JAPAN20, MKK7_MKKA2, NO, NO, YES, NO, YES, NO }, - {CTRY_JAPAN21, MKK7_MKKC, NO, NO, NO, NO, NO, NO }, - - {CTRY_JAPAN22, MKK8_MKKB, NO, NO, NO, NO, NO, NO }, - {CTRY_JAPAN23, MKK8_MKKA2, NO, NO, NO, NO, NO, NO }, - {CTRY_JAPAN24, MKK8_MKKC, NO, NO, NO, NO, NO, NO }, - - {CTRY_JORDAN, APL4_WORLD, NO, YES, YES,YES, YES, NO }, - {CTRY_KAZAKHSTAN, NULL1_WORLD, NO, YES, YES,YES, NO, NO }, - {CTRY_KOREA_NORTH, APL2_WORLD, YES, YES, YES,YES, YES,YES }, - {CTRY_KOREA_ROC, APL2_WORLD, NO, NO, YES, NO, YES, NO }, - {CTRY_KOREA_ROC2, APL2_WORLD, NO, NO, YES, NO, YES, NO }, - {CTRY_KOREA_ROC3, APL9_WORLD, NO, NO, YES, NO, YES, NO }, - {CTRY_KUWAIT, NULL1_WORLD, NO, YES, YES,YES, YES, NO }, - {CTRY_LATVIA, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_LEBANON, NULL1_WORLD, NO, YES, YES,YES, YES, NO }, - {CTRY_LIECHTENSTEIN,ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_LITHUANIA, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_LUXEMBOURG, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_MACAU, FCC2_WORLD, YES, YES, YES,YES, YES,YES }, - {CTRY_MACEDONIA, NULL1_WORLD, NO, YES, YES,YES, NO, NO }, - {CTRY_MALAYSIA, APL8_WORLD, NO, NO, YES, NO, YES, NO }, - {CTRY_MALTA, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_MEXICO, FCC1_FCCA, YES, YES, YES,YES, YES,YES }, - {CTRY_MONACO, ETSI4_WORLD, YES, YES, YES,YES, YES,YES }, - {CTRY_MOROCCO, NULL1_WORLD, NO, YES, YES,YES, NO, NO }, - {CTRY_NETHERLANDS, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_NEW_ZEALAND, FCC2_ETSIC, NO, YES, YES,YES, YES,YES }, - {CTRY_NORWAY, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_OMAN, APL6_WORLD, NO, YES, YES,YES, YES, NO }, - {CTRY_PAKISTAN, NULL1_WORLD, NO, YES, YES,YES, NO, NO }, - {CTRY_PANAMA, FCC1_FCCA, YES, YES, YES,YES, YES,YES }, - {CTRY_PERU, APL1_WORLD, NO, YES, YES,YES, YES, NO }, - {CTRY_PHILIPPINES, FCC3_WORLD, YES, YES, YES,YES, YES,YES }, - {CTRY_POLAND, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_PORTUGAL, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_PUERTO_RICO, FCC1_FCCA, YES, YES, YES,YES, YES,YES }, - {CTRY_QATAR, NULL1_WORLD, NO, YES, YES,YES, NO, NO }, - {CTRY_ROMANIA, NULL1_WORLD, NO, YES, YES,YES, NO, NO }, - {CTRY_RUSSIA, NULL1_WORLD, NO, YES, YES,YES, NO, NO }, - {CTRY_SAUDI_ARABIA,FCC2_WORLD, NO, YES, YES,YES, YES, NO }, - {CTRY_SINGAPORE, APL6_WORLD, YES, YES, YES,YES, YES,YES }, - {CTRY_SLOVAKIA, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_SLOVENIA, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_SOUTH_AFRICA,FCC3_WORLD, NO, YES, YES,YES, YES, NO }, - {CTRY_SPAIN, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_SR9, SR9_WORLD, NO, NO, NO, NO, NO, NO }, - {CTRY_SWEDEN, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_SWITZERLAND, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_SYRIA, NULL1_WORLD, NO, YES, YES,YES, YES, NO }, - {CTRY_TAIWAN, APL3_FCCA, YES, YES, YES,YES, YES,YES }, - {CTRY_THAILAND, NULL1_WORLD, NO, YES, YES,YES, NO, NO }, - {CTRY_TRINIDAD_Y_TOBAGO,ETSI4_WORLD, NO, YES, YES,YES, YES, NO }, - {CTRY_TUNISIA, ETSI3_WORLD, NO, YES, YES,YES, YES, NO }, - {CTRY_TURKEY, ETSI3_WORLD, NO, YES, YES,YES, YES, NO }, - {CTRY_UKRAINE, NULL1_WORLD, NO, YES, YES,YES, NO, NO }, - {CTRY_UAE, NULL1_WORLD, NO, YES, YES,YES, NO, NO }, - {CTRY_UNITED_KINGDOM, ETSI1_WORLD, NO, YES, YES,YES, YES, NO }, - {CTRY_UNITED_STATES, FCC1_FCCA, YES, YES, YES,YES, YES,YES }, - {CTRY_UNITED_STATES_FCC49,FCC4_FCCA,YES, YES, YES,YES, YES,YES }, - {CTRY_URUGUAY, FCC1_WORLD, NO, YES, YES,YES, YES, NO }, - {CTRY_UZBEKISTAN, FCC3_FCCA, YES, YES, YES,YES, YES,YES }, - {CTRY_VENEZUELA, APL2_ETSIC, NO, YES, YES,YES, YES, NO }, - {CTRY_VIET_NAM, NULL1_WORLD, NO, YES, YES,YES, NO, NO }, - {CTRY_XR9, XR9_WORLD, NO, NO, NO, NO, NO, NO }, - {CTRY_YEMEN, NULL1_WORLD, NO, YES, YES,YES, NO, NO }, - {CTRY_ZIMBABWE, NULL1_WORLD, NO, YES, YES,YES, NO, NO } + { CTRY_DEBUG, NO_ENUMRD }, + { CTRY_DEFAULT, DEF_REGDMN }, + { CTRY_ALBANIA, NULL1_WORLD }, + { CTRY_ALGERIA, NULL1_WORLD }, + { CTRY_ARGENTINA, APL3_WORLD }, + { CTRY_ARMENIA, ETSI4_WORLD }, + { CTRY_AUSTRALIA, FCC2_WORLD }, + { CTRY_AUSTRIA, ETSI1_WORLD }, + { CTRY_AZERBAIJAN, ETSI4_WORLD }, + { CTRY_BAHRAIN, APL6_WORLD }, + { CTRY_BELARUS, NULL1_WORLD }, + { CTRY_BELGIUM, ETSI1_WORLD }, + { CTRY_BELIZE, APL1_ETSIC }, + { CTRY_BOLIVIA, APL1_ETSIC }, + { CTRY_BRAZIL, FCC3_WORLD }, + { CTRY_BRUNEI_DARUSSALAM,APL1_WORLD }, + { CTRY_BULGARIA, ETSI6_WORLD }, + { CTRY_CANADA, FCC2_FCCA }, + { CTRY_CHILE, APL6_WORLD }, + { CTRY_CHINA, APL1_WORLD }, + { CTRY_COLOMBIA, FCC1_FCCA }, + { CTRY_COSTA_RICA, NULL1_WORLD }, + { CTRY_CROATIA, ETSI3_WORLD }, + { CTRY_CYPRUS, ETSI1_WORLD }, + { CTRY_CZECH, ETSI1_WORLD }, + { CTRY_DENMARK, ETSI1_WORLD }, + { CTRY_DOMINICAN_REPUBLIC,FCC1_FCCA }, + { CTRY_ECUADOR, NULL1_WORLD }, + { CTRY_EGYPT, ETSI3_WORLD }, + { CTRY_EL_SALVADOR, NULL1_WORLD }, + { CTRY_ESTONIA, ETSI1_WORLD }, + { CTRY_FINLAND, ETSI1_WORLD }, + { CTRY_FRANCE, ETSI1_WORLD }, + { CTRY_FRANCE2, ETSI3_WORLD }, + { CTRY_GEORGIA, ETSI4_WORLD }, + { CTRY_GERMANY, ETSI1_WORLD }, + { CTRY_GREECE, ETSI1_WORLD }, + { CTRY_GUATEMALA, FCC1_FCCA }, + { CTRY_HONDURAS, NULL1_WORLD }, + { CTRY_HONG_KONG, FCC2_WORLD }, + { CTRY_HUNGARY, ETSI1_WORLD }, + { CTRY_ICELAND, ETSI1_WORLD }, + { CTRY_INDIA, APL6_WORLD }, + { CTRY_INDONESIA, APL1_WORLD }, + { CTRY_IRAN, APL1_WORLD }, + { CTRY_IRELAND, ETSI1_WORLD }, + { CTRY_ISRAEL, NULL1_WORLD }, + { CTRY_ITALY, ETSI1_WORLD }, + { CTRY_JAPAN, MKK1_MKKA }, + { CTRY_JAPAN1, MKK1_MKKB }, + { CTRY_JAPAN2, MKK1_FCCA }, + { CTRY_JAPAN3, MKK2_MKKA }, + { CTRY_JAPAN4, MKK1_MKKA1 }, + { CTRY_JAPAN5, MKK1_MKKA2 }, + { CTRY_JAPAN6, MKK1_MKKC }, + + { CTRY_JAPAN7, MKK3_MKKB }, + { CTRY_JAPAN8, MKK3_MKKA2 }, + { CTRY_JAPAN9, MKK3_MKKC }, + + { CTRY_JAPAN10, MKK4_MKKB }, + { CTRY_JAPAN11, MKK4_MKKA2 }, + { CTRY_JAPAN12, MKK4_MKKC }, + + { CTRY_JAPAN13, MKK5_MKKB }, + { CTRY_JAPAN14, MKK5_MKKA2 }, + { CTRY_JAPAN15, MKK5_MKKC }, + + { CTRY_JAPAN16, MKK6_MKKB }, + { CTRY_JAPAN17, MKK6_MKKA2 }, + { CTRY_JAPAN18, MKK6_MKKC }, + + { CTRY_JAPAN19, MKK7_MKKB }, + { CTRY_JAPAN20, MKK7_MKKA2 }, + { CTRY_JAPAN21, MKK7_MKKC }, + + { CTRY_JAPAN22, MKK8_MKKB }, + { CTRY_JAPAN23, MKK8_MKKA2 }, + { CTRY_JAPAN24, MKK8_MKKC }, + + { CTRY_JORDAN, APL4_WORLD }, + { CTRY_KAZAKHSTAN, NULL1_WORLD }, + { CTRY_KOREA_NORTH, APL2_WORLD }, + { CTRY_KOREA_ROC, APL2_WORLD }, + { CTRY_KOREA_ROC2, APL2_WORLD }, + { CTRY_KOREA_ROC3, APL9_WORLD }, + { CTRY_KUWAIT, NULL1_WORLD }, + { CTRY_LATVIA, ETSI1_WORLD }, + { CTRY_LEBANON, NULL1_WORLD }, + { CTRY_LIECHTENSTEIN,ETSI1_WORLD }, + { CTRY_LITHUANIA, ETSI1_WORLD }, + { CTRY_LUXEMBOURG, ETSI1_WORLD }, + { CTRY_MACAU, FCC2_WORLD }, + { CTRY_MACEDONIA, NULL1_WORLD }, + { CTRY_MALAYSIA, APL8_WORLD }, + { CTRY_MALTA, ETSI1_WORLD }, + { CTRY_MEXICO, FCC1_FCCA }, + { CTRY_MONACO, ETSI4_WORLD }, + { CTRY_MOROCCO, NULL1_WORLD }, + { CTRY_NETHERLANDS, ETSI1_WORLD }, + { CTRY_NEW_ZEALAND, FCC2_ETSIC }, + { CTRY_NORWAY, ETSI1_WORLD }, + { CTRY_OMAN, APL6_WORLD }, + { CTRY_PAKISTAN, NULL1_WORLD }, + { CTRY_PANAMA, FCC1_FCCA }, + { CTRY_PERU, APL1_WORLD }, + { CTRY_PHILIPPINES, FCC3_WORLD }, + { CTRY_POLAND, ETSI1_WORLD }, + { CTRY_PORTUGAL, ETSI1_WORLD }, + { CTRY_PUERTO_RICO, FCC1_FCCA }, + { CTRY_QATAR, NULL1_WORLD }, + { CTRY_ROMANIA, NULL1_WORLD }, + { CTRY_RUSSIA, NULL1_WORLD }, + { CTRY_SAUDI_ARABIA,FCC2_WORLD }, *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-user@FreeBSD.ORG Wed Jan 21 17:36:08 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7269C1065706; Wed, 21 Jan 2009 17:36:08 +0000 (UTC) (envelope-from thompsa@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5BBC78FC1D; Wed, 21 Jan 2009 17:36:08 +0000 (UTC) (envelope-from thompsa@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 n0LHa8Lg085137; Wed, 21 Jan 2009 17:36:08 GMT (envelope-from thompsa@svn.freebsd.org) Received: (from thompsa@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n0LHa7CZ085124; Wed, 21 Jan 2009 17:36:07 GMT (envelope-from thompsa@svn.freebsd.org) Message-Id: <200901211736.n0LHa7CZ085124@svn.freebsd.org> From: Andrew Thompson Date: Wed, 21 Jan 2009 17:36:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r187547 - in user/thompsa/vaptq: . bin/kenv bin/ln bin/test cddl/contrib/opensolaris/cmd/zinject cddl/contrib/opensolaris/lib/libdtrace/common cddl/contrib/opensolaris/lib/libzfs/common... X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jan 2009 17:36:09 -0000 Author: thompsa Date: Wed Jan 21 17:36:06 2009 New Revision: 187547 URL: http://svn.freebsd.org/changeset/base/187547 Log: MFH r186399-187536 Added: user/thompsa/vaptq/contrib/file/tests/ - copied from r187541, head/contrib/file/tests/ user/thompsa/vaptq/contrib/openbsm/libauditd/ - copied from r187541, head/contrib/openbsm/libauditd/ user/thompsa/vaptq/lib/libauditd/ - copied from r187541, head/lib/libauditd/ user/thompsa/vaptq/sys/dev/syscons/teken/ - copied from r187541, head/sys/dev/syscons/teken/ user/thompsa/vaptq/sys/modules/netgraph/ether_echo/ - copied from r187541, head/sys/modules/netgraph/ether_echo/ user/thompsa/vaptq/sys/modules/usb2/controller_atmegadci/ - copied from r187541, head/sys/modules/usb2/controller_atmegadci/ user/thompsa/vaptq/sys/modules/usb2/serial_3g/ - copied from r187541, head/sys/modules/usb2/serial_3g/ user/thompsa/vaptq/tools/tools/ath/athrd/ - copied from r187541, head/tools/tools/ath/athrd/ user/thompsa/vaptq/tools/tools/ether_reflect/ - copied from r187541, head/tools/tools/ether_reflect/ user/thompsa/vaptq/tools/tools/nanobsd/gateworks/ - copied from r187541, head/tools/tools/nanobsd/gateworks/ user/thompsa/vaptq/tools/tools/net80211/wlantxtime/ - copied from r187541, head/tools/tools/net80211/wlantxtime/ user/thompsa/vaptq/tools/tools/sysbuild/ - copied from r187541, head/tools/tools/sysbuild/ Replaced: user/thompsa/vaptq/contrib/file/FREEBSD-upgrade - copied unchanged from r187541, head/contrib/file/FREEBSD-upgrade user/thompsa/vaptq/contrib/file/magic2mime - copied unchanged from r187541, head/contrib/file/magic2mime Deleted: user/thompsa/vaptq/contrib/bind9/bin/nsupdate/nsupdate.8 user/thompsa/vaptq/contrib/file/LEGAL.NOTICE user/thompsa/vaptq/contrib/file/Makefile.std user/thompsa/vaptq/contrib/file/PORTING user/thompsa/vaptq/contrib/file/configure.in user/thompsa/vaptq/contrib/file/magic.mime user/thompsa/vaptq/contrib/file/mkinstalldirs user/thompsa/vaptq/contrib/file/test.c user/thompsa/vaptq/sys/arm/arm/cpufunc_asm_feroceon.S user/thompsa/vaptq/sys/arm/xscale/ixp425/ixp435_ehci.c user/thompsa/vaptq/sys/boot/common/load.c user/thompsa/vaptq/sys/dev/digi/con.CX-IBM.h user/thompsa/vaptq/sys/dev/digi/con.CX.h user/thompsa/vaptq/sys/dev/digi/con.EPCX.h user/thompsa/vaptq/sys/dev/digi/con.MBank.h user/thompsa/vaptq/sys/dev/sound/pci/au88x0.c user/thompsa/vaptq/sys/dev/sound/pci/au88x0.h user/thompsa/vaptq/sys/dev/syscons/scterm-dumb.c user/thompsa/vaptq/sys/dev/syscons/scterm-sc.c user/thompsa/vaptq/sys/dev/syscons/sctermvar.h user/thompsa/vaptq/sys/dev/usb2/ethernet/if_aue2_reg.h user/thompsa/vaptq/sys/dev/usb2/ethernet/if_axe2_reg.h user/thompsa/vaptq/sys/dev/usb2/ethernet/if_cdce2_reg.h user/thompsa/vaptq/sys/dev/usb2/ethernet/if_cue2_reg.h user/thompsa/vaptq/sys/dev/usb2/ethernet/if_kue2_fw.h user/thompsa/vaptq/sys/dev/usb2/ethernet/if_kue2_reg.h user/thompsa/vaptq/sys/dev/usb2/ethernet/if_rue2_reg.h user/thompsa/vaptq/sys/dev/usb2/ethernet/if_udav2_reg.h user/thompsa/vaptq/sys/dev/usb2/wlan/if_rum2_fw.h user/thompsa/vaptq/sys/dev/usb2/wlan/if_rum2_reg.h user/thompsa/vaptq/sys/dev/usb2/wlan/if_rum2_var.h user/thompsa/vaptq/sys/dev/usb2/wlan/if_ural2_reg.h user/thompsa/vaptq/sys/dev/usb2/wlan/if_ural2_var.h user/thompsa/vaptq/sys/dev/usb2/wlan/if_zyd2_fw.h user/thompsa/vaptq/sys/dev/usb2/wlan/if_zyd2_reg.h user/thompsa/vaptq/sys/i386/include/xen/evtchn.h user/thompsa/vaptq/sys/i386/include/xen/hypervisor.h user/thompsa/vaptq/sys/i386/include/xen/xen_intr.h user/thompsa/vaptq/sys/modules/sound/driver/au88x0/ user/thompsa/vaptq/sys/netinet/ipprotosw.h user/thompsa/vaptq/sys/powerpc/booke/support.S user/thompsa/vaptq/tools/regression/usr.bin/jot/regress.wX.out user/thompsa/vaptq/usr.bin/mail/aux.c Modified: user/thompsa/vaptq/ (props changed) user/thompsa/vaptq/COPYRIGHT user/thompsa/vaptq/Makefile user/thompsa/vaptq/Makefile.inc1 user/thompsa/vaptq/ObsoleteFiles.inc user/thompsa/vaptq/UPDATING user/thompsa/vaptq/bin/kenv/kenv.1 user/thompsa/vaptq/bin/ln/ln.1 user/thompsa/vaptq/bin/test/test.1 user/thompsa/vaptq/cddl/contrib/opensolaris/cmd/zinject/zinject.c user/thompsa/vaptq/cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c user/thompsa/vaptq/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c user/thompsa/vaptq/contrib/bind9/ (props changed) user/thompsa/vaptq/contrib/bind9/CHANGES user/thompsa/vaptq/contrib/bind9/COPYRIGHT user/thompsa/vaptq/contrib/bind9/FAQ user/thompsa/vaptq/contrib/bind9/FAQ.xml user/thompsa/vaptq/contrib/bind9/README user/thompsa/vaptq/contrib/bind9/bin/check/check-tool.c user/thompsa/vaptq/contrib/bind9/bin/check/named-checkconf.c user/thompsa/vaptq/contrib/bind9/bin/check/named-checkzone.c user/thompsa/vaptq/contrib/bind9/bin/dig/dig.1 user/thompsa/vaptq/contrib/bind9/bin/dig/dig.c user/thompsa/vaptq/contrib/bind9/bin/dig/dig.docbook user/thompsa/vaptq/contrib/bind9/bin/dig/dig.html user/thompsa/vaptq/contrib/bind9/bin/dig/dighost.c user/thompsa/vaptq/contrib/bind9/bin/dig/host.1 user/thompsa/vaptq/contrib/bind9/bin/dig/host.docbook user/thompsa/vaptq/contrib/bind9/bin/dig/host.html user/thompsa/vaptq/contrib/bind9/bin/dnssec/dnssec-keygen.8 user/thompsa/vaptq/contrib/bind9/bin/dnssec/dnssec-keygen.docbook user/thompsa/vaptq/contrib/bind9/bin/dnssec/dnssec-keygen.html user/thompsa/vaptq/contrib/bind9/bin/dnssec/dnssec-signzone.8 user/thompsa/vaptq/contrib/bind9/bin/dnssec/dnssec-signzone.c user/thompsa/vaptq/contrib/bind9/bin/dnssec/dnssec-signzone.docbook user/thompsa/vaptq/contrib/bind9/bin/dnssec/dnssec-signzone.html user/thompsa/vaptq/contrib/bind9/bin/named/client.c user/thompsa/vaptq/contrib/bind9/bin/named/config.c user/thompsa/vaptq/contrib/bind9/bin/named/controlconf.c user/thompsa/vaptq/contrib/bind9/bin/named/include/named/globals.h user/thompsa/vaptq/contrib/bind9/bin/named/interfacemgr.c user/thompsa/vaptq/contrib/bind9/bin/named/lwaddr.c user/thompsa/vaptq/contrib/bind9/bin/named/lwdgnba.c user/thompsa/vaptq/contrib/bind9/bin/named/lwdnoop.c user/thompsa/vaptq/contrib/bind9/bin/named/lwresd.8 user/thompsa/vaptq/contrib/bind9/bin/named/lwresd.c user/thompsa/vaptq/contrib/bind9/bin/named/lwresd.docbook user/thompsa/vaptq/contrib/bind9/bin/named/lwresd.html user/thompsa/vaptq/contrib/bind9/bin/named/main.c user/thompsa/vaptq/contrib/bind9/bin/named/named.8 user/thompsa/vaptq/contrib/bind9/bin/named/named.conf.5 user/thompsa/vaptq/contrib/bind9/bin/named/named.conf.docbook user/thompsa/vaptq/contrib/bind9/bin/named/named.conf.html user/thompsa/vaptq/contrib/bind9/bin/named/named.docbook user/thompsa/vaptq/contrib/bind9/bin/named/named.html user/thompsa/vaptq/contrib/bind9/bin/named/query.c user/thompsa/vaptq/contrib/bind9/bin/named/server.c user/thompsa/vaptq/contrib/bind9/bin/named/unix/include/named/os.h user/thompsa/vaptq/contrib/bind9/bin/named/unix/os.c user/thompsa/vaptq/contrib/bind9/bin/named/update.c user/thompsa/vaptq/contrib/bind9/bin/nsupdate/Makefile.in user/thompsa/vaptq/contrib/bind9/bin/nsupdate/nsupdate.c user/thompsa/vaptq/contrib/bind9/bin/nsupdate/nsupdate.docbook user/thompsa/vaptq/contrib/bind9/bin/nsupdate/nsupdate.html user/thompsa/vaptq/contrib/bind9/bin/rndc/rndc-confgen.c user/thompsa/vaptq/contrib/bind9/bin/rndc/rndc.8 user/thompsa/vaptq/contrib/bind9/bin/rndc/rndc.c user/thompsa/vaptq/contrib/bind9/bin/rndc/rndc.docbook user/thompsa/vaptq/contrib/bind9/bin/rndc/rndc.html user/thompsa/vaptq/contrib/bind9/configure.in user/thompsa/vaptq/contrib/bind9/doc/arm/Bv9ARM-book.xml user/thompsa/vaptq/contrib/bind9/doc/arm/Bv9ARM.ch01.html user/thompsa/vaptq/contrib/bind9/doc/arm/Bv9ARM.ch02.html user/thompsa/vaptq/contrib/bind9/doc/arm/Bv9ARM.ch03.html user/thompsa/vaptq/contrib/bind9/doc/arm/Bv9ARM.ch04.html user/thompsa/vaptq/contrib/bind9/doc/arm/Bv9ARM.ch05.html user/thompsa/vaptq/contrib/bind9/doc/arm/Bv9ARM.ch06.html user/thompsa/vaptq/contrib/bind9/doc/arm/Bv9ARM.ch07.html user/thompsa/vaptq/contrib/bind9/doc/arm/Bv9ARM.ch08.html user/thompsa/vaptq/contrib/bind9/doc/arm/Bv9ARM.ch09.html user/thompsa/vaptq/contrib/bind9/doc/arm/Bv9ARM.ch10.html user/thompsa/vaptq/contrib/bind9/doc/arm/Bv9ARM.html user/thompsa/vaptq/contrib/bind9/doc/arm/Bv9ARM.pdf user/thompsa/vaptq/contrib/bind9/doc/arm/man.dig.html user/thompsa/vaptq/contrib/bind9/doc/arm/man.dnssec-keygen.html user/thompsa/vaptq/contrib/bind9/doc/arm/man.dnssec-signzone.html user/thompsa/vaptq/contrib/bind9/doc/arm/man.host.html user/thompsa/vaptq/contrib/bind9/doc/arm/man.named-checkconf.html user/thompsa/vaptq/contrib/bind9/doc/arm/man.named-checkzone.html user/thompsa/vaptq/contrib/bind9/doc/arm/man.named.html user/thompsa/vaptq/contrib/bind9/doc/arm/man.rndc-confgen.html user/thompsa/vaptq/contrib/bind9/doc/arm/man.rndc.conf.html user/thompsa/vaptq/contrib/bind9/doc/arm/man.rndc.html user/thompsa/vaptq/contrib/bind9/doc/misc/Makefile.in user/thompsa/vaptq/contrib/bind9/doc/misc/format-options.pl user/thompsa/vaptq/contrib/bind9/doc/misc/migration user/thompsa/vaptq/contrib/bind9/doc/misc/options user/thompsa/vaptq/contrib/bind9/doc/rfc/index user/thompsa/vaptq/contrib/bind9/lib/bind/api user/thompsa/vaptq/contrib/bind9/lib/bind/bsd/Makefile.in user/thompsa/vaptq/contrib/bind9/lib/bind/bsd/strerror.c user/thompsa/vaptq/contrib/bind9/lib/bind/bsd/strtoul.c user/thompsa/vaptq/contrib/bind9/lib/bind/configure.in user/thompsa/vaptq/contrib/bind9/lib/bind/dst/Makefile.in user/thompsa/vaptq/contrib/bind9/lib/bind/dst/dst_api.c user/thompsa/vaptq/contrib/bind9/lib/bind/dst/hmac_link.c user/thompsa/vaptq/contrib/bind9/lib/bind/dst/support.c user/thompsa/vaptq/contrib/bind9/lib/bind/include/Makefile.in user/thompsa/vaptq/contrib/bind9/lib/bind/include/arpa/nameser.h user/thompsa/vaptq/contrib/bind9/lib/bind/include/isc/assertions.h user/thompsa/vaptq/contrib/bind9/lib/bind/include/isc/eventlib.h user/thompsa/vaptq/contrib/bind9/lib/bind/include/isc/misc.h user/thompsa/vaptq/contrib/bind9/lib/bind/include/netdb.h user/thompsa/vaptq/contrib/bind9/lib/bind/include/resolv.h user/thompsa/vaptq/contrib/bind9/lib/bind/inet/Makefile.in user/thompsa/vaptq/contrib/bind9/lib/bind/inet/inet_net_pton.c user/thompsa/vaptq/contrib/bind9/lib/bind/inet/inet_network.c user/thompsa/vaptq/contrib/bind9/lib/bind/irs/Makefile.in user/thompsa/vaptq/contrib/bind9/lib/bind/irs/dns_ho.c user/thompsa/vaptq/contrib/bind9/lib/bind/irs/getnetgrent.c user/thompsa/vaptq/contrib/bind9/lib/bind/irs/getnetgrent_r.c user/thompsa/vaptq/contrib/bind9/lib/bind/irs/irp.c user/thompsa/vaptq/contrib/bind9/lib/bind/isc/Makefile.in user/thompsa/vaptq/contrib/bind9/lib/bind/isc/assertions.c user/thompsa/vaptq/contrib/bind9/lib/bind/isc/bitncmp.c user/thompsa/vaptq/contrib/bind9/lib/bind/isc/ctl_clnt.c user/thompsa/vaptq/contrib/bind9/lib/bind/isc/ctl_srvr.c user/thompsa/vaptq/contrib/bind9/lib/bind/isc/logging.c user/thompsa/vaptq/contrib/bind9/lib/bind/nameser/Makefile.in user/thompsa/vaptq/contrib/bind9/lib/bind/port_after.h.in user/thompsa/vaptq/contrib/bind9/lib/bind/port_before.h.in user/thompsa/vaptq/contrib/bind9/lib/bind/resolv/Makefile.in user/thompsa/vaptq/contrib/bind9/lib/bind/resolv/res_debug.c user/thompsa/vaptq/contrib/bind9/lib/bind/resolv/res_mkquery.c user/thompsa/vaptq/contrib/bind9/lib/bind/resolv/res_query.c user/thompsa/vaptq/contrib/bind9/lib/bind/resolv/res_send.c user/thompsa/vaptq/contrib/bind9/lib/bind9/api user/thompsa/vaptq/contrib/bind9/lib/bind9/check.c user/thompsa/vaptq/contrib/bind9/lib/dns/acache.c user/thompsa/vaptq/contrib/bind9/lib/dns/adb.c user/thompsa/vaptq/contrib/bind9/lib/dns/api user/thompsa/vaptq/contrib/bind9/lib/dns/cache.c user/thompsa/vaptq/contrib/bind9/lib/dns/dispatch.c user/thompsa/vaptq/contrib/bind9/lib/dns/dst_parse.c user/thompsa/vaptq/contrib/bind9/lib/dns/dst_parse.h user/thompsa/vaptq/contrib/bind9/lib/dns/include/dns/dispatch.h user/thompsa/vaptq/contrib/bind9/lib/dns/journal.c user/thompsa/vaptq/contrib/bind9/lib/dns/master.c user/thompsa/vaptq/contrib/bind9/lib/dns/masterdump.c user/thompsa/vaptq/contrib/bind9/lib/dns/message.c user/thompsa/vaptq/contrib/bind9/lib/dns/openssldsa_link.c user/thompsa/vaptq/contrib/bind9/lib/dns/opensslrsa_link.c user/thompsa/vaptq/contrib/bind9/lib/dns/rbt.c user/thompsa/vaptq/contrib/bind9/lib/dns/rbtdb.c user/thompsa/vaptq/contrib/bind9/lib/dns/rdata/generic/nsec_47.c user/thompsa/vaptq/contrib/bind9/lib/dns/rdata/generic/nsec_47.h user/thompsa/vaptq/contrib/bind9/lib/dns/rdata/generic/txt_16.c user/thompsa/vaptq/contrib/bind9/lib/dns/rdata/in_1/apl_42.c user/thompsa/vaptq/contrib/bind9/lib/dns/rdata/in_1/naptr_35.c user/thompsa/vaptq/contrib/bind9/lib/dns/request.c user/thompsa/vaptq/contrib/bind9/lib/dns/resolver.c user/thompsa/vaptq/contrib/bind9/lib/dns/rootns.c user/thompsa/vaptq/contrib/bind9/lib/dns/sdb.c user/thompsa/vaptq/contrib/bind9/lib/dns/tkey.c user/thompsa/vaptq/contrib/bind9/lib/dns/tsig.c user/thompsa/vaptq/contrib/bind9/lib/dns/validator.c user/thompsa/vaptq/contrib/bind9/lib/dns/view.c user/thompsa/vaptq/contrib/bind9/lib/dns/xfrin.c user/thompsa/vaptq/contrib/bind9/lib/dns/zone.c user/thompsa/vaptq/contrib/bind9/lib/isc/Makefile.in user/thompsa/vaptq/contrib/bind9/lib/isc/api user/thompsa/vaptq/contrib/bind9/lib/isc/assertions.c user/thompsa/vaptq/contrib/bind9/lib/isc/include/isc/assertions.h user/thompsa/vaptq/contrib/bind9/lib/isc/include/isc/lex.h user/thompsa/vaptq/contrib/bind9/lib/isc/include/isc/mem.h user/thompsa/vaptq/contrib/bind9/lib/isc/include/isc/msgs.h user/thompsa/vaptq/contrib/bind9/lib/isc/include/isc/platform.h.in user/thompsa/vaptq/contrib/bind9/lib/isc/include/isc/resource.h user/thompsa/vaptq/contrib/bind9/lib/isc/include/isc/socket.h user/thompsa/vaptq/contrib/bind9/lib/isc/include/isc/timer.h user/thompsa/vaptq/contrib/bind9/lib/isc/include/isc/types.h user/thompsa/vaptq/contrib/bind9/lib/isc/mem.c user/thompsa/vaptq/contrib/bind9/lib/isc/print.c user/thompsa/vaptq/contrib/bind9/lib/isc/pthreads/mutex.c user/thompsa/vaptq/contrib/bind9/lib/isc/timer.c user/thompsa/vaptq/contrib/bind9/lib/isc/unix/app.c user/thompsa/vaptq/contrib/bind9/lib/isc/unix/include/isc/net.h user/thompsa/vaptq/contrib/bind9/lib/isc/unix/net.c user/thompsa/vaptq/contrib/bind9/lib/isc/unix/resource.c user/thompsa/vaptq/contrib/bind9/lib/isc/unix/socket.c user/thompsa/vaptq/contrib/bind9/lib/isc/unix/socket_p.h user/thompsa/vaptq/contrib/bind9/lib/isc/unix/time.c user/thompsa/vaptq/contrib/bind9/lib/isccfg/api user/thompsa/vaptq/contrib/bind9/lib/isccfg/namedconf.c user/thompsa/vaptq/contrib/bind9/lib/lwres/api user/thompsa/vaptq/contrib/bind9/make/rules.in user/thompsa/vaptq/contrib/bind9/version user/thompsa/vaptq/contrib/cpio/ (props changed) user/thompsa/vaptq/contrib/csup/ (props changed) user/thompsa/vaptq/contrib/csup/GNUmakefile user/thompsa/vaptq/contrib/csup/Makefile user/thompsa/vaptq/contrib/csup/TODO user/thompsa/vaptq/contrib/csup/config.c user/thompsa/vaptq/contrib/csup/csup.1 user/thompsa/vaptq/contrib/csup/detailer.c user/thompsa/vaptq/contrib/csup/diff.c user/thompsa/vaptq/contrib/csup/diff.h user/thompsa/vaptq/contrib/csup/fattr.c user/thompsa/vaptq/contrib/csup/fattr.h user/thompsa/vaptq/contrib/csup/keyword.c user/thompsa/vaptq/contrib/csup/keyword.h user/thompsa/vaptq/contrib/csup/lister.c user/thompsa/vaptq/contrib/csup/misc.c user/thompsa/vaptq/contrib/csup/misc.h user/thompsa/vaptq/contrib/csup/mux.c user/thompsa/vaptq/contrib/csup/proto.c user/thompsa/vaptq/contrib/csup/proto.h user/thompsa/vaptq/contrib/csup/status.c user/thompsa/vaptq/contrib/csup/stream.c user/thompsa/vaptq/contrib/csup/stream.h user/thompsa/vaptq/contrib/csup/updater.c user/thompsa/vaptq/contrib/file/ (props changed) user/thompsa/vaptq/contrib/file/ChangeLog user/thompsa/vaptq/contrib/file/MAINT user/thompsa/vaptq/contrib/file/Magdir/adventure user/thompsa/vaptq/contrib/file/Magdir/animation user/thompsa/vaptq/contrib/file/Magdir/apple user/thompsa/vaptq/contrib/file/Magdir/archive user/thompsa/vaptq/contrib/file/Magdir/audio user/thompsa/vaptq/contrib/file/Magdir/c-lang user/thompsa/vaptq/contrib/file/Magdir/c64 user/thompsa/vaptq/contrib/file/Magdir/cafebabe user/thompsa/vaptq/contrib/file/Magdir/cddb user/thompsa/vaptq/contrib/file/Magdir/commands user/thompsa/vaptq/contrib/file/Magdir/compress user/thompsa/vaptq/contrib/file/Magdir/console user/thompsa/vaptq/contrib/file/Magdir/cracklib user/thompsa/vaptq/contrib/file/Magdir/ctags user/thompsa/vaptq/contrib/file/Magdir/database user/thompsa/vaptq/contrib/file/Magdir/diff user/thompsa/vaptq/contrib/file/Magdir/dump user/thompsa/vaptq/contrib/file/Magdir/elf user/thompsa/vaptq/contrib/file/Magdir/filesystems user/thompsa/vaptq/contrib/file/Magdir/flash user/thompsa/vaptq/contrib/file/Magdir/fonts user/thompsa/vaptq/contrib/file/Magdir/fortran user/thompsa/vaptq/contrib/file/Magdir/frame user/thompsa/vaptq/contrib/file/Magdir/freebsd user/thompsa/vaptq/contrib/file/Magdir/fsav user/thompsa/vaptq/contrib/file/Magdir/games user/thompsa/vaptq/contrib/file/Magdir/gimp user/thompsa/vaptq/contrib/file/Magdir/gnu user/thompsa/vaptq/contrib/file/Magdir/hp user/thompsa/vaptq/contrib/file/Magdir/iff user/thompsa/vaptq/contrib/file/Magdir/images user/thompsa/vaptq/contrib/file/Magdir/java user/thompsa/vaptq/contrib/file/Magdir/jpeg user/thompsa/vaptq/contrib/file/Magdir/lex user/thompsa/vaptq/contrib/file/Magdir/linux user/thompsa/vaptq/contrib/file/Magdir/lisp user/thompsa/vaptq/contrib/file/Magdir/macintosh user/thompsa/vaptq/contrib/file/Magdir/mail.news user/thompsa/vaptq/contrib/file/Magdir/mathematica user/thompsa/vaptq/contrib/file/Magdir/misctools user/thompsa/vaptq/contrib/file/Magdir/msdos user/thompsa/vaptq/contrib/file/Magdir/mup user/thompsa/vaptq/contrib/file/Magdir/os2 user/thompsa/vaptq/contrib/file/Magdir/palm user/thompsa/vaptq/contrib/file/Magdir/pdf user/thompsa/vaptq/contrib/file/Magdir/perl user/thompsa/vaptq/contrib/file/Magdir/pgp user/thompsa/vaptq/contrib/file/Magdir/pkgadd user/thompsa/vaptq/contrib/file/Magdir/printer user/thompsa/vaptq/contrib/file/Magdir/psion user/thompsa/vaptq/contrib/file/Magdir/revision user/thompsa/vaptq/contrib/file/Magdir/riff user/thompsa/vaptq/contrib/file/Magdir/rpm user/thompsa/vaptq/contrib/file/Magdir/rtf user/thompsa/vaptq/contrib/file/Magdir/sc user/thompsa/vaptq/contrib/file/Magdir/scientific user/thompsa/vaptq/contrib/file/Magdir/sgi user/thompsa/vaptq/contrib/file/Magdir/sgml user/thompsa/vaptq/contrib/file/Magdir/sharc user/thompsa/vaptq/contrib/file/Magdir/sketch user/thompsa/vaptq/contrib/file/Magdir/softquad user/thompsa/vaptq/contrib/file/Magdir/spectrum user/thompsa/vaptq/contrib/file/Magdir/tex user/thompsa/vaptq/contrib/file/Magdir/troff user/thompsa/vaptq/contrib/file/Magdir/unicode user/thompsa/vaptq/contrib/file/Magdir/uuencode user/thompsa/vaptq/contrib/file/Magdir/varied.script user/thompsa/vaptq/contrib/file/Magdir/vorbis user/thompsa/vaptq/contrib/file/Magdir/wordprocessors user/thompsa/vaptq/contrib/file/Makefile.am user/thompsa/vaptq/contrib/file/Makefile.in user/thompsa/vaptq/contrib/file/README user/thompsa/vaptq/contrib/file/acinclude.m4 user/thompsa/vaptq/contrib/file/aclocal.m4 user/thompsa/vaptq/contrib/file/apprentice.c user/thompsa/vaptq/contrib/file/ascmagic.c user/thompsa/vaptq/contrib/file/compress.c user/thompsa/vaptq/contrib/file/config.h.in user/thompsa/vaptq/contrib/file/configure user/thompsa/vaptq/contrib/file/file.c user/thompsa/vaptq/contrib/file/file.h user/thompsa/vaptq/contrib/file/file.man user/thompsa/vaptq/contrib/file/fsmagic.c user/thompsa/vaptq/contrib/file/funcs.c user/thompsa/vaptq/contrib/file/is_tar.c user/thompsa/vaptq/contrib/file/libmagic.man user/thompsa/vaptq/contrib/file/magic.c user/thompsa/vaptq/contrib/file/magic.h user/thompsa/vaptq/contrib/file/magic.man user/thompsa/vaptq/contrib/file/names.h user/thompsa/vaptq/contrib/file/patchlevel.h user/thompsa/vaptq/contrib/file/print.c user/thompsa/vaptq/contrib/file/readelf.c user/thompsa/vaptq/contrib/file/readelf.h user/thompsa/vaptq/contrib/file/softmagic.c user/thompsa/vaptq/contrib/file/tar.h user/thompsa/vaptq/contrib/gdtoa/ (props changed) user/thompsa/vaptq/contrib/lukemftpd/src/extern.h user/thompsa/vaptq/contrib/lukemftpd/src/ftpcmd.y user/thompsa/vaptq/contrib/lukemftpd/src/ftpd.c user/thompsa/vaptq/contrib/ncurses/ (props changed) user/thompsa/vaptq/contrib/netcat/ (props changed) user/thompsa/vaptq/contrib/ntp/ (props changed) user/thompsa/vaptq/contrib/ntp/ntpd/ntp_crypto.c user/thompsa/vaptq/contrib/openbsm/ (props changed) user/thompsa/vaptq/contrib/openbsm/INSTALL user/thompsa/vaptq/contrib/openbsm/Makefile.am user/thompsa/vaptq/contrib/openbsm/Makefile.in user/thompsa/vaptq/contrib/openbsm/NEWS user/thompsa/vaptq/contrib/openbsm/README user/thompsa/vaptq/contrib/openbsm/TODO user/thompsa/vaptq/contrib/openbsm/VERSION user/thompsa/vaptq/contrib/openbsm/bin/Makefile.in user/thompsa/vaptq/contrib/openbsm/bin/audit/Makefile.am user/thompsa/vaptq/contrib/openbsm/bin/audit/Makefile.in user/thompsa/vaptq/contrib/openbsm/bin/audit/audit.8 user/thompsa/vaptq/contrib/openbsm/bin/audit/audit.c user/thompsa/vaptq/contrib/openbsm/bin/auditd/Makefile.am user/thompsa/vaptq/contrib/openbsm/bin/auditd/Makefile.in user/thompsa/vaptq/contrib/openbsm/bin/auditd/audit_warn.c user/thompsa/vaptq/contrib/openbsm/bin/auditd/auditd.8 user/thompsa/vaptq/contrib/openbsm/bin/auditd/auditd.c user/thompsa/vaptq/contrib/openbsm/bin/auditd/auditd.h user/thompsa/vaptq/contrib/openbsm/bin/auditfilterd/Makefile.in user/thompsa/vaptq/contrib/openbsm/bin/auditreduce/Makefile.in user/thompsa/vaptq/contrib/openbsm/bin/auditreduce/auditreduce.c user/thompsa/vaptq/contrib/openbsm/bin/praudit/Makefile.in user/thompsa/vaptq/contrib/openbsm/bsm/Makefile.am user/thompsa/vaptq/contrib/openbsm/bsm/Makefile.in user/thompsa/vaptq/contrib/openbsm/bsm/audit_uevents.h user/thompsa/vaptq/contrib/openbsm/bsm/libbsm.h user/thompsa/vaptq/contrib/openbsm/compat/endian.h user/thompsa/vaptq/contrib/openbsm/config/config.h user/thompsa/vaptq/contrib/openbsm/config/config.h.in user/thompsa/vaptq/contrib/openbsm/configure user/thompsa/vaptq/contrib/openbsm/configure.ac user/thompsa/vaptq/contrib/openbsm/etc/audit_event user/thompsa/vaptq/contrib/openbsm/libbsm/Makefile.am user/thompsa/vaptq/contrib/openbsm/libbsm/Makefile.in user/thompsa/vaptq/contrib/openbsm/libbsm/au_token.3 user/thompsa/vaptq/contrib/openbsm/libbsm/audit_submit.3 user/thompsa/vaptq/contrib/openbsm/libbsm/bsm_audit.c user/thompsa/vaptq/contrib/openbsm/libbsm/bsm_class.c user/thompsa/vaptq/contrib/openbsm/libbsm/bsm_control.c user/thompsa/vaptq/contrib/openbsm/libbsm/bsm_event.c user/thompsa/vaptq/contrib/openbsm/libbsm/bsm_io.c user/thompsa/vaptq/contrib/openbsm/libbsm/bsm_mask.c user/thompsa/vaptq/contrib/openbsm/libbsm/bsm_token.c user/thompsa/vaptq/contrib/openbsm/libbsm/bsm_user.c user/thompsa/vaptq/contrib/openbsm/libbsm/bsm_wrappers.c user/thompsa/vaptq/contrib/openbsm/libbsm/libbsm.3 user/thompsa/vaptq/contrib/openbsm/man/Makefile.in user/thompsa/vaptq/contrib/openbsm/man/audit.log.5 user/thompsa/vaptq/contrib/openbsm/man/audit_user.5 user/thompsa/vaptq/contrib/openbsm/modules/Makefile.in user/thompsa/vaptq/contrib/openbsm/modules/auditfilter_noop/Makefile.in user/thompsa/vaptq/contrib/openbsm/sys/Makefile.in user/thompsa/vaptq/contrib/openbsm/sys/bsm/Makefile.am user/thompsa/vaptq/contrib/openbsm/sys/bsm/Makefile.in user/thompsa/vaptq/contrib/openbsm/sys/bsm/audit.h user/thompsa/vaptq/contrib/openbsm/sys/bsm/audit_internal.h user/thompsa/vaptq/contrib/openbsm/sys/bsm/audit_kevents.h user/thompsa/vaptq/contrib/openbsm/sys/bsm/audit_record.h user/thompsa/vaptq/contrib/openbsm/test/Makefile.in user/thompsa/vaptq/contrib/openbsm/test/bsm/Makefile.in user/thompsa/vaptq/contrib/openbsm/test/bsm/generate.c user/thompsa/vaptq/contrib/openbsm/test/reference/arg32_record user/thompsa/vaptq/contrib/openbsm/test/reference/data_record user/thompsa/vaptq/contrib/openbsm/test/reference/data_token user/thompsa/vaptq/contrib/openbsm/test/reference/file_record user/thompsa/vaptq/contrib/openbsm/test/reference/header32_token user/thompsa/vaptq/contrib/openbsm/test/reference/in_addr_record user/thompsa/vaptq/contrib/openbsm/test/reference/ip_record user/thompsa/vaptq/contrib/openbsm/test/reference/ipc_record user/thompsa/vaptq/contrib/openbsm/test/reference/iport_record user/thompsa/vaptq/contrib/openbsm/test/reference/opaque_record user/thompsa/vaptq/contrib/openbsm/test/reference/path_record user/thompsa/vaptq/contrib/openbsm/test/reference/process32_record user/thompsa/vaptq/contrib/openbsm/test/reference/process32ex_record-IPv4 user/thompsa/vaptq/contrib/openbsm/test/reference/process32ex_record-IPv6 user/thompsa/vaptq/contrib/openbsm/test/reference/process64_record user/thompsa/vaptq/contrib/openbsm/test/reference/process64ex_record-IPv4 user/thompsa/vaptq/contrib/openbsm/test/reference/process64ex_record-IPv6 user/thompsa/vaptq/contrib/openbsm/test/reference/return32_record user/thompsa/vaptq/contrib/openbsm/test/reference/return32_token user/thompsa/vaptq/contrib/openbsm/test/reference/seq_record user/thompsa/vaptq/contrib/openbsm/test/reference/subject32_record user/thompsa/vaptq/contrib/openbsm/test/reference/subject32ex_record user/thompsa/vaptq/contrib/openbsm/test/reference/text_record user/thompsa/vaptq/contrib/openbsm/test/reference/zonename_record user/thompsa/vaptq/contrib/openbsm/tools/Makefile.in user/thompsa/vaptq/contrib/openpam/ (props changed) user/thompsa/vaptq/contrib/pf/ (props changed) user/thompsa/vaptq/contrib/sendmail/ (props changed) user/thompsa/vaptq/contrib/top/ (props changed) user/thompsa/vaptq/contrib/wpa_supplicant/ (props changed) user/thompsa/vaptq/crypto/openssh/ (props changed) user/thompsa/vaptq/crypto/openssl/ (props changed) user/thompsa/vaptq/crypto/openssl/apps/speed.c user/thompsa/vaptq/crypto/openssl/apps/spkac.c user/thompsa/vaptq/crypto/openssl/apps/verify.c user/thompsa/vaptq/crypto/openssl/apps/x509.c user/thompsa/vaptq/crypto/openssl/ssl/s2_clnt.c user/thompsa/vaptq/crypto/openssl/ssl/s2_srvr.c user/thompsa/vaptq/crypto/openssl/ssl/s3_clnt.c user/thompsa/vaptq/crypto/openssl/ssl/s3_srvr.c user/thompsa/vaptq/crypto/openssl/ssl/ssltest.c user/thompsa/vaptq/etc/defaults/rc.conf user/thompsa/vaptq/etc/devd.conf user/thompsa/vaptq/etc/devd/asus.conf user/thompsa/vaptq/etc/periodic/weekly/Makefile user/thompsa/vaptq/etc/regdomain.xml user/thompsa/vaptq/games/fortune/datfiles/freebsd-tips user/thompsa/vaptq/gnu/lib/libstdc++/Makefile user/thompsa/vaptq/gnu/usr.bin/man/manpath/manpath.config user/thompsa/vaptq/lib/Makefile user/thompsa/vaptq/lib/bind/bind/config.h user/thompsa/vaptq/lib/bind/bind/port_after.h user/thompsa/vaptq/lib/bind/bind/port_before.h user/thompsa/vaptq/lib/bind/config.h user/thompsa/vaptq/lib/bind/dns/code.h user/thompsa/vaptq/lib/bind/dns/dns/enumclass.h user/thompsa/vaptq/lib/bind/dns/dns/enumtype.h user/thompsa/vaptq/lib/bind/dns/dns/rdatastruct.h user/thompsa/vaptq/lib/bind/isc/Makefile user/thompsa/vaptq/lib/bind/isc/isc/platform.h user/thompsa/vaptq/lib/libarchive/archive_entry.c user/thompsa/vaptq/lib/libarchive/archive_read_support_compression_gzip.c user/thompsa/vaptq/lib/libarchive/archive_read_support_format_iso9660.c user/thompsa/vaptq/lib/libarchive/archive_write_disk.c user/thompsa/vaptq/lib/libarchive/test/Makefile user/thompsa/vaptq/lib/libarchive/test/test_write_disk_secure.c user/thompsa/vaptq/lib/libbsm/Makefile user/thompsa/vaptq/lib/libc/ (props changed) user/thompsa/vaptq/lib/libc/arm/_fpmath.h user/thompsa/vaptq/lib/libc/arm/arith.h user/thompsa/vaptq/lib/libc/include/fpmath.h user/thompsa/vaptq/lib/libc/locale/mbstowcs.c user/thompsa/vaptq/lib/libc/locale/wcsftime.c user/thompsa/vaptq/lib/libc/locale/wcstombs.c user/thompsa/vaptq/lib/libc/net/getaddrinfo.3 user/thompsa/vaptq/lib/libc/stdio/fputws.c user/thompsa/vaptq/lib/libc/stdio/vfprintf.c user/thompsa/vaptq/lib/libc/stdio/vfscanf.c user/thompsa/vaptq/lib/libc/stdio/vfwprintf.c user/thompsa/vaptq/lib/libc/stdio/vfwscanf.c user/thompsa/vaptq/lib/libc/stdio/vswscanf.c user/thompsa/vaptq/lib/libc/stdio/wsetup.c user/thompsa/vaptq/lib/libc/stdtime/ (props changed) user/thompsa/vaptq/lib/libc/string/Makefile.inc user/thompsa/vaptq/lib/libc/string/ffs.3 user/thompsa/vaptq/lib/libc/string/ffsll.c (props changed) user/thompsa/vaptq/lib/libc/string/flsll.c (props changed) user/thompsa/vaptq/lib/libc/string/strlcat.c user/thompsa/vaptq/lib/libc/string/strlcpy.3 user/thompsa/vaptq/lib/libc/sys/jail.2 user/thompsa/vaptq/lib/libc/sys/kldunload.2 user/thompsa/vaptq/lib/libc/sys/socket.2 user/thompsa/vaptq/lib/libc/sys/timer_create.2 user/thompsa/vaptq/lib/libmagic/Makefile user/thompsa/vaptq/lib/libmd/mdX.3 user/thompsa/vaptq/lib/libstand/bootp.c user/thompsa/vaptq/lib/libusb20/libusb20.c user/thompsa/vaptq/lib/libusb20/libusb20_desc.c user/thompsa/vaptq/lib/libutil/ (props changed) user/thompsa/vaptq/lib/libutil/kinfo_getfile.c user/thompsa/vaptq/lib/libutil/kinfo_getvmmap.c user/thompsa/vaptq/lib/msun/src/e_rem_pio2.c user/thompsa/vaptq/lib/msun/src/e_rem_pio2f.c user/thompsa/vaptq/lib/msun/src/k_cosf.c user/thompsa/vaptq/lib/msun/src/k_sinf.c user/thompsa/vaptq/lib/msun/src/k_tanf.c user/thompsa/vaptq/lib/msun/src/math.h user/thompsa/vaptq/lib/msun/src/math_private.h user/thompsa/vaptq/libexec/comsat/comsat.c user/thompsa/vaptq/libexec/ftpd/extern.h user/thompsa/vaptq/libexec/ftpd/ftpcmd.y user/thompsa/vaptq/libexec/ftpd/ftpd.c user/thompsa/vaptq/release/doc/en_US.ISO8859-1/relnotes/article.sgml user/thompsa/vaptq/sbin/ddb/ddb.8 user/thompsa/vaptq/sbin/fdisk/fdisk.c user/thompsa/vaptq/sbin/fsck_ffs/fsck.h user/thompsa/vaptq/sbin/fsck_ffs/fsck_ffs.8 user/thompsa/vaptq/sbin/fsck_ffs/fsutil.c user/thompsa/vaptq/sbin/fsck_ffs/main.c user/thompsa/vaptq/sbin/geom/class/virstor/gvirstor.8 user/thompsa/vaptq/sbin/geom/misc/subr.c user/thompsa/vaptq/sbin/ifconfig/ifconfig.8 user/thompsa/vaptq/sbin/ifconfig/ifconfig.c user/thompsa/vaptq/sbin/ifconfig/ifieee80211.c user/thompsa/vaptq/sbin/ipfw/ipfw2.c user/thompsa/vaptq/sbin/md5/md5.1 user/thompsa/vaptq/sbin/mdconfig/mdconfig.8 user/thompsa/vaptq/sbin/mdconfig/mdconfig.c user/thompsa/vaptq/sbin/mount/getmntopts.c user/thompsa/vaptq/sbin/mount/mount.c user/thompsa/vaptq/sbin/mount_msdosfs/mount_msdosfs.8 user/thompsa/vaptq/sbin/mount_ntfs/mount_ntfs.8 user/thompsa/vaptq/sbin/ping/ping.8 user/thompsa/vaptq/sbin/recoverdisk/recoverdisk.c user/thompsa/vaptq/sbin/route/route.c user/thompsa/vaptq/sbin/savecore/savecore.8 user/thompsa/vaptq/sbin/shutdown/shutdown.8 user/thompsa/vaptq/share/doc/bind9/Makefile user/thompsa/vaptq/share/examples/cvsup/refuse.README user/thompsa/vaptq/share/man/man4/Makefile user/thompsa/vaptq/share/man/man4/ae.4 user/thompsa/vaptq/share/man/man4/ath.4 user/thompsa/vaptq/share/man/man4/bce.4 user/thompsa/vaptq/share/man/man4/bge.4 user/thompsa/vaptq/share/man/man4/cd.4 user/thompsa/vaptq/share/man/man4/cpuctl.4 user/thompsa/vaptq/share/man/man4/gem.4 user/thompsa/vaptq/share/man/man4/hme.4 user/thompsa/vaptq/share/man/man4/ndis.4 user/thompsa/vaptq/share/man/man4/ng_tty.4 user/thompsa/vaptq/share/man/man4/sdhci.4 user/thompsa/vaptq/share/man/man4/snd_hda.4 user/thompsa/vaptq/share/man/man4/snd_ich.4 user/thompsa/vaptq/share/man/man4/sysmouse.4 user/thompsa/vaptq/share/man/man4/textdump.4 user/thompsa/vaptq/share/man/man4/uscanner.4 user/thompsa/vaptq/share/man/man5/nsswitch.conf.5 user/thompsa/vaptq/share/man/man5/rc.conf.5 user/thompsa/vaptq/share/man/man7/build.7 user/thompsa/vaptq/share/man/man9/dev_clone.9 user/thompsa/vaptq/share/man/man9/domain.9 user/thompsa/vaptq/share/man/man9/insmntque.9 user/thompsa/vaptq/share/man/man9/redzone.9 user/thompsa/vaptq/share/misc/bsd-family-tree user/thompsa/vaptq/share/misc/pci_vendors user/thompsa/vaptq/share/mk/bsd.libnames.mk user/thompsa/vaptq/share/mk/bsd.own.mk user/thompsa/vaptq/share/zoneinfo/ (props changed) user/thompsa/vaptq/share/zoneinfo/leapseconds user/thompsa/vaptq/sys/ (props changed) user/thompsa/vaptq/sys/amd64/amd64/amd64_mem.c user/thompsa/vaptq/sys/amd64/amd64/cpu_switch.S user/thompsa/vaptq/sys/amd64/amd64/exception.S user/thompsa/vaptq/sys/amd64/amd64/identcpu.c user/thompsa/vaptq/sys/amd64/amd64/initcpu.c user/thompsa/vaptq/sys/amd64/amd64/msi.c user/thompsa/vaptq/sys/amd64/conf/GENERIC user/thompsa/vaptq/sys/amd64/include/cputypes.h user/thompsa/vaptq/sys/amd64/include/md_var.h user/thompsa/vaptq/sys/amd64/include/specialreg.h user/thompsa/vaptq/sys/arm/arm/cpufunc.c user/thompsa/vaptq/sys/arm/arm/elf_trampoline.c user/thompsa/vaptq/sys/arm/at91/at91_mci.c user/thompsa/vaptq/sys/arm/conf/AVILA user/thompsa/vaptq/sys/arm/conf/CAMBRIA user/thompsa/vaptq/sys/arm/conf/EP80219 user/thompsa/vaptq/sys/arm/conf/HL200 user/thompsa/vaptq/sys/arm/conf/IQ31244 user/thompsa/vaptq/sys/arm/conf/NSLU user/thompsa/vaptq/sys/arm/include/armreg.h user/thompsa/vaptq/sys/arm/include/cpufunc.h user/thompsa/vaptq/sys/arm/include/ieee.h user/thompsa/vaptq/sys/arm/mv/common.c user/thompsa/vaptq/sys/arm/mv/discovery/db78xxx.c user/thompsa/vaptq/sys/arm/mv/discovery/discovery.c user/thompsa/vaptq/sys/arm/mv/files.mv user/thompsa/vaptq/sys/arm/mv/gpio.c user/thompsa/vaptq/sys/arm/mv/kirkwood/db88f6xxx.c user/thompsa/vaptq/sys/arm/mv/kirkwood/kirkwood.c user/thompsa/vaptq/sys/arm/mv/mv_machdep.c user/thompsa/vaptq/sys/arm/mv/mv_pci.c user/thompsa/vaptq/sys/arm/mv/mvreg.h user/thompsa/vaptq/sys/arm/mv/mvvar.h user/thompsa/vaptq/sys/arm/mv/obio.c user/thompsa/vaptq/sys/arm/mv/orion/db88f5xxx.c user/thompsa/vaptq/sys/arm/mv/orion/orion.c user/thompsa/vaptq/sys/arm/xscale/i8134x/i81342_mcu.c user/thompsa/vaptq/sys/arm/xscale/ixp425/files.ixp425 user/thompsa/vaptq/sys/arm/xscale/ixp425/if_npe.c user/thompsa/vaptq/sys/arm/xscale/ixp425/if_npereg.h user/thompsa/vaptq/sys/arm/xscale/ixp425/ixp425.c user/thompsa/vaptq/sys/arm/xscale/ixp425/ixp425_npe.c user/thompsa/vaptq/sys/arm/xscale/ixp425/ixp425_npevar.h user/thompsa/vaptq/sys/arm/xscale/ixp425/ixp425reg.h user/thompsa/vaptq/sys/arm/xscale/ixp425/ixp425var.h user/thompsa/vaptq/sys/boot/forth/loader.4th user/thompsa/vaptq/sys/boot/forth/pnp.4th user/thompsa/vaptq/sys/boot/forth/support.4th user/thompsa/vaptq/sys/boot/i386/boot0/Makefile user/thompsa/vaptq/sys/boot/i386/boot0/boot0.S user/thompsa/vaptq/sys/boot/i386/libi386/bootinfo64.c user/thompsa/vaptq/sys/bsm/audit.h user/thompsa/vaptq/sys/bsm/audit_internal.h user/thompsa/vaptq/sys/bsm/audit_kevents.h user/thompsa/vaptq/sys/bsm/audit_record.h user/thompsa/vaptq/sys/cam/cam_xpt.c user/thompsa/vaptq/sys/cam/cam_xpt_sim.h user/thompsa/vaptq/sys/cam/scsi/scsi_all.c user/thompsa/vaptq/sys/cam/scsi/scsi_cd.c user/thompsa/vaptq/sys/cam/scsi/scsi_ch.c user/thompsa/vaptq/sys/cam/scsi/scsi_da.c user/thompsa/vaptq/sys/cam/scsi/scsi_pass.c user/thompsa/vaptq/sys/cam/scsi/scsi_pt.c user/thompsa/vaptq/sys/cam/scsi/scsi_sa.c user/thompsa/vaptq/sys/cam/scsi/scsi_ses.c user/thompsa/vaptq/sys/cam/scsi/scsi_sg.c user/thompsa/vaptq/sys/compat/freebsd32/freebsd32_misc.c user/thompsa/vaptq/sys/compat/linprocfs/linprocfs.c user/thompsa/vaptq/sys/compat/linux/linux_misc.c user/thompsa/vaptq/sys/compat/ndis/kern_ndis.c user/thompsa/vaptq/sys/compat/ndis/kern_windrv.c user/thompsa/vaptq/sys/compat/ndis/ndis_var.h user/thompsa/vaptq/sys/compat/ndis/ntoskrnl_var.h user/thompsa/vaptq/sys/compat/ndis/subr_ndis.c user/thompsa/vaptq/sys/compat/ndis/subr_ntoskrnl.c user/thompsa/vaptq/sys/compat/ndis/subr_usbd.c user/thompsa/vaptq/sys/compat/ndis/usbd_var.h user/thompsa/vaptq/sys/conf/Makefile.arm user/thompsa/vaptq/sys/conf/NOTES user/thompsa/vaptq/sys/conf/files user/thompsa/vaptq/sys/conf/files.amd64 user/thompsa/vaptq/sys/conf/files.i386 user/thompsa/vaptq/sys/conf/files.ia64 user/thompsa/vaptq/sys/conf/files.powerpc user/thompsa/vaptq/sys/conf/files.sparc64 user/thompsa/vaptq/sys/conf/kern.post.mk user/thompsa/vaptq/sys/conf/kern.pre.mk user/thompsa/vaptq/sys/conf/newvers.sh user/thompsa/vaptq/sys/conf/options user/thompsa/vaptq/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c user/thompsa/vaptq/sys/contrib/pf/ (props changed) user/thompsa/vaptq/sys/crypto/via/padlock.c user/thompsa/vaptq/sys/crypto/via/padlock_hash.c user/thompsa/vaptq/sys/dev/acpi_support/acpi_asus.c user/thompsa/vaptq/sys/dev/acpica/acpi_battery.c user/thompsa/vaptq/sys/dev/adb/adb_kbd.c user/thompsa/vaptq/sys/dev/agp/agp.c user/thompsa/vaptq/sys/dev/agp/agp_amd64.c user/thompsa/vaptq/sys/dev/agp/agp_i810.c user/thompsa/vaptq/sys/dev/ata/ata-queue.c user/thompsa/vaptq/sys/dev/ata/atapi-cam.c user/thompsa/vaptq/sys/dev/ath/ath_hal/ah_regdomain.c user/thompsa/vaptq/sys/dev/ath/ath_hal/ar5211/ar5211_misc.c user/thompsa/vaptq/sys/dev/ath/ath_hal/ar5212/ar5212_misc.c user/thompsa/vaptq/sys/dev/ath/ath_hal/ar5212/ar5212_rfgain.c user/thompsa/vaptq/sys/dev/ath/ath_rate/amrr/amrr.c user/thompsa/vaptq/sys/dev/ath/ath_rate/onoe/onoe.c user/thompsa/vaptq/sys/dev/ath/ath_rate/sample/sample.c user/thompsa/vaptq/sys/dev/ath/if_ath.c user/thompsa/vaptq/sys/dev/ath/if_ath_pci.c user/thompsa/vaptq/sys/dev/ath/if_athioctl.h user/thompsa/vaptq/sys/dev/ath/if_athvar.h user/thompsa/vaptq/sys/dev/bce/if_bce.c user/thompsa/vaptq/sys/dev/cardbus/cardbus.c user/thompsa/vaptq/sys/dev/cfe/cfe_console.c user/thompsa/vaptq/sys/dev/dcons/dcons_crom.c user/thompsa/vaptq/sys/dev/dcons/dcons_os.c user/thompsa/vaptq/sys/dev/drm/radeon_irq.c user/thompsa/vaptq/sys/dev/e1000/if_igb.c user/thompsa/vaptq/sys/dev/exca/exca.c user/thompsa/vaptq/sys/dev/fxp/if_fxp.c user/thompsa/vaptq/sys/dev/if_ndis/if_ndis.c user/thompsa/vaptq/sys/dev/if_ndis/if_ndis_pccard.c user/thompsa/vaptq/sys/dev/if_ndis/if_ndis_pci.c user/thompsa/vaptq/sys/dev/if_ndis/if_ndis_usb.c user/thompsa/vaptq/sys/dev/if_ndis/if_ndisvar.h user/thompsa/vaptq/sys/dev/iicbus/ad7418.c user/thompsa/vaptq/sys/dev/iicbus/ds1672.c user/thompsa/vaptq/sys/dev/iicbus/icee.c user/thompsa/vaptq/sys/dev/iicbus/if_ic.c user/thompsa/vaptq/sys/dev/iicbus/iic.c user/thompsa/vaptq/sys/dev/iicbus/iicbus.c user/thompsa/vaptq/sys/dev/iicbus/iicsmb.c user/thompsa/vaptq/sys/dev/md/md.c user/thompsa/vaptq/sys/dev/mge/if_mge.c user/thompsa/vaptq/sys/dev/mge/if_mgevar.h user/thompsa/vaptq/sys/dev/mmc/mmc.c user/thompsa/vaptq/sys/dev/mpt/mpt.c user/thompsa/vaptq/sys/dev/mpt/mpt.h user/thompsa/vaptq/sys/dev/mpt/mpt_cam.c user/thompsa/vaptq/sys/dev/mpt/mpt_raid.c user/thompsa/vaptq/sys/dev/mpt/mpt_user.c user/thompsa/vaptq/sys/dev/msk/if_msk.c user/thompsa/vaptq/sys/dev/msk/if_mskreg.h user/thompsa/vaptq/sys/dev/ofw/ofw_bus_subr.c user/thompsa/vaptq/sys/dev/ofw/openfirm.c user/thompsa/vaptq/sys/dev/ofw/openfirm.h user/thompsa/vaptq/sys/dev/pccard/pccardvar.h user/thompsa/vaptq/sys/dev/pci/pci.c user/thompsa/vaptq/sys/dev/pcn/if_pcn.c user/thompsa/vaptq/sys/dev/puc/pucdata.c user/thompsa/vaptq/sys/dev/re/if_re.c user/thompsa/vaptq/sys/dev/sound/pci/cmi.c user/thompsa/vaptq/sys/dev/sound/pci/hda/hdac.c user/thompsa/vaptq/sys/dev/sound/pcm/dsp.c user/thompsa/vaptq/sys/dev/sound/pcm/mixer.c user/thompsa/vaptq/sys/dev/sound/pcm/sound.c user/thompsa/vaptq/sys/dev/sound/pcm/sound.h user/thompsa/vaptq/sys/dev/syscons/scterm.c user/thompsa/vaptq/sys/dev/syscons/syscons.c user/thompsa/vaptq/sys/dev/syscons/syscons.h user/thompsa/vaptq/sys/dev/uart/uart_cpu_mv.c user/thompsa/vaptq/sys/dev/uart/uart_tty.c user/thompsa/vaptq/sys/dev/usb/ehci.c user/thompsa/vaptq/sys/dev/usb/ehci_mbus.c user/thompsa/vaptq/sys/dev/usb/ehci_pci.c user/thompsa/vaptq/sys/dev/usb/ehcivar.h user/thompsa/vaptq/sys/dev/usb/if_zyd.c user/thompsa/vaptq/sys/dev/usb/uftdi.c user/thompsa/vaptq/sys/dev/usb/uhci_pci.c user/thompsa/vaptq/sys/dev/usb/umass.c user/thompsa/vaptq/sys/dev/usb/usbdevs user/thompsa/vaptq/sys/dev/usb/usbdi.c user/thompsa/vaptq/sys/dev/usb/uscanner.c user/thompsa/vaptq/sys/dev/usb2/bluetooth/ng_ubt2.c user/thompsa/vaptq/sys/dev/usb2/bluetooth/ng_ubt2_var.h user/thompsa/vaptq/sys/dev/usb2/bluetooth/ubtbcmfw2.c user/thompsa/vaptq/sys/dev/usb2/controller/at91dci.c user/thompsa/vaptq/sys/dev/usb2/controller/at91dci.h user/thompsa/vaptq/sys/dev/usb2/controller/at91dci_atmelarm.c user/thompsa/vaptq/sys/dev/usb2/controller/ehci2.c user/thompsa/vaptq/sys/dev/usb2/controller/ehci2.h user/thompsa/vaptq/sys/dev/usb2/controller/ehci2_pci.c user/thompsa/vaptq/sys/dev/usb2/controller/musb2_otg.c user/thompsa/vaptq/sys/dev/usb2/controller/musb2_otg.h user/thompsa/vaptq/sys/dev/usb2/controller/musb2_otg_atmelarm.c user/thompsa/vaptq/sys/dev/usb2/controller/ohci2.c user/thompsa/vaptq/sys/dev/usb2/controller/ohci2.h user/thompsa/vaptq/sys/dev/usb2/controller/ohci2_atmelarm.c user/thompsa/vaptq/sys/dev/usb2/controller/ohci2_pci.c user/thompsa/vaptq/sys/dev/usb2/controller/uhci2.c user/thompsa/vaptq/sys/dev/usb2/controller/uhci2.h user/thompsa/vaptq/sys/dev/usb2/controller/uhci2_pci.c user/thompsa/vaptq/sys/dev/usb2/controller/usb2_bus.h user/thompsa/vaptq/sys/dev/usb2/controller/usb2_controller.c user/thompsa/vaptq/sys/dev/usb2/controller/usb2_controller.h user/thompsa/vaptq/sys/dev/usb2/controller/uss820dci.c user/thompsa/vaptq/sys/dev/usb2/controller/uss820dci.h user/thompsa/vaptq/sys/dev/usb2/controller/uss820dci_atmelarm.c user/thompsa/vaptq/sys/dev/usb2/core/usb2_busdma.c user/thompsa/vaptq/sys/dev/usb2/core/usb2_compat_linux.c user/thompsa/vaptq/sys/dev/usb2/core/usb2_core.h user/thompsa/vaptq/sys/dev/usb2/core/usb2_debug.c user/thompsa/vaptq/sys/dev/usb2/core/usb2_device.c user/thompsa/vaptq/sys/dev/usb2/core/usb2_device.h user/thompsa/vaptq/sys/dev/usb2/core/usb2_dynamic.c user/thompsa/vaptq/sys/dev/usb2/core/usb2_dynamic.h user/thompsa/vaptq/sys/dev/usb2/core/usb2_generic.c user/thompsa/vaptq/sys/dev/usb2/core/usb2_handle_request.c user/thompsa/vaptq/sys/dev/usb2/core/usb2_hub.c user/thompsa/vaptq/sys/dev/usb2/core/usb2_hub.h user/thompsa/vaptq/sys/dev/usb2/core/usb2_mbuf.h user/thompsa/vaptq/sys/dev/usb2/core/usb2_msctest.c user/thompsa/vaptq/sys/dev/usb2/core/usb2_msctest.h user/thompsa/vaptq/sys/dev/usb2/core/usb2_parse.c user/thompsa/vaptq/sys/dev/usb2/core/usb2_request.c user/thompsa/vaptq/sys/dev/usb2/core/usb2_request.h user/thompsa/vaptq/sys/dev/usb2/core/usb2_sw_transfer.c user/thompsa/vaptq/sys/dev/usb2/core/usb2_transfer.c user/thompsa/vaptq/sys/dev/usb2/core/usb2_transfer.h user/thompsa/vaptq/sys/dev/usb2/ethernet/if_aue2.c user/thompsa/vaptq/sys/dev/usb2/ethernet/if_axe2.c user/thompsa/vaptq/sys/dev/usb2/ethernet/if_cdce2.c user/thompsa/vaptq/sys/dev/usb2/ethernet/if_cue2.c user/thompsa/vaptq/sys/dev/usb2/ethernet/if_kue2.c user/thompsa/vaptq/sys/dev/usb2/ethernet/if_rue2.c user/thompsa/vaptq/sys/dev/usb2/ethernet/if_udav2.c user/thompsa/vaptq/sys/dev/usb2/image/uscanner2.c user/thompsa/vaptq/sys/dev/usb2/include/usb2_defs.h user/thompsa/vaptq/sys/dev/usb2/include/usb2_devid.h user/thompsa/vaptq/sys/dev/usb2/include/usb2_devtable.h user/thompsa/vaptq/sys/dev/usb2/include/usb2_ioctl.h user/thompsa/vaptq/sys/dev/usb2/include/usb2_standard.h user/thompsa/vaptq/sys/dev/usb2/input/uhid2.c user/thompsa/vaptq/sys/dev/usb2/input/ukbd2.c user/thompsa/vaptq/sys/dev/usb2/input/ums2.c user/thompsa/vaptq/sys/dev/usb2/misc/ufm2.c user/thompsa/vaptq/sys/dev/usb2/serial/u3g2.c user/thompsa/vaptq/sys/dev/usb2/serial/uark2.c user/thompsa/vaptq/sys/dev/usb2/serial/ubsa2.c user/thompsa/vaptq/sys/dev/usb2/serial/ubser2.c user/thompsa/vaptq/sys/dev/usb2/serial/uchcom2.c user/thompsa/vaptq/sys/dev/usb2/serial/ucycom2.c user/thompsa/vaptq/sys/dev/usb2/serial/ufoma2.c user/thompsa/vaptq/sys/dev/usb2/serial/uftdi2.c user/thompsa/vaptq/sys/dev/usb2/serial/ugensa2.c user/thompsa/vaptq/sys/dev/usb2/serial/uipaq2.c user/thompsa/vaptq/sys/dev/usb2/serial/ulpt2.c user/thompsa/vaptq/sys/dev/usb2/serial/umct2.c user/thompsa/vaptq/sys/dev/usb2/serial/umodem2.c user/thompsa/vaptq/sys/dev/usb2/serial/umoscom2.c user/thompsa/vaptq/sys/dev/usb2/serial/uplcom2.c user/thompsa/vaptq/sys/dev/usb2/serial/usb2_serial.c user/thompsa/vaptq/sys/dev/usb2/serial/usb2_serial.h user/thompsa/vaptq/sys/dev/usb2/serial/uvisor2.c user/thompsa/vaptq/sys/dev/usb2/serial/uvscom2.c user/thompsa/vaptq/sys/dev/usb2/sound/uaudio2.c user/thompsa/vaptq/sys/dev/usb2/storage/ata-usb2.c user/thompsa/vaptq/sys/dev/usb2/storage/umass2.c user/thompsa/vaptq/sys/dev/usb2/storage/urio2.c user/thompsa/vaptq/sys/dev/usb2/storage/ustorage2_fs.c user/thompsa/vaptq/sys/dev/usb2/wlan/if_rum2.c user/thompsa/vaptq/sys/dev/usb2/wlan/if_ural2.c user/thompsa/vaptq/sys/dev/usb2/wlan/if_zyd2.c user/thompsa/vaptq/sys/dev/xen/blkfront/blkfront.c user/thompsa/vaptq/sys/dev/xen/console/console.c user/thompsa/vaptq/sys/dev/xen/console/xencons_ring.c user/thompsa/vaptq/sys/dev/xen/evtchn/evtchn_dev.c user/thompsa/vaptq/sys/dev/xen/netfront/netfront.c user/thompsa/vaptq/sys/fs/devfs/devfs_vnops.c user/thompsa/vaptq/sys/fs/msdosfs/msdosfs_conv.c user/thompsa/vaptq/sys/fs/msdosfs/msdosfs_denode.c user/thompsa/vaptq/sys/fs/procfs/procfs_map.c user/thompsa/vaptq/sys/fs/pseudofs/pseudofs_vncache.c user/thompsa/vaptq/sys/fs/pseudofs/pseudofs_vnops.c user/thompsa/vaptq/sys/geom/geom_vfs.c user/thompsa/vaptq/sys/geom/part/g_part.c user/thompsa/vaptq/sys/geom/part/g_part_bsd.c user/thompsa/vaptq/sys/geom/part/g_part_pc98.c user/thompsa/vaptq/sys/geom/part/g_part_vtoc8.c user/thompsa/vaptq/sys/geom/vinum/geom_vinum_plex.c user/thompsa/vaptq/sys/gnu/fs/ext2fs/ext2_bitops.h user/thompsa/vaptq/sys/gnu/fs/ext2fs/ext2_fs.h user/thompsa/vaptq/sys/gnu/fs/ext2fs/ext2_fs_sb.h user/thompsa/vaptq/sys/gnu/fs/ext2fs/ext2_inode.c user/thompsa/vaptq/sys/gnu/fs/ext2fs/ext2_linux_ialloc.c user/thompsa/vaptq/sys/gnu/fs/ext2fs/ext2_vfsops.c user/thompsa/vaptq/sys/i386/conf/GENERIC user/thompsa/vaptq/sys/i386/conf/XEN user/thompsa/vaptq/sys/i386/cpufreq/est.c user/thompsa/vaptq/sys/i386/i386/genassym.c user/thompsa/vaptq/sys/i386/i386/i686_mem.c user/thompsa/vaptq/sys/i386/i386/identcpu.c user/thompsa/vaptq/sys/i386/i386/initcpu.c user/thompsa/vaptq/sys/i386/i386/machdep.c user/thompsa/vaptq/sys/i386/i386/msi.c user/thompsa/vaptq/sys/i386/i386/vm_machdep.c user/thompsa/vaptq/sys/i386/ibcs2/ibcs2_sysi86.c user/thompsa/vaptq/sys/i386/include/xen/xenfunc.h user/thompsa/vaptq/sys/i386/isa/npx.c user/thompsa/vaptq/sys/i386/xen/clock.c user/thompsa/vaptq/sys/i386/xen/mp_machdep.c user/thompsa/vaptq/sys/i386/xen/mptable.c user/thompsa/vaptq/sys/i386/xen/pmap.c user/thompsa/vaptq/sys/i386/xen/xen_machdep.c user/thompsa/vaptq/sys/ia64/ia64/pmap.c user/thompsa/vaptq/sys/kern/kern_clock.c user/thompsa/vaptq/sys/kern/kern_descrip.c user/thompsa/vaptq/sys/kern/kern_jail.c user/thompsa/vaptq/sys/kern/kern_mbuf.c user/thompsa/vaptq/sys/kern/kern_proc.c user/thompsa/vaptq/sys/kern/kern_synch.c user/thompsa/vaptq/sys/kern/kern_sysctl.c user/thompsa/vaptq/sys/kern/kern_timeout.c user/thompsa/vaptq/sys/kern/kern_xxx.c user/thompsa/vaptq/sys/kern/sched_4bsd.c user/thompsa/vaptq/sys/kern/sched_ule.c user/thompsa/vaptq/sys/kern/subr_param.c user/thompsa/vaptq/sys/kern/subr_pcpu.c user/thompsa/vaptq/sys/kern/subr_witness.c user/thompsa/vaptq/sys/kern/sysv_sem.c user/thompsa/vaptq/sys/kern/tty.c user/thompsa/vaptq/sys/kern/uipc_cow.c user/thompsa/vaptq/sys/kern/uipc_debug.c user/thompsa/vaptq/sys/kern/uipc_domain.c user/thompsa/vaptq/sys/kern/uipc_mbuf.c user/thompsa/vaptq/sys/kern/uipc_usrreq.c user/thompsa/vaptq/sys/kern/vfs_cache.c user/thompsa/vaptq/sys/kern/vfs_export.c user/thompsa/vaptq/sys/kern/vfs_extattr.c user/thompsa/vaptq/sys/kern/vfs_subr.c user/thompsa/vaptq/sys/kern/vfs_syscalls.c user/thompsa/vaptq/sys/kern/vfs_vnops.c user/thompsa/vaptq/sys/kern/vnode_if.src user/thompsa/vaptq/sys/mips/idt/idtpci.c user/thompsa/vaptq/sys/mips/include/pmap.h user/thompsa/vaptq/sys/mips/malta/gt_pci.c user/thompsa/vaptq/sys/mips/mips/busdma_machdep.c user/thompsa/vaptq/sys/mips/mips/cpu.c user/thompsa/vaptq/sys/mips/mips/machdep.c user/thompsa/vaptq/sys/mips/mips/nexus.c user/thompsa/vaptq/sys/mips/mips/pmap.c user/thompsa/vaptq/sys/modules/Makefile user/thompsa/vaptq/sys/modules/iwnfw/Makefile user/thompsa/vaptq/sys/modules/ndis/Makefile user/thompsa/vaptq/sys/modules/netgraph/Makefile user/thompsa/vaptq/sys/modules/usb2/Makefile user/thompsa/vaptq/sys/net/if_loop.c user/thompsa/vaptq/sys/net/if_tun.c user/thompsa/vaptq/sys/net/route.c user/thompsa/vaptq/sys/net/route.h user/thompsa/vaptq/sys/net/rtsock.c user/thompsa/vaptq/sys/net80211/ieee80211.c user/thompsa/vaptq/sys/net80211/ieee80211.h user/thompsa/vaptq/sys/net80211/ieee80211_adhoc.c user/thompsa/vaptq/sys/net80211/ieee80211_ddb.c user/thompsa/vaptq/sys/net80211/ieee80211_freebsd.c user/thompsa/vaptq/sys/net80211/ieee80211_hostap.c user/thompsa/vaptq/sys/net80211/ieee80211_input.c user/thompsa/vaptq/sys/net80211/ieee80211_input.h user/thompsa/vaptq/sys/net80211/ieee80211_ioctl.c user/thompsa/vaptq/sys/net80211/ieee80211_ioctl.h user/thompsa/vaptq/sys/net80211/ieee80211_node.c user/thompsa/vaptq/sys/net80211/ieee80211_node.h user/thompsa/vaptq/sys/net80211/ieee80211_output.c user/thompsa/vaptq/sys/net80211/ieee80211_proto.h user/thompsa/vaptq/sys/net80211/ieee80211_scan.h user/thompsa/vaptq/sys/net80211/ieee80211_scan_sta.c user/thompsa/vaptq/sys/net80211/ieee80211_var.h user/thompsa/vaptq/sys/net80211/ieee80211_wds.c user/thompsa/vaptq/sys/netgraph/bluetooth/hci/ng_hci_main.c user/thompsa/vaptq/sys/netgraph/bluetooth/l2cap/ng_l2cap_llpi.c user/thompsa/vaptq/sys/netgraph/ng_deflate.c user/thompsa/vaptq/sys/netgraph/ng_ether.c user/thompsa/vaptq/sys/netgraph/ng_iface.c user/thompsa/vaptq/sys/netgraph/ng_iface.h user/thompsa/vaptq/sys/netgraph/ng_mppc.c user/thompsa/vaptq/sys/netgraph/ng_ppp.c user/thompsa/vaptq/sys/netgraph/ng_pred1.c user/thompsa/vaptq/sys/netgraph/ng_vjc.c user/thompsa/vaptq/sys/netinet/if_ether.c user/thompsa/vaptq/sys/netinet/in.c user/thompsa/vaptq/sys/netinet/in.h user/thompsa/vaptq/sys/netinet/in_pcb.c user/thompsa/vaptq/sys/netinet/in_pcb.h user/thompsa/vaptq/sys/netinet/ip_output.c user/thompsa/vaptq/sys/netinet/libalias/alias_ftp.c user/thompsa/vaptq/sys/netinet/libalias/alias_irc.c user/thompsa/vaptq/sys/netinet/libalias/alias_nbt.c user/thompsa/vaptq/sys/netinet/tcp_input.c user/thompsa/vaptq/sys/netinet/tcp_subr.c user/thompsa/vaptq/sys/netinet/tcp_syncache.c user/thompsa/vaptq/sys/netinet/tcp_timer.c user/thompsa/vaptq/sys/netinet/tcp_var.h user/thompsa/vaptq/sys/netinet/udp_usrreq.c user/thompsa/vaptq/sys/netinet/udp_var.h user/thompsa/vaptq/sys/netinet/vinet.h user/thompsa/vaptq/sys/netinet6/in6.c user/thompsa/vaptq/sys/netinet6/in6_gif.c user/thompsa/vaptq/sys/netinet6/in6_ifattach.c user/thompsa/vaptq/sys/netinet6/ip6protosw.h user/thompsa/vaptq/sys/netinet6/nd6_nbr.c user/thompsa/vaptq/sys/netinet6/udp6_usrreq.c user/thompsa/vaptq/sys/netipsec/ipsec.c user/thompsa/vaptq/sys/netipsec/ipsec.h user/thompsa/vaptq/sys/netipsec/vipsec.h user/thompsa/vaptq/sys/netipsec/xform_ipip.c user/thompsa/vaptq/sys/nfsclient/nfs_vnops.c user/thompsa/vaptq/sys/pc98/cbus/scterm-sck.c user/thompsa/vaptq/sys/pc98/conf/GENERIC user/thompsa/vaptq/sys/pci/if_rlreg.h user/thompsa/vaptq/sys/powerpc/booke/locore.S user/thompsa/vaptq/sys/powerpc/booke/machdep.c user/thompsa/vaptq/sys/powerpc/booke/pmap.c user/thompsa/vaptq/sys/powerpc/booke/trap_subr.S user/thompsa/vaptq/sys/powerpc/conf/NOTES user/thompsa/vaptq/sys/powerpc/include/pcpu.h user/thompsa/vaptq/sys/powerpc/include/pmap.h user/thompsa/vaptq/sys/powerpc/include/pte.h user/thompsa/vaptq/sys/powerpc/include/tlb.h user/thompsa/vaptq/sys/powerpc/powermac/ata_macio.c user/thompsa/vaptq/sys/powerpc/powermac/grackle.c user/thompsa/vaptq/sys/powerpc/powermac/gracklevar.h user/thompsa/vaptq/sys/powerpc/powermac/macgpio.c user/thompsa/vaptq/sys/powerpc/powermac/macio.c user/thompsa/vaptq/sys/powerpc/powermac/uninorth.c user/thompsa/vaptq/sys/powerpc/powermac/uninorthvar.h user/thompsa/vaptq/sys/powerpc/powerpc/genassym.c user/thompsa/vaptq/sys/security/audit/audit.h user/thompsa/vaptq/sys/security/audit/audit_bsm.c user/thompsa/vaptq/sys/security/audit/audit_bsm_token.c user/thompsa/vaptq/sys/security/audit/audit_pipe.c user/thompsa/vaptq/sys/security/mac/mac_framework.c user/thompsa/vaptq/sys/security/mac/mac_inet6.c user/thompsa/vaptq/sys/security/mac/mac_internal.h user/thompsa/vaptq/sys/security/mac/mac_policy.h user/thompsa/vaptq/sys/security/mac_biba/mac_biba.c user/thompsa/vaptq/sys/security/mac_bsdextended/mac_bsdextended.c user/thompsa/vaptq/sys/security/mac_ifoff/mac_ifoff.c user/thompsa/vaptq/sys/security/mac_lomac/mac_lomac.c user/thompsa/vaptq/sys/security/mac_mls/mac_mls.c user/thompsa/vaptq/sys/security/mac_none/mac_none.c user/thompsa/vaptq/sys/security/mac_partition/mac_partition.c user/thompsa/vaptq/sys/security/mac_portacl/mac_portacl.c user/thompsa/vaptq/sys/security/mac_seeotheruids/mac_seeotheruids.c user/thompsa/vaptq/sys/security/mac_stub/mac_stub.c user/thompsa/vaptq/sys/security/mac_test/mac_test.c user/thompsa/vaptq/sys/sparc64/include/tlb.h user/thompsa/vaptq/sys/sparc64/sparc64/machdep.c user/thompsa/vaptq/sys/sparc64/sparc64/pmap.c user/thompsa/vaptq/sys/sun4v/include/pcpu.h user/thompsa/vaptq/sys/sys/copyright.h user/thompsa/vaptq/sys/sys/elf64.h user/thompsa/vaptq/sys/sys/elf_common.h user/thompsa/vaptq/sys/sys/elf_generic.h user/thompsa/vaptq/sys/sys/file.h user/thompsa/vaptq/sys/sys/imgact_elf.h user/thompsa/vaptq/sys/sys/ktr.h user/thompsa/vaptq/sys/sys/link_elf.h user/thompsa/vaptq/sys/sys/lock.h user/thompsa/vaptq/sys/sys/mbuf.h user/thompsa/vaptq/sys/sys/param.h user/thompsa/vaptq/sys/sys/pcpu.h user/thompsa/vaptq/sys/sys/protosw.h user/thompsa/vaptq/sys/sys/sched.h user/thompsa/vaptq/sys/sys/soundcard.h user/thompsa/vaptq/sys/sys/tree.h user/thompsa/vaptq/sys/sys/vnode.h user/thompsa/vaptq/sys/ufs/ffs/ffs_inode.c user/thompsa/vaptq/sys/ufs/ffs/ffs_vfsops.c user/thompsa/vaptq/sys/ufs/ffs/ffs_vnops.c user/thompsa/vaptq/sys/ufs/ufs/ufs_dirhash.c user/thompsa/vaptq/sys/ufs/ufs/ufs_extattr.c user/thompsa/vaptq/sys/ufs/ufs/ufs_lookup.c user/thompsa/vaptq/sys/ufs/ufs/ufs_vnops.c user/thompsa/vaptq/sys/vm/vm_map.c user/thompsa/vaptq/sys/vm/vm_map.h user/thompsa/vaptq/sys/vm/vm_mmap.c user/thompsa/vaptq/sys/vm/vm_page.c user/thompsa/vaptq/sys/vm/vm_page.h user/thompsa/vaptq/sys/xen/evtchn/evtchn.c user/thompsa/vaptq/sys/xen/evtchn/evtchn_dev.c user/thompsa/vaptq/sys/xen/features.c user/thompsa/vaptq/sys/xen/gnttab.c user/thompsa/vaptq/sys/xen/gnttab.h user/thompsa/vaptq/sys/xen/xenbus/xenbus_client.c user/thompsa/vaptq/sys/xen/xenbus/xenbus_comms.c user/thompsa/vaptq/sys/xen/xenbus/xenbus_comms.h user/thompsa/vaptq/sys/xen/xenbus/xenbus_dev.c user/thompsa/vaptq/sys/xen/xenbus/xenbus_probe.c user/thompsa/vaptq/sys/xen/xenbus/xenbus_probe_backend.c user/thompsa/vaptq/sys/xen/xenbus/xenbus_xs.c user/thompsa/vaptq/sys/xen/xenbus/xenbusvar.h user/thompsa/vaptq/tools/regression/bin/sh/builtins/type1.0.stderr (props changed) user/thompsa/vaptq/tools/regression/fstest/tests/conf user/thompsa/vaptq/tools/regression/fstest/tests/misc.sh user/thompsa/vaptq/tools/regression/usr.bin/jot/regress.sh user/thompsa/vaptq/tools/sched/schedgraph.py user/thompsa/vaptq/tools/tools/README user/thompsa/vaptq/tools/tools/ath/Makefile user/thompsa/vaptq/tools/tools/ath/Makefile.inc user/thompsa/vaptq/tools/tools/ath/athdebug/athdebug.c user/thompsa/vaptq/tools/tools/ath/athstats/Makefile user/thompsa/vaptq/tools/tools/ath/athstats/athstats.c user/thompsa/vaptq/tools/tools/ath/athstats/main.c user/thompsa/vaptq/tools/tools/mctest/mctest.1 user/thompsa/vaptq/tools/tools/nanobsd/gateworks/Files/ (props changed) user/thompsa/vaptq/tools/tools/nanobsd/gateworks/Files/root/ (props changed) user/thompsa/vaptq/tools/tools/nanobsd/gateworks/cfg/ (props changed) user/thompsa/vaptq/tools/tools/nanobsd/gateworks/cfg/ssh/ (props changed) user/thompsa/vaptq/tools/tools/net80211/Makefile user/thompsa/vaptq/tools/tools/usb/print-usb-if-vids.sh user/thompsa/vaptq/usr.bin/csplit/csplit.1 user/thompsa/vaptq/usr.bin/csup/ (props changed) user/thompsa/vaptq/usr.bin/csup/Makefile user/thompsa/vaptq/usr.bin/elf2aout/Makefile user/thompsa/vaptq/usr.bin/fetch/fetch.c user/thompsa/vaptq/usr.bin/fstat/zfs.c user/thompsa/vaptq/usr.bin/gprof/gprof.1 user/thompsa/vaptq/usr.bin/gprof/gprof.c user/thompsa/vaptq/usr.bin/mail/Makefile user/thompsa/vaptq/usr.bin/make/Makefile user/thompsa/vaptq/usr.bin/make/buf.c user/thompsa/vaptq/usr.bin/make/for.c user/thompsa/vaptq/usr.bin/make/globals.h user/thompsa/vaptq/usr.bin/make/job.c user/thompsa/vaptq/usr.bin/make/job.h user/thompsa/vaptq/usr.bin/make/main.c user/thompsa/vaptq/usr.bin/make/make.1 user/thompsa/vaptq/usr.bin/make/make.h user/thompsa/vaptq/usr.bin/make/parse.c user/thompsa/vaptq/usr.bin/make/suff.c user/thompsa/vaptq/usr.bin/make/var.c user/thompsa/vaptq/usr.bin/ncal/ncal.1 user/thompsa/vaptq/usr.bin/ncal/ncal.c user/thompsa/vaptq/usr.bin/netstat/inet6.c user/thompsa/vaptq/usr.bin/netstat/main.c user/thompsa/vaptq/usr.bin/netstat/netstat.1 user/thompsa/vaptq/usr.bin/netstat/unix.c user/thompsa/vaptq/usr.bin/nsupdate/Makefile user/thompsa/vaptq/usr.bin/procstat/ (props changed) user/thompsa/vaptq/usr.bin/procstat/procstat.c user/thompsa/vaptq/usr.bin/procstat/procstat_args.c user/thompsa/vaptq/usr.bin/procstat/procstat_basic.c user/thompsa/vaptq/usr.bin/procstat/procstat_bin.c user/thompsa/vaptq/usr.bin/procstat/procstat_cred.c user/thompsa/vaptq/usr.bin/procstat/procstat_files.c user/thompsa/vaptq/usr.bin/procstat/procstat_kstack.c user/thompsa/vaptq/usr.bin/procstat/procstat_threads.c user/thompsa/vaptq/usr.bin/procstat/procstat_vm.c user/thompsa/vaptq/usr.bin/top/machine.c user/thompsa/vaptq/usr.sbin/arp/arp.8 user/thompsa/vaptq/usr.sbin/arp/arp.c user/thompsa/vaptq/usr.sbin/auditd/Makefile user/thompsa/vaptq/usr.sbin/boot0cfg/boot0cfg.8 user/thompsa/vaptq/usr.sbin/burncd/burncd.c user/thompsa/vaptq/usr.sbin/cpucontrol/cpucontrol.8 user/thompsa/vaptq/usr.sbin/crunch/crunchgen/crunchgen.c user/thompsa/vaptq/usr.sbin/fwcontrol/fwcontrol.c user/thompsa/vaptq/usr.sbin/gssd/Makefile user/thompsa/vaptq/usr.sbin/jail/jail.8 user/thompsa/vaptq/usr.sbin/kldxref/ef_i386.c user/thompsa/vaptq/usr.sbin/kldxref/ef_obj.c user/thompsa/vaptq/usr.sbin/kldxref/fileformat user/thompsa/vaptq/usr.sbin/kldxref/kldxref.c user/thompsa/vaptq/usr.sbin/makefs/ffs/ffs_bswap.c (props changed) user/thompsa/vaptq/usr.sbin/makefs/ffs/ffs_subr.c (props changed) user/thompsa/vaptq/usr.sbin/makefs/ffs/ufs_bswap.h (props changed) user/thompsa/vaptq/usr.sbin/makefs/getid.c (props changed) user/thompsa/vaptq/usr.sbin/mergemaster/mergemaster.8 user/thompsa/vaptq/usr.sbin/mergemaster/mergemaster.sh user/thompsa/vaptq/usr.sbin/mld6query/mld6query.8 user/thompsa/vaptq/usr.sbin/ndiscvt/inf.c user/thompsa/vaptq/usr.sbin/ndiscvt/windrv_stub.c user/thompsa/vaptq/usr.sbin/ndp/ndp.c user/thompsa/vaptq/usr.sbin/pkg_install/add/main.c user/thompsa/vaptq/usr.sbin/pkg_install/add/pkg_add.1 user/thompsa/vaptq/usr.sbin/pkg_install/lib/lib.h user/thompsa/vaptq/usr.sbin/pmcstat/pmcstat.c user/thompsa/vaptq/usr.sbin/powerd/powerd.8 user/thompsa/vaptq/usr.sbin/rrenumd/rrenumd.8 user/thompsa/vaptq/usr.sbin/rtadvd/rtadvd.8 user/thompsa/vaptq/usr.sbin/rtsold/rtsold.8 user/thompsa/vaptq/usr.sbin/sade/disks.c user/thompsa/vaptq/usr.sbin/sysinstall/devices.c user/thompsa/vaptq/usr.sbin/sysinstall/disks.c user/thompsa/vaptq/usr.sbin/sysinstall/menus.c user/thompsa/vaptq/usr.sbin/sysinstall/sysinstall.8 user/thompsa/vaptq/usr.sbin/syslogd/syslog.conf.5 user/thompsa/vaptq/usr.sbin/traceroute6/traceroute6.8 user/thompsa/vaptq/usr.sbin/ugidfw/ugidfw.c user/thompsa/vaptq/usr.sbin/usbconfig/usbconfig.c user/thompsa/vaptq/usr.sbin/usbdevs/usbdevs.c user/thompsa/vaptq/usr.sbin/wlandebug/wlandebug.c user/thompsa/vaptq/usr.sbin/zic/ (props changed) Modified: user/thompsa/vaptq/COPYRIGHT ============================================================================== --- user/thompsa/vaptq/COPYRIGHT Wed Jan 21 17:34:14 2009 (r187546) +++ user/thompsa/vaptq/COPYRIGHT Wed Jan 21 17:36:06 2009 (r187547) @@ -4,7 +4,7 @@ The compilation of software known as FreeBSD is distributed under the following terms: -Copyright (C) 1992-2008 The FreeBSD Project. All rights reserved. +Copyright (c) 1992-2009 The FreeBSD Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions Modified: user/thompsa/vaptq/Makefile ============================================================================== --- user/thompsa/vaptq/Makefile Wed Jan 21 17:34:14 2009 (r187546) +++ user/thompsa/vaptq/Makefile Wed Jan 21 17:36:06 2009 (r187547) @@ -298,7 +298,7 @@ universe_prologue: .endif .for target in ${TARGETS} KERNCONFS!= cd ${.CURDIR}/sys/${target}/conf && \ - find [A-Z]*[A-Z] -type f -maxdepth 0 \ + find [A-Z0-9]*[A-Z0-9] -type f -maxdepth 0 \ ! -name DEFAULTS ! -name LINT KERNCONFS:= ${KERNCONFS:S/^NOTES$/LINT/} universe: universe_${target} Modified: user/thompsa/vaptq/Makefile.inc1 ============================================================================== --- user/thompsa/vaptq/Makefile.inc1 Wed Jan 21 17:34:14 2009 (r187546) +++ user/thompsa/vaptq/Makefile.inc1 Wed Jan 21 17:36:06 2009 (r187547) @@ -5,6 +5,7 @@ # -DNO_CLEANDIR run ${MAKE} clean, instead of ${MAKE} cleandir # -DNO_CLEAN do not clean at all # -DNO_SHARE do not go into share subdir +# -DKERNFAST define NO_KERNELCONFIG, NO_KERNELCLEAN and NO_KERNELCONFIG # -DNO_KERNELCONFIG do not run config in ${MAKE} buildkernel # -DNO_KERNELCLEAN do not run ${MAKE} clean in ${MAKE} buildkernel # -DNO_KERNELDEPEND do not run ${MAKE} depend in ${MAKE} buildkernel @@ -697,6 +698,11 @@ distrib-dirs distribution: # be set to cross-build, we have to make sure TARGET is set # properly. +.if defined(KERNFAST) +NO_KERNELCLEAN= t +NO_KERNELCONFIG= t +NO_KERNELDEPEND= t +.endif .if !defined(KERNCONF) && defined(KERNEL) KERNCONF= ${KERNEL} KERNWARN= Modified: user/thompsa/vaptq/ObsoleteFiles.inc ============================================================================== --- user/thompsa/vaptq/ObsoleteFiles.inc Wed Jan 21 17:34:14 2009 (r187546) +++ user/thompsa/vaptq/ObsoleteFiles.inc Wed Jan 21 17:36:06 2009 (r187547) @@ -14,6 +14,10 @@ # The file is partitioned: OLD_FILES first, then OLD_LIBS and OLD_DIRS last. # +# 20081223: bind 9.4.3 import, nsupdate.8 moved to nsupdate.1 +OLD_FILES+=usr/share/man/man8/nsupdate.8.gz +# 20081223: ipprotosw.h removed +OLD_FILES+=usr/include/netinet/ipprotosw.h # 20081123: vfs_mountedon.9 removed OLD_FILES+=usr/share/man/man9/vfs_mountedon.9.gz # 20081023: FREE.9 and MALLOC.9 removed Modified: user/thompsa/vaptq/UPDATING ============================================================================== --- user/thompsa/vaptq/UPDATING Wed Jan 21 17:34:14 2009 (r187546) +++ user/thompsa/vaptq/UPDATING Wed Jan 21 17:36:06 2009 (r187547) @@ -22,6 +22,26 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 8. to maximize performance. (To disable malloc debugging, run ln -s aj /etc/malloc.conf.) +20090119: + NTFS has been removed from GENERIC kernel on amd64 to match + GENERIC on i386. Should not cause any issues since mount_ntfs(8) + will load ntfs.ko module automatically when NTFS support is + actually needed, unless ntfs.ko is not installed or security + level prohibits loading kernel modules. If either is the case, + "options NTFS" has to be added into kernel config. + +20090115: + TCP Appropriate Byte Counting (RFC 3465) support added to kernel. + New field in struct tcpcb breaks ABI, so bump __FreeBSD_version to + 800061. User space tools that rely on the size of struct tcpcb in + tcp_var.h (e.g. sockstat) need to be recompiled. + +20081225: + ng_tty(4) module updated to match the new TTY subsystem. + Due to API change, user-level applications must be updated. + New API support added to mpd5 CVS and expected to be present + in next mpd5.3 release. + 20081219: With __FreeBSD_version 800060 the makefs tool is part of the base system (it was a port). Modified: user/thompsa/vaptq/bin/kenv/kenv.1 ============================================================================== --- user/thompsa/vaptq/bin/kenv/kenv.1 Wed Jan 21 17:34:14 2009 (r187546) +++ user/thompsa/vaptq/bin/kenv/kenv.1 Wed Jan 21 17:36:06 2009 (r187547) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd September 13, 2005 +.Dd January 13, 2009 .Dt KENV 1 .Os .Sh NAME @@ -67,8 +67,28 @@ If the .Fl q option is set, warnings normally printed as a result of being unable to perform the requested operation will be suppressed. +.Pp +Variables can be added to the kernel environment using the +.Xr /boot/loader.conf +file, or also statically compiled into the kernel using the statement +.Pp +.Dl Ic env Ar filename +.Pp +in the kernel config file. +The file can contain lines of the form +.Pp +.Dl name = "value" # this is a comment +.Pp +where whitespace around name and '=', and +everything after a '#' character, are ignored. Almost any printable +character except '=' is acceptable as part of a name. Quotes +are optional and necessary only if the value contains +whitespace. +.Pp .Sh SEE ALSO .Xr kenv 2 , +.Xr config 5 , +.Xr loader.conf 5 , .Xr loader 8 .Sh HISTORY The Modified: user/thompsa/vaptq/bin/ln/ln.1 ============================================================================== --- user/thompsa/vaptq/bin/ln/ln.1 Wed Jan 21 17:34:14 2009 (r187546) +++ user/thompsa/vaptq/bin/ln/ln.1 Wed Jan 21 17:36:06 2009 (r187547) @@ -38,7 +38,7 @@ .Sh NAME .Nm ln , .Nm link -.Nd make links +.Nd link files .Sh SYNOPSIS .Nm .Op Fl s Op Fl F @@ -57,8 +57,13 @@ .Sh DESCRIPTION The .Nm -utility creates a new directory entry (linked file) which has the -same modes as the original file. +utility creates a new directory entry (linked file) for the file name +specified by +.Ar target_file . +The +.Ar target_file +will be created with the same file modes as the +.Ar source_file . It is useful for maintaining multiple copies of a file in many places at once without using up storage for the .Dq copies ; @@ -148,7 +153,7 @@ links. A hard link to a file is indistinguishable from the original directory entry; any changes to a file are effectively independent of the name used to reference the file. -Hard links may not normally refer to directories and may not span file systems. +Directories may not be hardlinked, and hard links may not span file systems. .Pp A symbolic link contains the name of the file to which it is linked. Modified: user/thompsa/vaptq/bin/test/test.1 ============================================================================== --- user/thompsa/vaptq/bin/test/test.1 Wed Jan 21 17:34:14 2009 (r187546) +++ user/thompsa/vaptq/bin/test/test.1 Wed Jan 21 17:36:06 2009 (r187547) @@ -310,7 +310,7 @@ are evaluated consistently according to standards document. All other cases are subject to the ambiguity in the command semantics. -.Sh RETURN VALUES +.Sh EXIT STATUS The .Nm utility exits with one of the following values: Modified: user/thompsa/vaptq/cddl/contrib/opensolaris/cmd/zinject/zinject.c ============================================================================== --- user/thompsa/vaptq/cddl/contrib/opensolaris/cmd/zinject/zinject.c Wed Jan 21 17:34:14 2009 (r187546) +++ user/thompsa/vaptq/cddl/contrib/opensolaris/cmd/zinject/zinject.c Wed Jan 21 17:36:06 2009 (r187547) @@ -146,6 +146,7 @@ #include #include +#include #include #include Modified: user/thompsa/vaptq/cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c ============================================================================== --- user/thompsa/vaptq/cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c Wed Jan 21 17:34:14 2009 (r187546) +++ user/thompsa/vaptq/cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c Wed Jan 21 17:36:06 2009 (r187547) @@ -1739,15 +1739,11 @@ dtrace_program_link(dtrace_hdl_t *dtp, d * Arches which are 32-bit only just use the normal * library path. */ -#if defined(__i386__) - int use_32 = 1; /* use /usr/lib/... -sson */ -#else int use_32 = 0; #endif -#endif (void) snprintf(drti, sizeof (drti), "/usr/lib%s/dtrace/drti.o", - use_32 ? "":"32"); + use_32 ? "32":""); len = snprintf(&tmp, 1, fmt, dtp->dt_ld_path, file, tfile, drti) + 1; Modified: user/thompsa/vaptq/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c ============================================================================== --- user/thompsa/vaptq/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c Wed Jan 21 17:34:14 2009 (r187546) +++ user/thompsa/vaptq/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c Wed Jan 21 17:36:06 2009 (r187547) @@ -34,6 +34,7 @@ #include #include #include +#include #include #include #include Modified: user/thompsa/vaptq/contrib/bind9/CHANGES ============================================================================== --- user/thompsa/vaptq/contrib/bind9/CHANGES Wed Jan 21 17:34:14 2009 (r187546) +++ user/thompsa/vaptq/contrib/bind9/CHANGES Wed Jan 21 17:36:06 2009 (r187547) @@ -1,14 +1,166 @@ - --- 9.4.2-P2 released --- + --- 9.4.3-P1 released --- -2406. [bug] Some operating systems have FD_SETSIZE set to a - low value by default, which can cause resource - exhaustion when many simultaneous connections are - open. Linux in particular makes it difficult to - increase this value. To use more sockets with - select(), set ISC_SOCKET_FDSETSIZE. Example: - STD_CDEFINES="-DISC_SOCKET_FDSETSIZE=4096" ./configure - (This should not be necessary in most cases, and - never for an authoritative-only server.) [RT #18328] +2522. [security] Handle -1 from DSA_do_verify(). + +2498. [bug] Removed a bogus function argument used with + ISC_SOCKET_USE_POLLWATCH: it could cause compiler + warning or crash named with the debug 1 level + of logging. [RT #18917] + + --- 9.4.3 released --- + +2490. [port] aix: work around a kernel bug where IPV6_RECVPKTINFO + is cleared when IPV6_V6ONLY is set. [RT #18785] + +2489. [port] solaris: Workaround Solaris's kernel bug about + /dev/poll: + http://bugs.opensolaris.org/view_bug.do?bug_id=6724237 + Define ISC_SOCKET_USE_POLLWATCH at build time to enable + this workaround. [RT #18870] + + --- 9.4.3rc1 released --- + +2473. [port] linux: raise the limit on open files to the possible + maximum value before spawning threads; 'files' + specified in named.conf doesn't seem to work with + threads as expected. [RT #18784] + +2472. [port] linux: check the number of available cpu's before + calling chroot as it depends on "/proc". [RT #16923] + +2471. [bug] named-checkzone was not reporting missing manditory + glue when sibling checks were disabled. [RT #18768] + +2469. [port] solaris: Work around Solaris's select() limitations. + [RT #18769] + +2468. [bug] Resolver could try unreachable servers multiple times. + [RT #18739] + +2467. [bug] Failure of fcntl(F_DUPFD) wasn't logged. [RT #18740] + +2466. [doc] ARM: explain max-cache-ttl 0 SERVFAIL issue. + [RT #18302] + +2465. [bug] Adb's handling of lame addresses was different + for IPv4 and IPv6. [RT #18738] + +2463. [port] linux: POSIX doesn't include the IPv6 Advanced Socket + API and glibc hides parts of the IPv6 Advanced Socket + API as a result. This is stupid as it breaks how the + two halves (Basic and Advanced) of the IPv6 Socket API were designed to be used but we have to live with it. + Define _GNU_SOURCE to pull in the IPv6 Advanced Socket + API. [RT #18388] + +2462. [doc] Document -m (enable memory usage debugging) + option for dig. [RT #18757] + +2461. [port] sunos: Change #2363 was not complete. [RT #17513] + +2458. [doc] ARM: update and correction for max-cache-size. + [RT #18294] + +2455. [bug] Stop metadata being transfered via axfr/ixfr. + [RT #18639] + +2453. [bug] Remove NULL pointer dereference in dns_journal_print(). + [RT #18316] + +2449. [bug] libbind: Out of bounds reference in dns_ho.c:addrsort. + [RT #18044] + +2445. [doc] ARM out-of-date on empty reverse zones (list includes + RFC1918 address, but these are not yet compiled in). + [RT #18578] + +2444. [port] Linux, FreeBSD, AIX: Turn off path mtu discovery + (clear DF) for UDP responses and requests. + + --- 9.4.3b3 released --- + +2443. [bug] win32: UDP connect() would not generate an event, + and so connected UDP sockets would never clean up. + Fix this by doing an immediate WSAConnect() rather + than an io completion port type for UDP. + +2438. [bug] Timeouts could be logged incorrectly under win32. + [RT #18617] + +2437. [bug] Sockets could be closed too early, leading to + inconsistent states in the socket module. [RT #18298] + +2436. [security] win32: UDP client handler can be shutdown. [RT #18576] + +2433. [tuning] Set initial timeout to 800ms. + +2432. [bug] More Windows socket handling improvements. Stop + using I/O events and use IO Completion Ports + throughout. Rewrite the receive path logic to make + it easier to support multiple simultaneous + requestrs in the future. Add stricter consistency + checking as a compile-time option (define + ISC_SOCKET_CONSISTENCY_CHECKS; defaults to off). + +2430. [bug] win32: isc_interval_set() could round down to + zero if the input was less than NS_INTERVAL + nanoseconds. Round up instead. [RT #18549] + +2429. [doc] nsupdate should be in section 1 of the man pages. + [RT #18283] + +2426. [bug] libbind: inet_net_pton() can sometimes return the + wrong value if excessively large netmasks are + supplied. [RT #18512] + +2425. [bug] named didn't detect unavailable query source addresses + at load time. [RT #18536] + +2424. [port] configure now probes for a working epoll + implementation. Allow the use of kqueue, + epoll and /dev/poll to be selected at compile + time. [RT #18277] + +2422. [bug] Handle the special return value of a empty node as + if it was a NXRRSET in the validator. [RT #18447] + +2421. [func] Add new command line option '-S' for named to specify + the max number of sockets. [RT #18493] + Use caution: this option may not work for some + operating systems without rebuilding named. + +2420. [bug] Windows socket handling cleanup. Let the io + completion event send out cancelled read/write + done events, which keeps us from writing to memeory + we no longer have ownership of. Add debugging + socket_log() function. Rework TCP socket handling + to not leak sockets. + +2417. [bug] Connecting UDP sockets for outgoing queries could + unexpectedly fail with an 'address already in use' + error. [RT #18411] + +2416. [func] Log file descriptors that cause exceeding the + internal maximum. [RT #18460] + +2414. [bug] A masterdump context held the database lock too long, + causing various troubles such as dead lock and + recursive lock acquisition. [RT #18311, #18456] + +2413. [bug] Fixed an unreachable code path in socket.c. [RT #18442] + +2412. [bug] win32: address a resourse leak. [RT #18374] + +2411. [bug] Allow using a larger number of sockets than FD_SETSIZE + for select(). To enable this, set ISC_SOCKET_MAXSOCKETS + at compilation time. [RT #18433] + +2410. [bug] Correctly delete m_versionInfo. [RT #18432] + +2408. [bug] A duplicate TCP dispatch event could be sent, which + could then trigger an assertion failure in + resquery_response(). [RT #18275] + +2407. [port] hpux: test for sys/dyntune.h. [RT #18421] 2404. [port] hpux: files unlimited support. @@ -39,15 +191,271 @@ 2392. [bug] remove 'grep -q' from acl test script, some platforms don't support it. [RT #18253] +2391 [port] hpux: cover additional recvmsg() error codes. + [RT #18301] + +2390 [bug] dispatch.c could make a false warning on 'odd socket'. + [RT #18301]. + +2389 [bug] Move the "working directory writable" check to after + the ns_os_changeuser() call. [RT #18326] + +2386. [func] Add warning about too small 'open files' limit. + [RT #18269] + + --- 9.4.3b2 released --- + +2385. [bug] A condition variable in socket.c could leak in + rare error handling [RT #17968]. + +2384. [security] Additional support for query port randomization (change + #2375) including performance improvement and port range + specification. [RT #17949, #18098] + +2383. [bug] named could double queries when they resulted in + SERVFAIL due to overkilling EDNS0 failure detection. + [RT #18182] + +2382. [doc] Add descriptions of IPSECKEY, SPF and SSHFP to ARM. + +2381. [port] dlz/mysql: support multiple install layouts for + mysql. /include/{,mysql/}mysql.h and + /lib/{,mysql/}. [RT #18152] + +2380. [bug] dns_view_find() was not returning NXDOMAIN/NXRRSET + proofs which, in turn, caused validation failures + for insecure zones immediately below a secure zone + the server was authoritative for. [RT #18112] + +2379. [contrib] queryperf/gen-data-queryperf.py: removed redundant + TLDs and supported RRs with TTLs [RT #17972] + +2377. [bug] Address race condition in dnssec-signzone. [RT #18142] + +2376. [bug] Change #2144 was not complete. + +2375. [security] Fully randomize UDP query ports to improve + forgery resilience. [RT #17949] + +2372. [bug] fixed incorrect TAG_HMACSHA256_BITS value [RT #18047] + +2369. [bug] libbind: Array bounds overrun on read in bitncmp(). + [RT #18054] + +2364. [bug] named could trigger a assertion when serving a + malformed signed zone. [RT #17828] + +2363. [port] sunos: pre-set "lt_cv_sys_max_cmd_len=4096;". + [RT #17513] + +2361. [bug] "recursion" statistics counter could be counted + multiple times for a single query. [RT #17990] + + --- 9.4.3b1 released --- + +2358. [doc] Update host's default query description. [RT #17934] + +2356. [bug] Built in mutex profiler was not scalable enough. + [RT #17436] + +2353. [func] libbind: nsid support. [RT #17091] + +2350. [port] win32: IPv6 support. [RT #17797] + +2347. [bug] Delete now traverses the RB tree in the canonical + order. [RT #17451] + +2345. [bug] named-checkconf failed to detect when forwarders + were set at both the options/view level and in + a root zone. [RT #17671] + +2344. [bug] Improve "logging{ file ...; };" documentation. + [RT #17888] + +2343. [bug] (Seemingly) duplicate IPv6 entries could be + created in ADB. [RT #17837] + +2341. [bug] libbind: add missing -I../include for off source + tree builds. [RT #17606] + +2340. [port] openbsd: interface configuration. [RT #17700] + +2339. [port] tru64: support for libbind. [RT #17589] + +2338. [bug] check_ds() could be called with a non DS rdataset. + [RT #17598] + +2337. [bug] BUILD_LDFLAGS was not being correctly set. [RT #17614] + +2335. [port] sunos: libbind and *printf() support for long long. + [RT #17513] + +2334. [bug] Bad REQUIRES in fromstruct_in_naptr(), off by one + bug in fromstruct_txt(). [RT #17609] + +2333. [bug] Fix off by one error in isc_time_nowplusinterval(). + [RT #17608] + +2332. [contrib] query-loc-0.4.0. [RT #17602] + +2331. [bug] Failure to regenerate any signatures was not being + reported nor being past back to the UPDATE client. + [RT #17570] + +2330. [bug] Remove potential race condition when handling + over memory events. [RT #17572] + + WARNING: API CHANGE: over memory callback + function now needs to call isc_mem_waterack(). + See for details. + +2329. [bug] Clearer help text for dig's '-x' and '-i' options. + +2328. [maint] Add AAAA addresses for A.ROOT-SERVERS.NET, + F.ROOT-SERVERS.NET, H.ROOT-SERVERS.NET, + J.ROOT-SERVERS.NET, K.ROOT-SERVERS.NET and + M.ROOT-SERVERS.NET. + +2326. [bug] It was possible to trigger a INSIST in the acache + processing. + +2325. [port] Linux: use capset() function if available. [RT #17557] + +2323. [port] tru64: namespace clash. [RT #17547] + 2322. [port] MacOS: work around the limitation of setrlimit() for RLIMIT_NOFILE. [RT #17526] - --- 9.4.2-P1 released --- +2319. [bug] Silence Coverity warnings in + lib/dns/rdata/in_1/apl_42.c. [RT #17469] -2375. [security] Fully randomize UDP query ports to improve - forgery resilience. [RT #17949] +2318. [port] sunos fixes for libbind. [RT #17514] + +2314. [bug] Uninitialized memory use on error path in + bin/named/lwdnoop.c. [RT #17476] + +2313. [cleanup] Silence Coverity warnings. Handle private stacks. + [RT #17447] [RT #17478] + +2312. [cleanup] Silence Coverity warning in lib/isc/unix/socket.c. + [RT #17458] + +2311. [func] Update ACL regression test. [RT #17462] + +2310. [bug] dig, host, nslookup: flush stdout before emitting + debug/fatal messages. [RT #17501] + +2308. [cleanup] Silence Coverity warning in bin/named/controlconf.c. + [RT #17495] + +2307. [bug] Remove infinite loop from lib/dns/sdb.c. [RT #17496] + +2306. [bug] Remove potential race from lib/dns/resolver.c. + [RT #17470] + +2305. [security] inet_network() buffer overflow. CVE-2008-0122. + +2304. [bug] Check returns from all dns_rdata_tostruct() calls. + [RT #17460] + +2303. [bug] Remove unnecessary code from bin/named/lwdgnba.c. + [RT #17471] + +2302. [bug] Fix memset() calls in lib/tests/t_api.c. [RT #17472] + +2301. [bug] Remove resource leak and fix error messages in + bin/tests/system/lwresd/lwtest.c. [RT #17474] + +2300. [bug] Fixed failure to close open file in + bin/tests/names/t_names.c. [RT #17473] + +2299. [bug] Remove unnecessary NULL check in + bin/nsupdate/nsupdate.c. [RT #17475] + +2298. [bug] isc_mutex_lock() failure not caught in + bin/tests/timers/t_timers.c. [RT #17468] + +2297. [bug] isc_entropy_createfilesource() failure not caught in + bin/tests/dst/t_dst.c. [RT #17467] + +2296. [port] Allow docbook stylesheet location to be specified to + configure. [RT #17457] + +2295. [bug] Silence static overrun error in bin/named/lwaddr.c. + [RT #17459] + +2293. [func] Add ACL regression test. [RT #17375] + +2292. [bug] Log if the working directory is not writable. + [RT #17312] + +2291. [bug] PR_SET_DUMPABLE may be set too late. Also report + failure to set PR_SET_DUMPABLE. [RT #17312] + +2290. [bug] Let AD in the query signal that the client wants AD + set in the response. [RT #17301] + +2288. [port] win32: mark service as running when we have finished + loading. [RT #17441] + +2287. [bug] Use 'volatile' if the compiler supports it. [RT #17413] + +2284. [bug] Memory leak in UPDATE prerequisite processing. + [RT #17377] + +2283. [bug] TSIG keys were not attaching to the memory + context. TSIG keys should use the rings + memory context rather than the clients memory + context. [RT #17377] + +2279. [bug] Use setsockopt(SO_NOSIGPIPE), when available, + to protect applications from receiving spurious + SIGPIPE signals when using the resolver. + +2278. [bug] win32: handle the case where Windows returns no + search list or DNS suffix. [RT #17354] + +2277. [bug] Empty zone names were not correctly being caught at + in the post parse checks. [RT #17357] + +2273. [bug] Adjust log level to WARNING when saving inconsistent + stub/slave master and journal files. [RT# 17279] + +2272. [bug] Handle illegal dnssec-lookaside trust-anchor names. + [RT #17262] + +2270. [bug] dns_db_closeversion() version->writer could be reset + before it is tested. [RT #17290] + +2269. [contrib] dbus memory leaks and missing va_end calls. [RT #17232] + +2268. [bug] 0.IN-ADDR.ARPA was missing from the empty zones + list. + +2266. [bug] client.c:get_clientmctx() returned the same mctx + once the pool of mctx's was filled. [RT #17218] + +2265. [bug] Test that the memory context's basic_table is non NULL + before freeing. [RT #17265] + +2264. [bug] Server prefix length was being ignored. [RT #17308] + +2263. [bug] "named-checkconf -z" failed to set default value + for "check-integrity". [RT #17306] + +2262. [bug] Error status from all but the last view could be + lost. [RT #17292] + +2260. [bug] Reported wrong clients-per-query when increasing the + value. [RT #17236] + +2247. [doc] Sort doc/misc/options. [RT #17067] + +2246. [bug] Make the startup of test servers (ans.pl) more + robust. [RT #17147] --- 9.4.2 released --- + --- 9.4.2rc2 released --- 2259. [bug] Reverse incorrect LIBINTERFACE bump of libisc @@ -63,7 +471,7 @@ 2256. [bug] win32: Correctly register the installation location of bindevt.dll. [RT #17159] -2255. [bug] L.ROOT-SERVERS.NET is now 199.7.83.42. +2255. [maint] L.ROOT-SERVERS.NET is now 199.7.83.42. 2254. [bug] timer.c:dispatch() failed to lock timer->lock when reading timer->idle allowing it to see @@ -76,16 +484,16 @@ reality. Note there is behaviour change for BIND 9.5. [RT #17113] -2249. [bug] Only set Authentic Data bit if client requested +2249. [bug] Only set Authentic Data bit if client requested DNSSEC, per RFC 3655 [RT #17175] -2248. [cleanup] Fix several errors reported by Coverity. [RT #17160] +2248. [cleanup] Fix several errors reported by Coverity. [RT #17160] 2245. [bug] Validating lack of DS records at trust anchors wasn't working. [RT #17151] 2238. [bug] It was possible to trigger a REQUIRE when a - validation was cancelled. [RT #17106] + validation was canceled. [RT #17106] 2237. [bug] libbind: res_init() was not thread aware. [RT #17123] @@ -94,8 +502,8 @@ 2235. [bug] was not being installed. [RT #17135] -2234. [port] Correct some compiler warnings on SCO OSr5 [RT #17134] - +2234. [port] Correct some compiler warnings on SCO OSr5 [RT #17134] + 2232. [bug] dns_adb_findaddrinfo() could fail and return ISC_R_SUCCESS. [RT #17137] @@ -110,7 +518,7 @@ 2227. [cleanup] Tidied up the FAQ. [RT #17121] 2225. [bug] More support for systems with no IPv4 addresses. - [RT #17111] + [RT #17111] 2224. [bug] Defer journal compaction if a xfrin is in progress. [RT #17119] @@ -124,15 +532,15 @@ 2220. [bug] win32: Address a race condition in final shutdown of the Windows socket code. [RT #17028] - -2219. [bug] Apply zone consistancy checks to additions, not + +2219. [bug] Apply zone consistency checks to additions, not removals, when updating. [RT #17049] 2218. [bug] Remove unnecessary REQUIRE from dns_validator_create(). [RT #16976] 2216. [cleanup] Fix a number of errors reported by Coverity. - [RT #17094] + [RT #17094] 2215. [bug] Bad REQUIRE check isc_hmacsha1_verify(). [RT #17094] @@ -175,13 +583,13 @@ localhost;) is used. [RT #16987] - + 2205. [bug] libbind: change #2119 broke thread support. [RT #16982] 2203. [security] Query id generation was cryptographically weak. [RT # 16915] -2202. [security] The default acls for allow-query-cache and +2202. [security] The default acls for allow-query-cache and allow-recursion were not being applied. [RT #16960] 2200. [bug] The search for cached NSEC records was stopping to @@ -216,7 +624,7 @@ 2187. [bug] query_addds(), query_addwildcardproof() and query_addnxrrsetnsec() should take a version - arguement. [RT #16368] + argument. [RT #16368] 2186. [port] cygwin: libbind: check for struct sockaddr_storage independently of IPv6. [RT #16482] @@ -243,7 +651,7 @@ debug level 10+. [RT #16798] 2176. [contrib] dbus update to handle race condition during - initialisation (Bugzilla 235809). [RT #16842] + initialization (Bugzilla 235809). [RT #16842] 2175. [bug] win32: windows broadcast condition variable support was broken. [RT #16592] @@ -274,7 +682,7 @@ a server address as a name to be looked up, causing unexpected output. [RT #16743] -2164. [bug] The code to determine how named-checkzone / +2164. [bug] The code to determine how named-checkzone / named-compilezone was called failed under windows. [RT #16764] @@ -288,7 +696,7 @@ 2159. [bug] Array bounds overrun in acache processing. [RT #16710] -2158. [bug] ns_client_isself() failed to initialise key +2158. [bug] ns_client_isself() failed to initialize key leading to a REQUIRE failure. [RT #16688] 2156. [bug] Fix node reference leaks in lookup.c:lookup_find(), @@ -363,7 +771,7 @@ 2136. [bug] nslookup/host looped if there was no search list and the host didn't exist. [RT #16657] -2135. [bug] Uninitialised rdataset in sdlz.c. [RT# 16656] +2135. [bug] Uninitialized rdataset in sdlz.c. [RT# 16656] 2133. [port] powerpc: Support both IBM and MacOS Power PC assembler syntaxes. [RT #16647] @@ -379,7 +787,7 @@ 2127. [port] Improved OpenSSL 0.9.8 support. [RT #16563] -2126. [security] Serialise validation of type ANY responses. [RT #16555] +2126. [security] Serialize validation of type ANY responses. [RT #16555] 2125. [bug] dns_zone_getzeronosoattl() REQUIRE failure if DLZ was defined. [RT #16574] @@ -419,7 +827,7 @@ 2111. [bug] Fix a number of errors reported by Coverity. [RT #16507] -2110. [bug] "minimal-response yes;" interacted badly with BIND 8 +2110. [bug] "minimal-responses yes;" interacted badly with BIND 8 priming queries. [RT #16491] 2109. [port] libbind: silence aix 5.3 compiler warnings. [RT #16502] @@ -431,7 +839,7 @@ 2103. [port] Add /usr/sfw to list of locations for OpenSSL under Solaris. -2102. [port] Silence solaris 10 warnings. +2102. [port] Silence Solaris 10 warnings. --- 9.4.0b4 released --- @@ -441,7 +849,7 @@ 2100. [port] win32: copy libeay32.dll to Build\Debug. Copy Debug\named-checkzone to Debug\named-compilezone. -2099. [port] win32: more manifiest issues. +2099. [port] win32: more manifest issues. 2098. [bug] Race in rbtdb.c:no_references(), which occasionally triggered an INSIST failure about the node lock @@ -457,14 +865,14 @@ 2095. [port] libbind: alway prototype inet_cidr_ntop_ipv6() and net_cidr_ntop_ipv6(). [RT #16388] - + 2094. [contrib] Update named-bootconf. [RT# 16404] 2093. [bug] named-checkzone -s was broken. 2092. [bug] win32: dig, host, nslookup. Use registry config if resolv.conf does not exist or no nameservers - listed. [RT #15877] + listed. [RT #15877] 2091. [port] dighost.c: race condition on cleanup. [RT #16417] @@ -507,7 +915,7 @@ 2078. [bug] dnssec-checkzone output style "default" was badly named. It is now called "relative". [RT #16326] -2077. [bug] 'dnssec-signzone -O raw' wasn't outputing the +2077. [bug] 'dnssec-signzone -O raw' wasn't outputting the complete signed zone. [RT #16326] 2076. [bug] Several files were missing #include @@ -592,7 +1000,7 @@ [RT #16287] 2049. [bug] Restore SOA before AXFR when falling back from - a attempted IXFR when transfering in a zone. + a attempted IXFR when transferring in a zone. Allow a initial SOA query before attempting a AXFR to be requested. [RT #16156] @@ -601,7 +1009,7 @@ the OS always returned the same local port. [RT #16182] -2047. [bug] Failed to initialise the interface flags to zero. +2047. [bug] Failed to initialize the interface flags to zero. [RT #16245] 2046. [bug] rbtdb.c:rdataset_setadditional() could cause duplicate @@ -641,7 +1049,7 @@ 2034. [bug] gcc: set -fno-strict-aliasing. [RT #16124] -2033. [bug] We wern't creating multiple client memory contexts +2033. [bug] We weren't creating multiple client memory contexts on demand as expected. [RT #16095] --- 9.4.0a6 released --- @@ -657,7 +1065,7 @@ 2029. [bug] host printed out the server multiple times when specified on the command line. [RT #15992] -2028. [port] linux: socket.c compatability for old systems. +2028. [port] linux: socket.c compatibility for old systems. [RT #16015] 2027. [port] libbind: Solaris x86 support. [RT #16020] @@ -667,7 +1075,7 @@ 2025. [func] Update "zone serial unchanged" message. [RT #16026] -2024. [bug] named emited spurious "zone serial unchanged" +2024. [bug] named emitted spurious "zone serial unchanged" messages on reload. [RT #16027] 2023. [bug] "make install" should create ${localstatedir}/run and @@ -695,7 +1103,7 @@ --- 9.4.0a5 released --- 2015. [cleanup] use-additional-cache is now acache-enable for - consistancy. Default acache-enable off in BIND 9.4 + consistency. Default acache-enable off in BIND 9.4 as it requires memory usage to be configured. It may be enabled by default in BIND 9.5 once we have more experience with it. @@ -715,9 +1123,9 @@ --- 9.4.0a4 released --- -2009. [bug] libbind: coverity fixes. [RT #15808] +2009. [bug] libbind: Coverity fixes. [RT #15808] -2008. [func] It is now posssible to enable/disable DNSSEC +2008. [func] It is now possible to enable/disable DNSSEC validation from rndc. This is useful for the mobile hosts where the current connection point breaks DNSSEC (firewall/proxy). [RT #15592] @@ -729,7 +1137,7 @@ be changed to yes in 9.5.0. [RT #15674] 2006. [security] Allow-query-cache and allow-recursion now default - to the builtin acls "localnets" and "localhost". + to the built in acls "localnets" and "localhost". This is being done to make caching servers less attractive as reflective amplifying targets for @@ -777,7 +1185,7 @@ 1994. [port] OpenSSL 0.9.8 support. [RT #15694] -1993. [bug] Log messsage, via syslog, were missing the space +1993. [bug] Log messages, via syslog, were missing the space after the timestamp if "print-time yes" was specified. [RT #15844] @@ -785,11 +1193,11 @@ view. [RT #15825] 1991. [cleanup] The configuration data, once read, should be treated - as readonly. Expand the use of const to enforce this + as read only. Expand the use of const to enforce this at compile time. [RT #15813] 1990. [bug] libbind: isc's override of broken gettimeofday() - implementions was not always effective. + implementations was not always effective. [RT #15709] 1989. [bug] win32: don't check the service password when @@ -811,7 +1219,7 @@ server for the zone. Also any zones that contain DLV records should be removed when upgrading a slave zone. You do not however have to upgrade all - servers for a zone with DLV records simultaniously. + servers for a zone with DLV records simultaneously. 1984. [func] dig, nslookup and host now advertise a 4096 byte EDNS UDP buffer size by default. [RT #15855] @@ -848,7 +1256,7 @@ 1973. [func] TSIG HMACSHA1, HMACSHA224, HMACSHA256, HMACSHA384 and HMACSHA512 support. [RT #13606] -1972. [contrib] DBUS dynamic forwarders integation from +1972. [contrib] DBUS dynamic forwarders integration from Jason Vas Dias . 1971. [port] linux: make detection of missing IF_NAMESIZE more @@ -872,7 +1280,7 @@ 1964. [func] Separate out MX and SRV to CNAME checks. [RT #15723] -1963. [port] Tru64 4.0E doesn't support send() and recv(). +1963. [port] Tru64 4.0E doesn't support send() and recv(). [RT #15586] 1962. [bug] Named failed to clear old update-policy when it @@ -898,7 +1306,7 @@ by native compiler. See README for additional cross compile support information. [RT #15148] -1955. [bug] Pre-allocate the cache cleaning interator. [RT #14998] +1955. [bug] Pre-allocate the cache cleaning iterator. [RT #14998] 1954. [func] Named now falls back to advertising EDNS with a 512 byte receive buffer if the initial EDNS queries @@ -915,7 +1323,7 @@ 1951. [security] Drop queries from particular well known ports. Don't return FORMERR to queries from particular well known ports. [RT #15636] - + 1950. [port] Solaris 2.5.1 and earlier cannot bind() then connect() a TCP socket. This prevents the source address being set for TCP connections. [RT #15628] *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-user@FreeBSD.ORG Wed Jan 21 17:40:37 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7EB4A1065679; Wed, 21 Jan 2009 17:40:37 +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 6D6E58FC35; Wed, 21 Jan 2009 17:40:37 +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 n0LHebQq085282; Wed, 21 Jan 2009 17:40:37 GMT (envelope-from sam@svn.freebsd.org) Received: (from sam@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n0LHebJH085281; Wed, 21 Jan 2009 17:40:37 GMT (envelope-from sam@svn.freebsd.org) Message-Id: <200901211740.n0LHebJH085281@svn.freebsd.org> From: Sam Leffler Date: Wed, 21 Jan 2009 17:40:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r187549 - user/sam/wifi/sys/dev/ath/ath_hal X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jan 2009 17:40:38 -0000 Author: sam Date: Wed Jan 21 17:40:37 2009 New Revision: 187549 URL: http://svn.freebsd.org/changeset/base/187549 Log: o consolidate ADHOC_NO_11A with DISALLOW_ADHOC_11A; can't find any code that indicates they are different and since they weren't enforced it's irrelevant o enforce DISALLOW_ADHOC_11A, DISALLOW_ADHOC_11A_TURB, and NO_HOSTAP Modified: user/sam/wifi/sys/dev/ath/ath_hal/ah_regdomain.c Modified: user/sam/wifi/sys/dev/ath/ath_hal/ah_regdomain.c ============================================================================== --- user/sam/wifi/sys/dev/ath/ath_hal/ah_regdomain.c Wed Jan 21 17:39:11 2009 (r187548) +++ user/sam/wifi/sys/dev/ath/ath_hal/ah_regdomain.c Wed Jan 21 17:40:37 2009 (r187549) @@ -272,12 +272,11 @@ enum { /* conformance test limits */ */ enum { NO_REQ = 0x00000000, /* NB: must be zero */ - DISALLOW_ADHOC_11A = 0x00000001, - DISALLOW_ADHOC_11A_TURB = 0x00000002, - NEED_NFC = 0x00000004, - ADHOC_PER_11D = 0x00000008, /* Start Ad-Hoc mode */ - ADHOC_NO_11A = 0x00000010, - LIMIT_FRAME_4MS = 0x00000020, /* 4msec limit on frame length*/ + DISALLOW_ADHOC_11A = 0x00000001, /* adhoc not allowed in 5GHz */ + DISALLOW_ADHOC_11A_TURB = 0x00000002, /* not allowed w/ 5GHz turbo */ + NEED_NFC = 0x00000004, /* need noise floor check */ + ADHOC_PER_11D = 0x00000008, /* must receive 11d beacon */ + LIMIT_FRAME_4MS = 0x00000020, /* 4msec tx burst limit */ NO_HOSTAP = 0x00000040, /* No HOSTAP mode opereation */ }; @@ -1495,7 +1494,7 @@ static REG_DOMAIN regDomains[] = { .conformanceTestLimit = NO_CTL, .dfsMask = DFS_FCC3 | DFS_ETSI, .pscan = PSCAN_WWR, - .flags = ADHOC_NO_11A, + .flags = DISALLOW_ADHOC_11A, .chan11a = BM5(W1_5260_5320, W1_5180_5240, W1_5170_5230, @@ -1523,7 +1522,7 @@ static REG_DOMAIN regDomains[] = { .conformanceTestLimit = NO_CTL, .dfsMask = DFS_FCC3 | DFS_ETSI, .pscan = PSCAN_WWR, - .flags = ADHOC_NO_11A, + .flags = DISALLOW_ADHOC_11A, .chan11a = BM5(W1_5260_5320, W1_5180_5240, W1_5170_5230, @@ -1581,7 +1580,7 @@ static REG_DOMAIN regDomains[] = { .conformanceTestLimit = NO_CTL, .dfsMask = DFS_FCC3 | DFS_ETSI, .pscan = PSCAN_WWR, - .flags = ADHOC_NO_11A, + .flags = DISALLOW_ADHOC_11A, .chan11a = BM4(W2_5260_5320, W2_5180_5240, F2_5745_5805, @@ -1605,7 +1604,7 @@ static REG_DOMAIN regDomains[] = { .conformanceTestLimit = NO_CTL, .dfsMask = DFS_FCC3 | DFS_ETSI, .pscan = PSCAN_WWR, - .flags = ADHOC_NO_11A, + .flags = DISALLOW_ADHOC_11A, .chan11a = BM3(W1_5260_5320, W2_5180_5240, F6_5745_5825), .chan11b = BM7(W1_2412_2412, W1_2437_2442, @@ -1627,7 +1626,7 @@ static REG_DOMAIN regDomains[] = { .conformanceTestLimit = NO_CTL, .dfsMask = DFS_FCC3 | DFS_ETSI, .pscan = PSCAN_WWR, - .flags = ADHOC_NO_11A, + .flags = DISALLOW_ADHOC_11A, .chan11a = BM4(W1_5260_5320, W1_5180_5240, W1_5745_5825, @@ -1651,7 +1650,7 @@ static REG_DOMAIN regDomains[] = { .conformanceTestLimit = NO_CTL, .dfsMask = DFS_FCC3 | DFS_ETSI, .pscan = PSCAN_WWR, - .flags = ADHOC_NO_11A, + .flags = DISALLOW_ADHOC_11A, .chan11a = BM4(W1_5260_5320, W1_5180_5240, W1_5745_5825, @@ -2129,6 +2128,14 @@ getchannels(struct ath_hal *ah, continue; ic->ic_flags |= IEEE80211_CHAN_DFS; } + if (IEEE80211_IS_CHAN_5GHZ(ic) && + (rdflags & DISALLOW_ADHOC_11A)) + ic->ic_flags |= IEEE80211_CHAN_NOADHOC; + if (IEEE80211_IS_CHAN_STURBO(ic) && + (rdflags & DISALLOW_ADHOC_11A_TURB)) + ic->ic_flags |= IEEE80211_CHAN_NOADHOC; + if (rdflags & NO_HOSTAP) + ic->ic_flags |= IEEE80211_CHAN_NOHOSTAP; if (rdflags & LIMIT_FRAME_4MS) ic->ic_flags |= IEEE80211_CHAN_4MSXMIT; if (rdflags & NEED_NFC) From owner-svn-src-user@FreeBSD.ORG Wed Jan 21 17:42:57 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AD5EA1065688; Wed, 21 Jan 2009 17:42:57 +0000 (UTC) (envelope-from thompsa@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9C3B28FC14; Wed, 21 Jan 2009 17:42:57 +0000 (UTC) (envelope-from thompsa@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 n0LHgvWr085365; Wed, 21 Jan 2009 17:42:57 GMT (envelope-from thompsa@svn.freebsd.org) Received: (from thompsa@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n0LHgv4X085364; Wed, 21 Jan 2009 17:42:57 GMT (envelope-from thompsa@svn.freebsd.org) Message-Id: <200901211742.n0LHgv4X085364@svn.freebsd.org> From: Andrew Thompson Date: Wed, 21 Jan 2009 17:42:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r187550 - user/thompsa/vaptq/sys/net80211 X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jan 2009 17:42:58 -0000 Author: thompsa Date: Wed Jan 21 17:42:57 2009 New Revision: 187550 URL: http://svn.freebsd.org/changeset/base/187550 Log: Fix WITNESS_NORELEASE macro name. Modified: user/thompsa/vaptq/sys/net80211/ieee80211_proto.c Modified: user/thompsa/vaptq/sys/net80211/ieee80211_proto.c ============================================================================== --- user/thompsa/vaptq/sys/net80211/ieee80211_proto.c Wed Jan 21 17:40:37 2009 (r187549) +++ user/thompsa/vaptq/sys/net80211/ieee80211_proto.c Wed Jan 21 17:42:57 2009 (r187550) @@ -1762,9 +1762,9 @@ ieee80211_new_state_locked(struct ieee80 * Complete the state transition synchronously, asserting that * the lock is not dropped. */ - WITNESS_NOREL(IEEE80211_LOCK_OBJ(ic)); + WITNESS_NORELEASE(IEEE80211_LOCK_OBJ(ic)); rc = ieee80211_newstate_cb_locked(vap, nstate, arg); - WITNESS_RELOK(IEEE80211_LOCK_OBJ(ic)); + WITNESS_RELEASEOK(IEEE80211_LOCK_OBJ(ic)); } else { /* defer the state change to a thread */ vap->iv_nstate = nstate; From owner-svn-src-user@FreeBSD.ORG Wed Jan 21 18:41:49 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 180B410656D4; Wed, 21 Jan 2009 18:41:49 +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 05F028FC21; Wed, 21 Jan 2009 18:41:49 +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 n0LIfmr6086830; Wed, 21 Jan 2009 18:41:48 GMT (envelope-from sam@svn.freebsd.org) Received: (from sam@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n0LIfmcv086828; Wed, 21 Jan 2009 18:41:48 GMT (envelope-from sam@svn.freebsd.org) Message-Id: <200901211841.n0LIfmcv086828@svn.freebsd.org> From: Sam Leffler Date: Wed, 21 Jan 2009 18:41:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r187556 - user/sam/wifi/sys/dev/ath/ath_hal X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jan 2009 18:41:50 -0000 Author: sam Date: Wed Jan 21 18:41:48 2009 New Revision: 187556 URL: http://svn.freebsd.org/changeset/base/187556 Log: move CTL out of the private channel data so we can pack channels Modified: user/sam/wifi/sys/dev/ath/ath_hal/ah_internal.h user/sam/wifi/sys/dev/ath/ath_hal/ah_regdomain.c Modified: user/sam/wifi/sys/dev/ath/ath_hal/ah_internal.h ============================================================================== --- user/sam/wifi/sys/dev/ath/ath_hal/ah_internal.h Wed Jan 21 18:38:12 2009 (r187555) +++ user/sam/wifi/sys/dev/ath/ath_hal/ah_internal.h Wed Jan 21 18:41:48 2009 (r187556) @@ -192,7 +192,6 @@ typedef struct { uint8_t halNumAntCfg5GHz; } HAL_CAPABILITIES; -struct regDomainPair; struct regDomain; /* @@ -277,9 +276,8 @@ struct ath_hal_private { HAL_REG_DOMAIN ah_currentRD; /* EEPROM regulatory domain */ HAL_CHANNEL_INTERNAL ah_channels[256]; /* calculated channel list */ u_int ah_nchan; /* valid channels in list */ - const struct regDomainPair *ah_regpair; /* reg state */ - const struct regDomain *ah_reg2G; /* reg state for 2G band */ - const struct regDomain *ah_reg5G; /* reg state for 5G band */ + const struct regDomain *ah_rd2GHz; /* reg state for 2G band */ + const struct regDomain *ah_rd5GHz; /* reg state for 5G band */ uint8_t ah_coverageClass; /* coverage class */ HAL_BOOL ah_regdomainUpdate; /* regdomain is updated? */ @@ -519,13 +517,9 @@ ath_hal_getantennareduction(struct ath_h /* * Return the test group for the specific channel based on - * the current regulator domain. + * the current regulatory setup. */ -static OS_INLINE u_int -ath_hal_getctl(struct ath_hal *ah, const HAL_CHANNEL_INTERNAL *chan) -{ - return chan->ctl; -} +u_int ath_hal_getctl(struct ath_hal *, const HAL_CHANNEL_INTERNAL *); /* * Map a public channel definition to the corresponding Modified: user/sam/wifi/sys/dev/ath/ath_hal/ah_regdomain.c ============================================================================== --- user/sam/wifi/sys/dev/ath/ath_hal/ah_regdomain.c Wed Jan 21 18:38:12 2009 (r187555) +++ user/sam/wifi/sys/dev/ath/ath_hal/ah_regdomain.c Wed Jan 21 18:41:48 2009 (r187556) @@ -2191,22 +2191,6 @@ ath_hal_getchannels(struct ath_hal *ah, return status; } -static uint8_t -getctl(const struct ieee80211_channel *c, uint8_t ctl) -{ - if (IEEE80211_IS_CHAN_B(c)) - return ctl | CTL_11B; - if (IEEE80211_IS_CHAN_G(c)) - return ctl | CTL_11G; - if (IEEE80211_IS_CHAN_108G(c)) - return ctl | CTL_108G; - if (IEEE80211_IS_CHAN_ST(c)) - return ctl | CTL_TURBO; - if (IEEE80211_IS_CHAN_A(c)) - return ctl | CTL_11A; - return ctl; -} - /* * Setup the channel list based on the information in the EEPROM. */ @@ -2241,10 +2225,6 @@ ath_hal_init_channels(struct ath_hal *ah ic->maxTxPower = c->ic_maxpower; ic->minTxPower = c->ic_minpower; ic->antennaMax = c->ic_maxantgain; - ic->ctl = getctl(c, - IEEE80211_IS_CHAN_2GHZ(c) ? - rd2GHz->conformanceTestLimit : - rd5GHz->conformanceTestLimit); c->ic_devdata = i; @@ -2264,7 +2244,9 @@ ath_hal_init_channels(struct ath_hal *ah c->ic_maxantgain, ic->ctl); } AH_PRIVATE(ah)->ah_nchan = *nchans; - /* XXX copy private setting to public area */ + AH_PRIVATE(ah)->ah_rd2GHz = rd2GHz; + AH_PRIVATE(ah)->ah_rd5GHz = rd5GHz; + ah->ah_countryCode = country->countryCode; HALDEBUG(ah, HAL_DEBUG_REGDOMAIN, "%s: cc %u\n", __func__, ah->ah_countryCode); @@ -2288,6 +2270,8 @@ ath_hal_set_channels(struct ath_hal *ah, int i; if (nchans > N(AH_PRIVATE(ah)->ah_channels)) { + HALDEBUG(ah, HAL_DEBUG_ANY, "%s: too many channels, %u > %u\n", + __func__, nchans, N(AH_PRIVATE(ah)->ah_channels)); return HAL_EINVAL; } status = getregstate(ah, cc, regDmn, &country, &rd2GHz, &rd5GHz); @@ -2305,9 +2289,7 @@ ath_hal_set_channels(struct ath_hal *ah, ic->maxTxPower = c->ic_maxpower; ic->minTxPower = c->ic_minpower; ic->antennaMax = c->ic_maxantgain; - ic->ctl = getctl(c, IEEE80211_IS_CHAN_2GHZ(c) ? - rd2GHz->conformanceTestLimit : - rd5GHz->conformanceTestLimit); + c->ic_devdata = i; HALDEBUG(ah, HAL_DEBUG_REGDOMAIN, @@ -2318,7 +2300,9 @@ ath_hal_set_channels(struct ath_hal *ah, ic->antennaMax, ic->ctl); } AH_PRIVATE(ah)->ah_nchan = nchans; - /* XXX copy private setting to public area */ + AH_PRIVATE(ah)->ah_rd2GHz = rd2GHz; + AH_PRIVATE(ah)->ah_rd5GHz = rd5GHz; + ah->ah_countryCode = country->countryCode; HALDEBUG(ah, HAL_DEBUG_REGDOMAIN, "%s: cc %u\n", __func__, ah->ah_countryCode); @@ -2352,3 +2336,36 @@ ath_hal_checkchannel(struct ath_hal *ah, return AH_NULL; #undef CHAN_FLAGS } + +#define isWwrSKU(_ah) \ + ((getEepromRD((_ah)) & WORLD_SKU_MASK) == WORLD_SKU_PREFIX || \ + getEepromRD(_ah) == WORLD) + +/* + * Return the test group for the specific channel based on + * the current regulatory setup. + */ +u_int +ath_hal_getctl(struct ath_hal *ah, const HAL_CHANNEL_INTERNAL *c) +{ + u_int ctl; + + if (AH_PRIVATE(ah)->ah_rd2GHz == AH_PRIVATE(ah)->ah_rd5GHz || + (ah->ah_countryCode == CTRY_DEFAULT && isWwrSKU(ah))) + ctl = SD_NO_CTL; + else if (IS_CHAN_2GHZ(c)) + ctl = AH_PRIVATE(ah)->ah_rd2GHz->conformanceTestLimit; + else + ctl = AH_PRIVATE(ah)->ah_rd5GHz->conformanceTestLimit; + if (IS_CHAN_B(c)) + return ctl | CTL_11B; + if (IS_CHAN_G(c)) + return ctl | CTL_11G; + if (IS_CHAN_108G(c)) + return ctl | CTL_108G; + if (IS_CHAN_TURBO(c)) + return ctl | CTL_TURBO; + if (IS_CHAN_A(c)) + return ctl | CTL_11A; + return ctl; +} From owner-svn-src-user@FreeBSD.ORG Wed Jan 21 18:45:39 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7A45B106566B; Wed, 21 Jan 2009 18:45:39 +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 698CB8FC1D; Wed, 21 Jan 2009 18:45:39 +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 n0LIjdTu086947; Wed, 21 Jan 2009 18:45:39 GMT (envelope-from sam@svn.freebsd.org) Received: (from sam@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n0LIjdbj086946; Wed, 21 Jan 2009 18:45:39 GMT (envelope-from sam@svn.freebsd.org) Message-Id: <200901211845.n0LIjdbj086946@svn.freebsd.org> From: Sam Leffler Date: Wed, 21 Jan 2009 18:45:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r187557 - user/sam/wifi/sys/dev/ath/ath_hal X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jan 2009 18:45:40 -0000 Author: sam Date: Wed Jan 21 18:45:39 2009 New Revision: 187557 URL: http://svn.freebsd.org/changeset/base/187557 Log: kill dead variable Modified: user/sam/wifi/sys/dev/ath/ath_hal/ah_internal.h Modified: user/sam/wifi/sys/dev/ath/ath_hal/ah_internal.h ============================================================================== --- user/sam/wifi/sys/dev/ath/ath_hal/ah_internal.h Wed Jan 21 18:41:48 2009 (r187556) +++ user/sam/wifi/sys/dev/ath/ath_hal/ah_internal.h Wed Jan 21 18:45:39 2009 (r187557) @@ -260,7 +260,6 @@ struct ath_hal_private { uint16_t ah_analog5GhzRev; /* 2GHz radio revision */ uint16_t ah_analog2GhzRev; /* 5GHz radio revision */ - HAL_OPMODE ah_opmode; /* operating mode from reset */ HAL_CHANNEL_INTERNAL *ah_curchan; /* operating channel */ HAL_CAPABILITIES ah_caps; /* device capabilities */ @@ -280,7 +279,6 @@ struct ath_hal_private { const struct regDomain *ah_rd5GHz; /* reg state for 5G band */ uint8_t ah_coverageClass; /* coverage class */ - HAL_BOOL ah_regdomainUpdate; /* regdomain is updated? */ /* * RF Silent handling; setup according to the EEPROM. */ From owner-svn-src-user@FreeBSD.ORG Wed Jan 21 18:53:46 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7755C10656BC; Wed, 21 Jan 2009 18:53:46 +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 654AD8FC14; Wed, 21 Jan 2009 18:53:46 +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 n0LIrkpq087206; Wed, 21 Jan 2009 18:53:46 GMT (envelope-from sam@svn.freebsd.org) Received: (from sam@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n0LIrkNX087205; Wed, 21 Jan 2009 18:53:46 GMT (envelope-from sam@svn.freebsd.org) Message-Id: <200901211853.n0LIrkNX087205@svn.freebsd.org> From: Sam Leffler Date: Wed, 21 Jan 2009 18:53:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r187560 - user/sam/wifi/sys/dev/ath/ath_hal X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jan 2009 18:53:47 -0000 Author: sam Date: Wed Jan 21 18:53:46 2009 New Revision: 187560 URL: http://svn.freebsd.org/changeset/base/187560 Log: handle failure properly in ath_hal_init_channels; remove error return on 0 channels to be consistent with ath_hal_set_channels Modified: user/sam/wifi/sys/dev/ath/ath_hal/ah_regdomain.c Modified: user/sam/wifi/sys/dev/ath/ath_hal/ah_regdomain.c ============================================================================== --- user/sam/wifi/sys/dev/ath/ath_hal/ah_regdomain.c Wed Jan 21 18:52:33 2009 (r187559) +++ user/sam/wifi/sys/dev/ath/ath_hal/ah_regdomain.c Wed Jan 21 18:53:46 2009 (r187560) @@ -436,12 +436,8 @@ static REG_DMN_PAIR_MAPPING regDomainPai */ #define DEF_REGDMN FCC1_FCCA -#define DEF_DMN_5 FCC1 -#define DEF_DMN_2 FCCA #define COUNTRY_ERD_FLAG 0x8000 #define WORLDWIDE_ROAMING_FLAG 0x4000 -#define SUPER_DOMAIN_MASK 0x0fff -#define COUNTRY_CODE_MASK 0x3fff typedef struct { HAL_CTRY_CODE countryCode; @@ -2203,55 +2199,55 @@ ath_hal_init_channels(struct ath_hal *ah COUNTRY_CODE_TO_ENUM_RD *country; REG_DOMAIN *rd5GHz, *rd2GHz; HAL_STATUS status; + struct ieee80211_channel *c; + HAL_CHANNEL_INTERNAL *ic; + int i; if (maxchans > N(AH_PRIVATE(ah)->ah_channels)) maxchans = N(AH_PRIVATE(ah)->ah_channels); status = getchannels(ah, chans, maxchans, nchans, modeSelect, cc, regDmn, enableExtendedChannels, &country, &rd2GHz, &rd5GHz); - if (status == HAL_OK) { - struct ieee80211_channel *c; - HAL_CHANNEL_INTERNAL *ic; - int i; - - for (i = 0; i < *nchans; i++) { - c = &chans[i]; - ic = &AH_PRIVATE(ah)->ah_channels[i]; + if (status != HAL_OK) + return status; + for (i = 0; i < *nchans; i++) { + c = &chans[i]; + ic = &AH_PRIVATE(ah)->ah_channels[i]; - OS_MEMZERO(ic, sizeof(*ic)); - ic->channel = c->ic_freq; - ic->channelFlags = c->ic_flags; - ic->devdata = i; /* XXX */ - ic->maxRegTxPower = c->ic_maxregpower; - ic->maxTxPower = c->ic_maxpower; - ic->minTxPower = c->ic_minpower; - ic->antennaMax = c->ic_maxantgain; + OS_MEMZERO(ic, sizeof(*ic)); + ic->channel = c->ic_freq; + ic->channelFlags = c->ic_flags; + ic->devdata = i; /* XXX */ + ic->maxRegTxPower = c->ic_maxregpower; + ic->maxTxPower = c->ic_maxpower; + ic->minTxPower = c->ic_minpower; + ic->antennaMax = c->ic_maxantgain; - c->ic_devdata = i; + c->ic_devdata = i; - if (IEEE80211_IS_CHAN_PUREG(c)) { - /* - * Except for AR5211, PUREG means mixed - * DSSS and OFDM; convert to "just G". - */ - c->ic_flags &= ~IEEE80211_CHAN_PUREG; - c->ic_flags |= IEEE80211_CHAN_G; - } - HALDEBUG(ah, HAL_DEBUG_REGDOMAIN, - "[%3u] freq %u/0x%x txpow reg/max/min %u/%u/%u" - " antmax %u ctl 0x%x\n", - i, c->ic_freq, c->ic_flags, - c->ic_maxregpower, c->ic_maxpower, c->ic_minpower, - c->ic_maxantgain, ic->ctl); + if (IEEE80211_IS_CHAN_PUREG(c)) { + /* + * Except for AR5211, PUREG means mixed + * DSSS and OFDM; convert to "just G". + */ + c->ic_flags &= ~IEEE80211_CHAN_PUREG; + c->ic_flags |= IEEE80211_CHAN_G; } - AH_PRIVATE(ah)->ah_nchan = *nchans; - AH_PRIVATE(ah)->ah_rd2GHz = rd2GHz; - AH_PRIVATE(ah)->ah_rd5GHz = rd5GHz; - - ah->ah_countryCode = country->countryCode; - HALDEBUG(ah, HAL_DEBUG_REGDOMAIN, "%s: cc %u\n", - __func__, ah->ah_countryCode); + HALDEBUG(ah, HAL_DEBUG_REGDOMAIN, + "[%3u] freq %u/0x%x txpow reg/max/min %u/%u/%u" + " antmax %u ctl 0x%x\n", + i, c->ic_freq, c->ic_flags, + c->ic_maxregpower, c->ic_maxpower, c->ic_minpower, + c->ic_maxantgain, ic->ctl); } - return (*nchans != 0) ? HAL_OK : HAL_ENOMEM; /* XXX ENOMEM */ + AH_PRIVATE(ah)->ah_nchan = *nchans; + AH_PRIVATE(ah)->ah_rd2GHz = rd2GHz; + AH_PRIVATE(ah)->ah_rd5GHz = rd5GHz; + + ah->ah_countryCode = country->countryCode; + HALDEBUG(ah, HAL_DEBUG_REGDOMAIN, "%s: cc %u\n", + __func__, ah->ah_countryCode); + + return HAL_OK; } /* From owner-svn-src-user@FreeBSD.ORG Thu Jan 22 11:27:40 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 118621065674; Thu, 22 Jan 2009 11:27:40 +0000 (UTC) (envelope-from edwin@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id F34D48FC32; Thu, 22 Jan 2009 11:27:39 +0000 (UTC) (envelope-from edwin@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 n0MBRds6011411; Thu, 22 Jan 2009 11:27:39 GMT (envelope-from edwin@svn.freebsd.org) Received: (from edwin@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n0MBRdSe011410; Thu, 22 Jan 2009 11:27:39 GMT (envelope-from edwin@svn.freebsd.org) Message-Id: <200901221127.n0MBRdSe011410@svn.freebsd.org> From: Edwin Groothuis Date: Thu, 22 Jan 2009 11:27:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r187589 - user/edwin/releasenotes X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Jan 2009 11:27:40 -0000 Author: edwin Date: Thu Jan 22 11:27:39 2009 New Revision: 187589 URL: http://svn.freebsd.org/changeset/base/187589 Log: Add import of tzdata2009a Modified: user/edwin/releasenotes/contrib.xml Modified: user/edwin/releasenotes/contrib.xml ============================================================================== --- user/edwin/releasenotes/contrib.xml Thu Jan 22 11:24:42 2009 (r187588) +++ user/edwin/releasenotes/contrib.xml Thu Jan 22 11:27:39 2009 (r187589) @@ -107,6 +107,10 @@ ]]> + + 2009-01-22 + 2009-01-22 + 2008-10-28 2008-10-28 From owner-svn-src-user@FreeBSD.ORG Fri Jan 23 06:28:15 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 35E35106564A; Fri, 23 Jan 2009 06:28:15 +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 27F018FC0C; Fri, 23 Jan 2009 06:28:15 +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 n0N6SFwV033375; Fri, 23 Jan 2009 06:28:15 GMT (envelope-from sam@svn.freebsd.org) Received: (from sam@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n0N6SFKn033374; Fri, 23 Jan 2009 06:28:15 GMT (envelope-from sam@svn.freebsd.org) Message-Id: <200901230628.n0N6SFKn033374@svn.freebsd.org> From: Sam Leffler Date: Fri, 23 Jan 2009 06:28:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r187616 - user/sam/wifi/sys/net80211 X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 23 Jan 2009 06:28:15 -0000 Author: sam Date: Fri Jan 23 06:28:14 2009 New Revision: 187616 URL: http://svn.freebsd.org/changeset/base/187616 Log: define IEEE80211_CHAN_108A and IEEE80211_CHAN_108G in terms of their non-turbo names to make the relationship more clear Modified: user/sam/wifi/sys/net80211/_ieee80211.h Modified: user/sam/wifi/sys/net80211/_ieee80211.h ============================================================================== --- user/sam/wifi/sys/net80211/_ieee80211.h Fri Jan 23 05:57:40 2009 (r187615) +++ user/sam/wifi/sys/net80211/_ieee80211.h Fri Jan 23 06:28:14 2009 (r187616) @@ -186,9 +186,9 @@ struct ieee80211_channel { #define IEEE80211_CHAN_G \ (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_DYN) #define IEEE80211_CHAN_108A \ - (IEEE80211_CHAN_5GHZ | IEEE80211_CHAN_OFDM | IEEE80211_CHAN_TURBO) + (IEEE80211_CHAN_A | IEEE80211_CHAN_TURBO) #define IEEE80211_CHAN_108G \ - (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_OFDM | IEEE80211_CHAN_TURBO) + (IEEE80211_CHAN_PUREG | IEEE80211_CHAN_TURBO) #define IEEE80211_CHAN_ST \ (IEEE80211_CHAN_108A | IEEE80211_CHAN_STURBO) From owner-svn-src-user@FreeBSD.ORG Fri Jan 23 06:30:04 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CFD38106566B; Fri, 23 Jan 2009 06:30:04 +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 C216D8FC19; Fri, 23 Jan 2009 06:30:04 +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 n0N6U4Kc033453; Fri, 23 Jan 2009 06:30:04 GMT (envelope-from sam@svn.freebsd.org) Received: (from sam@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n0N6U4sW033452; Fri, 23 Jan 2009 06:30:04 GMT (envelope-from sam@svn.freebsd.org) Message-Id: <200901230630.n0N6U4sW033452@svn.freebsd.org> From: Sam Leffler Date: Fri, 23 Jan 2009 06:30:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r187617 - user/sam/wifi/sys/net80211 X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 23 Jan 2009 06:30:05 -0000 Author: sam Date: Fri Jan 23 06:30:04 2009 New Revision: 187617 URL: http://svn.freebsd.org/changeset/base/187617 Log: change IEEE80211_IS_CHAN_OFDM and IEEE80211_IS_CHAN_CCK to return true for 11g (dynamic CCK/OFDM) Modified: user/sam/wifi/sys/net80211/_ieee80211.h Modified: user/sam/wifi/sys/net80211/_ieee80211.h ============================================================================== --- user/sam/wifi/sys/net80211/_ieee80211.h Fri Jan 23 06:28:14 2009 (r187616) +++ user/sam/wifi/sys/net80211/_ieee80211.h Fri Jan 23 06:30:04 2009 (r187617) @@ -226,9 +226,9 @@ struct ieee80211_channel { #define IEEE80211_IS_CHAN_PASSIVE(_c) \ (((_c)->ic_flags & IEEE80211_CHAN_PASSIVE) != 0) #define IEEE80211_IS_CHAN_OFDM(_c) \ - (((_c)->ic_flags & IEEE80211_CHAN_OFDM) != 0) + (((_c)->ic_flags & (IEEE80211_CHAN_OFDM | IEEE80211_CHAN_DYN)) != 0) #define IEEE80211_IS_CHAN_CCK(_c) \ - (((_c)->ic_flags & IEEE80211_CHAN_CCK) != 0) + (((_c)->ic_flags & (IEEE80211_CHAN_CCK | IEEE80211_CHAN_DYN)) != 0) #define IEEE80211_IS_CHAN_GFSK(_c) \ (((_c)->ic_flags & IEEE80211_CHAN_GFSK) != 0) #define IEEE80211_IS_CHAN_TURBO(_c) \ From owner-svn-src-user@FreeBSD.ORG Fri Jan 23 06:31:10 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BB5E0106566C; Fri, 23 Jan 2009 06:31:10 +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 ACF098FC1F; Fri, 23 Jan 2009 06:31:10 +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 n0N6VAM8033508; Fri, 23 Jan 2009 06:31:10 GMT (envelope-from sam@svn.freebsd.org) Received: (from sam@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n0N6VA8O033507; Fri, 23 Jan 2009 06:31:10 GMT (envelope-from sam@svn.freebsd.org) Message-Id: <200901230631.n0N6VA8O033507@svn.freebsd.org> From: Sam Leffler Date: Fri, 23 Jan 2009 06:31:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r187618 - user/sam/wifi/sys/net80211 X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 23 Jan 2009 06:31:11 -0000 Author: sam Date: Fri Jan 23 06:31:10 2009 New Revision: 187618 URL: http://svn.freebsd.org/changeset/base/187618 Log: add new state bit to indicate when interference is observed on the channel; not used just now Modified: user/sam/wifi/sys/net80211/_ieee80211.h Modified: user/sam/wifi/sys/net80211/_ieee80211.h ============================================================================== --- user/sam/wifi/sys/net80211/_ieee80211.h Fri Jan 23 06:30:04 2009 (r187617) +++ user/sam/wifi/sys/net80211/_ieee80211.h Fri Jan 23 06:31:10 2009 (r187618) @@ -276,12 +276,15 @@ struct ieee80211_channel { /* dynamic state */ #define IEEE80211_CHANSTATE_RADAR 0x01 /* radar detected */ #define IEEE80211_CHANSTATE_CACDONE 0x02 /* CAC completed */ +#define IEEE80211_CHANSTATE_CWINT 0x04 /* interference detected */ #define IEEE80211_CHANSTATE_NORADAR 0x10 /* post notify on radar clear */ #define IEEE80211_IS_CHAN_RADAR(_c) \ (((_c)->ic_state & IEEE80211_CHANSTATE_RADAR) != 0) #define IEEE80211_IS_CHAN_CACDONE(_c) \ (((_c)->ic_state & IEEE80211_CHANSTATE_CACDONE) != 0) +#define IEEE80211_IS_CHAN_CWINT(_c) \ + (((_c)->ic_state & IEEE80211_CHANSTATE_CWINT) != 0) /* ni_chan encoding for FH phy */ #define IEEE80211_FH_CHANMOD 80 From owner-svn-src-user@FreeBSD.ORG Fri Jan 23 06:33:39 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B67ED106566C; Fri, 23 Jan 2009 06:33:39 +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 A89128FC0C; Fri, 23 Jan 2009 06:33:39 +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 n0N6XdNB033615; Fri, 23 Jan 2009 06:33:39 GMT (envelope-from sam@svn.freebsd.org) Received: (from sam@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n0N6Xd5i033613; Fri, 23 Jan 2009 06:33:39 GMT (envelope-from sam@svn.freebsd.org) Message-Id: <200901230633.n0N6Xd5i033613@svn.freebsd.org> From: Sam Leffler Date: Fri, 23 Jan 2009 06:33:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r187619 - user/sam/wifi/sys/dev/ath X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 23 Jan 2009 06:33:40 -0000 Author: sam Date: Fri Jan 23 06:33:39 2009 New Revision: 187619 URL: http://svn.freebsd.org/changeset/base/187619 Log: merge r187608: don't run the calibration code if scanning Modified: user/sam/wifi/sys/dev/ath/if_ath.c Modified: user/sam/wifi/sys/dev/ath/if_ath.c ============================================================================== --- user/sam/wifi/sys/dev/ath/if_ath.c Fri Jan 23 06:31:10 2009 (r187618) +++ user/sam/wifi/sys/dev/ath/if_ath.c Fri Jan 23 06:33:39 2009 (r187619) @@ -5811,9 +5811,12 @@ ath_calibrate(void *arg) struct ath_softc *sc = arg; struct ath_hal *ah = sc->sc_ah; struct ifnet *ifp = sc->sc_ifp; + struct ieee80211com *ic = ifp->if_l2com; HAL_BOOL longCal, isCalDone; int nextcal; + if (ic->ic_flags & IEEE80211_F_SCAN) /* defer, off channel */ + goto restart; longCal = (ticks - sc->sc_lastlongcal >= ath_longcalinterval*hz); if (longCal) { sc->sc_stats.ast_per_cal++; @@ -5851,6 +5854,7 @@ ath_calibrate(void *arg) sc->sc_stats.ast_per_calfail++; } if (!isCalDone) { +restart: /* * Use a shorter interval to potentially collect multiple * data samples required to complete calibration. Once From owner-svn-src-user@FreeBSD.ORG Fri Jan 23 07:00:34 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 323771065708; Fri, 23 Jan 2009 07:00:34 +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 20EF68FC2F; Fri, 23 Jan 2009 07:00:34 +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 n0N70XLe034185; Fri, 23 Jan 2009 07:00:33 GMT (envelope-from sam@svn.freebsd.org) Received: (from sam@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n0N70XZJ034176; Fri, 23 Jan 2009 07:00:33 GMT (envelope-from sam@svn.freebsd.org) Message-Id: <200901230700.n0N70XZJ034176@svn.freebsd.org> From: Sam Leffler Date: Fri, 23 Jan 2009 07:00:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r187620 - in user/sam/wifi/sys/dev/ath: . ath_hal ath_hal/ar5210 ath_hal/ar5211 ath_hal/ar5212 ath_hal/ar5312 ath_hal/ar5416 X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 23 Jan 2009 07:00:34 -0000 Author: sam Date: Fri Jan 23 07:00:33 2009 New Revision: 187620 URL: http://svn.freebsd.org/changeset/base/187620 Log: Checkpoint gutting of HAL_CHANNEL: o replace uses of HAL_CHANNEL by struct ieee80211_channel o remove HAL_CHANNEL shadow state from HAL_CHANNEL_PRIVATE; instead users are given an ieee80211_channel and if they need private state they use ic_devdata to find the private channel (shrinks private chans by 12 bytes) o pack the private channel array (one entry per frequency) o mark 802.11 channels directly when interference is detected o use ic_devdata to index into ani state cache; note this consolidates state for enumerated channels so can change behaviour (e.g. for b/g and turbo combinations) o remove private mhz2->ieee conversion routines as we now get the ieee channel number directly from ic_ieee o setup 11g channels with correct channel flags (used to mark them pureg and then futz the flags when constructing net80211 channels) o remove conversion code in regulatory routines now that we don't do any conversion to/from private/internal data structures o de-inline ath_hal_getantennareduction Note: HAL_CHANNEL_PRIVATE temporarily shadows the frequency to validate lookups and facilitate noise floor processing; this will go away soon Note: ath_hal_computetxtime needs take a channel to eliminate use of ah_curchan (possibly other routines too) Note: channel interference handling should be moved to a callback so we can const'ify parameters and eliminate assumptions about when/how detection is done Note: private channel table can shrink and ani state table should be the same size to avoid checking references Note: ath_hal_checkchannel should be inlined when we stop validating lookups Note: privFlags can go away if we move CHANNEL_IQVALID elsewhere but might be worth keeping as removing it won't shrink HAL_CHANNEL_PRIVATE Note: purge direct use of ic_flags (e.g. in switch statements) Tested in sta mode on 5210, 5211, 5416, and a wide variety of 5212 cards in normal modes; turbo modes need testing. Modified: user/sam/wifi/sys/dev/ath/ (props changed) user/sam/wifi/sys/dev/ath/ath_hal/ah.c user/sam/wifi/sys/dev/ath/ath_hal/ah.h user/sam/wifi/sys/dev/ath/ath_hal/ah_internal.h user/sam/wifi/sys/dev/ath/ath_hal/ah_regdomain.c user/sam/wifi/sys/dev/ath/ath_hal/ar5210/ar5210.h user/sam/wifi/sys/dev/ath/ath_hal/ar5210/ar5210_attach.c user/sam/wifi/sys/dev/ath/ath_hal/ar5210/ar5210_misc.c user/sam/wifi/sys/dev/ath/ath_hal/ar5210/ar5210_reset.c user/sam/wifi/sys/dev/ath/ath_hal/ar5210/ar5210_xmit.c user/sam/wifi/sys/dev/ath/ath_hal/ar5211/ar5211.h user/sam/wifi/sys/dev/ath/ath_hal/ar5211/ar5211_attach.c user/sam/wifi/sys/dev/ath/ath_hal/ar5211/ar5211_misc.c user/sam/wifi/sys/dev/ath/ath_hal/ar5211/ar5211_reset.c user/sam/wifi/sys/dev/ath/ath_hal/ar5211/ar5211_xmit.c user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar2316.c user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar2317.c user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar2413.c user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar2425.c user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar5111.c user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar5112.c user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar5212.h user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar5212_ani.c user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar5212_attach.c user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar5212_misc.c user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar5212_reset.c user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar5212_xmit.c user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar5413.c user/sam/wifi/sys/dev/ath/ath_hal/ar5312/ar5312.h user/sam/wifi/sys/dev/ath/ath_hal/ar5312/ar5312_reset.c user/sam/wifi/sys/dev/ath/ath_hal/ar5416/ar2133.c user/sam/wifi/sys/dev/ath/ath_hal/ar5416/ar5416.h user/sam/wifi/sys/dev/ath/ath_hal/ar5416/ar5416_ani.c user/sam/wifi/sys/dev/ath/ath_hal/ar5416/ar5416_cal.c user/sam/wifi/sys/dev/ath/ath_hal/ar5416/ar5416_cal.h user/sam/wifi/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c user/sam/wifi/sys/dev/ath/if_ath.c user/sam/wifi/sys/dev/ath/if_athvar.h Modified: user/sam/wifi/sys/dev/ath/ath_hal/ah.c ============================================================================== --- user/sam/wifi/sys/dev/ath/ath_hal/ah.c Fri Jan 23 06:33:39 2009 (r187619) +++ user/sam/wifi/sys/dev/ath/ath_hal/ah.c Fri Jan 23 07:00:33 2009 (r187620) @@ -161,8 +161,10 @@ ath_hal_computetxtime(struct ath_hal *ah kbps = rates->info[rateix].rateKbps; /* * index can be invalid duting dynamic Turbo transitions. + * XXX */ - if(kbps == 0) return 0; + if (kbps == 0) + return 0; switch (rates->info[rateix].phy) { case IEEE80211_T_CCK: @@ -196,8 +198,8 @@ ath_hal_computetxtime(struct ath_hal *ah #define OFDM_PLCP_BITS_QUARTER 22 #define OFDM_SYMBOL_TIME_QUARTER 16 - if (AH_PRIVATE(ah)->ah_curchan && - IS_CHAN_QUARTER_RATE(AH_PRIVATE(ah)->ah_curchan)) { + if (AH_PRIVATE(ah)->ah_curchan != AH_NULL && + IEEE80211_IS_CHAN_QUARTER(AH_PRIVATE(ah)->ah_curchan)) { bitsPerSymbol = (kbps * OFDM_SYMBOL_TIME_QUARTER) / 1000; HALASSERT(bitsPerSymbol != 0); @@ -206,8 +208,8 @@ ath_hal_computetxtime(struct ath_hal *ah txTime = OFDM_SIFS_TIME_QUARTER + OFDM_PREAMBLE_TIME_QUARTER + (numSymbols * OFDM_SYMBOL_TIME_QUARTER); - } else if (AH_PRIVATE(ah)->ah_curchan && - IS_CHAN_HALF_RATE(AH_PRIVATE(ah)->ah_curchan)) { + } else if (AH_PRIVATE(ah)->ah_curchan != AH_NULL && + IEEE80211_IS_CHAN_HALF(AH_PRIVATE(ah)->ah_curchan)) { bitsPerSymbol = (kbps * OFDM_SYMBOL_TIME_HALF) / 1000; HALASSERT(bitsPerSymbol != 0); @@ -272,15 +274,15 @@ typedef enum { } WIRELESS_MODE; static WIRELESS_MODE -ath_hal_chan2wmode(struct ath_hal *ah, const HAL_CHANNEL_INTERNAL *chan) +ath_hal_chan2wmode(struct ath_hal *ah, const struct ieee80211_channel *chan) { - if (IS_CHAN_CCK(chan)) + if (IEEE80211_IS_CHAN_B(chan)) return WIRELESS_MODE_11b; - if (IS_CHAN_G(chan)) + if (IEEE80211_IS_CHAN_G(chan)) return WIRELESS_MODE_11g; - if (IS_CHAN_108G(chan)) + if (IEEE80211_IS_CHAN_108G(chan)) return WIRELESS_MODE_108g; - if (IS_CHAN_TURBO(chan)) + if (IEEE80211_IS_CHAN_TURBO(chan)) return WIRELESS_MODE_TURBO; return WIRELESS_MODE_11a; } @@ -294,17 +296,17 @@ static const uint8_t CLOCK_RATE[] = { 4 u_int ath_hal_mac_clks(struct ath_hal *ah, u_int usecs) { - const HAL_CHANNEL_INTERNAL *c = AH_PRIVATE(ah)->ah_curchan; + const struct ieee80211_channel *c = AH_PRIVATE(ah)->ah_curchan; u_int clks; /* NB: ah_curchan may be null when called attach time */ if (c != AH_NULL) { clks = usecs * CLOCK_RATE[ath_hal_chan2wmode(ah, c)]; - if (IS_CHAN_HT40(c)) + if (IEEE80211_IS_CHAN_HT40(c)) clks <<= 1; - else if (IS_CHAN_HALF_RATE(c)) + else if (IEEE80211_IS_CHAN_HALF(c)) clks >>= 1; - else if (IS_CHAN_QUARTER_RATE(c)) + else if (IEEE80211_IS_CHAN_QUARTER(c)) clks >>= 2; } else clks = usecs * CLOCK_RATE[WIRELESS_MODE_11b]; @@ -314,17 +316,17 @@ ath_hal_mac_clks(struct ath_hal *ah, u_i u_int ath_hal_mac_usec(struct ath_hal *ah, u_int clks) { - const HAL_CHANNEL_INTERNAL *c = AH_PRIVATE(ah)->ah_curchan; + const struct ieee80211_channel *c = AH_PRIVATE(ah)->ah_curchan; u_int usec; /* NB: ah_curchan may be null when called attach time */ if (c != AH_NULL) { usec = clks / CLOCK_RATE[ath_hal_chan2wmode(ah, c)]; - if (IS_CHAN_HT40(c)) + if (IEEE80211_IS_CHAN_HT40(c)) usec >>= 1; - else if (IS_CHAN_HALF_RATE(c)) + else if (IEEE80211_IS_CHAN_HALF(c)) usec <<= 1; - else if (IS_CHAN_QUARTER_RATE(c)) + else if (IEEE80211_IS_CHAN_QUARTER(c)) usec <<= 2; } else usec = clks / CLOCK_RATE[WIRELESS_MODE_11b]; @@ -704,7 +706,7 @@ static const int16_t NOISE_FLOOR[] = { - * implement the ah_getChanNoise method. */ int16_t -ath_hal_getChanNoise(struct ath_hal *ah, const HAL_CHANNEL *chan) +ath_hal_getChanNoise(struct ath_hal *ah, const struct ieee80211_channel *chan) { HAL_CHANNEL_INTERNAL *ichan; @@ -712,11 +714,11 @@ ath_hal_getChanNoise(struct ath_hal *ah, if (ichan == AH_NULL) { HALDEBUG(ah, HAL_DEBUG_NFCAL, "%s: invalid channel %u/0x%x; no mapping\n", - __func__, chan->channel, chan->channelFlags); + __func__, chan->ic_freq, chan->ic_flags); return 0; } if (ichan->rawNoiseFloor == 0) { - WIRELESS_MODE mode = ath_hal_chan2wmode(ah, ichan); + WIRELESS_MODE mode = ath_hal_chan2wmode(ah, chan); HALASSERT(mode < WIRELESS_MODE_MAX); return NOISE_FLOOR[mode] + ath_hal_getNfAdjust(ah, ichan); @@ -751,8 +753,8 @@ ath_hal_process_noisefloor(struct ath_ha c = &AH_PRIVATE(ah)->ah_channels[i]; if (c->rawNoiseFloor >= 0) continue; - mode = ath_hal_chan2wmode(ah, c); - HALASSERT(mode < WIRELESS_MODE_MAX); + /* XXX can't identify proper mode */ + mode = IS_CHAN_5GHZ(c) ? WIRELESS_MODE_11a : WIRELESS_MODE_11g; nf = c->rawNoiseFloor + NOISE_FLOOR[mode] + ath_hal_getNfAdjust(ah, c); if (IS_CHAN_5GHZ(c)) { @@ -778,9 +780,8 @@ ath_hal_process_noisefloor(struct ath_ha /* Apply correction factor */ c->noiseFloorAdjust = ath_hal_getNfAdjust(ah, c) + (IS_CHAN_5GHZ(c) ? correct5 : correct2); - HALDEBUG(ah, HAL_DEBUG_NFCAL, "%u/0x%x raw nf %d adjust %d\n", - c->channel, c->channelFlags, c->rawNoiseFloor, - c->noiseFloorAdjust); + HALDEBUG(ah, HAL_DEBUG_NFCAL, "%u raw nf %d adjust %d\n", + c->channel, c->rawNoiseFloor, c->noiseFloorAdjust); } } Modified: user/sam/wifi/sys/dev/ath/ath_hal/ah.h ============================================================================== --- user/sam/wifi/sys/dev/ath/ath_hal/ah.h Fri Jan 23 06:33:39 2009 (r187619) +++ user/sam/wifi/sys/dev/ath/ath_hal/ah.h Fri Jan 23 07:00:33 2009 (r187620) @@ -367,54 +367,6 @@ typedef enum { typedef uint16_t HAL_CTRY_CODE; /* country code */ typedef uint16_t HAL_REG_DOMAIN; /* regulatory domain code */ -typedef struct { - uint32_t channelFlags; - uint16_t channel; /* NB: must be first for casting */ - uint16_t devdata; /* XXX temp */ -} HAL_CHANNEL; - -/* channelFlags */ -#define CHANNEL_NFCREQUIRED 0x01 /* channel requires noise floor check */ -#define CHANNEL_CW_INT 0x00002 /* CW interference detected on channel */ -#define CHANNEL_TURBO 0x00010 /* Turbo Channel */ -#define CHANNEL_CCK 0x00020 /* CCK channel */ -#define CHANNEL_OFDM 0x00040 /* OFDM channel */ -#define CHANNEL_2GHZ 0x00080 /* 2 GHz spectrum channel */ -#define CHANNEL_5GHZ 0x00100 /* 5 GHz spectrum channel */ -#define CHANNEL_PASSIVE 0x00200 /* Only passive scan allowed in the channel */ -#define CHANNEL_DYN 0x00400 /* dynamic CCK-OFDM channel */ -#define CHANNEL_STURBO 0x02000 /* Static turbo, no 11a-only usage */ -#define CHANNEL_HALF 0x04000 /* Half rate channel */ -#define CHANNEL_QUARTER 0x08000 /* Quarter rate channel */ -#define CHANNEL_HT20 0x10000 /* 11n 20MHZ channel */ -#define CHANNEL_HT40PLUS 0x20000 /* 11n 40MHZ channel w/ ext chan above */ -#define CHANNEL_HT40MINUS 0x40000 /* 11n 40MHZ channel w/ ext chan below */ -#define CHANNEL_DFS 0x80000 /* DFS required on channel */ -#define CHANNEL_4MS_LIMIT 0x00100000 /* 4msec packet limit on this channel */ - -#define CHANNEL_A (CHANNEL_5GHZ|CHANNEL_OFDM) -#define CHANNEL_B (CHANNEL_2GHZ|CHANNEL_CCK) -#define CHANNEL_PUREG (CHANNEL_2GHZ|CHANNEL_OFDM) -#ifdef notdef -#define CHANNEL_G (CHANNEL_2GHZ|CHANNEL_DYN) -#else -#define CHANNEL_G (CHANNEL_2GHZ|CHANNEL_OFDM) -#endif -#define CHANNEL_T (CHANNEL_5GHZ|CHANNEL_OFDM|CHANNEL_TURBO) -#define CHANNEL_ST (CHANNEL_T|CHANNEL_STURBO) -#define CHANNEL_108G (CHANNEL_2GHZ|CHANNEL_OFDM|CHANNEL_TURBO) -#define CHANNEL_108A CHANNEL_T -#define CHANNEL_G_HT20 (CHANNEL_G|CHANNEL_HT20) -#define CHANNEL_A_HT20 (CHANNEL_A|CHANNEL_HT20) -#define CHANNEL_G_HT40PLUS (CHANNEL_G|CHANNEL_HT40PLUS) -#define CHANNEL_G_HT40MINUS (CHANNEL_G|CHANNEL_HT40MINUS) -#define CHANNEL_A_HT40PLUS (CHANNEL_A|CHANNEL_HT40PLUS) -#define CHANNEL_A_HT40MINUS (CHANNEL_A|CHANNEL_HT40MINUS) -#define CHANNEL_ALL \ - (CHANNEL_OFDM | CHANNEL_CCK| CHANNEL_2GHZ | CHANNEL_5GHZ | \ - CHANNEL_TURBO | CHANNEL_HT20 | CHANNEL_HT40PLUS | CHANNEL_HT40MINUS) -#define CHANNEL_ALL_NOTURBO (CHANNEL_ALL &~ CHANNEL_TURBO) - #define HAL_ANTENNA_MIN_MODE 0 #define HAL_ANTENNA_FIXED_A 1 #define HAL_ANTENNA_FIXED_B 2 @@ -616,6 +568,7 @@ typedef struct { struct ath_desc; struct ath_tx_status; struct ath_rx_status; +struct ieee80211_channel; /* * Hardware Access Layer (HAL) API. @@ -651,18 +604,18 @@ struct ath_hal { /* Reset functions */ HAL_BOOL __ahdecl(*ah_reset)(struct ath_hal *, HAL_OPMODE, - HAL_CHANNEL *, + struct ieee80211_channel *, HAL_BOOL bChannelChange, HAL_STATUS *status); HAL_BOOL __ahdecl(*ah_phyDisable)(struct ath_hal *); HAL_BOOL __ahdecl(*ah_disable)(struct ath_hal *); void __ahdecl(*ah_setPCUConfig)(struct ath_hal *); HAL_BOOL __ahdecl(*ah_perCalibration)(struct ath_hal*, - HAL_CHANNEL *, HAL_BOOL *); + struct ieee80211_channel *, HAL_BOOL *); HAL_BOOL __ahdecl(*ah_perCalibrationN)(struct ath_hal *, - HAL_CHANNEL *, u_int chainMask, + struct ieee80211_channel *, u_int chainMask, HAL_BOOL longCal, HAL_BOOL *isCalDone); HAL_BOOL __ahdecl(*ah_resetCalValid)(struct ath_hal *, - const HAL_CHANNEL *); + const struct ieee80211_channel *); HAL_BOOL __ahdecl(*ah_setTxPowerLimit)(struct ath_hal *, uint32_t); /* Transmit functions */ @@ -724,7 +677,7 @@ struct ath_hal { struct ath_rx_status *); void __ahdecl(*ah_rxMonitor)(struct ath_hal *, const HAL_NODE_STATS *, - const HAL_CHANNEL *); + const struct ieee80211_channel *); void __ahdecl(*ah_procMibEvent)(struct ath_hal *, const HAL_NODE_STATS *); @@ -794,7 +747,7 @@ struct ath_hal { HAL_POWER_MODE mode, int setChip); HAL_POWER_MODE __ahdecl(*ah_getPowerMode)(struct ath_hal*); int16_t __ahdecl(*ah_getChanNoise)(struct ath_hal *, - const HAL_CHANNEL *); + const struct ieee80211_channel *); /* Beacon Management Functions */ void __ahdecl(*ah_setBeaconTimers)(struct ath_hal*, Modified: user/sam/wifi/sys/dev/ath/ath_hal/ah_internal.h ============================================================================== --- user/sam/wifi/sys/dev/ath/ath_hal/ah_internal.h Fri Jan 23 06:33:39 2009 (r187619) +++ user/sam/wifi/sys/dev/ath/ath_hal/ah_internal.h Fri Jan 23 07:00:33 2009 (r187620) @@ -27,6 +27,8 @@ #define AH_MIN(a,b) ((a)<(b)?(a):(b)) #define AH_MAX(a,b) ((a)>(b)?(a):(b)) +#include + #ifndef NBBY #define NBBY 8 /* number of bits/byte */ #endif @@ -112,30 +114,20 @@ struct ath_hal_rf *ath_hal_rfprobe(struc * using ic_devdata in the ieee80211_channel. */ typedef struct { - uint32_t channelFlags; - uint16_t channel; /* NB: must be first for casting */ - uint16_t devdata; /* XXX temp */ - int8_t maxRegTxPower; - int8_t maxTxPower; - int8_t minTxPower; - uint8_t antennaMax; - - uint8_t privFlags; - uint8_t ctl; /* conformance test limit */ + uint16_t channel; + uint8_t privFlags; /* XXX remove */ +#define CHANNEL_IQVALID 0x01 /* IQ calibration valid */ uint8_t calValid; /* bitmask of cal types */ int8_t iCoff; int8_t qCoff; - uint8_t pad; /* NB: hole */ int16_t rawNoiseFloor; int16_t noiseFloorAdjust; uint16_t mainSpur; /* cached spur value for this channel */ } HAL_CHANNEL_INTERNAL; +#define CHANNEL_NFCREQUIRED 0x01 /* channel requires noise floor check */ + /* privFlags */ -#define CHANNEL_INTERFERENCE 0x01 /* Software use: channel interference - used for as AR as well as RADAR - interference detection */ -#define CHANNEL_IQVALID 0x02 /* IQ calibration valid */ typedef struct { uint32_t halChanSpreadSupport : 1, @@ -233,7 +225,7 @@ struct ath_hal_private { uint32_t gpio, uint32_t val); void (*ah_gpioSetIntr)(struct ath_hal*, u_int, uint32_t); HAL_BOOL (*ah_getChipPowerLimits)(struct ath_hal *, - HAL_CHANNEL_INTERNAL *); + struct ieee80211_channel *); int16_t (*ah_getNfAdjust)(struct ath_hal *, const HAL_CHANNEL_INTERNAL*); void (*ah_getNoiseFloor)(struct ath_hal *, @@ -261,7 +253,7 @@ struct ath_hal_private { uint16_t ah_analog2GhzRev; /* 5GHz radio revision */ HAL_OPMODE ah_opmode; /* operating mode from reset */ - HAL_CHANNEL_INTERNAL *ah_curchan; /* operating channel */ + const struct ieee80211_channel *ah_curchan;/* operating channel */ HAL_CAPABILITIES ah_caps; /* device capabilities */ uint32_t ah_diagreg; /* user-specified AR_DIAG_SW */ int16_t ah_powerLimit; /* tx power cap */ @@ -417,43 +409,11 @@ typedef enum { #define HAL_BIN_WIDTH_TURBO_100HZ 6250 #define HAL_MAX_BINS_ALLOWED 28 -/* - * A = 5GHZ|OFDM - * T = 5GHZ|OFDM|TURBO - * - * IS_CHAN_A(T) will return TRUE. This is probably - * not the default behavior we want. We should migrate to a better mask -- - * perhaps CHANNEL_ALL. - * - * For now, IS_CHAN_G() masks itself with CHANNEL_108G. - * - */ - -#define IS_CHAN_A(_c) (((_c)->channelFlags & CHANNEL_A) == CHANNEL_A) -#define IS_CHAN_B(_c) (((_c)->channelFlags & CHANNEL_B) == CHANNEL_B) -#define IS_CHAN_G(_c) (((_c)->channelFlags & (CHANNEL_108G|CHANNEL_G)) == CHANNEL_G) -#define IS_CHAN_108G(_c)(((_c)->channelFlags & CHANNEL_108G) == CHANNEL_108G) -#define IS_CHAN_T(_c) (((_c)->channelFlags & CHANNEL_T) == CHANNEL_T) -#define IS_CHAN_PUREG(_c) \ - (((_c)->channelFlags & CHANNEL_PUREG) == CHANNEL_PUREG) - -#define IS_CHAN_TURBO(_c) (((_c)->channelFlags & CHANNEL_TURBO) != 0) -#define IS_CHAN_CCK(_c) (((_c)->channelFlags & CHANNEL_CCK) != 0) -#define IS_CHAN_OFDM(_c) (((_c)->channelFlags & CHANNEL_OFDM) != 0) -#define IS_CHAN_5GHZ(_c) (((_c)->channelFlags & CHANNEL_5GHZ) != 0) -#define IS_CHAN_2GHZ(_c) (((_c)->channelFlags & CHANNEL_2GHZ) != 0) -#define IS_CHAN_PASSIVE(_c) (((_c)->channelFlags & CHANNEL_PASSIVE) != 0) -#define IS_CHAN_HALF_RATE(_c) (((_c)->channelFlags & CHANNEL_HALF) != 0) -#define IS_CHAN_QUARTER_RATE(_c) (((_c)->channelFlags & CHANNEL_QUARTER) != 0) +#define IS_CHAN_5GHZ(_c) ((_c)->channel > 4900) +#define IS_CHAN_2GHZ(_c) (!IS_CHAN_5GHZ(_c)) #define IS_CHAN_IN_PUBLIC_SAFETY_BAND(_c) ((_c) > 4940 && (_c) < 4990) -#define CHANNEL_HT40 (CHANNEL_HT40PLUS | CHANNEL_HT40MINUS) -#define CHANNEL_HT (CHANNEL_HT20 | CHANNEL_HT40) -#define IS_CHAN_HT(_c) (((_c)->channelFlags & CHANNEL_HT) != 0) -#define IS_CHAN_HT20(_c) (((_c)->channelFlags & CHANNEL_HT) == CHANNEL_HT20) -#define IS_CHAN_HT40(_c) (((_c)->channelFlags & CHANNEL_HT40) != 0) - /* * Deduce if the host cpu has big- or litt-endian byte order. */ @@ -499,25 +459,15 @@ isBigEndian(void) /* * Return the max allowed antenna gain and apply any regulatory * domain specific changes. - * - * NOTE: a negative reduction is possible in RD's that only - * measure radiated power (e.g., ETSI) which would increase - * that actual conducted output power (though never beyond - * the calibrated target power). - */ -static OS_INLINE u_int -ath_hal_getantennareduction(struct ath_hal *ah, - const HAL_CHANNEL_INTERNAL *chan, u_int twiceGain) -{ - int8_t antennaMax = twiceGain - chan->antennaMax*2; - return (antennaMax < 0) ? 0 : antennaMax; -} + */ +u_int ath_hal_getantennareduction(struct ath_hal *ah, + const struct ieee80211_channel *chan, u_int twiceGain); /* * Return the test group for the specific channel based on * the current regulatory setup. */ -u_int ath_hal_getctl(struct ath_hal *, const HAL_CHANNEL_INTERNAL *); +u_int ath_hal_getctl(struct ath_hal *, const struct ieee80211_channel *); /* * Map a public channel definition to the corresponding @@ -525,8 +475,8 @@ u_int ath_hal_getctl(struct ath_hal *, c * whether or not the specified channel is ok to use * based on the current regulatory domain constraints. */ -extern HAL_CHANNEL_INTERNAL *ath_hal_checkchannel(struct ath_hal *, - const HAL_CHANNEL *); +HAL_CHANNEL_INTERNAL *ath_hal_checkchannel(struct ath_hal *, + const struct ieee80211_channel *); /* system-configurable parameters */ extern int ath_hal_dma_beacon_response_time; /* in TU's */ @@ -744,7 +694,7 @@ extern void ath_hal_setupratetable(struc /* * Common routine for implementing getChanNoise api. */ -extern int16_t ath_hal_getChanNoise(struct ath_hal *ah, const HAL_CHANNEL* ); +int16_t ath_hal_getChanNoise(struct ath_hal *, const struct ieee80211_channel *); /* * Initialization support. Modified: user/sam/wifi/sys/dev/ath/ath_hal/ah_regdomain.c ============================================================================== --- user/sam/wifi/sys/dev/ath/ath_hal/ah_regdomain.c Fri Jan 23 06:33:39 2009 (r187619) +++ user/sam/wifi/sys/dev/ath/ath_hal/ah_regdomain.c Fri Jan 23 07:00:33 2009 (r187620) @@ -1678,22 +1678,30 @@ struct cmode { }; static const struct cmode modes[] = { - { HAL_MODE_TURBO, CHANNEL_ST}, /* NB: 11a Static Turbo */ - { HAL_MODE_11A, CHANNEL_A}, - { HAL_MODE_11B, CHANNEL_B}, - { HAL_MODE_11G, CHANNEL_G}, - { HAL_MODE_11G_TURBO, CHANNEL_108G}, - { HAL_MODE_11A_TURBO, CHANNEL_108A}, - { HAL_MODE_11A_QUARTER_RATE, CHANNEL_A | CHANNEL_QUARTER}, - { HAL_MODE_11A_HALF_RATE, CHANNEL_A | CHANNEL_HALF}, - { HAL_MODE_11G_QUARTER_RATE, CHANNEL_G | CHANNEL_QUARTER}, - { HAL_MODE_11G_HALF_RATE, CHANNEL_G | CHANNEL_HALF}, - { HAL_MODE_11NG_HT20, CHANNEL_G_HT20}, - { HAL_MODE_11NG_HT40PLUS, CHANNEL_G_HT40PLUS}, - { HAL_MODE_11NG_HT40MINUS, CHANNEL_G_HT40MINUS}, - { HAL_MODE_11NA_HT20, CHANNEL_A_HT20}, - { HAL_MODE_11NA_HT40PLUS, CHANNEL_A_HT40PLUS}, - { HAL_MODE_11NA_HT40MINUS, CHANNEL_A_HT40MINUS}, + { HAL_MODE_TURBO, IEEE80211_CHAN_ST }, + { HAL_MODE_11A, IEEE80211_CHAN_A }, + { HAL_MODE_11B, IEEE80211_CHAN_B }, + { HAL_MODE_11G, IEEE80211_CHAN_G }, + { HAL_MODE_11G_TURBO, IEEE80211_CHAN_108G }, + { HAL_MODE_11A_TURBO, IEEE80211_CHAN_108A }, + { HAL_MODE_11A_QUARTER_RATE, + IEEE80211_CHAN_A | IEEE80211_CHAN_QUARTER }, + { HAL_MODE_11A_HALF_RATE, + IEEE80211_CHAN_A | IEEE80211_CHAN_HALF }, + { HAL_MODE_11G_QUARTER_RATE, + IEEE80211_CHAN_G | IEEE80211_CHAN_QUARTER }, + { HAL_MODE_11G_HALF_RATE, + IEEE80211_CHAN_G | IEEE80211_CHAN_HALF }, + { HAL_MODE_11NG_HT20, IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_HT20 }, + { HAL_MODE_11NG_HT40PLUS, + IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_HT40U }, + { HAL_MODE_11NG_HT40MINUS, + IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_HT40D }, + { HAL_MODE_11NA_HT20, IEEE80211_CHAN_5GHZ | IEEE80211_CHAN_HT20 }, + { HAL_MODE_11NA_HT40PLUS, + IEEE80211_CHAN_5GHZ | IEEE80211_CHAN_HT40U }, + { HAL_MODE_11NA_HT40MINUS, + IEEE80211_CHAN_5GHZ | IEEE80211_CHAN_HT40D }, }; static OS_INLINE uint16_t @@ -1917,10 +1925,8 @@ getregstate(struct ath_hal *ah, HAL_CTRY } if (pcountry != AH_NULL) *pcountry = country; - if (prd2GHz != AH_NULL) - *prd2GHz = rd2GHz; - if (prd5GHz != AH_NULL) - *prd5GHz = rd5GHz; + *prd2GHz = rd2GHz; + *prd5GHz = rd5GHz; return HAL_OK; } @@ -2111,19 +2117,17 @@ getchannels(struct ath_hal *ah, ic->ic_freq = c; ic->ic_flags = cm->flags; ic->ic_maxregpower = fband->powerDfs; + ath_hal_getpowerlimits(ah, ic); ic->ic_maxantgain = fband->antennaMax; if (fband->usePassScan & pscan) ic->ic_flags |= IEEE80211_CHAN_PASSIVE; else ic->ic_flags &= ~IEEE80211_CHAN_PASSIVE; lastc = c; - if (fband->useDfs & dfsMask) { - /* DFS and HT40 don't mix */ - if (cm->mode == HAL_MODE_11NA_HT40PLUS || - cm->mode == HAL_MODE_11NA_HT40MINUS) - continue; + /* NB: DFS and HT40 don't mix */ + if ((fband->useDfs & dfsMask) && + !IEEE80211_IS_CHAN_HT40(ic)) ic->ic_flags |= IEEE80211_CHAN_DFS; - } if (IEEE80211_IS_CHAN_5GHZ(ic) && (rdflags & DISALLOW_ADHOC_11A)) ic->ic_flags |= IEEE80211_CHAN_NOADHOC; @@ -2137,54 +2141,75 @@ getchannels(struct ath_hal *ah, if (rdflags & NEED_NFC) ic->ic_flags |= CHANNEL_NFCREQUIRED; - /* retrieve power limits */ - { HAL_CHANNEL_INTERNAL hc; - hc.channel = ic->ic_freq; - hc.channelFlags = ic->ic_flags; - if (ath_hal_getpowerlimits(ah, &hc)) { - ic->ic_maxpower = hc.maxTxPower; - ic->ic_minpower = hc.minTxPower; - } - } - ic++, next++; } } } done: *nchans = next; + /* NB: pcountry set above by getregstate */ + if (prd2GHz != AH_NULL) + *prd2GHz = rd2GHz; + if (prd5GHz != AH_NULL) + *prd5GHz = rd5GHz; return HAL_OK; #undef HAL_MODE_11A_ALL #undef CHANNEL_HALF_BW #undef CHANNEL_QUARTER_BW } +/* + * Retrieve a channel list without affecting runtime state. + */ HAL_STATUS ath_hal_getchannels(struct ath_hal *ah, struct ieee80211_channel chans[], u_int maxchans, int *nchans, u_int modeSelect, HAL_CTRY_CODE cc, HAL_REG_DOMAIN regDmn, HAL_BOOL enableExtendedChannels) { - HAL_STATUS status; - struct ieee80211_channel *c; - int i; - - status = getchannels(ah, chans, maxchans, nchans, modeSelect, + return getchannels(ah, chans, maxchans, nchans, modeSelect, cc, regDmn, enableExtendedChannels, AH_NULL, AH_NULL, AH_NULL); - if (status == HAL_OK) { - for (i = 0; i < *nchans; i++) { - c = &chans[i]; - if (IEEE80211_IS_CHAN_PUREG(c)) { - /* - * Except for AR5211, PUREG means mixed - * DSSS and OFDM; convert to "just G". - */ - c->ic_flags &= ~IEEE80211_CHAN_PUREG; - c->ic_flags |= IEEE80211_CHAN_G; +} + +/* + * Setup the internal/private channel state given a table of + * net80211 channels. We collapse entries for the same frequency + * and record the frequency for doing noise floor processing + * where we don't have net80211 channel context. + */ +static HAL_BOOL +assignPrivateChannels(struct ath_hal *ah, + struct ieee80211_channel chans[], int nchans) +{ + HAL_CHANNEL_INTERNAL *ic; + int i, j, next; + + next = 0; + for (i = 0; i < nchans; i++) { + for (j = i-1; j >= 0; j--) + if (chans[j].ic_freq == chans[i].ic_freq) { + chans[i].ic_devdata = chans[j].ic_devdata; + break; + } + if (j < 0) { + /* new entry, assign a private channel entry */ + if (next >= N(AH_PRIVATE(ah)->ah_channels)) { + HALDEBUG(ah, HAL_DEBUG_ANY, + "%s: too many channels, max %u\n", + __func__, N(AH_PRIVATE(ah)->ah_channels)); + return AH_FALSE; } + ic = &AH_PRIVATE(ah)->ah_channels[next]; + OS_MEMZERO(ic, sizeof(*ic)); + ic->channel = chans[i].ic_freq; + chans[i].ic_devdata = next; + next++; } } - return status; + AH_PRIVATE(ah)->ah_nchan = next; + HALDEBUG(ah, HAL_DEBUG_ANY, "%s: %u public, %u private channels\n", + __func__, nchans, next); + return AH_TRUE; } /* @@ -2199,55 +2224,19 @@ ath_hal_init_channels(struct ath_hal *ah COUNTRY_CODE_TO_ENUM_RD *country; REG_DOMAIN *rd5GHz, *rd2GHz; HAL_STATUS status; - struct ieee80211_channel *c; - HAL_CHANNEL_INTERNAL *ic; - int i; - if (maxchans > N(AH_PRIVATE(ah)->ah_channels)) - maxchans = N(AH_PRIVATE(ah)->ah_channels); status = getchannels(ah, chans, maxchans, nchans, modeSelect, cc, regDmn, enableExtendedChannels, &country, &rd2GHz, &rd5GHz); - if (status != HAL_OK) - return status; - for (i = 0; i < *nchans; i++) { - c = &chans[i]; - ic = &AH_PRIVATE(ah)->ah_channels[i]; - - OS_MEMZERO(ic, sizeof(*ic)); - ic->channel = c->ic_freq; - ic->channelFlags = c->ic_flags; - ic->devdata = i; /* XXX */ - ic->maxRegTxPower = c->ic_maxregpower; - ic->maxTxPower = c->ic_maxpower; - ic->minTxPower = c->ic_minpower; - ic->antennaMax = c->ic_maxantgain; - - c->ic_devdata = i; - - if (IEEE80211_IS_CHAN_PUREG(c)) { - /* - * Except for AR5211, PUREG means mixed - * DSSS and OFDM; convert to "just G". - */ - c->ic_flags &= ~IEEE80211_CHAN_PUREG; - c->ic_flags |= IEEE80211_CHAN_G; - } - HALDEBUG(ah, HAL_DEBUG_REGDOMAIN, - "[%3u] freq %u/0x%x txpow reg/max/min %u/%u/%u" - " antmax %u ctl 0x%x\n", - i, c->ic_freq, c->ic_flags, - c->ic_maxregpower, c->ic_maxpower, c->ic_minpower, - c->ic_maxantgain, ic->ctl); - } - AH_PRIVATE(ah)->ah_nchan = *nchans; - AH_PRIVATE(ah)->ah_rd2GHz = rd2GHz; - AH_PRIVATE(ah)->ah_rd5GHz = rd5GHz; - - ah->ah_countryCode = country->countryCode; - HALDEBUG(ah, HAL_DEBUG_REGDOMAIN, "%s: cc %u\n", - __func__, ah->ah_countryCode); - - return HAL_OK; + if (status == HAL_OK && assignPrivateChannels(ah, chans, *nchans)) { + AH_PRIVATE(ah)->ah_rd2GHz = rd2GHz; + AH_PRIVATE(ah)->ah_rd5GHz = rd5GHz; + + ah->ah_countryCode = country->countryCode; + HALDEBUG(ah, HAL_DEBUG_REGDOMAIN, "%s: cc %u\n", + __func__, ah->ah_countryCode); + } else + status = HAL_EINVAL; + return status; } /* @@ -2260,77 +2249,45 @@ ath_hal_set_channels(struct ath_hal *ah, { COUNTRY_CODE_TO_ENUM_RD *country; REG_DOMAIN *rd5GHz, *rd2GHz; - struct ieee80211_channel *c; - HAL_CHANNEL_INTERNAL *ic; HAL_STATUS status; - int i; - if (nchans > N(AH_PRIVATE(ah)->ah_channels)) { - HALDEBUG(ah, HAL_DEBUG_ANY, "%s: too many channels, %u > %u\n", - __func__, nchans, N(AH_PRIVATE(ah)->ah_channels)); - return HAL_EINVAL; - } status = getregstate(ah, cc, regDmn, &country, &rd2GHz, &rd5GHz); - if (status != HAL_OK) - return status; - for (i = 0; i < nchans; i++) { - c = &chans[i]; - ic = &AH_PRIVATE(ah)->ah_channels[i]; - - OS_MEMZERO(ic, sizeof(*ic)); - ic->channel = c->ic_freq; - ic->channelFlags = c->ic_flags; - ic->devdata = i; /* XXX */ - ic->maxRegTxPower = c->ic_maxregpower; - ic->maxTxPower = c->ic_maxpower; - ic->minTxPower = c->ic_minpower; - ic->antennaMax = c->ic_maxantgain; - - c->ic_devdata = i; - - HALDEBUG(ah, HAL_DEBUG_REGDOMAIN, - "[%3u] channel %u/0x%x txpow reg/max/min %u/%u/%u" - " antmax %u ctl 0x%x\n", - i, ic->channel, ic->channelFlags, - ic->maxRegTxPower, ic->maxTxPower, ic->minTxPower, - ic->antennaMax, ic->ctl); - } - AH_PRIVATE(ah)->ah_nchan = nchans; - AH_PRIVATE(ah)->ah_rd2GHz = rd2GHz; - AH_PRIVATE(ah)->ah_rd5GHz = rd5GHz; - - ah->ah_countryCode = country->countryCode; - HALDEBUG(ah, HAL_DEBUG_REGDOMAIN, "%s: cc %u\n", - __func__, ah->ah_countryCode); - - return HAL_OK; + if (status == HAL_OK && assignPrivateChannels(ah, chans, nchans)) { + AH_PRIVATE(ah)->ah_rd2GHz = rd2GHz; + AH_PRIVATE(ah)->ah_rd5GHz = rd5GHz; + + ah->ah_countryCode = country->countryCode; + HALDEBUG(ah, HAL_DEBUG_REGDOMAIN, "%s: cc %u\n", + __func__, ah->ah_countryCode); + } else + status = HAL_EINVAL; + return status; } /* * Return the internal channel corresponding to a public channel. */ HAL_CHANNEL_INTERNAL * -ath_hal_checkchannel(struct ath_hal *ah, const HAL_CHANNEL *c) +ath_hal_checkchannel(struct ath_hal *ah, const struct ieee80211_channel *c) { -#define CHAN_FLAGS (CHANNEL_ALL|CHANNEL_HALF|CHANNEL_QUARTER) - HAL_CHANNEL_INTERNAL *cc; - /* NB: be wary of user-specified channel flags */ - int flags = c->channelFlags & CHAN_FLAGS; - - if (c->devdata > N(AH_PRIVATE(ah)->ah_channels)) { - /* XXX should not happen */ - HALDEBUG(ah, HAL_DEBUG_ANY, "%s: bad mapping, devdata %u\n", - __func__, c->devdata); - return AH_NULL; - } - cc = &AH_PRIVATE(ah)->ah_channels[c->devdata]; - if (cc->channel == c->channel && - (cc->channelFlags & CHAN_FLAGS) == flags) - return cc; - HALDEBUG(ah, HAL_DEBUG_ANY, "%s: no match for %u/0x%x\n", - __func__, c->channel, c->channelFlags); + /* XXX should not happen */ + if (c->ic_devdata < AH_PRIVATE(ah)->ah_nchan) { + HAL_CHANNEL_INTERNAL *cc = + &AH_PRIVATE(ah)->ah_channels[c->ic_devdata]; + if (c->ic_freq == cc->channel) + return cc; + } + if (c->ic_devdata >= AH_PRIVATE(ah)->ah_nchan) { + HALDEBUG(ah, HAL_DEBUG_ANY, + "%s: bad mapping, devdata %u nchans %u\n", + __func__, c->ic_devdata, AH_PRIVATE(ah)->ah_nchan); + } else { + HALDEBUG(ah, HAL_DEBUG_ANY, + "%s: no match for %u/0x%x devdata %u channel %u\n", + __func__, c->ic_freq, c->ic_flags, c->ic_devdata, + AH_PRIVATE(ah)->ah_channels[c->ic_devdata].channel); + } return AH_NULL; -#undef CHAN_FLAGS } #define isWwrSKU(_ah) \ @@ -2342,26 +2299,43 @@ ath_hal_checkchannel(struct ath_hal *ah, * the current regulatory setup. */ u_int -ath_hal_getctl(struct ath_hal *ah, const HAL_CHANNEL_INTERNAL *c) +ath_hal_getctl(struct ath_hal *ah, const struct ieee80211_channel *c) { u_int ctl; if (AH_PRIVATE(ah)->ah_rd2GHz == AH_PRIVATE(ah)->ah_rd5GHz || (ah->ah_countryCode == CTRY_DEFAULT && isWwrSKU(ah))) ctl = SD_NO_CTL; - else if (IS_CHAN_2GHZ(c)) + else if (IEEE80211_IS_CHAN_2GHZ(c)) ctl = AH_PRIVATE(ah)->ah_rd2GHz->conformanceTestLimit; else ctl = AH_PRIVATE(ah)->ah_rd5GHz->conformanceTestLimit; - if (IS_CHAN_B(c)) + if (IEEE80211_IS_CHAN_B(c)) return ctl | CTL_11B; - if (IS_CHAN_G(c)) + if (IEEE80211_IS_CHAN_G(c)) return ctl | CTL_11G; - if (IS_CHAN_108G(c)) + if (IEEE80211_IS_CHAN_108G(c)) return ctl | CTL_108G; - if (IS_CHAN_TURBO(c)) + if (IEEE80211_IS_CHAN_TURBO(c)) return ctl | CTL_TURBO; - if (IS_CHAN_A(c)) + if (IEEE80211_IS_CHAN_A(c)) return ctl | CTL_11A; return ctl; } + +/* + * Return the max allowed antenna gain and apply any regulatory + * domain specific changes. + * + * NOTE: a negative reduction is possible in RD's that only + * measure radiated power (e.g., ETSI) which would increase + * that actual conducted output power (though never beyond + * the calibrated target power). + */ +u_int +ath_hal_getantennareduction(struct ath_hal *ah, + const struct ieee80211_channel *chan, u_int twiceGain) +{ + int8_t antennaMax = twiceGain - chan->ic_maxantgain*2; + return (antennaMax < 0) ? 0 : antennaMax; +} Modified: user/sam/wifi/sys/dev/ath/ath_hal/ar5210/ar5210.h ============================================================================== --- user/sam/wifi/sys/dev/ath/ath_hal/ar5210/ar5210.h Fri Jan 23 06:33:39 2009 (r187619) +++ user/sam/wifi/sys/dev/ath/ath_hal/ar5210/ar5210.h Fri Jan 23 07:00:33 2009 (r187620) @@ -128,20 +128,21 @@ struct ath_hal; extern void ar5210Detach(struct ath_hal *ah); extern HAL_BOOL ar5210Reset(struct ath_hal *, HAL_OPMODE, - HAL_CHANNEL *, HAL_BOOL bChannelChange, HAL_STATUS *); + struct ieee80211_channel *, HAL_BOOL bChannelChange, HAL_STATUS *); extern void ar5210SetPCUConfig(struct ath_hal *); extern HAL_BOOL ar5210PhyDisable(struct ath_hal *); extern HAL_BOOL ar5210Disable(struct ath_hal *); -extern HAL_BOOL ar5210ChipReset(struct ath_hal *, HAL_CHANNEL *); -extern HAL_BOOL ar5210PerCalibration(struct ath_hal *, HAL_CHANNEL *, HAL_BOOL *); -extern HAL_BOOL ar5210PerCalibrationN(struct ath_hal *ah, HAL_CHANNEL *chan, +extern HAL_BOOL ar5210ChipReset(struct ath_hal *, struct ieee80211_channel *); +extern HAL_BOOL ar5210PerCalibration(struct ath_hal *, struct ieee80211_channel *, HAL_BOOL *); +extern HAL_BOOL ar5210PerCalibrationN(struct ath_hal *ah, struct ieee80211_channel *chan, u_int chainMask, HAL_BOOL longCal, HAL_BOOL *isCalDone); -extern HAL_BOOL ar5210ResetCalValid(struct ath_hal *ah, const HAL_CHANNEL *); +extern HAL_BOOL ar5210ResetCalValid(struct ath_hal *ah, const struct ieee80211_channel *); extern int16_t ar5210GetNoiseFloor(struct ath_hal *); extern int16_t ar5210GetNfAdjust(struct ath_hal *, const HAL_CHANNEL_INTERNAL *); extern HAL_BOOL ar5210SetTxPowerLimit(struct ath_hal *, uint32_t limit); -extern HAL_BOOL ar5210SetTransmitPower(struct ath_hal *, HAL_CHANNEL *); +extern HAL_BOOL ar5210SetTransmitPower(struct ath_hal *, + const struct ieee80211_channel *); extern HAL_BOOL ar5210CalNoiseFloor(struct ath_hal *, HAL_CHANNEL_INTERNAL *); extern HAL_BOOL ar5210ResetDma(struct ath_hal *, HAL_OPMODE); @@ -274,6 +275,6 @@ extern const HAL_RATE_TABLE *ar5210GetRa extern HAL_BOOL ar5210AniControl(struct ath_hal *, HAL_ANI_CMD, int ); extern void ar5210AniPoll(struct ath_hal *, const HAL_NODE_STATS *, - const HAL_CHANNEL *); + const struct ieee80211_channel *); extern void ar5210MibEvent(struct ath_hal *, const HAL_NODE_STATS *); #endif /* _ATH_AR5210_H_ */ Modified: user/sam/wifi/sys/dev/ath/ath_hal/ar5210/ar5210_attach.c ============================================================================== --- user/sam/wifi/sys/dev/ath/ath_hal/ar5210/ar5210_attach.c Fri Jan 23 06:33:39 2009 (r187619) +++ user/sam/wifi/sys/dev/ath/ath_hal/ar5210/ar5210_attach.c Fri Jan 23 07:00:33 2009 (r187620) @@ -31,7 +31,7 @@ static HAL_BOOL ar5210GetChannelEdges(struct ath_hal *, uint16_t flags, uint16_t *low, uint16_t *high); static HAL_BOOL ar5210GetChipPowerLimits(struct ath_hal *ah, - HAL_CHANNEL_INTERNAL *chan); + struct ieee80211_channel *chan); static const struct ath_hal_private ar5210hal = {{ .ah_magic = AR5210_MAGIC, @@ -302,7 +302,7 @@ static HAL_BOOL ar5210GetChannelEdges(struct ath_hal *ah, uint16_t flags, uint16_t *low, uint16_t *high) { - if (flags & CHANNEL_5GHZ) { + if (flags & IEEE80211_CHAN_5GHZ) { *low = 5120; *high = 5430; return AH_TRUE; @@ -312,14 +312,14 @@ ar5210GetChannelEdges(struct ath_hal *ah } static HAL_BOOL -ar5210GetChipPowerLimits(struct ath_hal *ah, HAL_CHANNEL_INTERNAL *chan) +ar5210GetChipPowerLimits(struct ath_hal *ah, struct ieee80211_channel *chan) { /* XXX fill in, this is just a placeholder */ HALDEBUG(ah, HAL_DEBUG_ATTACH, "%s: no min/max power for %u/0x%x\n", - __func__, chan->channel, chan->channelFlags); - chan->maxTxPower = AR5210_MAX_RATE_POWER; - chan->minTxPower = 0; + __func__, chan->ic_freq, chan->ic_flags); + chan->ic_maxpower = AR5210_MAX_RATE_POWER; + chan->ic_minpower = 0; return AH_TRUE; } Modified: user/sam/wifi/sys/dev/ath/ath_hal/ar5210/ar5210_misc.c ============================================================================== --- user/sam/wifi/sys/dev/ath/ath_hal/ar5210/ar5210_misc.c Fri Jan 23 06:33:39 2009 (r187619) +++ user/sam/wifi/sys/dev/ath/ath_hal/ar5210/ar5210_misc.c Fri Jan 23 07:00:33 2009 (r187620) @@ -562,7 +562,7 @@ ar5210AniControl(struct ath_hal *ah, HAL void ar5210AniPoll(struct ath_hal *ah, const HAL_NODE_STATS *stats, - const HAL_CHANNEL *chan) + const struct ieee80211_channel *chan) { } Modified: user/sam/wifi/sys/dev/ath/ath_hal/ar5210/ar5210_reset.c ============================================================================== --- user/sam/wifi/sys/dev/ath/ath_hal/ar5210/ar5210_reset.c Fri Jan 23 06:33:39 2009 (r187619) +++ user/sam/wifi/sys/dev/ath/ath_hal/ar5210/ar5210_reset.c Fri Jan 23 07:00:33 2009 (r187620) @@ -55,7 +55,7 @@ static const uint8_t ar5k0007_pwrSetting static HAL_BOOL ar5210SetResetReg(struct ath_hal *, uint32_t resetMask, u_int delay); -static HAL_BOOL ar5210SetChannel(struct ath_hal *, HAL_CHANNEL_INTERNAL *); +static HAL_BOOL ar5210SetChannel(struct ath_hal *, struct ieee80211_channel *); static void ar5210SetOperatingMode(struct ath_hal *, int opmode); /* @@ -68,7 +68,8 @@ static void ar5210SetOperatingMode(struc */ HAL_BOOL ar5210Reset(struct ath_hal *ah, HAL_OPMODE opmode, - HAL_CHANNEL *chan, HAL_BOOL bChannelChange, HAL_STATUS *status) + struct ieee80211_channel *chan, HAL_BOOL bChannelChange, + HAL_STATUS *status) { #define N(a) (sizeof (a) /sizeof (a[0])) #define FAIL(_code) do { ecode = _code; goto bad; } while (0) @@ -81,10 +82,10 @@ ar5210Reset(struct ath_hal *ah, HAL_OPMO HALDEBUG(ah, HAL_DEBUG_RESET, "%s: opmode %u channel %u/0x%x %s channel\n", __func__, - opmode, chan->channel, chan->channelFlags, + opmode, chan->ic_freq, chan->ic_flags, bChannelChange ? "change" : "same"); - if ((chan->channelFlags & CHANNEL_5GHZ) == 0) { + if (!IEEE80211_IS_CHAN_5GHZ(chan)) { /* Only 11a mode */ HALDEBUG(ah, HAL_DEBUG_ANY, "%s: channel not 5Ghz\n", __func__); FAIL(HAL_EINVAL); @@ -96,7 +97,7 @@ ar5210Reset(struct ath_hal *ah, HAL_OPMO if (ichan == AH_NULL) { HALDEBUG(ah, HAL_DEBUG_ANY, "%s: invalid channel %u/0x%x; no mapping\n", - __func__, chan->channel, chan->channelFlags); + __func__, chan->ic_freq, chan->ic_flags); FAIL(HAL_EINVAL); } switch (opmode) { @@ -232,15 +233,13 @@ ar5210Reset(struct ath_hal *ah, HAL_OPMO (OS_REG_READ(ah, AR_PHY(68)) & 0xFFFFFFFC) | (ee->ee_antenna & 0x3)); - if (!ar5210SetChannel(ah, ichan)) { + if (!ar5210SetChannel(ah, chan)) { HALDEBUG(ah, HAL_DEBUG_ANY, "%s: unable to set channel\n", __func__); FAIL(HAL_EIO); } - if (bChannelChange) { - if (!(ichan->channelFlags & CHANNEL_DFS)) - ichan->privFlags &= ~CHANNEL_INTERFERENCE; - } + if (bChannelChange && !IEEE80211_IS_CHAN_DFS(chan)) + chan->ic_state &= ~IEEE80211_CHANSTATE_CWINT; /* Activate the PHY */ OS_REG_WRITE(ah, AR_PHY_ACTIVE, AR_PHY_ENABLE); @@ -254,7 +253,7 @@ ar5210Reset(struct ath_hal *ah, HAL_OPMO /* Perform noise floor calibration and set status */ if (!ar5210CalNoiseFloor(ah, ichan)) { - chan->channelFlags |= CHANNEL_CW_INT; + chan->ic_state |= IEEE80211_CHANSTATE_CWINT; HALDEBUG(ah, HAL_DEBUG_ANY, "%s: noise floor calibration failed\n", __func__); FAIL(HAL_EIO); @@ -294,7 +293,7 @@ ar5210Reset(struct ath_hal *ah, HAL_OPMO return AH_TRUE; bad: - if (*status) + if (status != AH_NULL) *status = ecode; return AH_FALSE; #undef FAIL @@ -383,19 +382,20 @@ ar5210Disable(struct ath_hal *ah) * Places the hardware into reset and then pulls it out of reset */ HAL_BOOL -ar5210ChipReset(struct ath_hal *ah, HAL_CHANNEL *chan) +ar5210ChipReset(struct ath_hal *ah, struct ieee80211_channel *chan) { *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-user@FreeBSD.ORG Fri Jan 23 07:48:29 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BEA66106566B; Fri, 23 Jan 2009 07:48:28 +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 933D58FC1B; Fri, 23 Jan 2009 07:48:28 +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 n0N7mSWL035048; Fri, 23 Jan 2009 07:48:28 GMT (envelope-from sam@svn.freebsd.org) Received: (from sam@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n0N7mSxp035047; Fri, 23 Jan 2009 07:48:28 GMT (envelope-from sam@svn.freebsd.org) Message-Id: <200901230748.n0N7mSxp035047@svn.freebsd.org> From: Sam Leffler Date: Fri, 23 Jan 2009 07:48:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r187621 - user/sam/wifi/sys/dev/ath/ath_hal X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 23 Jan 2009 07:48:29 -0000 Author: sam Date: Fri Jan 23 07:48:28 2009 New Revision: 187621 URL: http://svn.freebsd.org/changeset/base/187621 Log: o fix check for disallowing HT40 w/ DFS o remove useless code to strip IEEE80211_CHAN_PASSIVE; the flag is never set o fix turbo check (disallow both static and dynamic turbo) o make debug msg more consistent Modified: user/sam/wifi/sys/dev/ath/ath_hal/ah_regdomain.c Modified: user/sam/wifi/sys/dev/ath/ath_hal/ah_regdomain.c ============================================================================== --- user/sam/wifi/sys/dev/ath/ath_hal/ah_regdomain.c Fri Jan 23 07:00:33 2009 (r187620) +++ user/sam/wifi/sys/dev/ath/ath_hal/ah_regdomain.c Fri Jan 23 07:48:28 2009 (r187621) @@ -2102,7 +2102,14 @@ getchannels(struct ath_hal *ah, if ((fband->usePassScan & IS_ECM_CHAN) && !enableExtendedChannels) { HALDEBUG(ah, HAL_DEBUG_REGDOMAIN, - "Skipping ecm channel\n"); + "skip ecm channel\n"); + continue; + } + if ((fband->useDfs & dfsMask) && + (cm->flags & IEEE80211_CHAN_HT40)) { + /* NB: DFS and HT40 don't mix */ + HALDEBUG(ah, HAL_DEBUG_REGDOMAIN, + "skip HT40 chan, DFS required\n"); continue; } /* @@ -2112,6 +2119,7 @@ getchannels(struct ath_hal *ah, if (lastc && channelSep && (c-lastc) < channelSep) continue; + lastc = c; OS_MEMZERO(ic, sizeof(*ic)); ic->ic_freq = c; @@ -2121,17 +2129,12 @@ getchannels(struct ath_hal *ah, ic->ic_maxantgain = fband->antennaMax; if (fband->usePassScan & pscan) ic->ic_flags |= IEEE80211_CHAN_PASSIVE; - else - ic->ic_flags &= ~IEEE80211_CHAN_PASSIVE; - lastc = c; - /* NB: DFS and HT40 don't mix */ - if ((fband->useDfs & dfsMask) && - !IEEE80211_IS_CHAN_HT40(ic)) + if (fband->useDfs & dfsMask) ic->ic_flags |= IEEE80211_CHAN_DFS; if (IEEE80211_IS_CHAN_5GHZ(ic) && (rdflags & DISALLOW_ADHOC_11A)) ic->ic_flags |= IEEE80211_CHAN_NOADHOC; - if (IEEE80211_IS_CHAN_STURBO(ic) && + if (IEEE80211_IS_CHAN_TURBO(ic) && (rdflags & DISALLOW_ADHOC_11A_TURB)) ic->ic_flags |= IEEE80211_CHAN_NOADHOC; if (rdflags & NO_HOSTAP) From owner-svn-src-user@FreeBSD.ORG Fri Jan 23 11:11:29 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 826E5106567A; Fri, 23 Jan 2009 11:11:29 +0000 (UTC) (envelope-from dfr@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 720158FC27; Fri, 23 Jan 2009 11:11:29 +0000 (UTC) (envelope-from dfr@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 n0NBBTg5041362; Fri, 23 Jan 2009 11:11:29 GMT (envelope-from dfr@svn.freebsd.org) Received: (from dfr@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n0NBBTNl041361; Fri, 23 Jan 2009 11:11:29 GMT (envelope-from dfr@svn.freebsd.org) Message-Id: <200901231111.n0NBBTNl041361@svn.freebsd.org> From: Doug Rabson Date: Fri, 23 Jan 2009 11:11:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r187626 - user/dfr/xenhvm/6/sys/dev/xen/netfront X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 23 Jan 2009 11:11:30 -0000 Author: dfr Date: Fri Jan 23 11:11:29 2009 New Revision: 187626 URL: http://svn.freebsd.org/changeset/base/187626 Log: Send an ARP packet on resume. This helps switches to learn the new location of the VM after a live migration. Modified: user/dfr/xenhvm/6/sys/dev/xen/netfront/netfront.c Modified: user/dfr/xenhvm/6/sys/dev/xen/netfront/netfront.c ============================================================================== --- user/dfr/xenhvm/6/sys/dev/xen/netfront/netfront.c Fri Jan 23 08:37:26 2009 (r187625) +++ user/dfr/xenhvm/6/sys/dev/xen/netfront/netfront.c Fri Jan 23 11:11:29 2009 (r187626) @@ -591,6 +591,24 @@ setup_device(device_t dev, struct netfro } /** + * If this interface has an ipv4 address, send an arp for it. This + * helps to get the network going again after migrating hosts. + */ +static void +netfront_send_fake_arp(device_t dev, struct netfront_info *info) +{ + struct ifnet *ifp; + struct ifaddr *ifa; + + ifp = info->xn_ifp; + TAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) { + if (ifa->ifa_addr->sa_family == AF_INET) { + arp_ifinit(ifp, ifa); + } + } +} + +/** * Callback received when the backend's state changes. */ static void @@ -615,9 +633,7 @@ netfront_backend_changed(device_t dev, X if (network_connect(sc) != 0) break; xenbus_set_state(dev, XenbusStateConnected); -#ifdef notyet - (void)send_fake_arp(netdev); -#endif + netfront_send_fake_arp(dev, sc); break; case XenbusStateClosing: xenbus_set_state(dev, XenbusStateClosed); From owner-svn-src-user@FreeBSD.ORG Fri Jan 23 18:40:31 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 93FA6106564A; Fri, 23 Jan 2009 18:40:31 +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 80CE18FC0C; Fri, 23 Jan 2009 18:40:31 +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 n0NIeVlm050165; Fri, 23 Jan 2009 18:40:31 GMT (envelope-from sam@svn.freebsd.org) Received: (from sam@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n0NIeV2V050160; Fri, 23 Jan 2009 18:40:31 GMT (envelope-from sam@svn.freebsd.org) Message-Id: <200901231840.n0NIeV2V050160@svn.freebsd.org> From: Sam Leffler Date: Fri, 23 Jan 2009 18:40:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r187639 - in user/sam/wifi/sys/dev/ath/ath_hal: . ar5212 ar5416 X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 23 Jan 2009 18:40:32 -0000 Author: sam Date: Fri Jan 23 18:40:31 2009 New Revision: 187639 URL: http://svn.freebsd.org/changeset/base/187639 Log: Fix ani state handling when the channel list changes: o add privFlags to record if ani is initialized and setup (latter replaces isSetup in ani state) o move ar52XXGetAniState inline as it's used only once and change it to check privFlags to see when it needs re-setup state; because the regulatory code clears privFlags when the channel list changes this automatically causes per-channel ani state to get setup on next use o add a comment to regulatory code noting how zero'ing the private chan struct should implictly cause any ancillary state to be re-setup While here change CHANNEL_NFCREQUIRED to use IEEE80211_CHAN_PRIV0 instead of "1". Modified: user/sam/wifi/sys/dev/ath/ath_hal/ah_internal.h user/sam/wifi/sys/dev/ath/ath_hal/ah_regdomain.c user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar5212.h user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar5212_ani.c user/sam/wifi/sys/dev/ath/ath_hal/ar5416/ar5416_ani.c Modified: user/sam/wifi/sys/dev/ath/ath_hal/ah_internal.h ============================================================================== --- user/sam/wifi/sys/dev/ath/ath_hal/ah_internal.h Fri Jan 23 18:35:09 2009 (r187638) +++ user/sam/wifi/sys/dev/ath/ath_hal/ah_internal.h Fri Jan 23 18:40:31 2009 (r187639) @@ -114,9 +114,11 @@ struct ath_hal_rf *ath_hal_rfprobe(struc * using ic_devdata in the ieee80211_channel. */ typedef struct { - uint16_t channel; - uint8_t privFlags; /* XXX remove */ -#define CHANNEL_IQVALID 0x01 /* IQ calibration valid */ + uint16_t channel; /* XXX remove */ + uint8_t privFlags; +#define CHANNEL_IQVALID 0x01 /* IQ calibration valid */ +#define CHANNEL_ANI_INIT 0x02 /* ANI state initialized */ +#define CHANNEL_ANI_SETUP 0x04 /* ANI state setup */ uint8_t calValid; /* bitmask of cal types */ int8_t iCoff; int8_t qCoff; @@ -125,9 +127,8 @@ typedef struct { uint16_t mainSpur; /* cached spur value for this channel */ } HAL_CHANNEL_INTERNAL; -#define CHANNEL_NFCREQUIRED 0x01 /* channel requires noise floor check */ - -/* privFlags */ +/* channel requires noise floor check */ +#define CHANNEL_NFCREQUIRED IEEE80211_CHAN_PRIV0 typedef struct { uint32_t halChanSpreadSupport : 1, Modified: user/sam/wifi/sys/dev/ath/ath_hal/ah_regdomain.c ============================================================================== --- user/sam/wifi/sys/dev/ath/ath_hal/ah_regdomain.c Fri Jan 23 18:35:09 2009 (r187638) +++ user/sam/wifi/sys/dev/ath/ath_hal/ah_regdomain.c Fri Jan 23 18:40:31 2009 (r187639) @@ -2203,6 +2203,11 @@ assignPrivateChannels(struct ath_hal *ah return AH_FALSE; } ic = &AH_PRIVATE(ah)->ah_channels[next]; + /* + * NB: This clears privFlags which means ancillary + * code like ANI and IQ calibration will be + * restarted and re-setup any per-channel state. + */ OS_MEMZERO(ic, sizeof(*ic)); ic->channel = chans[i].ic_freq; chans[i].ic_devdata = next; Modified: user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar5212.h ============================================================================== --- user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar5212.h Fri Jan 23 18:35:09 2009 (r187638) +++ user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar5212.h Fri Jan 23 18:40:31 2009 (r187639) @@ -188,7 +188,6 @@ struct ar5212AniState { uint32_t listenTime; /* NB: intentionally ordered so data exported to user space is first */ - HAL_BOOL isSetup; /* has state to do a restore */ uint32_t txFrameCount; /* Last txFrameCount */ uint32_t rxFrameCount; /* Last rx Frame count */ uint32_t cycleCount; /* Last cycleCount Modified: user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar5212_ani.c ============================================================================== --- user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar5212_ani.c Fri Jan 23 18:35:09 2009 (r187638) +++ user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar5212_ani.c Fri Jan 23 18:40:31 2009 (r187639) @@ -99,28 +99,6 @@ disableAniMIBCounters(struct ath_hal *ah } /* - * This routine returns the index into the aniState array that - * corresponds to the channel in chan. - */ -static struct ar5212AniState * -ar5212GetAniState(struct ath_hal *ah, - const struct ieee80211_channel *chan) -{ - struct ath_hal_5212 *ahp = AH5212(ah); - /* XXX bounds check ic_devdata */ - struct ar5212AniState *asp = &ahp->ah_ani[chan->ic_devdata]; - - if (asp->params == AH_NULL) { - if (IEEE80211_IS_CHAN_2GHZ(chan)) - asp->params = &ahp->ah_aniParams24; - else - asp->params = &ahp->ah_aniParams5; - asp->isSetup = AH_FALSE; - } - return asp; -} - -/* * Return the current ANI state of the channel we're on */ struct ar5212AniState * @@ -604,20 +582,29 @@ ar5212AniReset(struct ath_hal *ah, const HAL_OPMODE opmode, int restore) { struct ath_hal_5212 *ahp = AH5212(ah); - struct ar5212AniState *aniState; + HAL_CHANNEL_INTERNAL *ichan = ath_hal_checkchannel(ah, chan); + /* XXX bounds check ic_devdata */ + struct ar5212AniState *aniState = &ahp->ah_ani[chan->ic_devdata]; uint32_t rxfilter; - aniState = ar5212GetAniState(ah, chan); + if ((ichan->privFlags & CHANNEL_ANI_INIT) == 0) { + OS_MEMZERO(aniState, sizeof(*aniState)); + if (IEEE80211_IS_CHAN_2GHZ(chan)) + aniState->params = &ahp->ah_aniParams24; + else + aniState->params = &ahp->ah_aniParams5; + ichan->privFlags |= CHANNEL_ANI_INIT; + HALASSERT((ichan->privFlags & CHANNEL_ANI_SETUP) == 0); + } ahp->ah_curani = aniState; #if 0 - ath_hal_printf(ah,"%s: chan %u/0x%x restore %d setup %d opmode %u\n", - __func__, chan->channel, chan->channelFlags, restore, - aniState->isSetup, opmode); + ath_hal_printf(ah,"%s: chan %u/0x%x restore %d opmode %u%s\n", + __func__, chan->ic_freq, chan->ic_flags, restore, opmode, + ichan->privFlags & CHANNEL_ANI_SETUP ? " setup" : ""); #else - HALDEBUG(ah, HAL_DEBUG_ANI, - "%s: chan %u/0x%x restore %d setup %d opmode %u\n", - __func__, chan->ic_freq, chan->ic_flags, restore, - aniState->isSetup, opmode); + HALDEBUG(ah, HAL_DEBUG_ANI, "%s: chan %u/0x%x restore %d opmode %u%s\n", + __func__, chan->ic_freq, chan->ic_flags, restore, opmode, + ichan->privFlags & CHANNEL_ANI_SETUP ? " setup" : ""); #endif OS_MARK(ah, AH_MARK_ANI_RESET, opmode); @@ -639,7 +626,7 @@ ar5212AniReset(struct ath_hal *ah, const * XXX if ANI follows hardware, we don't care what mode we're * XXX in, we should keep the ani parameters */ - if (restore && aniState->isSetup) { + if (restore && (ichan->privFlags & CHANNEL_ANI_SETUP)) { ar5212AniControl(ah, HAL_ANI_NOISE_IMMUNITY_LEVEL, aniState->noiseImmunityLevel); ar5212AniControl(ah, HAL_ANI_SPUR_IMMUNITY_LEVEL, @@ -657,7 +644,7 @@ ar5212AniReset(struct ath_hal *ah, const AH_TRUE); ar5212AniControl(ah, HAL_ANI_CCK_WEAK_SIGNAL_THR, AH_FALSE); ar5212AniControl(ah, HAL_ANI_FIRSTEP_LEVEL, 0); - aniState->isSetup = AH_TRUE; + ichan->privFlags |= CHANNEL_ANI_SETUP; } ar5212AniRestart(ah, aniState); Modified: user/sam/wifi/sys/dev/ath/ath_hal/ar5416/ar5416_ani.c ============================================================================== --- user/sam/wifi/sys/dev/ath/ath_hal/ar5416/ar5416_ani.c Fri Jan 23 18:35:09 2009 (r187638) +++ user/sam/wifi/sys/dev/ath/ath_hal/ar5416/ar5416_ani.c Fri Jan 23 18:40:31 2009 (r187639) @@ -102,28 +102,6 @@ disableAniMIBCounters(struct ath_hal *ah OS_REG_WRITE(ah, AR_PHY_ERR_MASK_2, 0); } -/* - * This routine returns the index into the aniState array that - * corresponds to the channel in chan. - */ -static struct ar5212AniState * -ar5416GetAniState(struct ath_hal *ah, - const struct ieee80211_channel *chan) -{ - struct ath_hal_5212 *ahp = AH5212(ah); - /* XXX bounds check ic_devdata */ - struct ar5212AniState *asp = &ahp->ah_ani[chan->ic_devdata]; - - if (asp->params == AH_NULL) { - if (IEEE80211_IS_CHAN_2GHZ(chan)) - asp->params = &ahp->ah_aniParams24; - else - asp->params = &ahp->ah_aniParams5; - asp->isSetup = AH_FALSE; - } - return asp; -} - static void setPhyErrBase(struct ath_hal *ah, struct ar5212AniParams *params) { @@ -523,20 +501,29 @@ ar5416AniReset(struct ath_hal *ah, const HAL_OPMODE opmode, int restore) { struct ath_hal_5212 *ahp = AH5212(ah); - struct ar5212AniState *aniState; + HAL_CHANNEL_INTERNAL *ichan = ath_hal_checkchannel(ah, chan); + /* XXX bounds check ic_devdata */ + struct ar5212AniState *aniState = &ahp->ah_ani[chan->ic_devdata]; uint32_t rxfilter; - aniState = ar5416GetAniState(ah, chan); + if ((ichan->privFlags & CHANNEL_ANI_INIT) == 0) { + OS_MEMZERO(aniState, sizeof(*aniState)); + if (IEEE80211_IS_CHAN_2GHZ(chan)) + aniState->params = &ahp->ah_aniParams24; + else + aniState->params = &ahp->ah_aniParams5; + ichan->privFlags |= CHANNEL_ANI_INIT; + HALASSERT((ichan->privFlags & CHANNEL_ANI_SETUP) == 0); + } ahp->ah_curani = aniState; #if 0 - ath_hal_printf(ah,"%s: chan %u/0x%x restore %d setup %d opmode %u\n", - __func__, chan->ic_freq, chan->ic_flags, restore, - aniState->isSetup, opmode); + ath_hal_printf(ah,"%s: chan %u/0x%x restore %d opmode %u%s\n", + __func__, chan->ic_freq, chan->ic_flags, restore, opmode, + ichan->privFlags & CHANNEL_ANI_SETUP ? " setup" : ""); #else - HALDEBUG(ah, HAL_DEBUG_ANI, - "%s: chan %u/0x%x restore %d setup %d opmode %u\n", - __func__, chan->ic_freq, chan->ic_flags, restore, - aniState->isSetup, opmode); + HALDEBUG(ah, HAL_DEBUG_ANI, "%s: chan %u/0x%x restore %d opmode %u%s\n", + __func__, chan->ic_freq, chan->ic_flags, restore, opmode, + ichan->privFlags & CHANNEL_ANI_SETUP ? " setup" : ""); #endif OS_MARK(ah, AH_MARK_ANI_RESET, opmode); @@ -558,7 +545,7 @@ ar5416AniReset(struct ath_hal *ah, const * XXX if ANI follows hardware, we don't care what mode we're * XXX in, we should keep the ani parameters */ - if (restore && aniState->isSetup) { + if (restore && (ichan->privFlags & CHANNEL_ANI_SETUP)) { ar5416AniControl(ah, HAL_ANI_NOISE_IMMUNITY_LEVEL, aniState->noiseImmunityLevel); ar5416AniControl(ah, HAL_ANI_SPUR_IMMUNITY_LEVEL, @@ -576,7 +563,7 @@ ar5416AniReset(struct ath_hal *ah, const AH_TRUE); ar5416AniControl(ah, HAL_ANI_CCK_WEAK_SIGNAL_THR, AH_FALSE); ar5416AniControl(ah, HAL_ANI_FIRSTEP_LEVEL, 0); - aniState->isSetup = AH_TRUE; + ichan->privFlags |= CHANNEL_ANI_SETUP; } ar5416AniRestart(ah, aniState); From owner-svn-src-user@FreeBSD.ORG Fri Jan 23 18:42:46 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 22480106566B; Fri, 23 Jan 2009 18:42:46 +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 EA9FA8FC14; Fri, 23 Jan 2009 18:42:45 +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 n0NIgjoQ050320; Fri, 23 Jan 2009 18:42:45 GMT (envelope-from sam@svn.freebsd.org) Received: (from sam@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n0NIgjdS050318; Fri, 23 Jan 2009 18:42:45 GMT (envelope-from sam@svn.freebsd.org) Message-Id: <200901231842.n0NIgjdS050318@svn.freebsd.org> From: Sam Leffler Date: Fri, 23 Jan 2009 18:42:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r187640 - user/sam/wifi/sys/net80211 X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 23 Jan 2009 18:42:46 -0000 Author: sam Date: Fri Jan 23 18:42:45 2009 New Revision: 187640 URL: http://svn.freebsd.org/changeset/base/187640 Log: merge r187634 and r187635 from head Modified: user/sam/wifi/sys/net80211/_ieee80211.h user/sam/wifi/sys/net80211/ieee80211_regdomain.c Modified: user/sam/wifi/sys/net80211/_ieee80211.h ============================================================================== --- user/sam/wifi/sys/net80211/_ieee80211.h Fri Jan 23 18:40:31 2009 (r187639) +++ user/sam/wifi/sys/net80211/_ieee80211.h Fri Jan 23 18:42:45 2009 (r187640) @@ -146,8 +146,11 @@ struct ieee80211_channel { #define IEEE80211_CHAN_ANYC \ ((struct ieee80211_channel *) IEEE80211_CHAN_ANY) -/* bits 0-3 are for private use by drivers */ /* channel attributes */ +#define IEEE80211_CHAN_PRIV0 0x00000001 /* driver private bit 0 */ +#define IEEE80211_CHAN_PRIV1 0x00000002 /* driver private bit 1 */ +#define IEEE80211_CHAN_PRIV2 0x00000004 /* driver private bit 2 */ +#define IEEE80211_CHAN_PRIV3 0x00000008 /* driver private bit 3 */ #define IEEE80211_CHAN_TURBO 0x00000010 /* Turbo channel */ #define IEEE80211_CHAN_CCK 0x00000020 /* CCK channel */ #define IEEE80211_CHAN_OFDM 0x00000040 /* OFDM channel */ Modified: user/sam/wifi/sys/net80211/ieee80211_regdomain.c ============================================================================== --- user/sam/wifi/sys/net80211/ieee80211_regdomain.c Fri Jan 23 18:40:31 2009 (r187639) +++ user/sam/wifi/sys/net80211/ieee80211_regdomain.c Fri Jan 23 18:42:45 2009 (r187640) @@ -375,6 +375,13 @@ ieee80211_setregdomain(struct ieee80211v c->ic_maxpower = 2*c->ic_maxregpower; } IEEE80211_LOCK(ic); + /* XXX bandaid; a running vap will likely crash */ + if (!allvapsdown(ic)) { + IEEE80211_UNLOCK(ic); + IEEE80211_DPRINTF(vap, IEEE80211_MSG_IOCTL, + "%s: reject: vaps are running\n", __func__); + return EBUSY; + } error = ic->ic_setregdomain(ic, ®->rd, reg->chaninfo.ic_nchans, reg->chaninfo.ic_chans); if (error != 0) { @@ -383,13 +390,6 @@ ieee80211_setregdomain(struct ieee80211v "%s: driver rejected request, error %u\n", __func__, error); return error; } - /* XXX bandaid; a running vap will likely crash */ - if (!allvapsdown(ic)) { - IEEE80211_UNLOCK(ic); - IEEE80211_DPRINTF(vap, IEEE80211_MSG_IOCTL, - "%s: reject: vaps are running\n", __func__); - return EBUSY; - } /* * Commit: copy in new channel table and reset media state. * On return the state machines will be clocked so all vaps From owner-svn-src-user@FreeBSD.ORG Fri Jan 23 18:58:44 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3739010656C2; Fri, 23 Jan 2009 18:58:44 +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 257438FC27; Fri, 23 Jan 2009 18:58:44 +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 n0NIwiLa050649; Fri, 23 Jan 2009 18:58:44 GMT (envelope-from sam@svn.freebsd.org) Received: (from sam@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n0NIwixd050648; Fri, 23 Jan 2009 18:58:44 GMT (envelope-from sam@svn.freebsd.org) Message-Id: <200901231858.n0NIwixd050648@svn.freebsd.org> From: Sam Leffler Date: Fri, 23 Jan 2009 18:58:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r187641 - user/sam/wifi/sys/dev/ath/ath_hal X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 23 Jan 2009 18:58:44 -0000 Author: sam Date: Fri Jan 23 18:58:43 2009 New Revision: 187641 URL: http://svn.freebsd.org/changeset/base/187641 Log: o we now include so these defintions will never be used o while here kill nearby XR define that'll never used Modified: user/sam/wifi/sys/dev/ath/ath_hal/ah_internal.h Modified: user/sam/wifi/sys/dev/ath/ath_hal/ah_internal.h ============================================================================== --- user/sam/wifi/sys/dev/ath/ath_hal/ah_internal.h Fri Jan 23 18:42:45 2009 (r187640) +++ user/sam/wifi/sys/dev/ath/ath_hal/ah_internal.h Fri Jan 23 18:58:43 2009 (r187641) @@ -342,22 +342,6 @@ struct ath_hal_private { (IEEE80211_WEP_IVLEN + IEEE80211_WEP_KIDLEN + IEEE80211_WEP_CRCLEN)) #endif /* _NET_IF_IEEE80211_H_ */ -#ifndef _NET80211__IEEE80211_H_ -enum { - IEEE80211_T_DS, /* direct sequence spread spectrum */ - IEEE80211_T_FH, /* frequency hopping */ - IEEE80211_T_OFDM, /* frequency division multiplexing */ - IEEE80211_T_TURBO, /* high rate DS */ - IEEE80211_T_HT, /* HT - full GI */ -}; -#define IEEE80211_T_CCK IEEE80211_T_DS /* more common nomenclatur */ -#endif /* _NET_IF_IEEE80211_H_ */ - -/* NB: these are defined privately until XR support is announced */ -enum { - ATHEROS_T_XR = IEEE80211_T_HT+1, /* extended range */ -}; - #define HAL_TXQ_USE_LOCKOUT_BKOFF_DIS 0x00000001 #define INIT_AIFS 2 From owner-svn-src-user@FreeBSD.ORG Fri Jan 23 19:20:31 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BEA15106566B; Fri, 23 Jan 2009 19:20:31 +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 ACA618FC22; Fri, 23 Jan 2009 19:20:31 +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 n0NJKVBP051069; Fri, 23 Jan 2009 19:20:31 GMT (envelope-from sam@svn.freebsd.org) Received: (from sam@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n0NJKVAS051067; Fri, 23 Jan 2009 19:20:31 GMT (envelope-from sam@svn.freebsd.org) Message-Id: <200901231920.n0NJKVAS051067@svn.freebsd.org> From: Sam Leffler Date: Fri, 23 Jan 2009 19:20:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r187642 - user/sam/wifi/sys/dev/ath/ath_hal X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 23 Jan 2009 19:20:32 -0000 Author: sam Date: Fri Jan 23 19:20:31 2009 New Revision: 187642 URL: http://svn.freebsd.org/changeset/base/187642 Log: Minor fixups to ath_hal_checkchannel: o move to an inline function unless building with AH_DEBUG o add assertions Modified: user/sam/wifi/sys/dev/ath/ath_hal/ah_internal.h user/sam/wifi/sys/dev/ath/ath_hal/ah_regdomain.c Modified: user/sam/wifi/sys/dev/ath/ath_hal/ah_internal.h ============================================================================== --- user/sam/wifi/sys/dev/ath/ath_hal/ah_internal.h Fri Jan 23 18:58:43 2009 (r187641) +++ user/sam/wifi/sys/dev/ath/ath_hal/ah_internal.h Fri Jan 23 19:20:31 2009 (r187642) @@ -437,32 +437,6 @@ isBigEndian(void) #define OS_REG_CLR_BIT(_a, _r, _f) \ OS_REG_WRITE(_a, _r, OS_REG_READ(_a, _r) &~ (_f)) -/* - * Regulatory domain support. - */ - -/* - * Return the max allowed antenna gain and apply any regulatory - * domain specific changes. - */ -u_int ath_hal_getantennareduction(struct ath_hal *ah, - const struct ieee80211_channel *chan, u_int twiceGain); - -/* - * Return the test group for the specific channel based on - * the current regulatory setup. - */ -u_int ath_hal_getctl(struct ath_hal *, const struct ieee80211_channel *); - -/* - * Map a public channel definition to the corresponding - * internal data structure. This implicitly specifies - * whether or not the specified channel is ok to use - * based on the current regulatory domain constraints. - */ -HAL_CHANNEL_INTERNAL *ath_hal_checkchannel(struct ath_hal *, - const struct ieee80211_channel *); - /* system-configurable parameters */ extern int ath_hal_dma_beacon_response_time; /* in TU's */ extern int ath_hal_sw_beacon_response_time; /* in TU's */ @@ -521,6 +495,46 @@ extern void ath_hal_assert_failed(const #define HALASSERT(_x) #endif /* AH_ASSERT */ +/* + * Regulatory domain support. + */ + +/* + * Return the max allowed antenna gain and apply any regulatory + * domain specific changes. + */ +u_int ath_hal_getantennareduction(struct ath_hal *ah, + const struct ieee80211_channel *chan, u_int twiceGain); + +/* + * Return the test group for the specific channel based on + * the current regulatory setup. + */ +u_int ath_hal_getctl(struct ath_hal *, const struct ieee80211_channel *); + +/* + * Map a public channel definition to the corresponding + * internal data structure. This implicitly specifies + * whether or not the specified channel is ok to use + * based on the current regulatory domain constraints. + */ +#ifndef AH_DEBUG +static OS_INLINE HAL_CHANNEL_INTERNAL * +ath_hal_checkchannel(struct ath_hal *ah, const struct ieee80211_channel *c) +{ + HAL_CHANNEL_INTERNAL *cc; + + HALASSERT(c->ic_devdata < AH_PRIVATE(ah)->ah_nchan); + cc = &AH_PRIVATE(ah)->ah_channels[c->ic_devdata]; + HALASSERT(c->ic_freq == cc->channel); + return cc; +} +#else +/* NB: non-inline version that checks state */ +HAL_CHANNEL_INTERNAL *ath_hal_checkchannel(struct ath_hal *, + const struct ieee80211_channel *); +#endif /* AH_DEBUG */ + /* * Convert between microseconds and core system clocks. */ Modified: user/sam/wifi/sys/dev/ath/ath_hal/ah_regdomain.c ============================================================================== --- user/sam/wifi/sys/dev/ath/ath_hal/ah_regdomain.c Fri Jan 23 18:58:43 2009 (r187641) +++ user/sam/wifi/sys/dev/ath/ath_hal/ah_regdomain.c Fri Jan 23 19:20:31 2009 (r187642) @@ -2272,31 +2272,34 @@ ath_hal_set_channels(struct ath_hal *ah, return status; } +#ifdef AH_DEBUG /* * Return the internal channel corresponding to a public channel. + * NB: normally this routine is inline'd (see ah_internal.h) */ HAL_CHANNEL_INTERNAL * ath_hal_checkchannel(struct ath_hal *ah, const struct ieee80211_channel *c) { - /* XXX should not happen */ - if (c->ic_devdata < AH_PRIVATE(ah)->ah_nchan) { - HAL_CHANNEL_INTERNAL *cc = - &AH_PRIVATE(ah)->ah_channels[c->ic_devdata]; - if (c->ic_freq == cc->channel) - return cc; - } + HAL_CHANNEL_INTERNAL *cc = &AH_PRIVATE(ah)->ah_channels[c->ic_devdata]; + + if (c->ic_devdata < AH_PRIVATE(ah)->ah_nchan && + c->ic_freq == cc->channel) + return cc; if (c->ic_devdata >= AH_PRIVATE(ah)->ah_nchan) { HALDEBUG(ah, HAL_DEBUG_ANY, "%s: bad mapping, devdata %u nchans %u\n", __func__, c->ic_devdata, AH_PRIVATE(ah)->ah_nchan); + HALASSERT(c->ic_devdata < AH_PRIVATE(ah)->ah_nchan); } else { HALDEBUG(ah, HAL_DEBUG_ANY, "%s: no match for %u/0x%x devdata %u channel %u\n", __func__, c->ic_freq, c->ic_flags, c->ic_devdata, AH_PRIVATE(ah)->ah_channels[c->ic_devdata].channel); + HALASSERT(c->ic_freq == cc->channel); } return AH_NULL; } +#endif /* AH_DEBUG */ #define isWwrSKU(_ah) \ ((getEepromRD((_ah)) & WORLD_SKU_MASK) == WORLD_SKU_PREFIX || \ From owner-svn-src-user@FreeBSD.ORG Fri Jan 23 19:24:55 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 602EF106564A; Fri, 23 Jan 2009 19:24:55 +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 4E9808FC1A; Fri, 23 Jan 2009 19:24:55 +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 n0NJOtTx051195; Fri, 23 Jan 2009 19:24:55 GMT (envelope-from sam@svn.freebsd.org) Received: (from sam@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n0NJOtK4051194; Fri, 23 Jan 2009 19:24:55 GMT (envelope-from sam@svn.freebsd.org) Message-Id: <200901231924.n0NJOtK4051194@svn.freebsd.org> From: Sam Leffler Date: Fri, 23 Jan 2009 19:24:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r187643 - user/sam/wifi/sys/dev/ath/ath_hal X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 23 Jan 2009 19:24:55 -0000 Author: sam Date: Fri Jan 23 19:24:55 2009 New Revision: 187643 URL: http://svn.freebsd.org/changeset/base/187643 Log: kill some unused defines Modified: user/sam/wifi/sys/dev/ath/ath_hal/ah_internal.h Modified: user/sam/wifi/sys/dev/ath/ath_hal/ah_internal.h ============================================================================== --- user/sam/wifi/sys/dev/ath/ath_hal/ah_internal.h Fri Jan 23 19:20:31 2009 (r187642) +++ user/sam/wifi/sys/dev/ath/ath_hal/ah_internal.h Fri Jan 23 19:24:55 2009 (r187643) @@ -330,14 +330,12 @@ struct ath_hal_private { */ #define IEEE80211_ADDR_LEN 6 -#define IEEE80211_WEP_KEYLEN 5 /* 40bit */ #define IEEE80211_WEP_IVLEN 3 /* 24bit */ #define IEEE80211_WEP_KIDLEN 1 /* 1 octet */ #define IEEE80211_WEP_CRCLEN 4 /* CRC-32 */ #define IEEE80211_CRC_LEN 4 -#define IEEE80211_MTU 1500 #define IEEE80211_MAX_LEN (2300 + IEEE80211_CRC_LEN + \ (IEEE80211_WEP_IVLEN + IEEE80211_WEP_KIDLEN + IEEE80211_WEP_CRCLEN)) #endif /* _NET_IF_IEEE80211_H_ */ From owner-svn-src-user@FreeBSD.ORG Fri Jan 23 20:03:26 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1A5C31065690; Fri, 23 Jan 2009 20:03:26 +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 091BE8FC1D; Fri, 23 Jan 2009 20:03:26 +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 n0NK3PoQ051946; Fri, 23 Jan 2009 20:03:25 GMT (envelope-from sam@svn.freebsd.org) Received: (from sam@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n0NK3PTV051945; Fri, 23 Jan 2009 20:03:25 GMT (envelope-from sam@svn.freebsd.org) Message-Id: <200901232003.n0NK3PTV051945@svn.freebsd.org> From: Sam Leffler Date: Fri, 23 Jan 2009 20:03:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r187644 - user/sam/wifi/sys/dev/ath/ath_hal X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 23 Jan 2009 20:03:26 -0000 Author: sam Date: Fri Jan 23 20:03:25 2009 New Revision: 187644 URL: http://svn.freebsd.org/changeset/base/187644 Log: fix whitespace Modified: user/sam/wifi/sys/dev/ath/ath_hal/ah_regdomain.c Modified: user/sam/wifi/sys/dev/ath/ath_hal/ah_regdomain.c ============================================================================== --- user/sam/wifi/sys/dev/ath/ath_hal/ah_regdomain.c Fri Jan 23 19:24:55 2009 (r187643) +++ user/sam/wifi/sys/dev/ath/ath_hal/ah_regdomain.c Fri Jan 23 20:03:25 2009 (r187644) @@ -1205,7 +1205,7 @@ static REG_DOMAIN regDomains[] = { .pscan = PSCAN_MKK2, .flags = DISALLOW_ADHOC_11A_TURB, .chan11a = BM3(F1_4920_4980, F1_5040_5080, F1_5170_5230), - .chan11a_half = BM4(F1_4915_4925, + .chan11a_half = BM4(F1_4915_4925, F1_4935_4945, F1_5035_5040, F1_5055_5055), From owner-svn-src-user@FreeBSD.ORG Fri Jan 23 20:19:58 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 656551065673; Fri, 23 Jan 2009 20:19:58 +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 54A1D8FC19; Fri, 23 Jan 2009 20:19:58 +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 n0NKJwPK052260; Fri, 23 Jan 2009 20:19:58 GMT (envelope-from sam@svn.freebsd.org) Received: (from sam@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n0NKJwLP052259; Fri, 23 Jan 2009 20:19:58 GMT (envelope-from sam@svn.freebsd.org) Message-Id: <200901232019.n0NKJwLP052259@svn.freebsd.org> From: Sam Leffler Date: Fri, 23 Jan 2009 20:19:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r187645 - user/sam/wifi/sbin/ifconfig X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 23 Jan 2009 20:19:58 -0000 Author: sam Date: Fri Jan 23 20:19:58 2009 New Revision: 187645 URL: http://svn.freebsd.org/changeset/base/187645 Log: prioritize the channel we display with list chans so that, among other things, 1/2 and 1/4 width channels are hidden behind the full width channel; this is needed because they are ordered such that they appear after in the channel table Modified: user/sam/wifi/sbin/ifconfig/ifieee80211.c Modified: user/sam/wifi/sbin/ifconfig/ifieee80211.c ============================================================================== --- user/sam/wifi/sbin/ifconfig/ifieee80211.c Fri Jan 23 20:03:25 2009 (r187644) +++ user/sam/wifi/sbin/ifconfig/ifieee80211.c Fri Jan 23 20:19:58 2009 (r187645) @@ -3102,6 +3102,30 @@ print_chaninfo(const struct ieee80211_ch get_chaninfo(c, verb, buf, sizeof(buf))); } +static int +chanpref(const struct ieee80211_channel *c) +{ + if (IEEE80211_IS_CHAN_HT40(c)) + return 40; + if (IEEE80211_IS_CHAN_HT20(c)) + return 30; + if (IEEE80211_IS_CHAN_HALF(c)) + return 10; + if (IEEE80211_IS_CHAN_QUARTER(c)) + return 5; + if (IEEE80211_IS_CHAN_TURBO(c)) + return 25; + if (IEEE80211_IS_CHAN_A(c)) + return 20; + if (IEEE80211_IS_CHAN_G(c)) + return 20; + if (IEEE80211_IS_CHAN_B(c)) + return 15; + if (IEEE80211_IS_CHAN_PUREG(c)) + return 15; + return 0; +} + static void print_channels(int s, const struct ieee80211req_chaninfo *chans, int allchans, int verb) @@ -3145,7 +3169,10 @@ print_channels(int s, const struct ieee8 /* suppress duplicates as above */ if (isset(reported, c->ic_ieee) && !verb) { /* XXX we assume duplicates are adjacent */ - achans->ic_chans[achans->ic_nchans-1] = *c; + struct ieee80211_channel *a = + &achans->ic_chans[achans->ic_nchans-1]; + if (chanpref(c) > chanpref(a)) + *a = *c; } else { achans->ic_chans[achans->ic_nchans++] = *c; setbit(reported, c->ic_ieee); From owner-svn-src-user@FreeBSD.ORG Fri Jan 23 20:35:44 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3D9871065673; Fri, 23 Jan 2009 20:35:44 +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 11FE58FC0C; Fri, 23 Jan 2009 20:35:44 +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 n0NKZhSU053330; Fri, 23 Jan 2009 20:35:43 GMT (envelope-from sam@svn.freebsd.org) Received: (from sam@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n0NKZhKm053328; Fri, 23 Jan 2009 20:35:43 GMT (envelope-from sam@svn.freebsd.org) Message-Id: <200901232035.n0NKZhKm053328@svn.freebsd.org> From: Sam Leffler Date: Fri, 23 Jan 2009 20:35:43 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r187646 - in user/sam/wifi/sys/dev/ath/ath_hal: . ar5212 X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 23 Jan 2009 20:35:44 -0000 Author: sam Date: Fri Jan 23 20:35:43 2009 New Revision: 187646 URL: http://svn.freebsd.org/changeset/base/187646 Log: add AH_MAXCHAN tunable to set the size of the private channel table (and indirectly the ANI state table for 5212/5416 cards); default this to 96 which should at least 3x normal use (for ~4.5K of storage on 32-bit machines; slightly more on 64-bit machines) Modified: user/sam/wifi/sys/dev/ath/ath_hal/ah_internal.h user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar5212.h Modified: user/sam/wifi/sys/dev/ath/ath_hal/ah_internal.h ============================================================================== --- user/sam/wifi/sys/dev/ath/ath_hal/ah_internal.h Fri Jan 23 20:19:58 2009 (r187645) +++ user/sam/wifi/sys/dev/ath/ath_hal/ah_internal.h Fri Jan 23 20:35:43 2009 (r187646) @@ -110,6 +110,17 @@ OS_DATA_SET(ah_rfs, _name##_rf) struct ath_hal_rf *ath_hal_rfprobe(struct ath_hal *ah, HAL_STATUS *ecode); /* + * Maximum number of internal channels. Entries are per unique + * frequency so this might be need to be increased to handle all + * usage cases; typically no more than 32 are really needed but + * dynamically allocating the data structures is a bit painful + * right now. + */ +#ifndef AH_MAXCHAN +#define AH_MAXCHAN 96 +#endif + +/* * Internal per-channel state. These are found * using ic_devdata in the ieee80211_channel. */ @@ -266,8 +277,8 @@ struct ath_hal_private { * State for regulatory domain handling. */ HAL_REG_DOMAIN ah_currentRD; /* EEPROM regulatory domain */ - HAL_CHANNEL_INTERNAL ah_channels[256]; /* calculated channel list */ - u_int ah_nchan; /* valid channels in list */ + HAL_CHANNEL_INTERNAL ah_channels[AH_MAXCHAN]; /* private chan state */ + u_int ah_nchan; /* valid items in ah_channels */ const struct regDomain *ah_rd2GHz; /* reg state for 2G band */ const struct regDomain *ah_rd5GHz; /* reg state for 5G band */ Modified: user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar5212.h ============================================================================== --- user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar5212.h Fri Jan 23 20:19:58 2009 (r187645) +++ user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar5212.h Fri Jan 23 20:35:43 2009 (r187646) @@ -319,7 +319,7 @@ struct ath_hal_5212 { struct ar5212AniParams ah_aniParams24; /* 2.4GHz parameters */ struct ar5212AniParams ah_aniParams5; /* 5GHz parameters */ struct ar5212AniState *ah_curani; /* cached last reference */ - struct ar5212AniState ah_ani[64]; /* per-channel state */ + struct ar5212AniState ah_ani[AH_MAXCHAN]; /* per-channel state */ /* * Transmit power state. Note these are maintained From owner-svn-src-user@FreeBSD.ORG Fri Jan 23 20:37:36 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 384C81065687; Fri, 23 Jan 2009 20:37:36 +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 2774A8FC0C; Fri, 23 Jan 2009 20:37:36 +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 n0NKbaB4053507; Fri, 23 Jan 2009 20:37:36 GMT (envelope-from sam@svn.freebsd.org) Received: (from sam@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n0NKbaDs053506; Fri, 23 Jan 2009 20:37:36 GMT (envelope-from sam@svn.freebsd.org) Message-Id: <200901232037.n0NKbaDs053506@svn.freebsd.org> From: Sam Leffler Date: Fri, 23 Jan 2009 20:37:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r187647 - user/sam/wifi/sys/conf X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 23 Jan 2009 20:37:36 -0000 Author: sam Date: Fri Jan 23 20:37:35 2009 New Revision: 187647 URL: http://svn.freebsd.org/changeset/base/187647 Log: add AH_MAXCHAN tunable for the ath hal Modified: user/sam/wifi/sys/conf/options Modified: user/sam/wifi/sys/conf/options ============================================================================== --- user/sam/wifi/sys/conf/options Fri Jan 23 20:35:43 2009 (r187646) +++ user/sam/wifi/sys/conf/options Fri Jan 23 20:37:35 2009 (r187647) @@ -758,6 +758,7 @@ AH_WRITE_EEPROM opt_ah.h AH_PRIVATE_DIAG opt_ah.h AH_NEED_DESC_SWAP opt_ah.h AH_USE_INIPDGAIN opt_ah.h +AH_MAXCHAN opt_ah.h # options for the Marvell 8335 wireless driver MALO_DEBUG opt_malo.h From owner-svn-src-user@FreeBSD.ORG Sat Jan 24 00:14:35 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6679C1065673; Sat, 24 Jan 2009 00:14:35 +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 52DCE8FC0A; Sat, 24 Jan 2009 00:14:35 +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 n0O0EZGA058019; Sat, 24 Jan 2009 00:14:35 GMT (envelope-from sam@svn.freebsd.org) Received: (from sam@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n0O0EYsh058009; Sat, 24 Jan 2009 00:14:34 GMT (envelope-from sam@svn.freebsd.org) Message-Id: <200901240014.n0O0EYsh058009@svn.freebsd.org> From: Sam Leffler Date: Sat, 24 Jan 2009 00:14:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r187659 - in user/sam/wifi/sys/dev/ath: . ath_hal ath_hal/ar5210 ath_hal/ar5211 ath_hal/ar5212 ath_hal/ar5416 X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 24 Jan 2009 00:14:35 -0000 Author: sam Date: Sat Jan 24 00:14:34 2009 New Revision: 187659 URL: http://svn.freebsd.org/changeset/base/187659 Log: Fix GSM, 1/2 and 1/4 width channels: o 1/2 and 1/4 width channels are included in IEEE80211_CHAN_ALL and IEEE80211_CHAN_ALLTURBO which caused them to be visible in various switch statements; deal with this for now by defining IEEE80211_CHAN_ALLFULL and IEEE80211_CHAN_ALLTURBOFULL that have these masked out (long term we should remove all direct usage of ic_flags) o GSM channels were broken by removal of the frequency mapping; fix this by making the frequency in HAL_CHANNEL_PRIVATE hold the mapped frequency and deal with the translation when setting up the private channel array; this has the benefit of making this transparent to the driver o add ath_hal_gethwchannel api to map an 802.11 channel to the ``hw frequency''; this just find the private channel and returns the (possibly mapped) frequency o use ath_hal_gethwchannel everywhere (even in 5210, 5211, and 5416 parts that don't (yet) support 1/2 and 1/4 width channels); beware that we cannot use this in the code that returns the power limits as it is used when constructing the initial channel list and those are never mapped (and at that point the private channel map is not yet setup) May want to promote IEEE80211_CHAN_ALLFULL and IEEE80211_CHAN_ALLTURBOFULL to _ieee80211.h. Modified: user/sam/wifi/sys/dev/ath/ (props changed) user/sam/wifi/sys/dev/ath/ath_hal/ah_internal.h user/sam/wifi/sys/dev/ath/ath_hal/ah_regdomain.c user/sam/wifi/sys/dev/ath/ath_hal/ar5210/ar5210_reset.c user/sam/wifi/sys/dev/ath/ath_hal/ar5211/ar5211_reset.c user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar2316.c user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar2317.c user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar2413.c user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar2425.c user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar5111.c user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar5112.c user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar5212_reset.c user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar5413.c user/sam/wifi/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c user/sam/wifi/sys/dev/ath/if_ath.c Modified: user/sam/wifi/sys/dev/ath/ath_hal/ah_internal.h ============================================================================== --- user/sam/wifi/sys/dev/ath/ath_hal/ah_internal.h Fri Jan 23 22:49:23 2009 (r187658) +++ user/sam/wifi/sys/dev/ath/ath_hal/ah_internal.h Sat Jan 24 00:14:34 2009 (r187659) @@ -125,7 +125,7 @@ struct ath_hal_rf *ath_hal_rfprobe(struc * using ic_devdata in the ieee80211_channel. */ typedef struct { - uint16_t channel; /* XXX remove */ + uint16_t channel; /* h/w frequency, NB: may be mapped */ uint8_t privFlags; #define CHANNEL_IQVALID 0x01 /* IQ calibration valid */ #define CHANNEL_ANI_INIT 0x02 /* ANI state initialized */ @@ -141,6 +141,13 @@ typedef struct { /* channel requires noise floor check */ #define CHANNEL_NFCREQUIRED IEEE80211_CHAN_PRIV0 +/* all full-width channels */ +#define IEEE80211_CHAN_ALLFULL \ + (IEEE80211_CHAN_ALL - (IEEE80211_CHAN_HALF | IEEE80211_CHAN_QUARTER)) +#define IEEE80211_CHAN_ALLTURBOFULL \ + (IEEE80211_CHAN_ALLTURBO - \ + (IEEE80211_CHAN_HALF | IEEE80211_CHAN_QUARTER)) + typedef struct { uint32_t halChanSpreadSupport : 1, halSleepAfterBeaconBroken : 1, @@ -535,7 +542,7 @@ ath_hal_checkchannel(struct ath_hal *ah, HALASSERT(c->ic_devdata < AH_PRIVATE(ah)->ah_nchan); cc = &AH_PRIVATE(ah)->ah_channels[c->ic_devdata]; - HALASSERT(c->ic_freq == cc->channel); + HALASSERT(c->ic_freq == cc->channel || IEEE80211_IS_CHAN_GSM(c)); return cc; } #else @@ -545,6 +552,17 @@ HAL_CHANNEL_INTERNAL *ath_hal_checkchann #endif /* AH_DEBUG */ /* + * Return the h/w frequency for a channel. This may be + * different from ic_freq if this is a GSM device that + * takes 2.4GHz frequencies and down-converts them. + */ +static OS_INLINE uint16_t +ath_hal_gethwchannel(struct ath_hal *ah, const struct ieee80211_channel *c) +{ + return ath_hal_checkchannel(ah, c)->channel; +} + +/* * Convert between microseconds and core system clocks. */ extern u_int ath_hal_mac_clks(struct ath_hal *ah, u_int usecs); Modified: user/sam/wifi/sys/dev/ath/ath_hal/ah_regdomain.c ============================================================================== --- user/sam/wifi/sys/dev/ath/ath_hal/ah_regdomain.c Fri Jan 23 22:49:23 2009 (r187658) +++ user/sam/wifi/sys/dev/ath/ath_hal/ah_regdomain.c Sat Jan 24 00:14:34 2009 (r187659) @@ -2175,6 +2175,26 @@ ath_hal_getchannels(struct ath_hal *ah, } /* + * Handle frequency mapping from 900Mhz range to 2.4GHz range + * for GSM radios. This is done when we need the h/w frequency + * and the channel is marked IEEE80211_CHAN_GSM. + */ +static int +ath_hal_mapgsm(int sku, int freq) +{ + if (sku == SKU_XR9) + return 1520 + freq; + if (sku == SKU_GZ901) + return 1544 + freq; + if (sku == SKU_SR9) + return 3344 - freq; + HALDEBUG(AH_NULL, HAL_DEBUG_ANY, + "%s: cannot map freq %u unknown gsm sku %u\n", + __func__, freq, sku); + return freq; +} + +/* * Setup the internal/private channel state given a table of * net80211 channels. We collapse entries for the same frequency * and record the frequency for doing noise floor processing @@ -2182,16 +2202,17 @@ ath_hal_getchannels(struct ath_hal *ah, */ static HAL_BOOL assignPrivateChannels(struct ath_hal *ah, - struct ieee80211_channel chans[], int nchans) + struct ieee80211_channel chans[], int nchans, int sku) { HAL_CHANNEL_INTERNAL *ic; - int i, j, next; + int i, j, next, freq; next = 0; for (i = 0; i < nchans; i++) { + struct ieee80211_channel *c = &chans[i]; for (j = i-1; j >= 0; j--) - if (chans[j].ic_freq == chans[i].ic_freq) { - chans[i].ic_devdata = chans[j].ic_devdata; + if (chans[j].ic_freq == c->ic_freq) { + c->ic_devdata = chans[j].ic_devdata; break; } if (j < 0) { @@ -2202,6 +2223,19 @@ assignPrivateChannels(struct ath_hal *ah __func__, N(AH_PRIVATE(ah)->ah_channels)); return AH_FALSE; } + /* + * Handle frequency mapping for 900MHz devices. + * The hardware uses 2.4GHz frequencies that are + * down-converted. The 802.11 layer uses the + * true frequencies. + */ + freq = IEEE80211_IS_CHAN_GSM(c) ? + ath_hal_mapgsm(sku, c->ic_freq) : c->ic_freq; + + HALDEBUG(ah, HAL_DEBUG_REGDOMAIN, + "%s: private[%3u] %u/0x%x -> channel %u\n", + __func__, next, c->ic_freq, c->ic_flags, freq); + ic = &AH_PRIVATE(ah)->ah_channels[next]; /* * NB: This clears privFlags which means ancillary @@ -2209,8 +2243,8 @@ assignPrivateChannels(struct ath_hal *ah * restarted and re-setup any per-channel state. */ OS_MEMZERO(ic, sizeof(*ic)); - ic->channel = chans[i].ic_freq; - chans[i].ic_devdata = next; + ic->channel = freq; + c->ic_devdata = next; next++; } } @@ -2235,7 +2269,8 @@ ath_hal_init_channels(struct ath_hal *ah status = getchannels(ah, chans, maxchans, nchans, modeSelect, cc, regDmn, enableExtendedChannels, &country, &rd2GHz, &rd5GHz); - if (status == HAL_OK && assignPrivateChannels(ah, chans, *nchans)) { + if (status == HAL_OK && + assignPrivateChannels(ah, chans, *nchans, AH_PRIVATE(ah)->ah_currentRD)) { AH_PRIVATE(ah)->ah_rd2GHz = rd2GHz; AH_PRIVATE(ah)->ah_rd5GHz = rd5GHz; @@ -2253,14 +2288,33 @@ ath_hal_init_channels(struct ath_hal *ah HAL_STATUS ath_hal_set_channels(struct ath_hal *ah, struct ieee80211_channel chans[], int nchans, - HAL_CTRY_CODE cc, HAL_REG_DOMAIN regDmn) + HAL_CTRY_CODE cc, HAL_REG_DOMAIN rd) { COUNTRY_CODE_TO_ENUM_RD *country; REG_DOMAIN *rd5GHz, *rd2GHz; HAL_STATUS status; - status = getregstate(ah, cc, regDmn, &country, &rd2GHz, &rd5GHz); - if (status == HAL_OK && assignPrivateChannels(ah, chans, nchans)) { + switch (rd) { + case SKU_SR9: + case SKU_XR9: + case SKU_GZ901: + /* + * Map 900MHz sku's. The frequencies will be mapped + * according to the sku to compensate for the down-converter. + * We use the FCC for these sku's as the mapped channel + * list is known compatible (will need to change if/when + * vendors do different mapping in different locales). + */ + status = getregstate(ah, CTRY_DEFAULT, SKU_FCC, + &country, &rd2GHz, &rd5GHz); + break; + default: + status = getregstate(ah, cc, rd, + &country, &rd2GHz, &rd5GHz); + rd = AH_PRIVATE(ah)->ah_currentRD; + break; + } + if (status == HAL_OK && assignPrivateChannels(ah, chans, nchans, rd)) { AH_PRIVATE(ah)->ah_rd2GHz = rd2GHz; AH_PRIVATE(ah)->ah_rd5GHz = rd5GHz; @@ -2283,7 +2337,7 @@ ath_hal_checkchannel(struct ath_hal *ah, HAL_CHANNEL_INTERNAL *cc = &AH_PRIVATE(ah)->ah_channels[c->ic_devdata]; if (c->ic_devdata < AH_PRIVATE(ah)->ah_nchan && - c->ic_freq == cc->channel) + (c->ic_freq == cc->channel || IEEE80211_IS_CHAN_GSM(c))) return cc; if (c->ic_devdata >= AH_PRIVATE(ah)->ah_nchan) { HALDEBUG(ah, HAL_DEBUG_ANY, @@ -2294,8 +2348,8 @@ ath_hal_checkchannel(struct ath_hal *ah, HALDEBUG(ah, HAL_DEBUG_ANY, "%s: no match for %u/0x%x devdata %u channel %u\n", __func__, c->ic_freq, c->ic_flags, c->ic_devdata, - AH_PRIVATE(ah)->ah_channels[c->ic_devdata].channel); - HALASSERT(c->ic_freq == cc->channel); + cc->channel); + HALASSERT(c->ic_freq == cc->channel || IEEE80211_IS_CHAN_GSM(c)); } return AH_NULL; } Modified: user/sam/wifi/sys/dev/ath/ath_hal/ar5210/ar5210_reset.c ============================================================================== --- user/sam/wifi/sys/dev/ath/ath_hal/ar5210/ar5210_reset.c Fri Jan 23 22:49:23 2009 (r187658) +++ user/sam/wifi/sys/dev/ath/ath_hal/ar5210/ar5210_reset.c Sat Jan 24 00:14:34 2009 (r187659) @@ -728,6 +728,7 @@ static HAL_BOOL setupPowerSettings(struct ath_hal *ah, const struct ieee80211_channel *chan, uint8_t cp[17]) { + uint16_t freq = ath_hal_gethwchannel(ah, chan); const HAL_EEPROM_v1 *ee = AH_PRIVATE(ah)->ah_eeprom; uint8_t gainFRD, gainF36, gainF48, gainF54; uint8_t dBmRD, dBm36, dBm48, dBm54, dontcare; @@ -738,9 +739,9 @@ setupPowerSettings(struct ath_hal *ah, c cp[15] = (ee->ee_biasCurrents >> 4) & 0x7; cp[16] = ee->ee_biasCurrents & 0x7; - if (chan->ic_freq < 5170 || chan->ic_freq > 5320) { + if (freq < 5170 || freq > 5320) { HALDEBUG(ah, HAL_DEBUG_ANY, "%s: invalid channel %u\n", - __func__, chan->ic_freq); + __func__, freq); return AH_FALSE; } @@ -760,7 +761,7 @@ setupPowerSettings(struct ath_hal *ah, c #endif return AH_FALSE; } - group = ((chan->ic_freq - 5170) / 10); + group = ((freq - 5170) / 10); if (group > 11) { /* Pull 5.29 into the 5.27 group */ @@ -916,10 +917,11 @@ ar5210SetTransmitPower(struct ath_hal *a static HAL_BOOL ar5210SetChannel(struct ath_hal *ah, struct ieee80211_channel *chan) { + uint16_t freq = ath_hal_gethwchannel(ah, chan); uint32_t data; /* Set the Channel */ - data = ath_hal_reverseBits((chan->ic_freq - 5120)/10, 5); + data = ath_hal_reverseBits((freq - 5120)/10, 5); data = (data << 1) | 0x41; OS_REG_WRITE(ah, AR_PHY(0x27), data); OS_REG_WRITE(ah, AR_PHY(0x30), 0); Modified: user/sam/wifi/sys/dev/ath/ath_hal/ar5211/ar5211_reset.c ============================================================================== --- user/sam/wifi/sys/dev/ath/ath_hal/ar5211/ar5211_reset.c Fri Jan 23 22:49:23 2009 (r187658) +++ user/sam/wifi/sys/dev/ath/ath_hal/ar5211/ar5211_reset.c Sat Jan 24 00:14:34 2009 (r187659) @@ -895,7 +895,7 @@ getNoiseFloorThresh(struct ath_hal *ah, { HAL_EEPROM *ee = AH_PRIVATE(ah)->ah_eeprom; - switch (chan->ic_flags & IEEE80211_CHAN_ALL) { + switch (chan->ic_flags & IEEE80211_CHAN_ALLFULL) { case IEEE80211_CHAN_A: *nft = ee->ee_noiseFloorThresh[0]; break; @@ -1033,6 +1033,7 @@ static HAL_BOOL ar5211SetRf6and7(struct ath_hal *ah, const struct ieee80211_channel *chan) { #define N(a) (sizeof (a) / sizeof (a[0])) + uint16_t freq = ath_hal_gethwchannel(ah, chan); HAL_EEPROM *ee = AH_PRIVATE(ah)->ah_eeprom; struct ath_hal_5211 *ahp = AH5211(ah); uint16_t rfXpdGain, rfPloSel, rfPwdXpd; @@ -1047,18 +1048,18 @@ ar5211SetRf6and7(struct ath_hal *ah, con * during the read. * For readability, this should be changed to an enum or #define */ - switch (chan->ic_flags & IEEE80211_CHAN_ALL) { + switch (chan->ic_flags & IEEE80211_CHAN_ALLFULL) { case IEEE80211_CHAN_A: - if (chan->ic_freq > 4000 && chan->ic_freq < 5260) { + if (freq > 4000 && freq < 5260) { tempOB = ee->ee_ob1; tempDB = ee->ee_db1; - } else if (chan->ic_freq >= 5260 && chan->ic_freq < 5500) { + } else if (freq >= 5260 && freq < 5500) { tempOB = ee->ee_ob2; tempDB = ee->ee_db2; - } else if (chan->ic_freq >= 5500 && chan->ic_freq < 5725) { + } else if (freq >= 5500 && freq < 5725) { tempOB = ee->ee_ob3; tempDB = ee->ee_db3; - } else if (chan->ic_freq >= 5725) { + } else if (freq >= 5725) { tempOB = ee->ee_ob4; tempDB = ee->ee_db4; } else { @@ -1145,7 +1146,7 @@ ar5211SetAntennaSwitchInternal(struct at uint32_t antSwitchA, antSwitchB; int ix; - switch (chan->ic_flags & IEEE80211_CHAN_ALL) { + switch (chan->ic_flags & IEEE80211_CHAN_ALLFULL) { case IEEE80211_CHAN_A: ix = 0; break; case IEEE80211_CHAN_B: ix = 1; break; case IEEE80211_CHAN_PUREG: ix = 2; break; @@ -1205,7 +1206,7 @@ ar5211SetBoardValues(struct ath_hal *ah, struct ath_hal_5211 *ahp = AH5211(ah); int arrayMode, falseDectectBackoff; - switch (chan->ic_flags & IEEE80211_CHAN_ALL) { + switch (chan->ic_flags & IEEE80211_CHAN_ALLFULL) { case IEEE80211_CHAN_A: arrayMode = 0; OS_REG_RMW_FIELD(ah, AR_PHY_FRAME_CTL, @@ -1274,7 +1275,8 @@ ar5211SetBoardValues(struct ath_hal *ah, IEEE80211_IS_CHAN_OFDM(chan)) falseDectectBackoff += CB22_FALSE_DETECT_BACKOFF; } else { - uint32_t remainder = chan->ic_freq % 32; + uint16_t freq = ath_hal_gethwchannel(ah, chan); + uint32_t remainder = freq % 32; if (remainder && (remainder < 10 || remainder > 22)) falseDectectBackoff += ee->ee_falseDetectBackoff[arrayMode]; @@ -1310,6 +1312,7 @@ ar5211SetTxPowerLimit(struct ath_hal *ah static HAL_BOOL ar5211SetTransmitPower(struct ath_hal *ah, const struct ieee80211_channel *chan) { + uint16_t freq = ath_hal_gethwchannel(ah, chan); HAL_EEPROM *ee = AH_PRIVATE(ah)->ah_eeprom; TRGT_POWER_INFO *pi; RD_EDGES_POWER *rep; @@ -1318,7 +1321,7 @@ ar5211SetTransmitPower(struct ath_hal *a int i; /* setup the pcdac struct to point to the correct info, based on mode */ - switch (chan->ic_flags & IEEE80211_CHAN_ALL) { + switch (chan->ic_flags & IEEE80211_CHAN_ALLFULL) { case IEEE80211_CHAN_A: eepromPcdacs.numChannels = ee->ee_numChannels11a; eepromPcdacs.pChannelList= ee->ee_channels11a; @@ -1346,7 +1349,7 @@ ar5211SetTransmitPower(struct ath_hal *a return AH_FALSE; } - ar5211SetPowerTable(ah, &eepromPcdacs, chan->ic_freq); + ar5211SetPowerTable(ah, &eepromPcdacs, freq); rep = AH_NULL; /* Match CTL to EEPROM value */ @@ -1491,6 +1494,7 @@ ar5211SetRateTable(struct ath_hal *ah, R TRGT_POWER_INFO *pPowerInfo, uint16_t numChannels, const struct ieee80211_channel *chan) { + uint16_t freq = ath_hal_gethwchannel(ah, chan); HAL_EEPROM *ee = AH_PRIVATE(ah)->ah_eeprom; struct ath_hal_5211 *ahp = AH5211(ah); static uint16_t ratesArray[NUM_RATES]; @@ -1530,7 +1534,7 @@ ar5211SetRateTable(struct ath_hal *ah, R } numEdges = i; - ar5211GetLowerUpperValues(chan->ic_freq, tempChannelList, + ar5211GetLowerUpperValues(freq, tempChannelList, numEdges, &lowerChannel, &upperChannel); /* Get the index for this channel */ for (i = 0; i < numEdges; i++) @@ -1539,7 +1543,7 @@ ar5211SetRateTable(struct ath_hal *ah, R HALASSERT(i != numEdges); if ((lowerChannel == upperChannel && - lowerChannel == chan->ic_freq) || + lowerChannel == freq) || pRdEdgesPower[i].flag) { twiceMaxEdgePower = pRdEdgesPower[i].twice_rdEdgePower; HALASSERT(twiceMaxEdgePower > 0); @@ -1550,7 +1554,7 @@ ar5211SetRateTable(struct ath_hal *ah, R for (i = 0; i < numChannels; i++) tempChannelList[i] = pPowerInfo[i].testChannel; - ar5211GetLowerUpperValues(chan->ic_freq, tempChannelList, + ar5211GetLowerUpperValues(freq, tempChannelList, numChannels, &lowerChannel, &upperChannel); /* get the index for the channel */ @@ -1604,7 +1608,7 @@ ar5211SetRateTable(struct ath_hal *ah, R } } - twicePower = ar5211GetInterpolatedValue(chan->ic_freq, + twicePower = ar5211GetInterpolatedValue(freq, lowerChannel, upperChannel, lowerPower, upperPower, 0); /* Reduce power by band edge restrictions */ Modified: user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar2316.c ============================================================================== --- user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar2316.c Fri Jan 23 22:49:23 2009 (r187658) +++ user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar2316.c Sat Jan 24 00:14:34 2009 (r187659) @@ -90,26 +90,27 @@ ar2316WriteRegs(struct ath_hal *ah, u_in static HAL_BOOL ar2316SetChannel(struct ath_hal *ah, struct ieee80211_channel *chan) { + uint16_t freq = ath_hal_gethwchannel(ah, chan); uint32_t channelSel = 0; uint32_t bModeSynth = 0; uint32_t aModeRefSel = 0; uint32_t reg32 = 0; - OS_MARK(ah, AH_MARK_SETCHANNEL, chan->ic_freq); + OS_MARK(ah, AH_MARK_SETCHANNEL, freq); - if (chan->ic_freq < 4800) { + if (freq < 4800) { uint32_t txctl; - if (((chan->ic_freq - 2192) % 5) == 0) { - channelSel = ((chan->ic_freq - 672) * 2 - 3040)/10; + if (((freq - 2192) % 5) == 0) { + channelSel = ((freq - 672) * 2 - 3040)/10; bModeSynth = 0; - } else if (((chan->ic_freq - 2224) % 5) == 0) { - channelSel = ((chan->ic_freq - 704) * 2 - 3040) / 10; + } else if (((freq - 2224) % 5) == 0) { + channelSel = ((freq - 704) * 2 - 3040) / 10; bModeSynth = 1; } else { HALDEBUG(ah, HAL_DEBUG_ANY, "%s: invalid channel %u MHz\n", - __func__, chan->ic_freq); + __func__, freq); return AH_FALSE; } @@ -117,7 +118,7 @@ ar2316SetChannel(struct ath_hal *ah, st channelSel = ath_hal_reverseBits(channelSel, 8); txctl = OS_REG_READ(ah, AR_PHY_CCK_TX_CTRL); - if (chan->ic_freq == 2484) { + if (freq == 2484) { /* Enable channel spreading for channel 14 */ OS_REG_WRITE(ah, AR_PHY_CCK_TX_CTRL, txctl | AR_PHY_CCK_TX_CTRL_JAPAN); @@ -125,21 +126,21 @@ ar2316SetChannel(struct ath_hal *ah, st OS_REG_WRITE(ah, AR_PHY_CCK_TX_CTRL, txctl &~ AR_PHY_CCK_TX_CTRL_JAPAN); } - } else if ((chan->ic_freq % 20) == 0 && chan->ic_freq >= 5120) { + } else if ((freq % 20) == 0 && freq >= 5120) { channelSel = ath_hal_reverseBits( - ((chan->ic_freq - 4800) / 20 << 2), 8); + ((freq - 4800) / 20 << 2), 8); aModeRefSel = ath_hal_reverseBits(3, 2); - } else if ((chan->ic_freq % 10) == 0) { + } else if ((freq % 10) == 0) { channelSel = ath_hal_reverseBits( - ((chan->ic_freq - 4800) / 10 << 1), 8); + ((freq - 4800) / 10 << 1), 8); aModeRefSel = ath_hal_reverseBits(2, 2); - } else if ((chan->ic_freq % 5) == 0) { + } else if ((freq % 5) == 0) { channelSel = ath_hal_reverseBits( - (chan->ic_freq - 4800) / 5, 8); + (freq - 4800) / 5, 8); aModeRefSel = ath_hal_reverseBits(1, 2); } else { HALDEBUG(ah, HAL_DEBUG_ANY, "%s: invalid channel %u MHz\n", - __func__, chan->ic_freq); + __func__, freq); return AH_FALSE; } @@ -175,8 +176,7 @@ ar2316SetRfRegs(struct ath_hal *ah, cons struct ar2316State *priv = AR2316(ah); int regWrites = 0; - HALDEBUG(ah, HAL_DEBUG_RFPARAM, - "%s: chan 0x%x flag 0x%x modesIndex 0x%x\n", + HALDEBUG(ah, HAL_DEBUG_RFPARAM, "%s: chan %u/0x%x modesIndex %u\n", __func__, chan->ic_freq, chan->ic_flags, modesIndex); HALASSERT(priv != AH_NULL); @@ -644,6 +644,7 @@ ar2316GetChannelMaxMinPower(struct ath_h const struct ieee80211_channel *chan, int16_t *maxPow, int16_t *minPow) { + uint16_t freq = chan->ic_freq; /* NB: never mapped */ const HAL_EEPROM *ee = AH_PRIVATE(ah)->ah_eeprom; const RAW_DATA_STRUCT_2316 *pRawDataset = AH_NULL; const RAW_DATA_PER_CHANNEL_2316 *data=AH_NULL; @@ -668,9 +669,9 @@ ar2316GetChannelMaxMinPower(struct ath_h if (numChannels < 1) return(AH_FALSE); - if ((chan->ic_freq < data[0].channelValue) || - (chan->ic_freq > data[numChannels-1].channelValue)) { - if (chan->ic_freq < data[0].channelValue) { + if ((freq < data[0].channelValue) || + (freq > data[numChannels-1].channelValue)) { + if (freq < data[0].channelValue) { *maxPow = ar2316GetMaxPower(ah, &data[0]); *minPow = ar2316GetMinPower(ah, &data[0]); return(AH_TRUE); @@ -682,19 +683,19 @@ ar2316GetChannelMaxMinPower(struct ath_h } /* Linearly interpolate the power value now */ - for (last=0,i=0; (iic_freq > data[i].channelValue); + for (last=0,i=0; (i data[i].channelValue); last = i++); totalD = data[i].channelValue - data[last].channelValue; if (totalD > 0) { totalF = ar2316GetMaxPower(ah, &data[i]) - ar2316GetMaxPower(ah, &data[last]); - *maxPow = (int8_t) ((totalF*(chan->ic_freq-data[last].channelValue) + + *maxPow = (int8_t) ((totalF*(freq-data[last].channelValue) + ar2316GetMaxPower(ah, &data[last])*totalD)/totalD); totalMin = ar2316GetMinPower(ah, &data[i]) - ar2316GetMinPower(ah, &data[last]); - *minPow = (int8_t) ((totalMin*(chan->ic_freq-data[last].channelValue) + + *minPow = (int8_t) ((totalMin*(freq-data[last].channelValue) + ar2316GetMinPower(ah, &data[last])*totalD)/totalD); return(AH_TRUE); } else { - if (chan->ic_freq == data[i].channelValue) { + if (freq == data[i].channelValue) { *maxPow = ar2316GetMaxPower(ah, &data[i]); *minPow = ar2316GetMinPower(ah, &data[i]); return(AH_TRUE); Modified: user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar2317.c ============================================================================== --- user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar2317.c Fri Jan 23 22:49:23 2009 (r187658) +++ user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar2317.c Sat Jan 24 00:14:34 2009 (r187659) @@ -81,20 +81,21 @@ ar2317WriteRegs(struct ath_hal *ah, u_in static HAL_BOOL ar2317SetChannel(struct ath_hal *ah, const struct ieee80211_channel *chan) { + uint16_t freq = ath_hal_gethwchannel(ah, chan); uint32_t channelSel = 0; uint32_t bModeSynth = 0; uint32_t aModeRefSel = 0; uint32_t reg32 = 0; - OS_MARK(ah, AH_MARK_SETCHANNEL, chan->ic_freq); + OS_MARK(ah, AH_MARK_SETCHANNEL, freq); - if (chan->ic_freq < 4800) { + if (freq < 4800) { uint32_t txctl; - channelSel = chan->ic_freq - 2272 ; + channelSel = freq - 2272 ; channelSel = ath_hal_reverseBits(channelSel, 8); txctl = OS_REG_READ(ah, AR_PHY_CCK_TX_CTRL); - if (chan->ic_freq == 2484) { + if (freq == 2484) { /* Enable channel spreading for channel 14 */ OS_REG_WRITE(ah, AR_PHY_CCK_TX_CTRL, txctl | AR_PHY_CCK_TX_CTRL_JAPAN); @@ -102,21 +103,21 @@ ar2317SetChannel(struct ath_hal *ah, co OS_REG_WRITE(ah, AR_PHY_CCK_TX_CTRL, txctl &~ AR_PHY_CCK_TX_CTRL_JAPAN); } - } else if ((chan->ic_freq % 20) == 0 && chan->ic_freq >= 5120) { + } else if ((freq % 20) == 0 && freq >= 5120) { channelSel = ath_hal_reverseBits( - ((chan->ic_freq - 4800) / 20 << 2), 8); + ((freq - 4800) / 20 << 2), 8); aModeRefSel = ath_hal_reverseBits(3, 2); - } else if ((chan->ic_freq % 10) == 0) { + } else if ((freq % 10) == 0) { channelSel = ath_hal_reverseBits( - ((chan->ic_freq - 4800) / 10 << 1), 8); + ((freq - 4800) / 10 << 1), 8); aModeRefSel = ath_hal_reverseBits(2, 2); - } else if ((chan->ic_freq % 5) == 0) { + } else if ((freq % 5) == 0) { channelSel = ath_hal_reverseBits( - (chan->ic_freq - 4800) / 5, 8); + (freq - 4800) / 5, 8); aModeRefSel = ath_hal_reverseBits(1, 2); } else { HALDEBUG(ah, HAL_DEBUG_ANY, "%s: invalid channel %u MHz\n", - __func__, chan->ic_freq); + __func__, freq); return AH_FALSE; } @@ -153,8 +154,7 @@ ar2317SetRfRegs(struct ath_hal *ah, struct ar2317State *priv = AR2317(ah); int regWrites = 0; - HALDEBUG(ah, HAL_DEBUG_RFPARAM, - "%s: chan 0x%x flag 0x%x modesIndex 0x%x\n", + HALDEBUG(ah, HAL_DEBUG_RFPARAM, "%s: chan %u/0x%x modesIndex %u\n", __func__, chan->ic_freq, chan->ic_flags, modesIndex); HALASSERT(priv); @@ -624,6 +624,7 @@ ar2317GetChannelMaxMinPower(struct ath_h const struct ieee80211_channel *chan, int16_t *maxPow, int16_t *minPow) { + uint16_t freq = chan->ic_freq; /* NB: never mapped */ const HAL_EEPROM *ee = AH_PRIVATE(ah)->ah_eeprom; const RAW_DATA_STRUCT_2317 *pRawDataset = AH_NULL; const RAW_DATA_PER_CHANNEL_2317 *data=AH_NULL; @@ -648,9 +649,9 @@ ar2317GetChannelMaxMinPower(struct ath_h if (numChannels < 1) return(AH_FALSE); - if ((chan->ic_freq < data[0].channelValue) || - (chan->ic_freq > data[numChannels-1].channelValue)) { - if (chan->ic_freq < data[0].channelValue) { + if ((freq < data[0].channelValue) || + (freq > data[numChannels-1].channelValue)) { + if (freq < data[0].channelValue) { *maxPow = ar2317GetMaxPower(ah, &data[0]); *minPow = ar2317GetMinPower(ah, &data[0]); return(AH_TRUE); @@ -662,19 +663,19 @@ ar2317GetChannelMaxMinPower(struct ath_h } /* Linearly interpolate the power value now */ - for (last=0,i=0; (iic_freq > data[i].channelValue); + for (last=0,i=0; (i data[i].channelValue); last = i++); totalD = data[i].channelValue - data[last].channelValue; if (totalD > 0) { totalF = ar2317GetMaxPower(ah, &data[i]) - ar2317GetMaxPower(ah, &data[last]); - *maxPow = (int8_t) ((totalF*(chan->ic_freq-data[last].channelValue) + + *maxPow = (int8_t) ((totalF*(freq-data[last].channelValue) + ar2317GetMaxPower(ah, &data[last])*totalD)/totalD); totalMin = ar2317GetMinPower(ah, &data[i]) - ar2317GetMinPower(ah, &data[last]); - *minPow = (int8_t) ((totalMin*(chan->ic_freq-data[last].channelValue) + + *minPow = (int8_t) ((totalMin*(freq-data[last].channelValue) + ar2317GetMinPower(ah, &data[last])*totalD)/totalD); return(AH_TRUE); } else { - if (chan->ic_freq == data[i].channelValue) { + if (freq == data[i].channelValue) { *maxPow = ar2317GetMaxPower(ah, &data[i]); *minPow = ar2317GetMinPower(ah, &data[i]); return(AH_TRUE); Modified: user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar2413.c ============================================================================== --- user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar2413.c Fri Jan 23 22:49:23 2009 (r187658) +++ user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar2413.c Sat Jan 24 00:14:34 2009 (r187659) @@ -77,27 +77,27 @@ ar2413WriteRegs(struct ath_hal *ah, u_in static HAL_BOOL ar2413SetChannel(struct ath_hal *ah, const struct ieee80211_channel *chan) { + uint16_t freq = ath_hal_gethwchannel(ah, chan); uint32_t channelSel = 0; uint32_t bModeSynth = 0; uint32_t aModeRefSel = 0; uint32_t reg32 = 0; - uint16_t freq; - OS_MARK(ah, AH_MARK_SETCHANNEL, chan->ic_freq); + OS_MARK(ah, AH_MARK_SETCHANNEL, freq); - if (chan->ic_freq < 4800) { + if (freq < 4800) { uint32_t txctl; - if (((chan->ic_freq - 2192) % 5) == 0) { - channelSel = ((chan->ic_freq - 672) * 2 - 3040)/10; + if (((freq - 2192) % 5) == 0) { + channelSel = ((freq - 672) * 2 - 3040)/10; bModeSynth = 0; - } else if (((chan->ic_freq - 2224) % 5) == 0) { - channelSel = ((chan->ic_freq - 704) * 2 - 3040) / 10; + } else if (((freq - 2224) % 5) == 0) { + channelSel = ((freq - 704) * 2 - 3040) / 10; bModeSynth = 1; } else { HALDEBUG(ah, HAL_DEBUG_ANY, "%s: invalid channel %u MHz\n", - __func__, chan->ic_freq); + __func__, freq); return AH_FALSE; } @@ -105,7 +105,7 @@ ar2413SetChannel(struct ath_hal *ah, con channelSel = ath_hal_reverseBits(channelSel, 8); txctl = OS_REG_READ(ah, AR_PHY_CCK_TX_CTRL); - if (chan->ic_freq == 2484) { + if (freq == 2484) { /* Enable channel spreading for channel 14 */ OS_REG_WRITE(ah, AR_PHY_CCK_TX_CTRL, txctl | AR_PHY_CCK_TX_CTRL_JAPAN); @@ -113,26 +113,26 @@ ar2413SetChannel(struct ath_hal *ah, con OS_REG_WRITE(ah, AR_PHY_CCK_TX_CTRL, txctl &~ AR_PHY_CCK_TX_CTRL_JAPAN); } - } else if (((chan->ic_freq % 5) == 2) && (chan->ic_freq <= 5435)) { - freq = chan->ic_freq - 2; /* Align to even 5MHz raster */ + } else if (((freq % 5) == 2) && (freq <= 5435)) { + freq = freq - 2; /* Align to even 5MHz raster */ channelSel = ath_hal_reverseBits( (uint32_t)(((freq - 4800)*10)/25 + 1), 8); aModeRefSel = ath_hal_reverseBits(0, 2); - } else if ((chan->ic_freq % 20) == 0 && chan->ic_freq >= 5120) { + } else if ((freq % 20) == 0 && freq >= 5120) { channelSel = ath_hal_reverseBits( - ((chan->ic_freq - 4800) / 20 << 2), 8); + ((freq - 4800) / 20 << 2), 8); aModeRefSel = ath_hal_reverseBits(3, 2); - } else if ((chan->ic_freq % 10) == 0) { + } else if ((freq % 10) == 0) { channelSel = ath_hal_reverseBits( - ((chan->ic_freq - 4800) / 10 << 1), 8); + ((freq - 4800) / 10 << 1), 8); aModeRefSel = ath_hal_reverseBits(2, 2); - } else if ((chan->ic_freq % 5) == 0) { + } else if ((freq % 5) == 0) { channelSel = ath_hal_reverseBits( - (chan->ic_freq - 4800) / 5, 8); + (freq - 4800) / 5, 8); aModeRefSel = ath_hal_reverseBits(1, 2); } else { HALDEBUG(ah, HAL_DEBUG_ANY, "%s: invalid channel %u MHz\n", - __func__, chan->ic_freq); + __func__, freq); return AH_FALSE; } @@ -170,8 +170,7 @@ ar2413SetRfRegs(struct ath_hal *ah, struct ar2413State *priv = AR2413(ah); int regWrites = 0; - HALDEBUG(ah, HAL_DEBUG_RFPARAM, - "%s: chan 0x%x flag 0x%x modesIndex 0x%x\n", + HALDEBUG(ah, HAL_DEBUG_RFPARAM, "%s: chan %u/0x%x modesIndex %u\n", __func__, chan->ic_freq, chan->ic_flags, modesIndex); HALASSERT(priv); @@ -499,6 +498,7 @@ ar2413SetPowerTable(struct ath_hal *ah, const struct ieee80211_channel *chan, uint16_t *rfXpdGain) { + uint16_t freq = ath_hal_gethwchannel(ah, chan); struct ath_hal_5212 *ahp = AH5212(ah); const HAL_EEPROM *ee = AH_PRIVATE(ah)->ah_eeprom; const RAW_DATA_STRUCT_2413 *pRawDataset = AH_NULL; @@ -513,7 +513,7 @@ ar2413SetPowerTable(struct ath_hal *ah, #endif HALDEBUG(ah, HAL_DEBUG_RFPARAM, "%s: chan 0x%x flag 0x%x\n", - __func__, chan->ic_freq, chan->ic_flags); + __func__, freq, chan->ic_flags); if (IEEE80211_IS_CHAN_G(chan) || IEEE80211_IS_CHAN_108G(chan)) pRawDataset = &ee->ee_rawDataset2413[headerInfo11G]; @@ -528,7 +528,7 @@ ar2413SetPowerTable(struct ath_hal *ah, AR_PHY_TPCRG5_PD_GAIN_OVERLAP); numPdGainsUsed = ar2413getGainBoundariesAndPdadcsForPowers(ah, - chan->ic_freq, pRawDataset, pdGainOverlap_t2, + freq, pRawDataset, pdGainOverlap_t2, &minCalPower2413_t2,gainBoundaries, rfXpdGain, pdadcValues); HALASSERT(1 <= numPdGainsUsed && numPdGainsUsed <= 3); @@ -639,6 +639,7 @@ ar2413GetChannelMaxMinPower(struct ath_h const struct ieee80211_channel *chan, int16_t *maxPow, int16_t *minPow) { + uint16_t freq = chan->ic_freq; /* NB: never mapped */ const HAL_EEPROM *ee = AH_PRIVATE(ah)->ah_eeprom; const RAW_DATA_STRUCT_2413 *pRawDataset = AH_NULL; const RAW_DATA_PER_CHANNEL_2413 *data = AH_NULL; @@ -663,9 +664,9 @@ ar2413GetChannelMaxMinPower(struct ath_h if (numChannels < 1) return(AH_FALSE); - if ((chan->ic_freq < data[0].channelValue) || - (chan->ic_freq > data[numChannels-1].channelValue)) { - if (chan->ic_freq < data[0].channelValue) { + if ((freq < data[0].channelValue) || + (freq > data[numChannels-1].channelValue)) { + if (freq < data[0].channelValue) { *maxPow = ar2413GetMaxPower(ah, &data[0]); *minPow = ar2413GetMinPower(ah, &data[0]); return(AH_TRUE); @@ -677,19 +678,19 @@ ar2413GetChannelMaxMinPower(struct ath_h } /* Linearly interpolate the power value now */ - for (last=0,i=0; (iic_freq > data[i].channelValue); + for (last=0,i=0; (i data[i].channelValue); last = i++); totalD = data[i].channelValue - data[last].channelValue; if (totalD > 0) { totalF = ar2413GetMaxPower(ah, &data[i]) - ar2413GetMaxPower(ah, &data[last]); - *maxPow = (int8_t) ((totalF*(chan->ic_freq-data[last].channelValue) + + *maxPow = (int8_t) ((totalF*(freq-data[last].channelValue) + ar2413GetMaxPower(ah, &data[last])*totalD)/totalD); totalMin = ar2413GetMinPower(ah, &data[i]) - ar2413GetMinPower(ah, &data[last]); - *minPow = (int8_t) ((totalMin*(chan->ic_freq-data[last].channelValue) + + *minPow = (int8_t) ((totalMin*(freq-data[last].channelValue) + ar2413GetMinPower(ah, &data[last])*totalD)/totalD); return(AH_TRUE); } else { - if (chan->ic_freq == data[i].channelValue) { + if (freq == data[i].channelValue) { *maxPow = ar2413GetMaxPower(ah, &data[i]); *minPow = ar2413GetMinPower(ah, &data[i]); return(AH_TRUE); Modified: user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar2425.c ============================================================================== --- user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar2425.c Fri Jan 23 22:49:23 2009 (r187658) +++ user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar2425.c Sat Jan 24 00:14:34 2009 (r187659) @@ -84,22 +84,22 @@ ar2425WriteRegs(struct ath_hal *ah, u_in static HAL_BOOL ar2425SetChannel(struct ath_hal *ah, const struct ieee80211_channel *chan) { + uint16_t freq = ath_hal_gethwchannel(ah, chan); uint32_t channelSel = 0; uint32_t bModeSynth = 0; uint32_t aModeRefSel = 0; uint32_t reg32 = 0; - uint16_t freq; - OS_MARK(ah, AH_MARK_SETCHANNEL, chan->ic_freq); + OS_MARK(ah, AH_MARK_SETCHANNEL, freq); - if (chan->ic_freq < 4800) { + if (freq < 4800) { uint32_t txctl; - channelSel = chan->ic_freq - 2272; + channelSel = freq - 2272; channelSel = ath_hal_reverseBits(channelSel, 8); txctl = OS_REG_READ(ah, AR_PHY_CCK_TX_CTRL); - if (chan->ic_freq == 2484) { + if (freq == 2484) { // Enable channel spreading for channel 14 OS_REG_WRITE(ah, AR_PHY_CCK_TX_CTRL, txctl | AR_PHY_CCK_TX_CTRL_JAPAN); @@ -108,26 +108,26 @@ ar2425SetChannel(struct ath_hal *ah, con txctl &~ AR_PHY_CCK_TX_CTRL_JAPAN); } - } else if (((chan->ic_freq % 5) == 2) && (chan->ic_freq <= 5435)) { - freq = chan->ic_freq - 2; /* Align to even 5MHz raster */ + } else if (((freq % 5) == 2) && (freq <= 5435)) { + freq = freq - 2; /* Align to even 5MHz raster */ channelSel = ath_hal_reverseBits( (uint32_t)(((freq - 4800)*10)/25 + 1), 8); aModeRefSel = ath_hal_reverseBits(0, 2); - } else if ((chan->ic_freq % 20) == 0 && chan->ic_freq >= 5120) { + } else if ((freq % 20) == 0 && freq >= 5120) { channelSel = ath_hal_reverseBits( - ((chan->ic_freq - 4800) / 20 << 2), 8); + ((freq - 4800) / 20 << 2), 8); aModeRefSel = ath_hal_reverseBits(1, 2); - } else if ((chan->ic_freq % 10) == 0) { + } else if ((freq % 10) == 0) { channelSel = ath_hal_reverseBits( - ((chan->ic_freq - 4800) / 10 << 1), 8); + ((freq - 4800) / 10 << 1), 8); aModeRefSel = ath_hal_reverseBits(1, 2); - } else if ((chan->ic_freq % 5) == 0) { + } else if ((freq % 5) == 0) { channelSel = ath_hal_reverseBits( - (chan->ic_freq - 4800) / 5, 8); + (freq - 4800) / 5, 8); aModeRefSel = ath_hal_reverseBits(1, 2); } else { HALDEBUG(ah, HAL_DEBUG_ANY, "%s: invalid channel %u MHz\n", - __func__, chan->ic_freq); + __func__, freq); return AH_FALSE; } @@ -164,8 +164,7 @@ ar2425SetRfRegs(struct ath_hal *ah, uint16_t ob2GHz = 0, db2GHz = 0; int regWrites = 0; - HALDEBUG(ah, HAL_DEBUG_RFPARAM, - "==>%s:chan 0x%x flag 0x%x modesIndex 0x%x\n", + HALDEBUG(ah, HAL_DEBUG_RFPARAM, "%s: chan %u/0x%x modesIndex %u\n", __func__, chan->ic_freq, chan->ic_flags, modesIndex); HALASSERT(priv); @@ -499,6 +498,7 @@ ar2425SetPowerTable(struct ath_hal *ah, const struct ieee80211_channel *chan, uint16_t *rfXpdGain) { + uint16_t freq = ath_hal_gethwchannel(ah, chan); struct ath_hal_5212 *ahp = AH5212(ah); const HAL_EEPROM *ee = AH_PRIVATE(ah)->ah_eeprom; const RAW_DATA_STRUCT_2413 *pRawDataset = AH_NULL; @@ -509,7 +509,7 @@ ar2425SetPowerTable(struct ath_hal *ah, uint32_t i, reg32, regoffset; HALDEBUG(ah, HAL_DEBUG_RFPARAM, "%s:chan 0x%x flag 0x%x\n", - __func__, chan->ic_freq, chan->ic_flags); + __func__, freq, chan->ic_flags); if (IEEE80211_IS_CHAN_G(chan) || IEEE80211_IS_CHAN_108G(chan)) pRawDataset = &ee->ee_rawDataset2413[headerInfo11G]; @@ -523,7 +523,7 @@ ar2425SetPowerTable(struct ath_hal *ah, pdGainOverlap_t2 = (uint16_t) SM(OS_REG_READ(ah, AR_PHY_TPCRG5), AR_PHY_TPCRG5_PD_GAIN_OVERLAP); - ar2425getGainBoundariesAndPdadcsForPowers(ah, chan->ic_freq, + ar2425getGainBoundariesAndPdadcsForPowers(ah, freq, pRawDataset, pdGainOverlap_t2,&minCalPower2413_t2,gainBoundaries, rfXpdGain, pdadcValues); @@ -602,6 +602,7 @@ ar2425GetChannelMaxMinPower(struct ath_h const struct ieee80211_channel *chan, int16_t *maxPow, int16_t *minPow) { + uint16_t freq = chan->ic_freq; /* NB: never mapped */ const HAL_EEPROM *ee = AH_PRIVATE(ah)->ah_eeprom; const RAW_DATA_STRUCT_2413 *pRawDataset = AH_NULL; const RAW_DATA_PER_CHANNEL_2413 *data = AH_NULL; @@ -626,9 +627,9 @@ ar2425GetChannelMaxMinPower(struct ath_h if (numChannels < 1) return(AH_FALSE); - if ((chan->ic_freq < data[0].channelValue) || - (chan->ic_freq > data[numChannels-1].channelValue)) { - if (chan->ic_freq < data[0].channelValue) { + if ((freq < data[0].channelValue) || + (freq > data[numChannels-1].channelValue)) { + if (freq < data[0].channelValue) { *maxPow = ar2425GetMaxPower(ah, &data[0]); *minPow = ar2425GetMinPower(ah, &data[0]); return(AH_TRUE); @@ -640,19 +641,19 @@ ar2425GetChannelMaxMinPower(struct ath_h } /* Linearly interpolate the power value now */ - for (last=0,i=0; (iic_freq > data[i].channelValue); + for (last=0,i=0; (i data[i].channelValue); last = i++); totalD = data[i].channelValue - data[last].channelValue; if (totalD > 0) { totalF = ar2425GetMaxPower(ah, &data[i]) - ar2425GetMaxPower(ah, &data[last]); - *maxPow = (int8_t) ((totalF*(chan->ic_freq-data[last].channelValue) + + *maxPow = (int8_t) ((totalF*(freq-data[last].channelValue) + ar2425GetMaxPower(ah, &data[last])*totalD)/totalD); totalMin = ar2425GetMinPower(ah, &data[i]) - ar2425GetMinPower(ah, &data[last]); - *minPow = (int8_t) ((totalMin*(chan->ic_freq-data[last].channelValue) + + *minPow = (int8_t) ((totalMin*(freq-data[last].channelValue) + ar2425GetMinPower(ah, &data[last])*totalD)/totalD); return(AH_TRUE); } else { - if (chan->ic_freq == data[i].channelValue) { + if (freq == data[i].channelValue) { *maxPow = ar2425GetMaxPower(ah, &data[i]); *minPow = ar2425GetMinPower(ah, &data[i]); return(AH_TRUE); Modified: user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar5111.c ============================================================================== --- user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar5111.c Fri Jan 23 22:49:23 2009 (r187658) +++ user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar5111.c Sat Jan 24 00:14:34 2009 (r187659) @@ -77,6 +77,7 @@ static HAL_BOOL ar5111SetChannel(struct ath_hal *ah, const struct ieee80211_channel *chan) { #define CI_2GHZ_INDEX_CORRECTION 19 + uint16_t freq = ath_hal_gethwchannel(ah, chan); uint32_t refClk, reg32, data2111; int16_t chan5111, chanIEEE; @@ -140,7 +141,7 @@ ar5111SetChannel(struct ath_hal *ah, con { 1, 0x46, 180 } /* 2732 26 */ }; - OS_MARK(ah, AH_MARK_SETCHANNEL, chan->ic_freq); + OS_MARK(ah, AH_MARK_SETCHANNEL, freq); chanIEEE = chan->ic_ieee; if (IEEE80211_IS_CHAN_2GHZ(chan)) { @@ -153,7 +154,7 @@ ar5111SetChannel(struct ath_hal *ah, con | (ci->refClkSel << 4); chan5111 = ci->channel5111; txctl = OS_REG_READ(ah, AR_PHY_CCK_TX_CTRL); - if (chan->ic_freq == 2484) { + if (freq == 2484) { /* Enable channel spreading for channel 14 */ OS_REG_WRITE(ah, AR_PHY_CCK_TX_CTRL, txctl | AR_PHY_CCK_TX_CTRL_JAPAN); @@ -217,6 +218,7 @@ static HAL_BOOL ar5111SetRfRegs(struct ath_hal *ah, const struct ieee80211_channel *chan, uint16_t modesIndex, uint16_t *rfXpdGain) { + uint16_t freq = ath_hal_gethwchannel(ah, chan); struct ath_hal_5212 *ahp = AH5212(ah); const HAL_EEPROM *ee = AH_PRIVATE(ah)->ah_eeprom; uint16_t rfXpdGainFixed, rfPloSel, rfPwdXpd, gainI; @@ -224,19 +226,22 @@ ar5111SetRfRegs(struct ath_hal *ah, cons uint32_t ob2GHz, db2GHz, rfReg[N(ar5212Bank6_5111)]; int i, regWrites = 0; + HALDEBUG(ah, HAL_DEBUG_RFPARAM, "%s: chan %u/0x%x modesIndex %u\n", + __func__, chan->ic_freq, chan->ic_flags, modesIndex); + /* Setup rf parameters */ - switch (chan->ic_flags & IEEE80211_CHAN_ALL) { + switch (chan->ic_flags & IEEE80211_CHAN_ALLFULL) { case IEEE80211_CHAN_A: - if (4000 < chan->ic_freq && chan->ic_freq < 5260) { + if (4000 < freq && freq < 5260) { tempOB = ee->ee_ob1; tempDB = ee->ee_db1; - } else if (5260 <= chan->ic_freq && chan->ic_freq < 5500) { + } else if (5260 <= freq && freq < 5500) { tempOB = ee->ee_ob2; tempDB = ee->ee_db2; - } else if (5500 <= chan->ic_freq && chan->ic_freq < 5725) { + } else if (5500 <= freq && freq < 5725) { tempOB = ee->ee_ob3; tempDB = ee->ee_db3; - } else if (chan->ic_freq >= 5725) { + } else if (freq >= 5725) { *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-user@FreeBSD.ORG Sat Jan 24 01:34:22 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9C669106564A; Sat, 24 Jan 2009 01:34:22 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8B9568FC08; Sat, 24 Jan 2009 01:34:22 +0000 (UTC) (envelope-from kmacy@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 n0O1YMCo059477; Sat, 24 Jan 2009 01:34:22 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n0O1YMCE059476; Sat, 24 Jan 2009 01:34:22 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200901240134.n0O1YMCE059476@svn.freebsd.org> From: Kip Macy Date: Sat, 24 Jan 2009 01:34:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r187660 - user/kmacy/HEAD_fast_net/sys/netinet X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 24 Jan 2009 01:34:22 -0000 Author: kmacy Date: Sat Jan 24 01:34:22 2009 New Revision: 187660 URL: http://svn.freebsd.org/changeset/base/187660 Log: mp_maxid may not be valid ensure that we re-schedule on cpuid less than or equal to the current one Modified: user/kmacy/HEAD_fast_net/sys/netinet/tcp_timer.c Modified: user/kmacy/HEAD_fast_net/sys/netinet/tcp_timer.c ============================================================================== --- user/kmacy/HEAD_fast_net/sys/netinet/tcp_timer.c Sat Jan 24 00:14:34 2009 (r187659) +++ user/kmacy/HEAD_fast_net/sys/netinet/tcp_timer.c Sat Jan 24 01:34:22 2009 (r187660) @@ -119,7 +119,7 @@ int tcp_maxpersistidle; /* max idle time in persist */ int tcp_maxidle; -#define INP_CPU(inp) ((inp)->inp_flowid % mp_maxid) +#define INP_CPU(inp) min(curcpu, ((inp)->inp_flowid % mp_maxid)) /* * Tcp protocol timeout routine called every 500 ms. From owner-svn-src-user@FreeBSD.ORG Sat Jan 24 10:53:46 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2DAAA106564A; Sat, 24 Jan 2009 10:53:46 +0000 (UTC) (envelope-from edwin@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 1BA108FC0C; Sat, 24 Jan 2009 10:53:46 +0000 (UTC) (envelope-from edwin@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 n0OArkn3069810; Sat, 24 Jan 2009 10:53:46 GMT (envelope-from edwin@svn.freebsd.org) Received: (from edwin@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n0OArjl1069807; Sat, 24 Jan 2009 10:53:45 GMT (envelope-from edwin@svn.freebsd.org) Message-Id: <200901241053.n0OArjl1069807@svn.freebsd.org> From: Edwin Groothuis Date: Sat, 24 Jan 2009 10:53:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r187665 - in user/edwin/tzcode/tzcode2008e/head: lib/libc/stdtime usr.sbin/zic X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 24 Jan 2009 10:53:46 -0000 Author: edwin Date: Sat Jan 24 10:53:45 2009 New Revision: 187665 URL: http://svn.freebsd.org/changeset/base/187665 Log: Import changes of tzcode2009a. Modified: user/edwin/tzcode/tzcode2008e/head/lib/libc/stdtime/strftime.c user/edwin/tzcode/tzcode2008e/head/usr.sbin/zic/zdump.c user/edwin/tzcode/tzcode2008e/head/usr.sbin/zic/zic.c Modified: user/edwin/tzcode/tzcode2008e/head/lib/libc/stdtime/strftime.c ============================================================================== --- user/edwin/tzcode/tzcode2008e/head/lib/libc/stdtime/strftime.c Sat Jan 24 10:22:49 2009 (r187664) +++ user/edwin/tzcode/tzcode2008e/head/lib/libc/stdtime/strftime.c Sat Jan 24 10:53:45 2009 (r187665) @@ -17,7 +17,7 @@ #ifndef lint #ifndef NOID -static const char elsieid[] = "@(#)strftime.c 8.2"; +static const char elsieid[] = "@(#)strftime.c 8.3"; /* ** Based on the UCB version with the ID appearing below. ** This is ANSIish only when "multibyte character == plain character". @@ -175,7 +175,7 @@ label: { int warn2 = IN_SOME; - pt = _fmt(tptr->c_fmt, t, pt, ptlim, warnp); + pt = _fmt(tptr->c_fmt, t, pt, ptlim, &warn2); if (warn2 == IN_ALL) warn2 = IN_THIS; if (warn2 > *warnp) Modified: user/edwin/tzcode/tzcode2008e/head/usr.sbin/zic/zdump.c ============================================================================== --- user/edwin/tzcode/tzcode2008e/head/usr.sbin/zic/zdump.c Sat Jan 24 10:22:49 2009 (r187664) +++ user/edwin/tzcode/tzcode2008e/head/usr.sbin/zic/zdump.c Sat Jan 24 10:53:45 2009 (r187665) @@ -2,7 +2,7 @@ #ifndef lint static const char rcsid[] = "$FreeBSD$"; -static const char elsieid[] = "@(#)zdump.c 8.6"; +static const char elsieid[] = "@(#)zdump.c 8.8"; #endif /* not lint */ /* @@ -148,7 +148,7 @@ static size_t longest; static char * progname; static int warned; -static void usage(void); +static void usage(const char *progname, FILE *stream, int status); static char * abbr(struct tm * tmp); static void abbrok(const char * abbrp, const char * zone); static long delta(struct tm * newp, struct tm * oldp); @@ -233,6 +233,17 @@ const char * const zone; progname, zone, abbrp, wp); warned = TRUE; } + +static void +usage(const char *progname, FILE *stream, int status) +{ + (void) fprintf(stream, +_("%s: usage is %s [ --version ] [ --help ] [ -v ] [ -c [loyear,]hiyear ] zonename ...\n\ +\n\ +Report bugs to tz@elsie.nci.nih.gov.\n"), + progname, progname); + exit(status); +} int main(argc, argv) @@ -268,6 +279,8 @@ char * argv[]; for (i = 1; i < argc; ++i) if (strcmp(argv[i], "--version") == 0) { errx(EXIT_SUCCESS, "%s", elsieid); + } else if (strcmp(argv[i], "--help") == 0) { + usage(progname, stdout, EXIT_SUCCESS); } vflag = 0; cutarg = NULL; @@ -277,7 +290,7 @@ char * argv[]; else cutarg = optarg; if ((c != -1) || (optind == argc - 1 && strcmp(argv[optind], "=") == 0)) { - usage(); + usage(progname, stdout, EXIT_FAILURE); } if (vflag) { if (cutarg != NULL) { @@ -348,13 +361,9 @@ char * argv[]; (void) strncpy(buf, abbr(&tm), (sizeof buf) - 1); } for ( ; ; ) { - if (t >= cuthitime) + if (t >= cuthitime || t >= cuthitime - SECSPERHOUR * 12) break; newt = t + SECSPERHOUR * 12; - if (newt >= cuthitime) - break; - if (newt <= t) - break; newtmp = localtime(&newt); if (newtmp != NULL) newtm = *newtmp; @@ -465,14 +474,6 @@ const long y; return t; } -static void -usage(void) -{ - fprintf(stderr, -_("usage: zdump [--version] [-v] [-c [loyear,]hiyear] zonename ...\n")); - exit(EXIT_FAILURE); -} - static time_t hunt(char *name, time_t lot, time_t hit) { Modified: user/edwin/tzcode/tzcode2008e/head/usr.sbin/zic/zic.c ============================================================================== --- user/edwin/tzcode/tzcode2008e/head/usr.sbin/zic/zic.c Sat Jan 24 10:22:49 2009 (r187664) +++ user/edwin/tzcode/tzcode2008e/head/usr.sbin/zic/zic.c Sat Jan 24 10:53:45 2009 (r187665) @@ -3,7 +3,7 @@ ** 2006-07-17 by Arthur David Olson. */ -static const char elsieid[] = "@(#)zic.c 8.17"; +static const char elsieid[] = "@(#)zic.c 8.18"; #ifndef lint static const char rcsid[] = @@ -154,7 +154,7 @@ static void setboundaries(void); static void setgroup(gid_t *flag, const char *name); static void setuser(uid_t *flag, const char *name); static zic_t tadd(zic_t t1, long t2); -static void usage(void); +static void usage(FILE *stream, int status); static void writezone(const char * name, const char * string); static int yearistype(int year, const char * type); @@ -447,12 +447,15 @@ const char * const string; } static void -usage(void) +usage(FILE *stream, int status) { - (void) fprintf(stderr, _("usage is zic \ -[ --version ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n\ -\t[ -d directory ] [ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n")); - exit(EXIT_FAILURE); + (void) fprintf(stream, _("usage is %s \ +[ --version ] [--help] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n\ +\t[ -d directory ] [ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n\ +\n\ +Report bugs to tz@elsie.nci.nih.gov.\n"), + progname); + exit(status); } static const char * psxrules; @@ -493,6 +496,8 @@ char * argv[]; for (i = 1; i < argc; ++i) if (strcmp(argv[i], "--version") == 0) { errx(EXIT_SUCCESS, "%s", elsieid); + } else if (strcmp(argv[i], "--help") == 0) { + usage(stderr, EXIT_FAILURE); } while ((c = getopt(argc, argv, "Dd:g:l:m:p:L:u:vsy:")) != -1) switch (c) { @@ -560,7 +565,7 @@ _("more than one -L option specified")); break; } if (optind == argc - 1 && strcmp(argv[optind], "=") == 0) - usage(); /* usage message by request */ + usage(stderr, EXIT_FAILURE); /* usage message by request */ if (directory == NULL) directory = TZDIR; if (yitcommand == NULL)