PERFORCE change 156836 for review
John Baldwin
jhb at FreeBSD.org
Wed Jan 28 14:39:02 PST 2009
http://perforce.freebsd.org/chv.cgi?CH=156836
Change 156836 by jhb at jhb_jhbbsd on 2009/01/28 22:38:17
IFC @156833
Affected files ...
.. //depot/projects/smpng/sys/amd64/amd64/fpu.c#11 integrate
.. //depot/projects/smpng/sys/amd64/include/fpu.h#4 integrate
.. //depot/projects/smpng/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c#6 integrate
.. //depot/projects/smpng/sys/compat/linux/linux_stats.c#41 integrate
.. //depot/projects/smpng/sys/compat/svr4/svr4_types.h#5 integrate
.. //depot/projects/smpng/sys/conf/kmod.mk#70 integrate
.. //depot/projects/smpng/sys/conf/options#160 integrate
.. //depot/projects/smpng/sys/dev/ath/ath_hal/ah.c#3 integrate
.. //depot/projects/smpng/sys/dev/ath/ath_hal/ah.h#2 integrate
.. //depot/projects/smpng/sys/dev/ath/ath_hal/ah_internal.h#3 integrate
.. //depot/projects/smpng/sys/dev/ath/ath_hal/ah_regdomain.c#3 integrate
.. //depot/projects/smpng/sys/dev/ath/ath_hal/ar5210/ar5210.h#2 integrate
.. //depot/projects/smpng/sys/dev/ath/ath_hal/ar5210/ar5210_attach.c#2 integrate
.. //depot/projects/smpng/sys/dev/ath/ath_hal/ar5210/ar5210_misc.c#2 integrate
.. //depot/projects/smpng/sys/dev/ath/ath_hal/ar5210/ar5210_reset.c#3 integrate
.. //depot/projects/smpng/sys/dev/ath/ath_hal/ar5210/ar5210_xmit.c#2 integrate
.. //depot/projects/smpng/sys/dev/ath/ath_hal/ar5211/ar5211.h#2 integrate
.. //depot/projects/smpng/sys/dev/ath/ath_hal/ar5211/ar5211_attach.c#2 integrate
.. //depot/projects/smpng/sys/dev/ath/ath_hal/ar5211/ar5211_misc.c#3 integrate
.. //depot/projects/smpng/sys/dev/ath/ath_hal/ar5211/ar5211_reset.c#3 integrate
.. //depot/projects/smpng/sys/dev/ath/ath_hal/ar5211/ar5211_xmit.c#2 integrate
.. //depot/projects/smpng/sys/dev/ath/ath_hal/ar5212/ar2316.c#2 integrate
.. //depot/projects/smpng/sys/dev/ath/ath_hal/ar5212/ar2317.c#2 integrate
.. //depot/projects/smpng/sys/dev/ath/ath_hal/ar5212/ar2413.c#2 integrate
.. //depot/projects/smpng/sys/dev/ath/ath_hal/ar5212/ar2425.c#2 integrate
.. //depot/projects/smpng/sys/dev/ath/ath_hal/ar5212/ar5111.c#3 integrate
.. //depot/projects/smpng/sys/dev/ath/ath_hal/ar5212/ar5112.c#2 integrate
.. //depot/projects/smpng/sys/dev/ath/ath_hal/ar5212/ar5212.h#2 integrate
.. //depot/projects/smpng/sys/dev/ath/ath_hal/ar5212/ar5212_ani.c#3 integrate
.. //depot/projects/smpng/sys/dev/ath/ath_hal/ar5212/ar5212_attach.c#2 integrate
.. //depot/projects/smpng/sys/dev/ath/ath_hal/ar5212/ar5212_misc.c#4 integrate
.. //depot/projects/smpng/sys/dev/ath/ath_hal/ar5212/ar5212_reset.c#3 integrate
.. //depot/projects/smpng/sys/dev/ath/ath_hal/ar5212/ar5212_xmit.c#2 integrate
.. //depot/projects/smpng/sys/dev/ath/ath_hal/ar5212/ar5413.c#2 integrate
.. //depot/projects/smpng/sys/dev/ath/ath_hal/ar5312/ar5312.h#3 integrate
.. //depot/projects/smpng/sys/dev/ath/ath_hal/ar5312/ar5312_reset.c#3 integrate
.. //depot/projects/smpng/sys/dev/ath/ath_hal/ar5416/ar2133.c#2 integrate
.. //depot/projects/smpng/sys/dev/ath/ath_hal/ar5416/ar5416.h#2 integrate
.. //depot/projects/smpng/sys/dev/ath/ath_hal/ar5416/ar5416_ani.c#2 integrate
.. //depot/projects/smpng/sys/dev/ath/ath_hal/ar5416/ar5416_cal.c#2 integrate
.. //depot/projects/smpng/sys/dev/ath/ath_hal/ar5416/ar5416_cal.h#2 integrate
.. //depot/projects/smpng/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c#3 integrate
.. //depot/projects/smpng/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c#2 integrate
.. //depot/projects/smpng/sys/dev/ath/if_ath.c#64 integrate
.. //depot/projects/smpng/sys/dev/ath/if_athvar.h#40 integrate
.. //depot/projects/smpng/sys/dev/hwpmc/hwpmc_core.c#3 integrate
.. //depot/projects/smpng/sys/dev/hwpmc/hwpmc_intel.c#5 integrate
.. //depot/projects/smpng/sys/dev/hwpmc/pmc_events.h#5 integrate
.. //depot/projects/smpng/sys/dev/mmc/mmc.c#9 integrate
.. //depot/projects/smpng/sys/dev/ppbus/lpt.c#24 integrate
.. //depot/projects/smpng/sys/dev/puc/pucdata.c#46 integrate
.. //depot/projects/smpng/sys/dev/sound/pci/hda/hdac.c#24 integrate
.. //depot/projects/smpng/sys/dev/usb/u3g.c#5 integrate
.. //depot/projects/smpng/sys/dev/usb/usbdevs#124 integrate
.. //depot/projects/smpng/sys/dev/usb2/bluetooth/ng_ubt2.c#5 integrate
.. //depot/projects/smpng/sys/dev/usb2/bluetooth/ng_ubt2_var.h#3 integrate
.. //depot/projects/smpng/sys/dev/usb2/bluetooth/ubtbcmfw2.c#3 integrate
.. //depot/projects/smpng/sys/dev/usb2/controller/uhci2.c#3 integrate
.. //depot/projects/smpng/sys/dev/usb2/controller/usb2_controller.h#3 integrate
.. //depot/projects/smpng/sys/dev/usb2/core/usb2_hub.c#4 integrate
.. //depot/projects/smpng/sys/dev/usb2/include/usb2_devid.h#4 integrate
.. //depot/projects/smpng/sys/dev/usb2/include/usb2_devtable.h#4 integrate
.. //depot/projects/smpng/sys/dev/usb2/include/usb2_ioctl.h#4 integrate
.. //depot/projects/smpng/sys/dev/usb2/quirk/usb2_quirk.c#4 integrate
.. //depot/projects/smpng/sys/dev/usb2/serial/u3g2.c#3 integrate
.. //depot/projects/smpng/sys/dev/usb2/storage/umass2.c#4 integrate
.. //depot/projects/smpng/sys/dev/xen/blkback/blkback.c#3 integrate
.. //depot/projects/smpng/sys/fs/cd9660/cd9660_lookup.c#3 integrate
.. //depot/projects/smpng/sys/fs/cd9660/cd9660_node.c#6 integrate
.. //depot/projects/smpng/sys/fs/cd9660/cd9660_node.h#3 integrate
.. //depot/projects/smpng/sys/fs/cd9660/cd9660_rrip.c#6 integrate
.. //depot/projects/smpng/sys/fs/cd9660/cd9660_vfsops.c#9 integrate
.. //depot/projects/smpng/sys/fs/cd9660/cd9660_vnops.c#6 integrate
.. //depot/projects/smpng/sys/fs/devfs/devfs_devs.c#30 integrate
.. //depot/projects/smpng/sys/fs/fifofs/fifo_vnops.c#48 integrate
.. //depot/projects/smpng/sys/kern/kern_jail.c#63 integrate
.. //depot/projects/smpng/sys/kern/kern_mib.c#40 integrate
.. //depot/projects/smpng/sys/kern/kern_sysctl.c#58 integrate
.. //depot/projects/smpng/sys/kern/subr_smp.c#53 integrate
.. //depot/projects/smpng/sys/kern/tty.c#83 integrate
.. //depot/projects/smpng/sys/kern/vfs_cache.c#48 integrate
.. //depot/projects/smpng/sys/modules/usb2/Makefile#4 integrate
.. //depot/projects/smpng/sys/net80211/_ieee80211.h#14 integrate
.. //depot/projects/smpng/sys/net80211/ieee80211.c#33 integrate
.. //depot/projects/smpng/sys/net80211/ieee80211.h#17 integrate
.. //depot/projects/smpng/sys/net80211/ieee80211_crypto.h#13 integrate
.. //depot/projects/smpng/sys/net80211/ieee80211_ddb.c#9 integrate
.. //depot/projects/smpng/sys/net80211/ieee80211_ht.h#7 integrate
.. //depot/projects/smpng/sys/net80211/ieee80211_ioctl.c#41 integrate
.. //depot/projects/smpng/sys/net80211/ieee80211_ioctl.h#19 integrate
.. //depot/projects/smpng/sys/net80211/ieee80211_node.h#25 integrate
.. //depot/projects/smpng/sys/net80211/ieee80211_regdomain.c#6 integrate
.. //depot/projects/smpng/sys/net80211/ieee80211_regdomain.h#3 integrate
.. //depot/projects/smpng/sys/net80211/ieee80211_var.h#33 integrate
.. //depot/projects/smpng/sys/netinet/ip_fw2.c#101 integrate
.. //depot/projects/smpng/sys/netipsec/ipsec_mbuf.c#14 integrate
.. //depot/projects/smpng/sys/nfs4client/nfs4_subs.c#6 integrate
.. //depot/projects/smpng/sys/nfsclient/nfs_vfsops.c#69 integrate
.. //depot/projects/smpng/sys/nfsclient/nfs_vnops.c#80 integrate
.. //depot/projects/smpng/sys/nfsserver/nfs_srvsubs.c#47 integrate
.. //depot/projects/smpng/sys/opencrypto/cryptosoft.c#15 integrate
.. //depot/projects/smpng/sys/sys/conf.h#56 integrate
.. //depot/projects/smpng/sys/sys/param.h#133 integrate
.. //depot/projects/smpng/sys/sys/pmc.h#15 integrate
.. //depot/projects/smpng/sys/sys/types.h#38 integrate
.. //depot/projects/smpng/sys/sys/vnode.h#94 integrate
.. //depot/projects/smpng/sys/ufs/ffs/ffs_alloc.c#49 integrate
.. //depot/projects/smpng/sys/ufs/ffs/ffs_balloc.c#21 integrate
.. //depot/projects/smpng/sys/ufs/ffs/ffs_extern.h#26 integrate
.. //depot/projects/smpng/sys/ufs/ffs/ffs_inode.c#32 integrate
.. //depot/projects/smpng/sys/ufs/ffs/ffs_vnops.c#63 integrate
Differences ...
==== //depot/projects/smpng/sys/amd64/amd64/fpu.c#11 (text+ko) ====
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/fpu.c,v 1.159 2006/06/19 22:36:01 davidxu Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/fpu.c,v 1.160 2009/01/28 20:35:16 jhb Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -391,6 +391,7 @@
{
struct pcb *pcb;
register_t s;
+ u_short control;
if (PCPU_GET(fpcurthread) == curthread) {
printf("fpudna: fpcurthread == curthread %d times\n",
@@ -421,6 +422,10 @@
* explicitly load sanitized registers.
*/
fxrstor(&fpu_cleanstate);
+ if (pcb->pcb_flags & PCB_32BIT) {
+ control = __INITIAL_FPUCW_I386__;
+ fldcw(&control);
+ }
pcb->pcb_flags |= PCB_FPUINITDONE;
} else
fxrstor(&pcb->pcb_save);
==== //depot/projects/smpng/sys/amd64/include/fpu.h#4 (text+ko) ====
@@ -30,7 +30,7 @@
* SUCH DAMAGE.
*
* from: @(#)npx.h 5.3 (Berkeley) 1/18/91
- * $FreeBSD: src/sys/amd64/include/fpu.h,v 1.33 2004/04/05 21:25:51 imp Exp $
+ * $FreeBSD: src/sys/amd64/include/fpu.h,v 1.34 2009/01/28 20:35:16 jhb Exp $
*/
/*
@@ -92,6 +92,7 @@
* SSE2 based math. For FreeBSD/amd64, we go with the default settings.
*/
#define __INITIAL_FPUCW__ 0x037F
+#define __INITIAL_FPUCW_I386__ 0x127F
#define __INITIAL_MXCSR__ 0x1F80
#define __INITIAL_MXCSR_MASK__ 0xFFBF
==== //depot/projects/smpng/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c#6 (text+ko) ====
@@ -494,7 +494,7 @@
static uint64_t
zfs_expldev(dev_t dev)
{
- return (((uint64_t)umajor(dev) << NBITSMINOR64) | uminor(dev));
+ return (((uint64_t)major(dev) << NBITSMINOR64) | minor(dev));
}
/*
* Special cmpldev for ZFS private use.
==== //depot/projects/smpng/sys/compat/linux/linux_stats.c#41 (text+ko) ====
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/linux/linux_stats.c,v 1.93 2008/08/20 08:31:58 ed Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/linux/linux_stats.c,v 1.94 2009/01/28 17:57:16 ed Exp $");
#include "opt_compat.h"
#include "opt_mac.h"
@@ -88,7 +88,7 @@
/* XXX this may not be quite right */
/* Map major number to 0 */
- tbuf.st_dev = uminor(buf->st_dev) & 0xf;
+ tbuf.st_dev = minor(buf->st_dev) & 0xf;
tbuf.st_rdev = buf->st_rdev & 0xff;
}
dev_relthread(dev);
@@ -156,7 +156,7 @@
struct l_newstat tbuf;
bzero(&tbuf, sizeof(tbuf));
- tbuf.st_dev = uminor(buf->st_dev) | (umajor(buf->st_dev) << 8);
+ tbuf.st_dev = minor(buf->st_dev) | (major(buf->st_dev) << 8);
tbuf.st_ino = buf->st_ino;
tbuf.st_mode = buf->st_mode;
tbuf.st_nlink = buf->st_nlink;
@@ -487,7 +487,7 @@
struct l_stat64 lbuf;
bzero(&lbuf, sizeof(lbuf));
- lbuf.st_dev = uminor(buf->st_dev) | (umajor(buf->st_dev) << 8);
+ lbuf.st_dev = minor(buf->st_dev) | (major(buf->st_dev) << 8);
lbuf.st_ino = buf->st_ino;
lbuf.st_mode = buf->st_mode;
lbuf.st_nlink = buf->st_nlink;
==== //depot/projects/smpng/sys/compat/svr4/svr4_types.h#5 (text+ko) ====
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $FreeBSD: src/sys/compat/svr4/svr4_types.h,v 1.6 2005/01/05 22:34:37 imp Exp $
+ * $FreeBSD: src/sys/compat/svr4/svr4_types.h,v 1.7 2009/01/28 17:57:16 ed Exp $
*/
#ifndef _SVR4_TYPES_H_
@@ -69,13 +69,13 @@
(((y) << 0) & 0x00ff)))
#define svr4_to_bsd_odev_t(d) makedev(svr4_omajor(d), svr4_ominor(d))
-#define bsd_to_svr4_odev_t(d) svr4_omakedev(umajor(d), uminor(d))
+#define bsd_to_svr4_odev_t(d) svr4_omakedev(major(d), minor(d))
#define svr4_major(x) ((int32_t)((((x) & 0xfffc0000) >> 18)))
#define svr4_minor(x) ((int32_t)((((x) & 0x0003ffff) >> 0)))
#define svr4_makedev(x,y) ((svr4_dev_t)((((x) << 18) & 0xfffc0000) | \
(((y) << 0) & 0x0003ffff)))
#define svr4_to_bsd_dev_t(d) makedev(svr4_major(d), svr4_minor(d))
-#define bsd_to_svr4_dev_t(d) svr4_makedev(umajor(d), uminor(d))
+#define bsd_to_svr4_dev_t(d) svr4_makedev(major(d), minor(d))
#endif /* !_SVR4_TYPES_H_ */
==== //depot/projects/smpng/sys/conf/kmod.mk#70 (text+ko) ====
@@ -1,5 +1,5 @@
# From: @(#)bsd.prog.mk 5.26 (Berkeley) 6/25/91
-# $FreeBSD: src/sys/conf/kmod.mk,v 1.224 2008/11/04 03:42:01 alfred Exp $
+# $FreeBSD: src/sys/conf/kmod.mk,v 1.225 2009/01/26 17:00:58 rdivacky Exp $
#
# The include file <bsd.kmod.mk> handles building and installing loadable
# kernel modules.
@@ -89,10 +89,9 @@
.if ${CC} == "icc"
NOSTDINC= -X
.else
-C_DIALECT= -std=c99
+CSTD= c99
NOSTDINC= -nostdinc
.endif
-CFLAGS+= ${C_DIALECT}
CFLAGS:= ${CFLAGS:N-I*} ${NOSTDINC} ${INCLMAGIC} ${CFLAGS:M-I*}
.if defined(KERNBUILDDIR)
CFLAGS+= -DHAVE_KERNEL_OPTION_HEADERS -include ${KERNBUILDDIR}/opt_global.h
==== //depot/projects/smpng/sys/conf/options#160 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/options,v 1.657 2009/01/17 16:37:13 ed Exp $
+# $FreeBSD: src/sys/conf/options,v 1.658 2009/01/28 18:00:22 sam Exp $
#
# On the handling of kernel options
#
@@ -762,7 +762,7 @@
AH_PRIVATE_DIAG opt_ah.h
AH_NEED_DESC_SWAP opt_ah.h
AH_USE_INIPDGAIN opt_ah.h
-AH_SUPPORT_11D opt_ah.h
+AH_MAXCHAN opt_ah.h
# options for the Marvell 8335 wireless driver
MALO_DEBUG opt_malo.h
==== //depot/projects/smpng/sys/dev/ath/ath_hal/ah.c#3 (text+ko) ====
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002-2008 Sam Leffler, Errno Consulting
+ * Copyright (c) 2002-2009 Sam Leffler, Errno Consulting
* Copyright (c) 2002-2008 Atheros Communications, Inc.
*
* Permission to use, copy, modify, and/or distribute this software for any
@@ -14,7 +14,7 @@
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
- * $FreeBSD: src/sys/dev/ath/ath_hal/ah.c,v 1.2 2008/12/13 03:48:33 sam Exp $
+ * $FreeBSD: src/sys/dev/ath/ath_hal/ah.c,v 1.3 2009/01/28 18:00:22 sam Exp $
*/
#include "opt_ah.h"
@@ -78,6 +78,15 @@
return AH_NULL;
}
+/*
+ * Return the mask of available modes based on the hardware capabilities.
+ */
+u_int
+ath_hal_getwirelessmodes(struct ath_hal*ah)
+{
+ return ath_hal_getWirelessModes(ah);
+}
+
/* linker set of registered RF backends */
OS_SET_DECLARE(ah_rfs, struct ath_hal_rf);
@@ -152,8 +161,10 @@
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:
@@ -187,8 +198,8 @@
#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);
@@ -197,8 +208,8 @@
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);
@@ -252,71 +263,6 @@
return txTime;
}
-static __inline int
-mapgsm(u_int freq, u_int flags)
-{
- freq *= 10;
- if (flags & CHANNEL_QUARTER)
- freq += 5;
- else if (flags & CHANNEL_HALF)
- freq += 10;
- else
- freq += 20;
- return (freq - 24220) / 5;
-}
-
-static __inline int
-mappsb(u_int freq, u_int flags)
-{
- return ((freq * 10) + (((freq % 5) == 2) ? 5 : 0) - 49400) / 5;
-}
-
-/*
- * Convert GHz frequency to IEEE channel number.
- */
-int
-ath_hal_mhz2ieee(struct ath_hal *ah, u_int freq, u_int flags)
-{
- if (flags & CHANNEL_2GHZ) { /* 2GHz band */
- if (freq == 2484)
- return 14;
- if (freq < 2484) {
- if (ath_hal_isgsmsku(ah))
- return mapgsm(freq, flags);
- return ((int)freq - 2407) / 5;
- } else
- return 15 + ((freq - 2512) / 20);
- } else if (flags & CHANNEL_5GHZ) {/* 5Ghz band */
- if (ath_hal_ispublicsafetysku(ah) &&
- IS_CHAN_IN_PUBLIC_SAFETY_BAND(freq)) {
- return mappsb(freq, flags);
- } else if ((flags & CHANNEL_A) && (freq <= 5000)) {
- return (freq - 4000) / 5;
- } else {
- return (freq - 5000) / 5;
- }
- } else { /* either, guess */
- if (freq == 2484)
- return 14;
- if (freq < 2484) {
- if (ath_hal_isgsmsku(ah))
- return mapgsm(freq, flags);
- return ((int)freq - 2407) / 5;
- }
- if (freq < 5000) {
- if (ath_hal_ispublicsafetysku(ah) &&
- IS_CHAN_IN_PUBLIC_SAFETY_BAND(freq)) {
- return mappsb(freq, flags);
- } else if (freq > 4900) {
- return (freq - 4000) / 5;
- } else {
- return 15 + ((freq - 2512) / 20);
- }
- }
- return (freq - 5000) / 5;
- }
-}
-
typedef enum {
WIRELESS_MODE_11a = 0,
WIRELESS_MODE_TURBO = 1,
@@ -328,15 +274,15 @@
} WIRELESS_MODE;
static WIRELESS_MODE
-ath_hal_chan2wmode(struct ath_hal *ah, const HAL_CHANNEL *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;
}
@@ -350,17 +296,17 @@
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 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];
@@ -370,17 +316,17 @@
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 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];
@@ -505,11 +451,7 @@
}
return HAL_ENOTSUPP;
case HAL_CAP_11D:
-#ifdef AH_SUPPORT_11D
return HAL_OK;
-#else
- return HAL_ENOTSUPP;
-#endif
case HAL_CAP_RXORN_FATAL: /* HAL_INT_RXORN treated as fatal */
return AH_PRIVATE(ah)->ah_rxornIsFatal ? HAL_OK : HAL_ENOTSUPP;
case HAL_CAP_HT:
@@ -764,7 +706,7 @@
* 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 struct ieee80211_channel *chan)
{
HAL_CHANNEL_INTERNAL *ichan;
@@ -772,7 +714,7 @@
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) {
@@ -811,8 +753,8 @@
c = &AH_PRIVATE(ah)->ah_channels[i];
if (c->rawNoiseFloor >= 0)
continue;
- mode = ath_hal_chan2wmode(ah, (HAL_CHANNEL *) 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)) {
@@ -838,9 +780,8 @@
/* 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);
}
}
==== //depot/projects/smpng/sys/dev/ath/ath_hal/ah.h#2 (text+ko) ====
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002-2008 Sam Leffler, Errno Consulting
+ * Copyright (c) 2002-2009 Sam Leffler, Errno Consulting
* Copyright (c) 2002-2008 Atheros Communications, Inc.
*
* Permission to use, copy, modify, and/or distribute this software for any
@@ -14,7 +14,7 @@
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
- * $Id: ah.h,v 1.15 2008/11/15 03:43:50 sam Exp $
+ * $FreeBSD: src/sys/dev/ath/ath_hal/ah.h,v 1.2 2009/01/28 18:00:22 sam Exp $
*/
#ifndef _ATH_AH_H_
@@ -63,6 +63,8 @@
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,65 +364,9 @@
HAL_RFGAIN_NEED_CHANGE = 2
} HAL_RFGAIN;
-/*
- * Channels are specified by frequency.
- */
-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 */
-} HAL_CHANNEL;
-
-/* channelFlags */
-#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 */
+typedef uint16_t HAL_CTRY_CODE; /* country code */
+typedef uint16_t HAL_REG_DOMAIN; /* regulatory domain code */
-/* 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_DFS_CLEAR 0x08 /* if channel has been checked for DFS */
-
-#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
@@ -434,14 +380,6 @@
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 */
@@ -630,6 +568,7 @@
struct ath_desc;
struct ath_tx_status;
struct ath_rx_status;
+struct ieee80211_channel;
/*
* Hardware Access Layer (HAL) API.
@@ -665,16 +604,18 @@
/* Reset functions */
HAL_BOOL __ahdecl(*ah_reset)(struct ath_hal *, HAL_OPMODE,
- HAL_CHANNEL *, HAL_BOOL bChannelChange,
- HAL_STATUS *status);
+ 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 *);
- 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*,
+ struct ieee80211_channel *, HAL_BOOL *);
+ HAL_BOOL __ahdecl(*ah_perCalibrationN)(struct ath_hal *,
+ struct ieee80211_channel *, u_int chainMask,
+ HAL_BOOL longCal, HAL_BOOL *isCalDone);
+ HAL_BOOL __ahdecl(*ah_resetCalValid)(struct ath_hal *,
+ const struct ieee80211_channel *);
HAL_BOOL __ahdecl(*ah_setTxPowerLimit)(struct ath_hal *, uint32_t);
/* Transmit functions */
@@ -735,7 +676,8 @@
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 struct ieee80211_channel *);
void __ahdecl(*ah_procMibEvent)(struct ath_hal *,
const HAL_NODE_STATS *);
@@ -804,7 +746,8 @@
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 struct ieee80211_channel *);
/* Beacon Management Functions */
void __ahdecl(*ah_setBeaconTimers)(struct ath_hal*,
@@ -847,53 +790,64 @@
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.
+ * 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.
*/
-extern HAL_BOOL __ahdecl ath_hal_init_channels(struct ath_hal *,
- HAL_CHANNEL *chans, u_int maxchans, u_int *nchans,
- uint8_t *regclassids, u_int maxregids, u_int *nregids,
- HAL_CTRY_CODE cc, u_int modeSelect,
- HAL_BOOL enableOutdoor, HAL_BOOL enableExtendedChannels);
+struct ieee80211_channel;
/*
- * Calibrate noise floor data following a channel scan or similar.
- * This must be called prior retrieving noise floor data.
+ * Return a list of channels according to the specified regulatory.
*/
-extern void __ahdecl ath_hal_process_noisefloor(struct ath_hal *ah);
+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 bit mask of wireless modes supported by the hardware.
+ * Return a list of channels and install it as the current operating
+ * regulatory list.
*/
-extern u_int __ahdecl ath_hal_getwirelessmodes(struct ath_hal*, HAL_CTRY_CODE);
+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);
/*
- * Calculate the transmit duration of a frame.
+ * Install the list of channels as the current operating regulatory
+ * and setup related state according to the country code and sku.
*/
-extern uint16_t __ahdecl ath_hal_computetxtime(struct ath_hal *,
- const HAL_RATE_TABLE *rates, uint32_t frameLen,
- uint16_t rateix, HAL_BOOL shortPreamble);
+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);
/*
- * Return if device is public safety.
+ * Calibrate noise floor data following a channel scan or similar.
+ * This must be called prior retrieving noise floor data.
*/
-extern HAL_BOOL __ahdecl ath_hal_ispublicsafetysku(struct ath_hal *);
+extern void __ahdecl ath_hal_process_noisefloor(struct ath_hal *ah);
/*
- * Return if device is operating in 900 MHz band.
+ * Return bit mask of wireless modes supported by the hardware.
*/
-extern HAL_BOOL ath_hal_isgsmsku(struct ath_hal *);
+extern u_int __ahdecl ath_hal_getwirelessmodes(struct ath_hal*);
/*
- * Convert between IEEE channel number and channel frequency
- * using the specified channel flags; e.g. CHANNEL_2GHZ.
+ * Calculate the transmit duration of a frame.
*/
-extern int __ahdecl ath_hal_mhz2ieee(struct ath_hal *, u_int mhz, u_int flags);
+extern uint16_t __ahdecl ath_hal_computetxtime(struct ath_hal *,
+ const HAL_RATE_TABLE *rates, uint32_t frameLen,
+ uint16_t rateix, HAL_BOOL shortPreamble);
#endif /* _ATH_AH_H_ */
==== //depot/projects/smpng/sys/dev/ath/ath_hal/ah_internal.h#3 (text+ko) ====
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002-2008 Sam Leffler, Errno Consulting
+ * Copyright (c) 2002-2009 Sam Leffler, Errno Consulting
* Copyright (c) 2002-2008 Atheros Communications, Inc.
*
* Permission to use, copy, modify, and/or distribute this software for any
@@ -14,7 +14,7 @@
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
- * $FreeBSD: src/sys/dev/ath/ath_hal/ah_internal.h,v 1.2 2008/12/13 03:50:31 sam Exp $
+ * $FreeBSD: src/sys/dev/ath/ath_hal/ah_internal.h,v 1.3 2009/01/28 18:00:22 sam Exp $
*/
#ifndef _ATH_AH_INTERAL_H_
#define _ATH_AH_INTERAL_H_
@@ -27,6 +27,8 @@
#define AH_MIN(a,b) ((a)<(b)?(a):(b))
#define AH_MAX(a,b) ((a)>(b)?(a):(b))
+#include <net80211/_ieee80211.h>
+
#ifndef NBBY
#define NBBY 8 /* number of bits/byte */
#endif
@@ -108,32 +110,44 @@
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.
+ * 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.
*/
typedef struct {
- uint32_t channelFlags;
- uint16_t channel; /* NB: must be first for casting */
+ uint16_t channel; /* h/w frequency, NB: may be mapped */
uint8_t privFlags;
- int8_t maxRegTxPower;
- int8_t maxTxPower;
- int8_t minTxPower; /* as above... */
-
- HAL_BOOL bssSendHere;
- uint8_t gainI;
- HAL_BOOL iqCalValid;
- uint8_t calValid; /* bitmask of cal types */
+#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;
int16_t rawNoiseFloor;
int16_t noiseFloorAdjust;
- int8_t antennaMax;
- uint32_t regDmnFlags; /* Flags for channel use in reg */
- uint32_t conformanceTestLimit; /* conformance test limit from reg domain */
- uint16_t mainSpur; /* cached spur value for this cahnnel */
+ uint16_t mainSpur; /* cached spur value for this channel */
} HAL_CHANNEL_INTERNAL;
+/* 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,
@@ -189,6 +203,8 @@
uint8_t halNumAntCfg5GHz;
} HAL_CAPABILITIES;
+struct regDomain;
+
/*
* The ``private area'' follows immediately after the ``public area''
* in the data structure returned by ath_hal_attach. Private data are
@@ -228,7 +244,7 @@
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);
+ struct ieee80211_channel *);
int16_t (*ah_getNfAdjust)(struct ath_hal *,
const HAL_CHANNEL_INTERNAL*);
void (*ah_getNoiseFloor)(struct ath_hal *,
@@ -255,8 +271,8 @@
uint16_t ah_analog5GhzRev; /* 2GHz radio revision */
uint16_t ah_analog2GhzRev; /* 5GHz radio revision */
-
HAL_OPMODE ah_opmode; /* operating mode from reset */
+ 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 */
@@ -267,14 +283,13 @@
/*
* State for regulatory domain handling.
*/
- HAL_REG_DOMAIN ah_currentRD; /* Current regulatory domain */
- HAL_CTRY_CODE ah_countryCode; /* current country code */
- HAL_CHANNEL_INTERNAL ah_channels[256]; /* calculated channel list */
- u_int ah_nchan; /* valid channels in list */
- HAL_CHANNEL_INTERNAL *ah_curchan; /* current channel */
+ HAL_REG_DOMAIN ah_currentRD; /* EEPROM regulatory domain */
+ 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 */
uint8_t ah_coverageClass; /* coverage class */
- HAL_BOOL ah_regdomainUpdate; /* regdomain is updated? */
/*
* RF Silent handling; setup according to the EEPROM.
*/
@@ -307,8 +322,8 @@
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) \
@@ -327,38 +342,22 @@
#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
*/
#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))
-
-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
@@ -411,43 +410,11 @@
#define HAL_BIN_WIDTH_TURBO_100HZ 6250
#define HAL_MAX_BINS_ALLOWED 28
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list