svn commit: r225459 - in user/attilio/vmcontention: contrib/top
crypto/openssl/ssl etc sbin/geom/class/part share/mk sys/conf
sys/dev/ath sys/dev/ath/ath_hal sys/dev/ath/ath_hal/ar5210
sys/dev/ath/...
Attilio Rao
attilio at FreeBSD.org
Fri Sep 9 09:39:27 UTC 2011
Author: attilio
Date: Fri Sep 9 09:39:26 2011
New Revision: 225459
URL: http://svn.freebsd.org/changeset/base/225459
Log:
MFC
Modified:
user/attilio/vmcontention/crypto/openssl/ssl/s3_lib.c
user/attilio/vmcontention/crypto/openssl/ssl/s3_srvr.c
user/attilio/vmcontention/etc/pf.os
user/attilio/vmcontention/sbin/geom/class/part/geom_part.c
user/attilio/vmcontention/sys/conf/NOTES
user/attilio/vmcontention/sys/conf/options
user/attilio/vmcontention/sys/dev/ath/ath_hal/ah.c
user/attilio/vmcontention/sys/dev/ath/ath_hal/ah.h
user/attilio/vmcontention/sys/dev/ath/ath_hal/ah_internal.h
user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5210/ar5210.h
user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5210/ar5210_attach.c
user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5210/ar5210_beacon.c
user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5211/ar5211.h
user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5211/ar5211_attach.c
user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5211/ar5211_beacon.c
user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5212/ar5212.h
user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5212/ar5212_attach.c
user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5212/ar5212_beacon.c
user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5416/ar5416.h
user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c
user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5416/ar5416_beacon.c
user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5416/ar5416_misc.c
user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c
user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5416/ar5416reg.h
user/attilio/vmcontention/sys/dev/ath/if_ath.c
user/attilio/vmcontention/sys/dev/ath/if_athvar.h
user/attilio/vmcontention/sys/dev/mfi/mfi.c
user/attilio/vmcontention/sys/dev/vge/if_vge.c
user/attilio/vmcontention/sys/dev/vge/if_vgereg.h
user/attilio/vmcontention/sys/kern/kern_rctl.c
user/attilio/vmcontention/sys/kern/kern_shutdown.c
user/attilio/vmcontention/sys/kern/vfs_bio.c
user/attilio/vmcontention/sys/sys/buf.h
user/attilio/vmcontention/usr.sbin/bsdinstall/scripts/netconfig
user/attilio/vmcontention/usr.sbin/bsdinstall/scripts/netconfig_ipv4
user/attilio/vmcontention/usr.sbin/bsdinstall/scripts/netconfig_ipv6
Directory Properties:
user/attilio/vmcontention/ (props changed)
user/attilio/vmcontention/cddl/contrib/opensolaris/ (props changed)
user/attilio/vmcontention/contrib/bind9/ (props changed)
user/attilio/vmcontention/contrib/binutils/ (props changed)
user/attilio/vmcontention/contrib/bzip2/ (props changed)
user/attilio/vmcontention/contrib/compiler-rt/ (props changed)
user/attilio/vmcontention/contrib/dialog/ (props changed)
user/attilio/vmcontention/contrib/ee/ (props changed)
user/attilio/vmcontention/contrib/expat/ (props changed)
user/attilio/vmcontention/contrib/file/ (props changed)
user/attilio/vmcontention/contrib/gcc/ (props changed)
user/attilio/vmcontention/contrib/gdb/ (props changed)
user/attilio/vmcontention/contrib/gdtoa/ (props changed)
user/attilio/vmcontention/contrib/gnu-sort/ (props changed)
user/attilio/vmcontention/contrib/groff/ (props changed)
user/attilio/vmcontention/contrib/less/ (props changed)
user/attilio/vmcontention/contrib/libpcap/ (props changed)
user/attilio/vmcontention/contrib/libstdc++/ (props changed)
user/attilio/vmcontention/contrib/llvm/ (props changed)
user/attilio/vmcontention/contrib/llvm/tools/clang/ (props changed)
user/attilio/vmcontention/contrib/ncurses/ (props changed)
user/attilio/vmcontention/contrib/netcat/ (props changed)
user/attilio/vmcontention/contrib/ntp/ (props changed)
user/attilio/vmcontention/contrib/one-true-awk/ (props changed)
user/attilio/vmcontention/contrib/openbsm/ (props changed)
user/attilio/vmcontention/contrib/openpam/ (props changed)
user/attilio/vmcontention/contrib/pf/ (props changed)
user/attilio/vmcontention/contrib/sendmail/ (props changed)
user/attilio/vmcontention/contrib/tcpdump/ (props changed)
user/attilio/vmcontention/contrib/tcsh/ (props changed)
user/attilio/vmcontention/contrib/tnftp/ (props changed)
user/attilio/vmcontention/contrib/top/ (props changed)
user/attilio/vmcontention/contrib/top/install-sh (props changed)
user/attilio/vmcontention/contrib/tzcode/stdtime/ (props changed)
user/attilio/vmcontention/contrib/tzcode/zic/ (props changed)
user/attilio/vmcontention/contrib/tzdata/ (props changed)
user/attilio/vmcontention/contrib/wpa/ (props changed)
user/attilio/vmcontention/contrib/xz/ (props changed)
user/attilio/vmcontention/crypto/openssh/ (props changed)
user/attilio/vmcontention/crypto/openssl/ (props changed)
user/attilio/vmcontention/gnu/lib/ (props changed)
user/attilio/vmcontention/gnu/usr.bin/binutils/ (props changed)
user/attilio/vmcontention/gnu/usr.bin/cc/cc_tools/ (props changed)
user/attilio/vmcontention/gnu/usr.bin/gdb/ (props changed)
user/attilio/vmcontention/lib/libc/ (props changed)
user/attilio/vmcontention/lib/libc/stdtime/ (props changed)
user/attilio/vmcontention/lib/libutil/ (props changed)
user/attilio/vmcontention/lib/libz/ (props changed)
user/attilio/vmcontention/sbin/ (props changed)
user/attilio/vmcontention/sbin/ipfw/ (props changed)
user/attilio/vmcontention/share/mk/bsd.arch.inc.mk (props changed)
user/attilio/vmcontention/share/zoneinfo/ (props changed)
user/attilio/vmcontention/sys/ (props changed)
user/attilio/vmcontention/sys/amd64/include/xen/ (props changed)
user/attilio/vmcontention/sys/boot/ (props changed)
user/attilio/vmcontention/sys/boot/i386/efi/ (props changed)
user/attilio/vmcontention/sys/boot/ia64/efi/ (props changed)
user/attilio/vmcontention/sys/boot/ia64/ski/ (props changed)
user/attilio/vmcontention/sys/boot/powerpc/boot1.chrp/ (props changed)
user/attilio/vmcontention/sys/boot/powerpc/ofw/ (props changed)
user/attilio/vmcontention/sys/cddl/contrib/opensolaris/ (props changed)
user/attilio/vmcontention/sys/conf/ (props changed)
user/attilio/vmcontention/sys/contrib/dev/acpica/ (props changed)
user/attilio/vmcontention/sys/contrib/octeon-sdk/ (props changed)
user/attilio/vmcontention/sys/contrib/pf/ (props changed)
user/attilio/vmcontention/sys/contrib/x86emu/ (props changed)
user/attilio/vmcontention/usr.bin/calendar/ (props changed)
user/attilio/vmcontention/usr.bin/csup/ (props changed)
user/attilio/vmcontention/usr.bin/procstat/ (props changed)
user/attilio/vmcontention/usr.sbin/ndiscvt/ (props changed)
user/attilio/vmcontention/usr.sbin/rtadvctl/ (props changed)
user/attilio/vmcontention/usr.sbin/rtadvd/ (props changed)
user/attilio/vmcontention/usr.sbin/zic/ (props changed)
Modified: user/attilio/vmcontention/crypto/openssl/ssl/s3_lib.c
==============================================================================
--- user/attilio/vmcontention/crypto/openssl/ssl/s3_lib.c Fri Sep 9 07:44:14 2011 (r225458)
+++ user/attilio/vmcontention/crypto/openssl/ssl/s3_lib.c Fri Sep 9 09:39:26 2011 (r225459)
@@ -1722,11 +1722,17 @@ void ssl3_clear(SSL *s)
}
#ifndef OPENSSL_NO_DH
if (s->s3->tmp.dh != NULL)
+ {
DH_free(s->s3->tmp.dh);
+ s->s3->tmp.dh = NULL;
+ }
#endif
#ifndef OPENSSL_NO_ECDH
if (s->s3->tmp.ecdh != NULL)
+ {
EC_KEY_free(s->s3->tmp.ecdh);
+ s->s3->tmp.ecdh = NULL;
+ }
#endif
rp = s->s3->rbuf.buf;
Modified: user/attilio/vmcontention/crypto/openssl/ssl/s3_srvr.c
==============================================================================
--- user/attilio/vmcontention/crypto/openssl/ssl/s3_srvr.c Fri Sep 9 07:44:14 2011 (r225458)
+++ user/attilio/vmcontention/crypto/openssl/ssl/s3_srvr.c Fri Sep 9 09:39:26 2011 (r225459)
@@ -710,9 +710,7 @@ int ssl3_check_client_hello(SSL *s)
if (s->s3->tmp.message_type == SSL3_MT_CLIENT_HELLO)
{
/* Throw away what we have done so far in the current handshake,
- * which will now be aborted. (A full SSL_clear would be too much.)
- * I hope that tmp.dh is the only thing that may need to be cleared
- * when a handshake is not completed ... */
+ * which will now be aborted. (A full SSL_clear would be too much.) */
#ifndef OPENSSL_NO_DH
if (s->s3->tmp.dh != NULL)
{
@@ -720,6 +718,13 @@ int ssl3_check_client_hello(SSL *s)
s->s3->tmp.dh = NULL;
}
#endif
+#ifndef OPENSSL_NO_ECDH
+ if (s->s3->tmp.ecdh != NULL)
+ {
+ EC_KEY_free(s->s3->tmp.ecdh);
+ s->s3->tmp.ecdh = NULL;
+ }
+#endif
return 2;
}
return 1;
@@ -1329,7 +1334,6 @@ int ssl3_send_server_key_exchange(SSL *s
if (s->s3->tmp.dh != NULL)
{
- DH_free(dh);
SSLerr(SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE, ERR_R_INTERNAL_ERROR);
goto err;
}
@@ -1390,7 +1394,6 @@ int ssl3_send_server_key_exchange(SSL *s
if (s->s3->tmp.ecdh != NULL)
{
- EC_KEY_free(s->s3->tmp.ecdh);
SSLerr(SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE, ERR_R_INTERNAL_ERROR);
goto err;
}
@@ -1401,12 +1404,11 @@ int ssl3_send_server_key_exchange(SSL *s
SSLerr(SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE,ERR_R_ECDH_LIB);
goto err;
}
- if (!EC_KEY_up_ref(ecdhp))
+ if ((ecdh = EC_KEY_dup(ecdhp)) == NULL)
{
SSLerr(SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE,ERR_R_ECDH_LIB);
goto err;
}
- ecdh = ecdhp;
s->s3->tmp.ecdh=ecdh;
if ((EC_KEY_get0_public_key(ecdh) == NULL) ||
@@ -2262,6 +2264,12 @@ int ssl3_get_client_key_exchange(SSL *s)
/* Get encoded point length */
i = *p;
p += 1;
+ if (n != 1 + i)
+ {
+ SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,
+ ERR_R_EC_LIB);
+ goto err;
+ }
if (EC_POINT_oct2point(group,
clnt_ecpoint, p, i, bn_ctx) == 0)
{
Modified: user/attilio/vmcontention/etc/pf.os
==============================================================================
--- user/attilio/vmcontention/etc/pf.os Fri Sep 9 07:44:14 2011 (r225458)
+++ user/attilio/vmcontention/etc/pf.os Fri Sep 9 09:39:26 2011 (r225459)
@@ -1,5 +1,5 @@
# $FreeBSD$
-# $OpenBSD: pf.os,v 1.21 2006/07/28 21:51:12 david Exp $
+# $OpenBSD: pf.os,v 1.25 2010/10/18 15:55:27 deraadt Exp $
# passive OS fingerprinting
# -------------------------
#
@@ -299,13 +299,16 @@ S22:64:1:52:M*,N,N,S,N,W0: Linux:2.2:ts:
# ----------------- OpenBSD -----------------
16384:64:0:60:M*,N,W0,N,N,T: OpenBSD:2.6::NetBSD 1.3 (or OpenBSD 2.6)
-16384:64:1:64:M*,N,N,S,N,W0,N,N,T: OpenBSD:3.0-4.0::OpenBSD 3.0-4.0
-16384:64:0:64:M*,N,N,S,N,W0,N,N,T: OpenBSD:3.0-4.0:no-df:OpenBSD 3.0-4.0 (scrub no-df)
+16384:64:1:64:M*,N,N,S,N,W0,N,N,T: OpenBSD:3.0-4.8::OpenBSD 3.0-4.8
+16384:64:0:64:M*,N,N,S,N,W0,N,N,T: OpenBSD:3.0-4.8:no-df:OpenBSD 3.0-4.8 (scrub no-df)
57344:64:1:64:M*,N,N,S,N,W0,N,N,T: OpenBSD:3.3-4.0::OpenBSD 3.3-4.0
57344:64:0:64:M*,N,N,S,N,W0,N,N,T: OpenBSD:3.3-4.0:no-df:OpenBSD 3.3-4.0 (scrub no-df)
65535:64:1:64:M*,N,N,S,N,W0,N,N,T: OpenBSD:3.0-4.0:opera:OpenBSD 3.0-4.0 (Opera)
+16384:64:1:64:M*,N,N,S,N,W3,N,N,T: OpenBSD:4.9::OpenBSD 4.9
+16384:64:0:64:M*,N,N,S,N,W3,N,N,T: OpenBSD:4.9:no-df:OpenBSD 4.9 (scrub no-df)
+
# ----------------- Solaris -----------------
S17:64:1:64:N,W3,N,N,T0,N,N,S,M*: Solaris:8:RFC1323:Solaris 8 RFC1323
@@ -362,7 +365,7 @@ S34:64:1:52:M*,N,W0,N,N,S: Solaris:10:b
# ----------------- Windows -----------------
# Windows TCP/IP stack is a mess. For most recent XP, 2000 and
-# even 98, the pathlevel, not the actual OS version, is more
+# even 98, the patchlevel, not the actual OS version, is more
# relevant to the signature. They share the same code, so it would
# seem. Luckily for us, almost all Windows 9x boxes have an
# awkward MSS of 536, which I use to tell one from another
Modified: user/attilio/vmcontention/sbin/geom/class/part/geom_part.c
==============================================================================
--- user/attilio/vmcontention/sbin/geom/class/part/geom_part.c Fri Sep 9 07:44:14 2011 (r225458)
+++ user/attilio/vmcontention/sbin/geom/class/part/geom_part.c Fri Sep 9 09:39:26 2011 (r225459)
@@ -308,7 +308,7 @@ gpart_autofill_resize(struct gctl_req *r
off_t last, size, start, new_size;
off_t lba, new_lba, alignment, offset;
const char *s;
- int error, idx;
+ int error, idx, has_alignment;
idx = (int)gctl_get_intmax(req, GPART_PARAM_INDEX);
if (idx < 1)
@@ -334,8 +334,9 @@ gpart_autofill_resize(struct gctl_req *r
errx(EXIT_FAILURE, "Provider for geom %s not found.", s);
s = gctl_get_ascii(req, "alignment");
+ has_alignment = (*s == '*') ? 0 : 1;
alignment = 1;
- if (*s != '*') {
+ if (has_alignment) {
error = g_parse_lba(s, pp->lg_sectorsize, &alignment);
if (error)
errc(EXIT_FAILURE, error, "Invalid alignment param");
@@ -358,7 +359,7 @@ gpart_autofill_resize(struct gctl_req *r
if (error)
errc(EXIT_FAILURE, error, "Invalid size param");
/* no autofill necessary. */
- if (alignment == 1)
+ if (has_alignment == 0)
goto done;
}
@@ -380,7 +381,8 @@ gpart_autofill_resize(struct gctl_req *r
lba = (off_t)strtoimax(s, NULL, 0);
size = lba - start + 1;
- if (new_size > 0 && new_size <= size) {
+ pp = find_provider(gp, lba + 1);
+ if (new_size > 0 && (new_size <= size || pp == NULL)) {
/* The start offset may be not aligned, so we align the end
* offset and then calculate the size.
*/
@@ -388,8 +390,6 @@ gpart_autofill_resize(struct gctl_req *r
alignment) - start - offset;
goto done;
}
-
- pp = find_provider(gp, lba + 1);
if (pp == NULL) {
new_size = ALIGNDOWN(last + offset + 1, alignment) -
start - offset;
Modified: user/attilio/vmcontention/sys/conf/NOTES
==============================================================================
--- user/attilio/vmcontention/sys/conf/NOTES Fri Sep 9 07:44:14 2011 (r225458)
+++ user/attilio/vmcontention/sys/conf/NOTES Fri Sep 9 09:39:26 2011 (r225459)
@@ -2929,7 +2929,6 @@ options SCSI_NCR_MYADDR=7
options SC_DEBUG_LEVEL=5 # Syscons debug level
options SC_RENDER_DEBUG # syscons rendering debugging
-options SHOW_BUSYBUFS # List buffers that prevent root unmount
options VFS_BIO_DEBUG # VFS buffer I/O debugging
options KSTACK_MAX_PAGES=32 # Maximum pages to give the kernel stack
Modified: user/attilio/vmcontention/sys/conf/options
==============================================================================
--- user/attilio/vmcontention/sys/conf/options Fri Sep 9 07:44:14 2011 (r225458)
+++ user/attilio/vmcontention/sys/conf/options Fri Sep 9 09:39:26 2011 (r225459)
@@ -156,7 +156,6 @@ QUOTA
SCHED_4BSD opt_sched.h
SCHED_STATS opt_sched.h
SCHED_ULE opt_sched.h
-SHOW_BUSYBUFS
SLEEPQUEUE_PROFILING
SLHCI_DEBUG opt_slhci.h
SPX_HACK
Modified: user/attilio/vmcontention/sys/dev/ath/ath_hal/ah.c
==============================================================================
--- user/attilio/vmcontention/sys/dev/ath/ath_hal/ah.c Fri Sep 9 07:44:14 2011 (r225458)
+++ user/attilio/vmcontention/sys/dev/ath/ath_hal/ah.c Fri Sep 9 09:39:26 2011 (r225459)
@@ -657,6 +657,8 @@ ath_hal_getcapability(struct ath_hal *ah
}
case HAL_CAP_RXDESC_SELFLINK: /* hardware supports self-linked final RX descriptors correctly */
return pCap->halHasRxSelfLinkedTail ? HAL_OK : HAL_ENOTSUPP;
+ case HAL_CAP_LONG_RXDESC_TSF: /* 32 bit TSF in RX descriptor? */
+ return pCap->halHasLongRxDescTsf ? HAL_OK : HAL_ENOTSUPP;
default:
return HAL_EINVAL;
}
@@ -1222,3 +1224,37 @@ ath_ee_interpolate(uint16_t target, uint
}
return rv;
}
+
+/*
+ * Adjust the TSF.
+ */
+void
+ath_hal_adjusttsf(struct ath_hal *ah, int32_t tsfdelta)
+{
+ /* XXX handle wrap/overflow */
+ OS_REG_WRITE(ah, AR_TSF_L32, OS_REG_READ(ah, AR_TSF_L32) + tsfdelta);
+}
+
+/*
+ * Enable or disable CCA.
+ */
+void
+ath_hal_setcca(struct ath_hal *ah, int ena)
+{
+ /*
+ * NB: fill me in; this is not provided by default because disabling
+ * CCA in most locales violates regulatory.
+ */
+}
+
+/*
+ * Get CCA setting.
+ */
+int
+ath_hal_getcca(struct ath_hal *ah)
+{
+ u_int32_t diag;
+ if (ath_hal_getcapability(ah, HAL_CAP_DIAG, 0, &diag) != HAL_OK)
+ return 1;
+ return ((diag & 0x500000) == 0);
+}
Modified: user/attilio/vmcontention/sys/dev/ath/ath_hal/ah.h
==============================================================================
--- user/attilio/vmcontention/sys/dev/ath/ath_hal/ah.h Fri Sep 9 07:44:14 2011 (r225458)
+++ user/attilio/vmcontention/sys/dev/ath/ath_hal/ah.h Fri Sep 9 09:39:26 2011 (r225459)
@@ -148,6 +148,7 @@ typedef enum {
HAL_CAP_BSSIDMATCH = 238, /* hardware has disable bssid match */
HAL_CAP_STREAMS = 239, /* how many 802.11n spatial streams are available */
HAL_CAP_RXDESC_SELFLINK = 242, /* support a self-linked tail RX descriptor */
+ HAL_CAP_LONG_RXDESC_TSF = 243, /* hardware supports 32bit TSF in RX descriptor */
} HAL_CAPABILITY_TYPE;
/*
@@ -996,6 +997,7 @@ struct ath_hal {
void __ahdecl(*ah_setStationBeaconTimers)(struct ath_hal*,
const HAL_BEACON_STATE *);
void __ahdecl(*ah_resetStationBeaconTimers)(struct ath_hal*);
+ uint64_t __ahdecl(*ah_getNextTBTT)(struct ath_hal *);
/* 802.11n Functions */
HAL_BOOL __ahdecl(*ah_chainTxDesc)(struct ath_hal *,
@@ -1138,4 +1140,20 @@ extern uint32_t __ahdecl ath_computedur_
extern uint16_t __ahdecl ath_hal_computetxtime(struct ath_hal *,
const HAL_RATE_TABLE *rates, uint32_t frameLen,
uint16_t rateix, HAL_BOOL shortPreamble);
+
+/*
+ * Adjust the TSF.
+ */
+extern void __ahdecl ath_hal_adjusttsf(struct ath_hal *ah, int32_t tsfdelta);
+
+/*
+ * Enable or disable CCA.
+ */
+void __ahdecl ath_hal_setcca(struct ath_hal *ah, int ena);
+
+/*
+ * Get CCA setting.
+ */
+int __ahdecl ath_hal_getcca(struct ath_hal *ah);
+
#endif /* _ATH_AH_H_ */
Modified: user/attilio/vmcontention/sys/dev/ath/ath_hal/ah_internal.h
==============================================================================
--- user/attilio/vmcontention/sys/dev/ath/ath_hal/ah_internal.h Fri Sep 9 07:44:14 2011 (r225458)
+++ user/attilio/vmcontention/sys/dev/ath/ath_hal/ah_internal.h Fri Sep 9 09:39:26 2011 (r225459)
@@ -208,7 +208,8 @@ typedef struct {
halBssidMatchSupport : 1,
hal4kbSplitTransSupport : 1,
halHasRxSelfLinkedTail : 1,
- halSupportsFastClock5GHz : 1; /* Hardware supports 5ghz fast clock; check eeprom/channel before using */
+ halSupportsFastClock5GHz : 1, /* Hardware supports 5ghz fast clock; check eeprom/channel before using */
+ halHasLongRxDescTsf : 1;
uint32_t halWirelessModes;
uint16_t halTotalQueues;
uint16_t halKeyCacheSize;
Modified: user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5210/ar5210.h
==============================================================================
--- user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5210/ar5210.h Fri Sep 9 07:44:14 2011 (r225458)
+++ user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5210/ar5210.h Fri Sep 9 09:39:26 2011 (r225459)
@@ -268,6 +268,7 @@ extern void ar5210BeaconInit(struct ath_
extern void ar5210SetStaBeaconTimers(struct ath_hal *,
const HAL_BEACON_STATE *);
extern void ar5210ResetStaBeaconTimers(struct ath_hal *);
+extern uint64_t ar5210GetNextTBTT(struct ath_hal *);
extern HAL_BOOL ar5210IsInterruptPending(struct ath_hal *);
extern HAL_BOOL ar5210GetPendingInterrupts(struct ath_hal *, HAL_INT *);
Modified: user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5210/ar5210_attach.c
==============================================================================
--- user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5210/ar5210_attach.c Fri Sep 9 07:44:14 2011 (r225458)
+++ user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5210/ar5210_attach.c Fri Sep 9 09:39:26 2011 (r225459)
@@ -148,6 +148,7 @@ static const struct ath_hal_private ar52
.ah_beaconInit = ar5210BeaconInit,
.ah_setStationBeaconTimers = ar5210SetStaBeaconTimers,
.ah_resetStationBeaconTimers = ar5210ResetStaBeaconTimers,
+ .ah_getNextTBTT = ar5210GetNextTBTT,
/* Interrupt Functions */
.ah_isInterruptPending = ar5210IsInterruptPending,
Modified: user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5210/ar5210_beacon.c
==============================================================================
--- user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5210/ar5210_beacon.c Fri Sep 9 07:44:14 2011 (r225458)
+++ user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5210/ar5210_beacon.c Fri Sep 9 09:39:26 2011 (r225459)
@@ -27,6 +27,17 @@
#include "ar5210/ar5210desc.h"
/*
+ * Return the hardware NextTBTT in TSF
+ */
+uint64_t
+ar5210GetNextTBTT(struct ath_hal *ah)
+{
+#define TU_TO_TSF(_tu) (((uint64_t)(_tu)) << 10)
+ return TU_TO_TSF(OS_REG_READ(ah, AR_TIMER0));
+#undef TU_TO_TSF
+}
+
+/*
* Initialize all of the hardware registers used to send beacons.
*/
void
Modified: user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5211/ar5211.h
==============================================================================
--- user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5211/ar5211.h Fri Sep 9 07:44:14 2011 (r225458)
+++ user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5211/ar5211.h Fri Sep 9 09:39:26 2011 (r225459)
@@ -296,6 +296,7 @@ extern void ar5211BeaconInit(struct ath_
extern void ar5211SetStaBeaconTimers(struct ath_hal *,
const HAL_BEACON_STATE *);
extern void ar5211ResetStaBeaconTimers(struct ath_hal *);
+extern uint64_t ar5211GetNextTBTT(struct ath_hal *);
extern HAL_BOOL ar5211IsInterruptPending(struct ath_hal *);
extern HAL_BOOL ar5211GetPendingInterrupts(struct ath_hal *, HAL_INT *);
Modified: user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5211/ar5211_attach.c
==============================================================================
--- user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5211/ar5211_attach.c Fri Sep 9 07:44:14 2011 (r225458)
+++ user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5211/ar5211_attach.c Fri Sep 9 09:39:26 2011 (r225459)
@@ -148,6 +148,7 @@ static const struct ath_hal_private ar52
.ah_beaconInit = ar5211BeaconInit,
.ah_setStationBeaconTimers = ar5211SetStaBeaconTimers,
.ah_resetStationBeaconTimers = ar5211ResetStaBeaconTimers,
+ .ah_getNextTBTT = ar5211GetNextTBTT,
/* Interrupt Functions */
.ah_isInterruptPending = ar5211IsInterruptPending,
Modified: user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5211/ar5211_beacon.c
==============================================================================
--- user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5211/ar5211_beacon.c Fri Sep 9 07:44:14 2011 (r225458)
+++ user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5211/ar5211_beacon.c Fri Sep 9 09:39:26 2011 (r225459)
@@ -30,6 +30,17 @@
*/
/*
+ * Return the hardware NextTBTT in TSF
+ */
+uint64_t
+ar5211GetNextTBTT(struct ath_hal *ah)
+{
+#define TU_TO_TSF(_tu) (((uint64_t)(_tu)) << 10)
+ return TU_TO_TSF(OS_REG_READ(ah, AR_TIMER0));
+#undef TU_TO_TSF
+}
+
+/*
* Initialize all of the hardware registers used to send beacons.
*/
void
Modified: user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5212/ar5212.h
==============================================================================
--- user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5212/ar5212.h Fri Sep 9 07:44:14 2011 (r225458)
+++ user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5212/ar5212.h Fri Sep 9 09:39:26 2011 (r225459)
@@ -430,6 +430,7 @@ extern void ar5212BeaconInit(struct ath_
extern void ar5212ResetStaBeaconTimers(struct ath_hal *ah);
extern void ar5212SetStaBeaconTimers(struct ath_hal *ah,
const HAL_BEACON_STATE *);
+extern uint64_t ar5212GetNextTBTT(struct ath_hal *);
extern HAL_BOOL ar5212IsInterruptPending(struct ath_hal *ah);
extern HAL_BOOL ar5212GetPendingInterrupts(struct ath_hal *ah, HAL_INT *);
Modified: user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5212/ar5212_attach.c
==============================================================================
--- user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5212/ar5212_attach.c Fri Sep 9 07:44:14 2011 (r225458)
+++ user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5212/ar5212_attach.c Fri Sep 9 09:39:26 2011 (r225459)
@@ -151,6 +151,7 @@ static const struct ath_hal_private ar52
.ah_beaconInit = ar5212BeaconInit,
.ah_setStationBeaconTimers = ar5212SetStaBeaconTimers,
.ah_resetStationBeaconTimers = ar5212ResetStaBeaconTimers,
+ .ah_getNextTBTT = ar5212GetNextTBTT,
/* Interrupt Functions */
.ah_isInterruptPending = ar5212IsInterruptPending,
Modified: user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5212/ar5212_beacon.c
==============================================================================
--- user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5212/ar5212_beacon.c Fri Sep 9 07:44:14 2011 (r225458)
+++ user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5212/ar5212_beacon.c Fri Sep 9 09:39:26 2011 (r225459)
@@ -26,6 +26,17 @@
#include "ar5212/ar5212desc.h"
/*
+ * Return the hardware NextTBTT in TSF
+ */
+uint64_t
+ar5212GetNextTBTT(struct ath_hal *ah)
+{
+#define TU_TO_TSF(_tu) (((uint64_t)(_tu)) << 10)
+ return TU_TO_TSF(OS_REG_READ(ah, AR_TIMER0));
+#undef TU_TO_TSF
+}
+
+/*
* Initialize all of the hardware registers used to
* send beacons. Note that for station operation the
* driver calls ar5212SetStaBeaconTimers instead.
Modified: user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5416/ar5416.h
==============================================================================
--- user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5416/ar5416.h Fri Sep 9 07:44:14 2011 (r225458)
+++ user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5416/ar5416.h Fri Sep 9 09:39:26 2011 (r225459)
@@ -169,6 +169,7 @@ extern void ar5416BeaconInit(struct ath_
extern void ar5416ResetStaBeaconTimers(struct ath_hal *ah);
extern void ar5416SetStaBeaconTimers(struct ath_hal *ah,
const HAL_BEACON_STATE *);
+extern uint64_t ar5416GetNextTBTT(struct ath_hal *);
extern HAL_BOOL ar5416EepromRead(struct ath_hal *, u_int off, uint16_t *data);
extern HAL_BOOL ar5416EepromWrite(struct ath_hal *, u_int off, uint16_t data);
@@ -186,6 +187,8 @@ extern void ar5416GpioSetIntr(struct ath
extern u_int ar5416GetWirelessModes(struct ath_hal *ah);
extern void ar5416SetLedState(struct ath_hal *ah, HAL_LED_STATE state);
+extern uint64_t ar5416GetTsf64(struct ath_hal *ah);
+extern void ar5416SetTsf64(struct ath_hal *ah, uint64_t tsf64);
extern void ar5416ResetTsf(struct ath_hal *ah);
extern HAL_BOOL ar5416SetAntennaSwitch(struct ath_hal *, HAL_ANT_SETTING);
extern HAL_BOOL ar5416SetDecompMask(struct ath_hal *, uint16_t, int);
Modified: user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c
==============================================================================
--- user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c Fri Sep 9 07:44:14 2011 (r225458)
+++ user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c Fri Sep 9 09:39:26 2011 (r225459)
@@ -136,6 +136,7 @@ ar5416InitState(struct ath_hal_5416 *ahp
ah->ah_gpioGet = ar5416GpioGet;
ah->ah_gpioSet = ar5416GpioSet;
ah->ah_gpioSetIntr = ar5416GpioSetIntr;
+ ah->ah_getTsf64 = ar5416GetTsf64;
ah->ah_resetTsf = ar5416ResetTsf;
ah->ah_getRfGain = ar5416GetRfgain;
ah->ah_setAntennaSwitch = ar5416SetAntennaSwitch;
@@ -160,6 +161,7 @@ ar5416InitState(struct ath_hal_5416 *ahp
ah->ah_beaconInit = ar5416BeaconInit;
ah->ah_setStationBeaconTimers = ar5416SetStaBeaconTimers;
ah->ah_resetStationBeaconTimers = ar5416ResetStaBeaconTimers;
+ ah->ah_getNextTBTT = ar5416GetNextTBTT;
/* 802.11n Functions */
ah->ah_chainTxDesc = ar5416ChainTxDesc;
@@ -888,6 +890,8 @@ ar5416FillCapabilityInfo(struct ath_hal
pCap->halGTTSupport = AH_TRUE;
pCap->halCSTSupport = AH_TRUE;
pCap->halEnhancedDfsSupport = AH_FALSE;
+ /* Hardware supports 32 bit TSF values in the RX descriptor */
+ pCap->halHasLongRxDescTsf = AH_TRUE;
if (ath_hal_eepromGetFlag(ah, AR_EEP_RFKILL) &&
ath_hal_eepromGet(ah, AR_EEP_RFSILENT, &ahpriv->ah_rfsilent) == HAL_OK) {
Modified: user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5416/ar5416_beacon.c
==============================================================================
--- user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5416/ar5416_beacon.c Fri Sep 9 07:44:14 2011 (r225458)
+++ user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5416/ar5416_beacon.c Fri Sep 9 09:39:26 2011 (r225459)
@@ -29,6 +29,15 @@
#define ONE_EIGHTH_TU_TO_USEC(_tu8) ((_tu8) << 7)
/*
+ * Return the hardware NextTBTT in TSF
+ */
+uint64_t
+ar5416GetNextTBTT(struct ath_hal *ah)
+{
+ return OS_REG_READ(ah, AR_NEXT_TBTT);
+}
+
+/*
* Initialize all of the hardware registers used to
* send beacons. Note that for station operation the
* driver calls ar5416SetStaBeaconTimers instead.
Modified: user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5416/ar5416_misc.c
==============================================================================
--- user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5416/ar5416_misc.c Fri Sep 9 07:44:14 2011 (r225458)
+++ user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5416/ar5416_misc.c Fri Sep 9 09:39:26 2011 (r225459)
@@ -93,6 +93,41 @@ ar5416SetLedState(struct ath_hal *ah, HA
}
/*
+ * Get the current hardware tsf for stamlme
+ */
+uint64_t
+ar5416GetTsf64(struct ath_hal *ah)
+{
+ uint32_t low1, low2, u32;
+
+ /* sync multi-word read */
+ low1 = OS_REG_READ(ah, AR_TSF_L32);
+ u32 = OS_REG_READ(ah, AR_TSF_U32);
+ low2 = OS_REG_READ(ah, AR_TSF_L32);
+ if (low2 < low1) { /* roll over */
+ /*
+ * If we are not preempted this will work. If we are
+ * then we re-reading AR_TSF_U32 does no good as the
+ * low bits will be meaningless. Likewise reading
+ * L32, U32, U32, then comparing the last two reads
+ * to check for rollover doesn't help if preempted--so
+ * we take this approach as it costs one less PCI read
+ * which can be noticeable when doing things like
+ * timestamping packets in monitor mode.
+ */
+ u32++;
+ }
+ return (((uint64_t) u32) << 32) | ((uint64_t) low2);
+}
+
+void
+ar5416SetTsf64(struct ath_hal *ah, uint64_t tsf64)
+{
+ OS_REG_WRITE(ah, AR_TSF_L32, tsf64 & 0xffffffff);
+ OS_REG_WRITE(ah, AR_TSF_U32, (tsf64 >> 32) & 0xffffffff);
+}
+
+/*
* Reset the current hardware tsf for stamlme.
*/
void
Modified: user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c
==============================================================================
--- user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c Fri Sep 9 07:44:14 2011 (r225458)
+++ user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c Fri Sep 9 09:39:26 2011 (r225459)
@@ -147,7 +147,7 @@ ar5416Reset(struct ath_hal *ah, HAL_OPMO
/* For chips on which the RTC reset is done, save TSF before it gets cleared */
if (AR_SREV_HOWL(ah) ||
(AR_SREV_MERLIN(ah) && ath_hal_eepromGetFlag(ah, AR_EEP_OL_PWRCTRL)))
- tsf = ar5212GetTsf64(ah);
+ tsf = ar5416GetTsf64(ah);
/* Mark PHY as inactive; marked active in ar5416InitBB() */
ar5416MarkPhyInactive(ah);
@@ -159,7 +159,7 @@ ar5416Reset(struct ath_hal *ah, HAL_OPMO
/* Restore TSF */
if (tsf)
- ar5212SetTsf64(ah, tsf);
+ ar5416SetTsf64(ah, tsf);
OS_MARK(ah, AH_MARK_RESET_LINE, __LINE__);
if (AR_SREV_MERLIN_10_OR_LATER(ah))
@@ -192,9 +192,9 @@ ar5416Reset(struct ath_hal *ah, HAL_OPMO
* value after the initvals have been applied, with an offset
* based on measured time difference
*/
- if (AR_SREV_HOWL(ah) && (ar5212GetTsf64(ah) < tsf)) {
+ if (AR_SREV_HOWL(ah) && (ar5416GetTsf64(ah) < tsf)) {
tsf += 1500;
- ar5212SetTsf64(ah, tsf);
+ ar5416SetTsf64(ah, tsf);
}
HALDEBUG(ah, HAL_DEBUG_RESET, ">>>2 %s: AR_PHY_DAG_CTRLCCK=0x%x\n",
@@ -364,8 +364,7 @@ ar5416Reset(struct ath_hal *ah, HAL_OPMO
OS_REG_RMW_FIELD(ah, AR_RIMT, AR_RIMT_FIRST, 2000);
OS_REG_RMW_FIELD(ah, AR_TIMT, AR_TIMT_LAST, 300);
OS_REG_RMW_FIELD(ah, AR_TIMT, AR_TIMT_FIRST, 750);
-#endif
-
+#endif
ar5416InitBB(ah, chan);
/* Setup compression registers */
@@ -503,7 +502,7 @@ ar5416ChannelChange(struct ath_hal *ah,
chan->ic_state &= ~IEEE80211_CHANSTATE_CWINT;
ichan->channel_time = 0;
- ichan->tsf_last = ar5212GetTsf64(ah);
+ ichan->tsf_last = ar5416GetTsf64(ah);
ar5212TxEnable(ah, AH_TRUE);
return AH_TRUE;
}
Modified: user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5416/ar5416reg.h
==============================================================================
--- user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5416/ar5416reg.h Fri Sep 9 07:44:14 2011 (r225458)
+++ user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5416/ar5416reg.h Fri Sep 9 09:39:26 2011 (r225459)
@@ -40,6 +40,7 @@
#define AR_INTR_ASYNC_MASK 0x4030 /* asynchronous interrupt mask */
#define AR_INTR_SYNC_MASK 0x4034 /* synchronous interrupt mask */
#define AR_INTR_ASYNC_CAUSE 0x4038 /* check pending interrupts */
+#define AR_INTR_ASYNC_CAUSE_CLR 0x4038 /* clear pending interrupts */
#define AR_INTR_ASYNC_ENABLE 0x403c /* enable interrupts */
#define AR5416_PCIE_SERDES 0x4040
#define AR5416_PCIE_SERDES2 0x4044
Modified: user/attilio/vmcontention/sys/dev/ath/if_ath.c
==============================================================================
--- user/attilio/vmcontention/sys/dev/ath/if_ath.c Fri Sep 9 07:44:14 2011 (r225458)
+++ user/attilio/vmcontention/sys/dev/ath/if_ath.c Fri Sep 9 09:39:26 2011 (r225459)
@@ -214,24 +214,6 @@ static void ath_tdma_update(struct ieee8
static void ath_tdma_beacon_send(struct ath_softc *sc,
struct ieee80211vap *vap);
-static __inline void
-ath_hal_setcca(struct ath_hal *ah, int ena)
-{
- /*
- * NB: fill me in; this is not provided by default because disabling
- * CCA in most locales violates regulatory.
- */
-}
-
-static __inline int
-ath_hal_getcca(struct ath_hal *ah)
-{
- u_int32_t diag;
- if (ath_hal_getcapability(ah, HAL_CAP_DIAG, 0, &diag) != HAL_OK)
- return 1;
- return ((diag & 0x500000) == 0);
-}
-
#define TDMA_EP_MULTIPLIER (1<<10) /* pow2 to optimize out * and / */
#define TDMA_LPF_LEN 6
#define TDMA_DUMMY_MARKER 0x127
@@ -613,6 +595,7 @@ ath_attach(u_int16_t devid, struct ath_s
sc->sc_hasbmatch = ath_hal_hasbssidmatch(ah);
sc->sc_hastsfadd = ath_hal_hastsfadjust(ah);
sc->sc_rxslink = ath_hal_self_linked_final_rxdesc(ah);
+ sc->sc_rxtsf32 = ath_hal_has_long_rxdesc_tsf(ah);
if (ath_hal_hasfastframes(ah))
ic->ic_caps |= IEEE80211_C_FF;
wmodes = ath_hal_getwirelessmodes(ah);
@@ -3294,14 +3277,49 @@ ath_rxbuf_init(struct ath_softc *sc, str
* a full 64-bit TSF using the specified TSF.
*/
static __inline u_int64_t
-ath_extend_tsf(u_int32_t rstamp, u_int64_t tsf)
+ath_extend_tsf15(u_int32_t rstamp, u_int64_t tsf)
{
if ((tsf & 0x7fff) < rstamp)
tsf -= 0x8000;
+
return ((tsf &~ 0x7fff) | rstamp);
}
/*
+ * Extend 32-bit time stamp from rx descriptor to
+ * a full 64-bit TSF using the specified TSF.
+ */
+static __inline u_int64_t
+ath_extend_tsf32(u_int32_t rstamp, u_int64_t tsf)
+{
+ u_int32_t tsf_low = tsf & 0xffffffff;
+ u_int64_t tsf64 = (tsf & ~0xffffffffULL) | rstamp;
+
+ if (rstamp > tsf_low && (rstamp - tsf_low > 0x10000000))
+ tsf64 -= 0x100000000ULL;
+
+ if (rstamp < tsf_low && (tsf_low - rstamp > 0x10000000))
+ tsf64 += 0x100000000ULL;
+
+ return tsf64;
+}
+
+/*
+ * Extend the TSF from the RX descriptor to a full 64 bit TSF.
+ * Earlier hardware versions only wrote the low 15 bits of the
+ * TSF into the RX descriptor; later versions (AR5416 and up)
+ * include the 32 bit TSF value.
+ */
+static __inline u_int64_t
+ath_extend_tsf(struct ath_softc *sc, u_int32_t rstamp, u_int64_t tsf)
+{
+ if (sc->sc_rxtsf32)
+ return ath_extend_tsf32(rstamp, tsf);
+ else
+ return ath_extend_tsf15(rstamp, tsf);
+}
+
+/*
* Intercept management frames to collect beacon rssi data
* and to do ibss merges.
*/
@@ -3334,7 +3352,7 @@ ath_recv_mgmt(struct ieee80211_node *ni,
if (vap->iv_opmode == IEEE80211_M_IBSS &&
vap->iv_state == IEEE80211_S_RUN) {
uint32_t rstamp = sc->sc_lastrs->rs_tstamp;
- uint64_t tsf = ath_extend_tsf(rstamp,
+ uint64_t tsf = ath_extend_tsf(sc, rstamp,
ath_hal_gettsf64(sc->sc_ah));
/*
* Handle ibss merge as needed; check the tsf on the
@@ -3406,7 +3424,7 @@ ath_rx_tap(struct ifnet *ifp, struct mbu
sc->sc_rx_th.wr_flags |= IEEE80211_RADIOTAP_F_SHORTGI;
}
#endif
- sc->sc_rx_th.wr_tsf = htole64(ath_extend_tsf(rs->rs_tstamp, tsf));
+ sc->sc_rx_th.wr_tsf = htole64(ath_extend_tsf(sc, rs->rs_tstamp, tsf));
if (rs->rs_status & HAL_RXERR_CRC)
sc->sc_rx_th.wr_flags |= IEEE80211_RADIOTAP_F_BADFCS;
/* XXX propagate other error flags from descriptor */
@@ -5460,20 +5478,6 @@ ath_announce(struct ath_softc *sc)
}
#ifdef IEEE80211_SUPPORT_TDMA
-static __inline uint32_t
-ath_hal_getnexttbtt(struct ath_hal *ah)
-{
-#define AR_TIMER0 0x8028
- return OS_REG_READ(ah, AR_TIMER0);
-}
-
-static __inline void
-ath_hal_adjusttsf(struct ath_hal *ah, int32_t tsfdelta)
-{
- /* XXX handle wrap/overflow */
- OS_REG_WRITE(ah, AR_TSF_L32, OS_REG_READ(ah, AR_TSF_L32) + tsfdelta);
-}
-
static void
ath_tdma_settimers(struct ath_softc *sc, u_int32_t nexttbtt, u_int32_t bintval)
{
@@ -5629,8 +5633,8 @@ ath_tdma_update(struct ieee80211_node *n
struct ath_softc *sc = ic->ic_ifp->if_softc;
struct ath_hal *ah = sc->sc_ah;
const HAL_RATE_TABLE *rt = sc->sc_currates;
- u_int64_t tsf, rstamp, nextslot;
- u_int32_t txtime, nextslottu, timer0;
+ u_int64_t tsf, rstamp, nextslot, nexttbtt;
+ u_int32_t txtime, nextslottu;
int32_t tudelta, tsfdelta;
const struct ath_rx_status *rs;
int rix;
@@ -5661,7 +5665,7 @@ ath_tdma_update(struct ieee80211_node *n
/* extend rx timestamp to 64 bits */
rs = sc->sc_lastrs;
tsf = ath_hal_gettsf64(ah);
- rstamp = ath_extend_tsf(rs->rs_tstamp, tsf);
+ rstamp = ath_extend_tsf(sc, rs->rs_tstamp, tsf);
/*
* The rx timestamp is set by the hardware on completing
* reception (at the point where the rx descriptor is DMA'd
@@ -5677,15 +5681,15 @@ ath_tdma_update(struct ieee80211_node *n
nextslottu = TSF_TO_TU(nextslot>>32, nextslot) & HAL_BEACON_PERIOD;
/*
- * TIMER0 is the h/w's idea of NextTBTT (in TU's). Convert
- * to usecs and calculate the difference between what the
+ * Retrieve the hardware NextTBTT in usecs
+ * and calculate the difference between what the
* other station thinks and what we have programmed. This
* lets us figure how to adjust our timers to match. The
* adjustments are done by pulling the TSF forward and possibly
* rewriting the beacon timers.
*/
- timer0 = ath_hal_getnexttbtt(ah);
- tsfdelta = (int32_t)((nextslot % TU_TO_TSF(HAL_BEACON_PERIOD+1)) - TU_TO_TSF(timer0));
+ nexttbtt = ath_hal_getnexttbtt(ah);
+ tsfdelta = (int32_t)((nextslot % TU_TO_TSF(HAL_BEACON_PERIOD + 1)) - nexttbtt);
DPRINTF(sc, ATH_DEBUG_TDMA_TIMER,
"tsfdelta %d avg +%d/-%d\n", tsfdelta,
@@ -5705,7 +5709,7 @@ ath_tdma_update(struct ieee80211_node *n
TDMA_SAMPLE(sc->sc_avgtsfdeltap, 0);
TDMA_SAMPLE(sc->sc_avgtsfdeltam, 0);
}
- tudelta = nextslottu - timer0;
+ tudelta = nextslottu - TSF_TO_TU(nexttbtt >> 32, nexttbtt);
/*
* Copy sender's timetstamp into tdma ie so they can
@@ -5724,10 +5728,9 @@ ath_tdma_update(struct ieee80211_node *n
&ni->ni_tstamp.data, 8);
#if 0
DPRINTF(sc, ATH_DEBUG_TDMA_TIMER,
- "tsf %llu nextslot %llu (%d, %d) nextslottu %u timer0 %u (%d)\n",
+ "tsf %llu nextslot %llu (%d, %d) nextslottu %u nexttbtt %llu (%d)\n",
(unsigned long long) tsf, (unsigned long long) nextslot,
- (int)(nextslot - tsf), tsfdelta,
- nextslottu, timer0, tudelta);
+ (int)(nextslot - tsf), tsfdelta, nextslottu, nexttbtt, tudelta);
#endif
/*
* Adjust the beacon timers only when pulling them forward
Modified: user/attilio/vmcontention/sys/dev/ath/if_athvar.h
==============================================================================
--- user/attilio/vmcontention/sys/dev/ath/if_athvar.h Fri Sep 9 07:44:14 2011 (r225458)
+++ user/attilio/vmcontention/sys/dev/ath/if_athvar.h Fri Sep 9 09:39:26 2011 (r225459)
@@ -255,7 +255,8 @@ struct ath_softc {
sc_setcca : 1,/* set/clr CCA with TDMA */
sc_resetcal : 1,/* reset cal state next trip */
sc_rxslink : 1,/* do self-linked final descriptor */
- sc_kickpcu : 1;/* kick PCU RX on next RX proc */
+ sc_kickpcu : 1,/* kick PCU RX on next RX proc */
+ sc_rxtsf32 : 1;/* RX dec TSF is 32 bits */
uint32_t sc_eerd; /* regdomain from EEPROM */
uint32_t sc_eecc; /* country code from EEPROM */
/* rate tables */
@@ -482,6 +483,8 @@ void ath_intr(void *);
((*(_ah)->ah_setBeaconTimers)((_ah), (_bt)))
#define ath_hal_beacontimers(_ah, _bs) \
((*(_ah)->ah_setStationBeaconTimers)((_ah), (_bs)))
+#define ath_hal_getnexttbtt(_ah) \
+ ((*(_ah)->ah_getNextTBTT)((_ah)))
#define ath_hal_setassocid(_ah, _bss, _associd) \
((*(_ah)->ah_writeAssocid)((_ah), (_bss), (_associd)))
#define ath_hal_phydisable(_ah) \
@@ -657,6 +660,8 @@ void ath_intr(void *);
(ath_hal_getcapability(_ah, HAL_CAP_RXDESC_SELFLINK, 0, NULL) == HAL_OK)
#define ath_hal_gtxto_supported(_ah) \
(ath_hal_getcapability(_ah, HAL_CAP_GTXTO, 0, NULL) == HAL_OK)
+#define ath_hal_has_long_rxdesc_tsf(_ah) \
+ (ath_hal_getcapability(_ah, HAL_CAP_LONG_RXDESC_TSF, 0, NULL) == HAL_OK)
#define ath_hal_setuprxdesc(_ah, _ds, _size, _intreq) \
((*(_ah)->ah_setupRxDesc)((_ah), (_ds), (_size), (_intreq)))
Modified: user/attilio/vmcontention/sys/dev/mfi/mfi.c
==============================================================================
--- user/attilio/vmcontention/sys/dev/mfi/mfi.c Fri Sep 9 07:44:14 2011 (r225458)
+++ user/attilio/vmcontention/sys/dev/mfi/mfi.c Fri Sep 9 09:39:26 2011 (r225459)
@@ -2132,8 +2132,7 @@ mfi_ioctl(struct cdev *dev, u_long cmd,
if (ioc->mfi_sense_len) {
/* get user-space sense ptr then copy out sense */
- bcopy(&((struct mfi_ioc_packet*)arg)
- ->mfi_frame.raw[ioc->mfi_sense_off],
+ bcopy(&ioc->mfi_frame.raw[ioc->mfi_sense_off],
&sense_ptr.sense_ptr_data[0],
sizeof(sense_ptr.sense_ptr_data));
#ifdef __amd64__
Modified: user/attilio/vmcontention/sys/dev/vge/if_vge.c
==============================================================================
--- user/attilio/vmcontention/sys/dev/vge/if_vge.c Fri Sep 9 07:44:14 2011 (r225458)
+++ user/attilio/vmcontention/sys/dev/vge/if_vge.c Fri Sep 9 09:39:26 2011 (r225459)
@@ -1752,6 +1752,10 @@ vge_intr(void *arg)
#ifdef DEVICE_POLLING
if (ifp->if_capenable & IFCAP_POLLING) {
+ status = CSR_READ_4(sc, VGE_ISR);
+ CSR_WRITE_4(sc, VGE_ISR, status);
+ if (status != 0xFFFFFFFF && (status & VGE_ISR_LINKSTS) != 0)
+ vge_link_statchg(sc);
VGE_UNLOCK(sc);
return;
}
@@ -2109,11 +2113,10 @@ vge_init_locked(struct vge_softc *sc)
#ifdef DEVICE_POLLING
/*
- * Disable interrupts if we are polling.
+ * Disable interrupts except link state change if we are polling.
*/
if (ifp->if_capenable & IFCAP_POLLING) {
- CSR_WRITE_4(sc, VGE_IMR, 0);
- CSR_WRITE_1(sc, VGE_CRC3, VGE_CR3_INT_GMSK);
+ CSR_WRITE_4(sc, VGE_IMR, VGE_INTRS_POLLING);
} else /* otherwise ... */
#endif
{
@@ -2121,9 +2124,9 @@ vge_init_locked(struct vge_softc *sc)
* Enable interrupts.
*/
CSR_WRITE_4(sc, VGE_IMR, VGE_INTRS);
- CSR_WRITE_4(sc, VGE_ISR, 0xFFFFFFFF);
- CSR_WRITE_1(sc, VGE_CRS3, VGE_CR3_INT_GMSK);
}
+ CSR_WRITE_4(sc, VGE_ISR, 0xFFFFFFFF);
+ CSR_WRITE_1(sc, VGE_CRS3, VGE_CR3_INT_GMSK);
sc->vge_flags &= ~VGE_FLAG_LINK;
mii_mediachg(mii);
@@ -2280,8 +2283,9 @@ vge_ioctl(struct ifnet *ifp, u_long comm
return (error);
VGE_LOCK(sc);
/* Disable interrupts */
- CSR_WRITE_4(sc, VGE_IMR, 0);
- CSR_WRITE_1(sc, VGE_CRC3, VGE_CR3_INT_GMSK);
+ CSR_WRITE_4(sc, VGE_IMR, VGE_INTRS_POLLING);
+ CSR_WRITE_4(sc, VGE_ISR, 0xFFFFFFFF);
+ CSR_WRITE_1(sc, VGE_CRS3, VGE_CR3_INT_GMSK);
ifp->if_capenable |= IFCAP_POLLING;
VGE_UNLOCK(sc);
} else {
Modified: user/attilio/vmcontention/sys/dev/vge/if_vgereg.h
==============================================================================
--- user/attilio/vmcontention/sys/dev/vge/if_vgereg.h Fri Sep 9 07:44:14 2011 (r225458)
+++ user/attilio/vmcontention/sys/dev/vge/if_vgereg.h Fri Sep 9 09:39:26 2011 (r225459)
@@ -302,6 +302,8 @@
VGE_ISR_LINKSTS|VGE_ISR_RXNODESC| \
VGE_ISR_RXDMA_STALL|VGE_ISR_TXDMA_STALL)
+#define VGE_INTRS_POLLING (VGE_ISR_PHYINT|VGE_ISR_LINKSTS)
+
/* Interrupt mask register */
#define VGE_IMR_RXOK_HIPRIO 0x00000001 /* hi prio RX int */
Modified: user/attilio/vmcontention/sys/kern/kern_rctl.c
==============================================================================
--- user/attilio/vmcontention/sys/kern/kern_rctl.c Fri Sep 9 07:44:14 2011 (r225458)
+++ user/attilio/vmcontention/sys/kern/kern_rctl.c Fri Sep 9 09:39:26 2011 (r225459)
@@ -363,6 +363,17 @@ rctl_enforce(struct proc *p, int resourc
rule->rr_action));
/*
+ * We're supposed to send a signal, but the process
+ * is not fully initialized yet, probably because we
+ * got called from fork1(). For now just deny the
+ * allocation instead.
+ */
+ if (p->p_state != PRS_NORMAL) {
+ should_deny = 1;
+ continue;
+ }
+
+ /*
* We're using the fact that RCTL_ACTION_SIG* values
* are equal to their counterparts from sys/signal.h.
*/
Modified: user/attilio/vmcontention/sys/kern/kern_shutdown.c
==============================================================================
--- user/attilio/vmcontention/sys/kern/kern_shutdown.c Fri Sep 9 07:44:14 2011 (r225458)
+++ user/attilio/vmcontention/sys/kern/kern_shutdown.c Fri Sep 9 09:39:26 2011 (r225459)
@@ -40,7 +40,6 @@ __FBSDID("$FreeBSD$");
#include "opt_ddb.h"
#include "opt_kdb.h"
#include "opt_panic.h"
-#include "opt_show_busybufs.h"
#include "opt_sched.h"
#include "opt_watchdog.h"
@@ -66,6 +65,7 @@ __FBSDID("$FreeBSD$");
#include <sys/smp.h>
#include <sys/sysctl.h>
#include <sys/sysproto.h>
+#include <sys/vnode.h>
#ifdef SW_WATCHDOG
#include <sys/watchdog.h>
#endif
@@ -123,6 +123,14 @@ TUNABLE_INT("kern.sync_on_panic", &sync_
SYSCTL_NODE(_kern, OID_AUTO, shutdown, CTLFLAG_RW, 0, "Shutdown environment");
+#ifndef DIAGNOSTIC
+static int show_busybufs;
+#else
+static int show_busybufs = 1;
+#endif
+SYSCTL_INT(_kern_shutdown, OID_AUTO, show_busybufs, CTLFLAG_RW,
+ &show_busybufs, 0, "");
+
/*
* Variable panicstr contains argument to first call to panic; used as flag
* to indicate that the kernel has already called panic.
@@ -389,13 +397,17 @@ kern_reboot(int howto)
}
#endif
nbusy++;
-#if defined(SHOW_BUSYBUFS) || defined(DIAGNOSTIC)
- printf(
- "%d: bufobj:%p, flags:%0x, blkno:%ld, lblkno:%ld\n",
- nbusy, bp->b_bufobj,
- bp->b_flags, (long)bp->b_blkno,
- (long)bp->b_lblkno);
-#endif
+ if (show_busybufs > 0) {
+ printf(
+ "%d: buf:%p, vnode:%p, flags:%0x, blkno:%jd, lblkno:%jd, buflock:",
+ nbusy, bp, bp->b_vp, bp->b_flags,
+ (intmax_t)bp->b_blkno,
+ (intmax_t)bp->b_lblkno);
+ BUF_LOCKPRINTINFO(bp);
+ if (show_busybufs > 1)
+ vn_printf(bp->b_vp,
+ "vnode content: ");
+ }
}
}
if (nbusy) {
Modified: user/attilio/vmcontention/sys/kern/vfs_bio.c
==============================================================================
--- user/attilio/vmcontention/sys/kern/vfs_bio.c Fri Sep 9 07:44:14 2011 (r225458)
+++ user/attilio/vmcontention/sys/kern/vfs_bio.c Fri Sep 9 09:39:26 2011 (r225459)
@@ -4020,7 +4020,7 @@ DB_SHOW_COMMAND(buffer, db_show_buffer)
db_printf("\n");
}
db_printf(" ");
- lockmgr_printinfo(&bp->b_lock);
+ BUF_LOCKPRINTINFO(bp);
}
DB_SHOW_COMMAND(lockedbufs, lockedbufs)
Modified: user/attilio/vmcontention/sys/sys/buf.h
==============================================================================
--- user/attilio/vmcontention/sys/sys/buf.h Fri Sep 9 07:44:14 2011 (r225458)
+++ user/attilio/vmcontention/sys/sys/buf.h Fri Sep 9 09:39:26 2011 (r225459)
@@ -311,6 +311,12 @@ extern const char *buf_wmesg; /* Defaul
lockdestroy(&(bp)->b_lock)
/*
+ * Print informations on a buffer lock.
+ */
+#define BUF_LOCKPRINTINFO(bp) \
+ lockmgr_printinfo(&(bp)->b_lock)
+
+/*
* Buffer lock assertions.
*/
#if defined(INVARIANTS) && defined(INVARIANT_SUPPORT)
Modified: user/attilio/vmcontention/usr.sbin/bsdinstall/scripts/netconfig
==============================================================================
--- user/attilio/vmcontention/usr.sbin/bsdinstall/scripts/netconfig Fri Sep 9 07:44:14 2011 (r225458)
+++ user/attilio/vmcontention/usr.sbin/bsdinstall/scripts/netconfig Fri Sep 9 09:39:26 2011 (r225459)
@@ -165,7 +165,7 @@ fi
exec 3>&1
RESOLV=$(echo "${RESOLV}" | xargs dialog --backtitle 'FreeBSD Installer' \
--title 'Network Configuration' \
- --mixedform 'Resovler Configuration' 0 0 0 \
+ --mixedform 'Resolver Configuration' 0 0 0 \
2>&1 1>&3)
if [ $? -eq $DIALOG_CANCEL ]; then exec $0; fi
exec 3>&-
Modified: user/attilio/vmcontention/usr.sbin/bsdinstall/scripts/netconfig_ipv4
==============================================================================
--- user/attilio/vmcontention/usr.sbin/bsdinstall/scripts/netconfig_ipv4 Fri Sep 9 07:44:14 2011 (r225458)
+++ user/attilio/vmcontention/usr.sbin/bsdinstall/scripts/netconfig_ipv4 Fri Sep 9 09:39:26 2011 (r225459)
@@ -79,7 +79,9 @@ echo $INTERFACE $IF_CONFIG |
if [ ! -z $BSDINSTALL_CONFIGCURRENT ]; then
. $BSDINSTALL_TMPETC/._rc.conf.net
ifconfig $INTERFACE `eval echo \\\$ifconfig_$INTERFACE`
- route delete -inet default
- route add -inet default $defaultrouter
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-src-user
mailing list