svn commit: r206685 - in user/imp/tbemd: contrib/netcat etc/mtree
lib/libc/sys sbin/geom/misc sbin/hastd sbin/ifconfig
share/man/man4 sys/cam/scsi
sys/cddl/contrib/opensolaris/uts/common/fs/zfs sys...
Warner Losh
imp at FreeBSD.org
Thu Apr 15 20:48:58 UTC 2010
Author: imp
Date: Thu Apr 15 20:48:57 2010
New Revision: 206685
URL: http://svn.freebsd.org/changeset/base/206685
Log:
svn merge svn+ssh://svn.freebsd.org/base/head@206684
Added:
user/imp/tbemd/share/man/man4/sge.4
- copied unchanged from r206684, head/share/man/man4/sge.4
Modified:
user/imp/tbemd/contrib/netcat/nc.1
user/imp/tbemd/contrib/netcat/netcat.c
user/imp/tbemd/etc/mtree/BSD.include.dist
user/imp/tbemd/lib/libc/sys/sigaction.2
user/imp/tbemd/sbin/geom/misc/subr.c
user/imp/tbemd/sbin/hastd/primary.c
user/imp/tbemd/sbin/ifconfig/ifconfig.c
user/imp/tbemd/share/man/man4/Makefile
user/imp/tbemd/share/man/man4/altq.4
user/imp/tbemd/share/man/man4/ktr.4
user/imp/tbemd/share/man/man4/miibus.4
user/imp/tbemd/share/man/man4/netintro.4
user/imp/tbemd/share/man/man4/vlan.4
user/imp/tbemd/sys/cam/scsi/scsi_cd.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c
user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
user/imp/tbemd/sys/ddb/db_sym.c
user/imp/tbemd/sys/dev/e1000/if_em.c
user/imp/tbemd/sys/dev/e1000/if_igb.c
user/imp/tbemd/sys/dev/hwpmc/hwpmc_core.c
user/imp/tbemd/sys/dev/hwpmc/pmc_events.h
user/imp/tbemd/sys/dev/mxge/if_mxge.c
user/imp/tbemd/sys/dev/mxge/if_mxge_var.h
user/imp/tbemd/sys/dev/sge/if_sge.c
user/imp/tbemd/sys/dev/siis/siis.c
user/imp/tbemd/sys/dev/usb/input/ukbd.c
user/imp/tbemd/sys/geom/eli/g_eli.c
user/imp/tbemd/sys/geom/geom_io.c
user/imp/tbemd/sys/kern/kern_ktr.c
user/imp/tbemd/sys/kern/vfs_cache.c
user/imp/tbemd/sys/net/if.c
user/imp/tbemd/sys/net/vnet.c
user/imp/tbemd/sys/net/vnet.h
user/imp/tbemd/sys/netipsec/key.c
user/imp/tbemd/usr.sbin/config/config.h
user/imp/tbemd/usr.sbin/config/mkoptions.c
user/imp/tbemd/usr.sbin/pmcstat/pmcpl_callgraph.c
user/imp/tbemd/usr.sbin/pmcstat/pmcpl_gprof.c
user/imp/tbemd/usr.sbin/pmcstat/pmcstat_log.c
user/imp/tbemd/usr.sbin/sysinstall/devices.c
Directory Properties:
user/imp/tbemd/ (props changed)
user/imp/tbemd/contrib/tzcode/stdtime/ (props changed)
user/imp/tbemd/contrib/tzcode/zic/ (props changed)
user/imp/tbemd/contrib/tzdata/ (props changed)
user/imp/tbemd/lib/libz/ (props changed)
user/imp/tbemd/sys/contrib/x86emu/ (props changed)
Modified: user/imp/tbemd/contrib/netcat/nc.1
==============================================================================
--- user/imp/tbemd/contrib/netcat/nc.1 Thu Apr 15 19:45:03 2010 (r206684)
+++ user/imp/tbemd/contrib/netcat/nc.1 Thu Apr 15 20:48:57 2010 (r206685)
@@ -27,7 +27,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd February 23, 2010
+.Dd April 15, 2010
.Dt NC 1
.Os
.Sh NAME
@@ -36,7 +36,7 @@
.Sh SYNOPSIS
.Nm nc
.Bk -words
-.Op Fl 46DdEhklnorStUuvz
+.Op Fl 46DdEhklnrStUuvz
.Op Fl e Ar IPsec_policy
.Op Fl I Ar length
.Op Fl i Ar interval
@@ -159,15 +159,6 @@ socket option.
.It Fl O Ar length
Specifies the size of the TCP send buffer.
When
-.It Fl o
-.Dq Once-only mode .
-By default,
-.Nm
-does not terminate on EOF condition on input,
-but continues until the network side has been closed down.
-Specifying
-.Fl o
-will make it terminate on EOF as well.
.It Fl P Ar proxy_username
Specifies a username to present to a proxy server that requires authentication.
If no username is specified then authentication will not be attempted.
Modified: user/imp/tbemd/contrib/netcat/netcat.c
==============================================================================
--- user/imp/tbemd/contrib/netcat/netcat.c Thu Apr 15 19:45:03 2010 (r206684)
+++ user/imp/tbemd/contrib/netcat/netcat.c Thu Apr 15 20:48:57 2010 (r206685)
@@ -72,14 +72,12 @@
#define PORT_MAX_LEN 6
/* Command Line Options */
-int Eflag; /* Use IPsec ESP */
int dflag; /* detached, no stdin */
unsigned int iflag; /* Interval Flag */
int jflag; /* use jumbo frames if we can */
int kflag; /* More than one connect */
int lflag; /* Bind to local port */
int nflag; /* Don't do name look up */
-int oflag; /* Once only: stop on EOF */
int FreeBSD_Oflag; /* Do not use TCP options */
char *Pflag; /* Proxy username */
char *pflag; /* Localport flag */
@@ -151,7 +149,7 @@ main(int argc, char *argv[])
sv = NULL;
while ((ch = getopt_long(argc, argv,
- "46DdEe:hI:i:jklnO:oP:p:rSs:tT:UuV:vw:X:x:z",
+ "46DdEe:hI:i:jklnoO:P:p:rSs:tT:UuV:vw:X:x:z",
longopts, NULL)) != -1) {
switch (ch) {
case '4':
@@ -214,7 +212,7 @@ main(int argc, char *argv[])
nflag = 1;
break;
case 'o':
- oflag = 1;
+ fprintf(stderr, "option -o is deprecated.\n");
break;
case 'P':
Pflag = optarg;
@@ -282,8 +280,6 @@ main(int argc, char *argv[])
case 'T':
Tflag = parse_iptos(optarg);
break;
- case 0:
- break;
default:
usage(1);
}
@@ -729,10 +725,9 @@ readwrite(int nfd)
}
if (!dflag && pfd[1].revents & POLLIN) {
- if ((n = read(wfd, buf, plen)) < 0 ||
- (oflag && n == 0)) {
+ if ((n = read(wfd, buf, plen)) < 0)
return;
- } else if (n == 0) {
+ else if (n == 0) {
shutdown(nfd, SHUT_WR);
pfd[1].fd = -1;
pfd[1].events = 0;
@@ -945,7 +940,6 @@ help(void)
\t-n Suppress name/port resolutions\n\
\t--no-tcpopt Disable TCP options\n\
\t-O length TCP send buffer length\n\
- \t-o Terminate on EOF on input\n\
\t-P proxyuser\tUsername for proxy authentication\n\
\t-p port\t Specify local port for remote connects\n\
\t-r Randomize remote ports\n\
@@ -995,9 +989,9 @@ usage(int ret)
{
fprintf(stderr,
#ifdef IPSEC
- "usage: nc [-46DdEhklnorStUuvz] [-e policy] [-I length] [-i interval] [-O length]\n"
+ "usage: nc [-46DdEhklnrStUuvz] [-e policy] [-I length] [-i interval] [-O length]\n"
#else
- "usage: nc [-46DdhklnorStUuvz] [-I length] [-i interval] [-O length]\n"
+ "usage: nc [-46DdhklnrStUuvz] [-I length] [-i interval] [-O length]\n"
#endif
"\t [-P proxy_username] [-p source_port] [-s source_ip_address] [-T ToS]\n"
"\t [-V fib] [-w timeout] [-X proxy_protocol]\n"
Modified: user/imp/tbemd/etc/mtree/BSD.include.dist
==============================================================================
--- user/imp/tbemd/etc/mtree/BSD.include.dist Thu Apr 15 19:45:03 2010 (r206684)
+++ user/imp/tbemd/etc/mtree/BSD.include.dist Thu Apr 15 20:48:57 2010 (r206685)
@@ -104,8 +104,8 @@
..
lmc
..
- mfi
- ..
+ mfi
+ ..
mpt
mpilib
..
Modified: user/imp/tbemd/lib/libc/sys/sigaction.2
==============================================================================
--- user/imp/tbemd/lib/libc/sys/sigaction.2 Thu Apr 15 19:45:03 2010 (r206684)
+++ user/imp/tbemd/lib/libc/sys/sigaction.2 Thu Apr 15 20:48:57 2010 (r206685)
@@ -496,6 +496,16 @@ or
.Dv SIG_IGN
this way.
.Pp
+If preprocessing symbol
+.Va _POSIX_C_SOURCE
+with the value >= 199309 is not defined, the following declaration for
+the handler shall be used:
+.Bl -tag -offset indent -width short
+.It Tn POSIX Dv SA_SIGINFO :
+.Ft void
+.Fn handler int "struct __sigaction *" "void *" ;
+.El
+.Pp
If the
.Dv SA_SIGINFO
flag is not set, the handler function should match
Modified: user/imp/tbemd/sbin/geom/misc/subr.c
==============================================================================
--- user/imp/tbemd/sbin/geom/misc/subr.c Thu Apr 15 19:45:03 2010 (r206684)
+++ user/imp/tbemd/sbin/geom/misc/subr.c Thu Apr 15 20:48:57 2010 (r206685)
@@ -236,6 +236,7 @@ g_metadata_store(const char *name, u_cha
error = errno;
goto out;
}
+ (void)ioctl(fd, DIOCGFLUSH, NULL);
out:
if (sector != NULL)
free(sector);
@@ -293,6 +294,7 @@ g_metadata_clear(const char *name, const
error = errno;
goto out;
}
+ (void)ioctl(fd, DIOCGFLUSH, NULL);
out:
if (sector != NULL)
free(sector);
Modified: user/imp/tbemd/sbin/hastd/primary.c
==============================================================================
--- user/imp/tbemd/sbin/hastd/primary.c Thu Apr 15 19:45:03 2010 (r206684)
+++ user/imp/tbemd/sbin/hastd/primary.c Thu Apr 15 20:48:57 2010 (r206685)
@@ -682,7 +682,7 @@ init_ggate(struct hast_resource *res)
ggiocreate.gctl_mediasize = res->hr_datasize;
ggiocreate.gctl_sectorsize = res->hr_local_sectorsize;
ggiocreate.gctl_flags = 0;
- ggiocreate.gctl_maxcount = 128;
+ ggiocreate.gctl_maxcount = G_GATE_MAX_QUEUE_SIZE;
ggiocreate.gctl_timeout = 0;
ggiocreate.gctl_unit = G_GATE_NAME_GIVEN;
snprintf(ggiocreate.gctl_name, sizeof(ggiocreate.gctl_name), "hast/%s",
Modified: user/imp/tbemd/sbin/ifconfig/ifconfig.c
==============================================================================
--- user/imp/tbemd/sbin/ifconfig/ifconfig.c Thu Apr 15 19:45:03 2010 (r206684)
+++ user/imp/tbemd/sbin/ifconfig/ifconfig.c Thu Apr 15 20:48:57 2010 (r206685)
@@ -922,19 +922,20 @@ status(const struct afswtch *afp, const
ifr.ifr_buffer.buffer = descr;
ifr.ifr_buffer.length = descrlen;
if (ioctl(s, SIOCGIFDESCR, &ifr) == 0) {
- if (strlen(descr) > 0)
- printf("\tdescription: %s\n", descr);
- break;
- } else if (errno == ENAMETOOLONG)
- descrlen = ifr.ifr_buffer.length;
- else
- break;
- } else {
+ if (ifr.ifr_buffer.buffer == descr) {
+ if (strlen(descr) > 0)
+ printf("\tdescription: %s\n",
+ descr);
+ } else if (ifr.ifr_buffer.length > descrlen) {
+ descrlen = ifr.ifr_buffer.length;
+ continue;
+ }
+ }
+ } else
warn("unable to allocate memory for interface"
"description");
- break;
- }
- };
+ break;
+ }
if (ioctl(s, SIOCGIFCAP, (caddr_t)&ifr) == 0) {
if (ifr.ifr_curcap != 0) {
Modified: user/imp/tbemd/share/man/man4/Makefile
==============================================================================
--- user/imp/tbemd/share/man/man4/Makefile Thu Apr 15 19:45:03 2010 (r206684)
+++ user/imp/tbemd/share/man/man4/Makefile Thu Apr 15 20:48:57 2010 (r206685)
@@ -350,6 +350,7 @@ MAN= aac.4 \
sem.4 \
ses.4 \
sf.4 \
+ sge.4 \
si.4 \
siba.4 \
sio.4 \
Modified: user/imp/tbemd/share/man/man4/altq.4
==============================================================================
--- user/imp/tbemd/share/man/man4/altq.4 Thu Apr 15 19:45:03 2010 (r206684)
+++ user/imp/tbemd/share/man/man4/altq.4 Thu Apr 15 20:48:57 2010 (r206685)
@@ -25,7 +25,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd July 26, 2009
+.Dd April 14, 2010
.Dt ALTQ 4
.Os
.Sh NAME
@@ -151,6 +151,7 @@ They have been applied to the following
.Xr rl 4 ,
.Xr rum 4 ,
.Xr sf 4 ,
+.Xr sge 4 ,
.Xr sis 4 ,
.Xr sk 4 ,
.Xr ste 4 ,
Modified: user/imp/tbemd/share/man/man4/ktr.4
==============================================================================
--- user/imp/tbemd/share/man/man4/ktr.4 Thu Apr 15 19:45:03 2010 (r206684)
+++ user/imp/tbemd/share/man/man4/ktr.4 Thu Apr 15 20:48:57 2010 (r206685)
@@ -122,7 +122,7 @@ option sets the flag to one.
The KTR buffer can be examined from within
.Xr ddb 4
via the
-.Ic show ktr Op Cm /v
+.Ic show ktr Op Cm /vV
command.
This command displays the contents of the trace buffer one page at a time.
At the
@@ -136,6 +136,10 @@ If the
.Cm /v
modifier is specified, then they are displayed in addition to the normal
output.
+If the
+.Cm /V
+modifier is specified, then just the timestamp is displayed in
+addition to the normal output.
Note that the events are displayed in reverse chronological order.
That is, the most recent events are displayed first.
.Ss Logging ktr to Disk
@@ -167,7 +171,9 @@ the next invocation.
enables logging of
.Nm
entries to disk if it is set to one.
-Setting this to 0 will terminate logging.
+Setting this to 0 will terminate logging to disk and revert to
+logging to the normal ktr ring buffer.
+Data is not sent to the ring buffer while logging to disk.
.It Va debug.ktr.alq_max
is the maximum number of entries that will be recorded to disk, or 0 for
infinite.
Modified: user/imp/tbemd/share/man/man4/miibus.4
==============================================================================
--- user/imp/tbemd/share/man/man4/miibus.4 Thu Apr 15 19:45:03 2010 (r206684)
+++ user/imp/tbemd/share/man/man4/miibus.4 Thu Apr 15 20:48:57 2010 (r206685)
@@ -8,7 +8,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd June 14, 2009
+.Dd April 14, 2010
.Dt MIIBUS 4
.Os
.Sh NAME
@@ -97,6 +97,8 @@ RealTek 8129/8139
RealTek RTL8150 USB To Fast Ethernet
.It Xr sf 4
Adaptec AIC-6915
+.It Xr sge 4
+Silicon Integrated Systems SiS190/191 Ethernet
.It Xr sis 4
Silicon Integrated Systems SiS 900/SiS 7016
.It Xr sk 4
@@ -158,6 +160,7 @@ but as a result are not well behaved new
.Xr rl 4 ,
.Xr rue 4 ,
.Xr sf 4 ,
+.Xr sge 4 ,
.Xr sis 4 ,
.Xr sk 4 ,
.Xr ste 4 ,
Modified: user/imp/tbemd/share/man/man4/netintro.4
==============================================================================
--- user/imp/tbemd/share/man/man4/netintro.4 Thu Apr 15 19:45:03 2010 (r206684)
+++ user/imp/tbemd/share/man/man4/netintro.4 Thu Apr 15 20:48:57 2010 (r206685)
@@ -32,7 +32,7 @@
.\" @(#)netintro.4 8.2 (Berkeley) 11/30/93
.\" $FreeBSD$
.\"
-.Dd January 26, 2010
+.Dd April 14, 2010
.Dt NETINTRO 4
.Os
.Sh NAME
@@ -292,8 +292,11 @@ field of
struct passed in as parameter, and the length would include
the terminating nul character.
If there is not enough space to hold the interface length,
-no copy would be done and an
-error would be returned.
+no copy would be done and the
+.Va buffer
+field of
+.Va ifru_buffer
+would be set to NULL.
The kernel will store the buffer length in the
.Va length
field upon return, regardless whether the buffer itself is
Copied: user/imp/tbemd/share/man/man4/sge.4 (from r206684, head/share/man/man4/sge.4)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ user/imp/tbemd/share/man/man4/sge.4 Thu Apr 15 20:48:57 2010 (r206685, copy of r206684, head/share/man/man4/sge.4)
@@ -0,0 +1,120 @@
+.\" Copyright (c) 2010 Pyun YongHyeon
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (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$
+.\"
+.Dd April 14, 2010
+.Dt SGE 4
+.Os
+.Sh NAME
+.Nm sge
+.Nd Silicon Integrated Systems SiS190/191 Fast/Gigabit Ethernet driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device miibus"
+.Cd "device sge"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_sge="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+device driver provides support for SiS190 Fast Ethernet
+controllers and SiS191 Fast/Gigabit Ethernet controllers.
+.Pp
+All LOMs supported by the
+.Nm
+driver have TCP/UDP/IP checksum offload for transmit and receive.
+Due to lack of documentation more offloading features like TCP
+segmentation offload (TSO), hardware VLAN tag stripping/insertion
+features, Wake On Lan (WOL), Jumbo frame and an interrupt moderation
+mechanism are not supported yet.
+.Pp
+The
+.Nm
+driver supports the following media types:
+.Bl -tag -width ".Cm 10baseT/UTP"
+.It Cm autoselect
+Enable autoselection of the media type and options.
+The user can manually override
+the autoselected mode by adding media options to
+.Xr rc.conf 5 .
+.It Cm 10baseT/UTP
+Set 10Mbps operation.
+.It Cm 100baseTX
+Set 100Mbps (Fast Ethernet) operation.
+.It Cm 1000baseTX
+Set 1000baseTX operation over twisted pair.
+.El
+.Pp
+The
+.Nm
+driver supports the following media options:
+.Bl -tag -width ".Cm full-duplex"
+.It Cm full-duplex
+Force full duplex operation.
+.It Cm half-duplex
+Force half duplex operation.
+.El
+.Pp
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+The
+.Nm
+device driver provides support for the following Ethernet controllers:
+.Pp
+.Bl -bullet -compact
+.It
+SiS190 Fast Ethernet controller
+.It
+SiS191 Fast/Gigabit Ethernet controller
+.El
+.Sh SEE ALSO
+.Xr altq 4 ,
+.Xr arp 4 ,
+.Xr miibus 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr vlan 4 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+driver was written by
+.An Alexander Pohoyda
+.Aq alexander.pohoyda at gmx.net .
+And enhanced by
+.An Nikolay Denev
+.Aq ndenev at gmail.com .
+It first appeared in
+.Fx 8.1 .
Modified: user/imp/tbemd/share/man/man4/vlan.4
==============================================================================
--- user/imp/tbemd/share/man/man4/vlan.4 Thu Apr 15 19:45:03 2010 (r206684)
+++ user/imp/tbemd/share/man/man4/vlan.4 Thu Apr 15 20:48:57 2010 (r206685)
@@ -25,7 +25,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd June 14, 2009
+.Dd April 14, 2010
.Dt VLAN 4
.Os
.Sh NAME
@@ -172,6 +172,7 @@ natively:
.Xr nve 4 ,
.Xr rl 4 ,
.Xr sf 4 ,
+.Xr sge 4 ,
.Xr sis 4 ,
.Xr sk 4 ,
.Xr ste 4 ,
Modified: user/imp/tbemd/sys/cam/scsi/scsi_cd.c
==============================================================================
--- user/imp/tbemd/sys/cam/scsi/scsi_cd.c Thu Apr 15 19:45:03 2010 (r206684)
+++ user/imp/tbemd/sys/cam/scsi/scsi_cd.c Thu Apr 15 20:48:57 2010 (r206685)
@@ -2773,8 +2773,12 @@ cdcheckmedia(struct cam_periph *periph)
softc->flags &= ~(CD_FLAG_VALID_MEDIA|CD_FLAG_VALID_TOC);
cdprevent(periph, PR_ALLOW);
return (error);
- } else
+ } else {
softc->flags |= CD_FLAG_VALID_MEDIA;
+ softc->disk->d_sectorsize = softc->params.blksize;
+ softc->disk->d_mediasize =
+ (off_t)softc->params.blksize * softc->params.disksize;
+ }
/*
* Now we check the table of contents. This (currently) is only
@@ -2863,9 +2867,6 @@ cdcheckmedia(struct cam_periph *periph)
}
softc->flags |= CD_FLAG_VALID_TOC;
- softc->disk->d_sectorsize = softc->params.blksize;
- softc->disk->d_mediasize =
- (off_t)softc->params.blksize * softc->params.disksize;
bailout:
Modified: user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c
==============================================================================
--- user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c Thu Apr 15 19:45:03 2010 (r206684)
+++ user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c Thu Apr 15 20:48:57 2010 (r206685)
@@ -868,13 +868,15 @@ zfs_root(vfs_t *vfsp, int flags, vnode_t
ZFS_ENTER_NOERROR(zfsvfs);
error = zfs_zget(zfsvfs, zfsvfs->z_root, &rootzp);
+
+ ZFS_EXIT(zfsvfs);
+
if (error == 0) {
*vpp = ZTOV(rootzp);
error = vn_lock(*vpp, flags);
(*vpp)->v_vflag |= VV_ROOT;
}
- ZFS_EXIT(zfsvfs);
return (error);
}
@@ -1143,13 +1145,13 @@ zfs_vget(vfs_t *vfsp, ino_t ino, int fla
VN_RELE(ZTOV(zp));
err = EINVAL;
}
+ ZFS_EXIT(zfsvfs);
if (err != 0)
*vpp = NULL;
else {
*vpp = ZTOV(zp);
vn_lock(*vpp, flags);
}
- ZFS_EXIT(zfsvfs);
return (err);
}
@@ -1237,8 +1239,8 @@ zfs_fhtovp(vfs_t *vfsp, fid_t *fidp, vno
} else {
VN_HOLD(*vpp);
}
- vn_lock(*vpp, LK_EXCLUSIVE | LK_RETRY);
ZFS_EXIT(zfsvfs);
+ vn_lock(*vpp, LK_EXCLUSIVE | LK_RETRY);
return (0);
}
@@ -1259,10 +1261,11 @@ zfs_fhtovp(vfs_t *vfsp, fid_t *fidp, vno
return (EINVAL);
}
+ ZFS_EXIT(zfsvfs);
+
*vpp = ZTOV(zp);
vn_lock(*vpp, LK_EXCLUSIVE | LK_RETRY);
vnode_create_vobject(*vpp, zp->z_phys->zp_size, curthread);
- ZFS_EXIT(zfsvfs);
return (0);
}
Modified: user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
==============================================================================
--- user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Thu Apr 15 19:45:03 2010 (r206684)
+++ user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Thu Apr 15 20:48:57 2010 (r206685)
@@ -1209,15 +1209,17 @@ zfs_lookup(vnode_t *dvp, char *nm, vnode
ltype = VOP_ISLOCKED(dvp);
VOP_UNLOCK(dvp, 0);
}
+ ZFS_EXIT(zfsvfs);
error = vn_lock(*vpp, cnp->cn_lkflags);
if (cnp->cn_flags & ISDOTDOT)
vn_lock(dvp, ltype | LK_RETRY);
if (error != 0) {
VN_RELE(*vpp);
*vpp = NULL;
- ZFS_EXIT(zfsvfs);
return (error);
}
+ } else {
+ ZFS_EXIT(zfsvfs);
}
#ifdef FREEBSD_NAMECACHE
@@ -1237,8 +1239,6 @@ zfs_lookup(vnode_t *dvp, char *nm, vnode
}
#endif
- ZFS_EXIT(zfsvfs);
-
return (error);
}
Modified: user/imp/tbemd/sys/ddb/db_sym.c
==============================================================================
--- user/imp/tbemd/sys/ddb/db_sym.c Thu Apr 15 19:45:03 2010 (r206684)
+++ user/imp/tbemd/sys/ddb/db_sym.c Thu Apr 15 20:48:57 2010 (r206685)
@@ -64,12 +64,6 @@ static boolean_t db_line_at_pc(c_db_sym_
static int db_cpu = -1;
#ifdef VIMAGE
-extern uintptr_t *__start_set_vnet;
-extern uintptr_t *__stop_set_vnet;
-
-#define VNET_START (uintptr_t)&__start_set_vnet
-#define VNET_STOP (uintptr_t)&__stop_set_vnet
-
static void *db_vnet = NULL;
#endif
Modified: user/imp/tbemd/sys/dev/e1000/if_em.c
==============================================================================
--- user/imp/tbemd/sys/dev/e1000/if_em.c Thu Apr 15 19:45:03 2010 (r206684)
+++ user/imp/tbemd/sys/dev/e1000/if_em.c Thu Apr 15 20:48:57 2010 (r206685)
@@ -93,7 +93,7 @@ int em_display_debug_stats = 0;
/*********************************************************************
* Driver version:
*********************************************************************/
-char em_driver_version[] = "7.0.4";
+char em_driver_version[] = "7.0.5";
/*********************************************************************
@@ -1484,12 +1484,17 @@ em_msix_tx(void *arg)
{
struct tx_ring *txr = arg;
struct adapter *adapter = txr->adapter;
+ bool more;
++txr->tx_irq;
EM_TX_LOCK(txr);
- em_txeof(txr);
+ more = em_txeof(txr);
EM_TX_UNLOCK(txr);
- E1000_WRITE_REG(&adapter->hw, E1000_IMS, txr->ims);
+ if (more)
+ taskqueue_enqueue(txr->tq, &txr->tx_task);
+ else
+ /* Reenable this interrupt */
+ E1000_WRITE_REG(&adapter->hw, E1000_IMS, txr->ims);
return;
}
Modified: user/imp/tbemd/sys/dev/e1000/if_igb.c
==============================================================================
--- user/imp/tbemd/sys/dev/e1000/if_igb.c Thu Apr 15 19:45:03 2010 (r206684)
+++ user/imp/tbemd/sys/dev/e1000/if_igb.c Thu Apr 15 20:48:57 2010 (r206685)
@@ -99,7 +99,7 @@ int igb_display_debug_stats = 0;
/*********************************************************************
* Driver version:
*********************************************************************/
-char igb_driver_version[] = "version - 1.9.4";
+char igb_driver_version[] = "version - 1.9.5";
/*********************************************************************
@@ -758,8 +758,15 @@ igb_start_locked(struct tx_ring *txr, st
if (!adapter->link_active)
return;
- while (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) {
+ /* Call cleanup if number of TX descriptors low */
+ if (txr->tx_avail <= IGB_TX_CLEANUP_THRESHOLD)
+ igb_txeof(txr);
+ while (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) {
+ if (txr->tx_avail <= IGB_TX_OP_THRESHOLD) {
+ ifp->if_drv_flags |= IFF_DRV_OACTIVE;
+ break;
+ }
IFQ_DRV_DEQUEUE(&ifp->if_snd, m_head);
if (m_head == NULL)
break;
@@ -779,6 +786,7 @@ igb_start_locked(struct tx_ring *txr, st
ETHER_BPF_MTAP(ifp, m_head);
/* Set watchdog on */
+ txr->watchdog_time = ticks;
txr->watchdog_check = TRUE;
}
}
@@ -817,8 +825,6 @@ igb_mq_start(struct ifnet *ifp, struct m
/* Which queue to use */
if ((m->m_flags & M_FLOWID) != 0)
i = m->m_pkthdr.flowid % adapter->num_queues;
- else
- i = curcpu % adapter->num_queues;
txr = &adapter->tx_rings[i];
@@ -847,6 +853,10 @@ igb_mq_start_locked(struct ifnet *ifp, s
return (err);
}
+ /* Call cleanup if number of TX descriptors low */
+ if (txr->tx_avail <= IGB_TX_CLEANUP_THRESHOLD)
+ igb_txeof(txr);
+
enq = 0;
if (m == NULL) {
next = drbr_dequeue(ifp, txr->br);
@@ -856,6 +866,7 @@ igb_mq_start_locked(struct ifnet *ifp, s
next = drbr_dequeue(ifp, txr->br);
} else
next = m;
+
/* Process the queue */
while (next != NULL) {
if ((err = igb_xmit(txr, &next)) != 0) {
@@ -877,6 +888,7 @@ igb_mq_start_locked(struct ifnet *ifp, s
if (enq > 0) {
/* Set the watchdog */
txr->watchdog_check = TRUE;
+ txr->watchdog_time = ticks;
}
return (err);
}
@@ -1248,19 +1260,13 @@ igb_handle_que(void *context, int pendin
struct adapter *adapter = que->adapter;
struct tx_ring *txr = que->txr;
struct ifnet *ifp = adapter->ifp;
- u32 loop = IGB_MAX_LOOP;
bool more;
- /* RX first */
- do {
+ if (ifp->if_drv_flags & IFF_DRV_RUNNING) {
more = igb_rxeof(que, -1);
- } while (loop-- && more);
- if (IGB_TX_TRYLOCK(txr)) {
- loop = IGB_MAX_LOOP;
- do {
- more = igb_txeof(txr);
- } while (loop-- && more);
+ IGB_TX_LOCK(txr);
+ igb_txeof(txr);
#if __FreeBSD_version >= 800000
igb_mq_start_locked(ifp, txr, NULL);
#else
@@ -1268,6 +1274,10 @@ igb_handle_que(void *context, int pendin
igb_start_locked(txr, ifp);
#endif
IGB_TX_UNLOCK(txr);
+ if (more) {
+ taskqueue_enqueue(que->tq, &que->que_task);
+ return;
+ }
}
/* Reenable this interrupt */
Modified: user/imp/tbemd/sys/dev/hwpmc/hwpmc_core.c
==============================================================================
--- user/imp/tbemd/sys/dev/hwpmc/hwpmc_core.c Thu Apr 15 19:45:03 2010 (r206684)
+++ user/imp/tbemd/sys/dev/hwpmc/hwpmc_core.c Thu Apr 15 20:48:57 2010 (r206685)
@@ -603,7 +603,7 @@ static struct iap_event_descr iap_events
IAPDESCR(06H_0FH, 0x06, 0x0F, IAP_F_FM | IAP_F_I7O),
IAPDESCR(07H_00H, 0x07, 0x00, IAP_F_FM | IAP_F_CC | IAP_F_CC2),
- IAPDESCR(07H_01H, 0x07, 0x01, IAP_F_FM | IAP_F_ALLCPUSCORE2 | IAP_F_WM),
+ IAPDESCR(07H_01H, 0x07, 0x01, IAP_F_FM | IAP_F_ALLCPUSCORE2 | IAP_F_I7 | IAP_F_WM),
IAPDESCR(07H_02H, 0x07, 0x02, IAP_F_FM | IAP_F_ALLCPUSCORE2),
IAPDESCR(07H_03H, 0x07, 0x03, IAP_F_FM | IAP_F_ALLCPUSCORE2),
IAPDESCR(07H_06H, 0x07, 0x06, IAP_F_FM | IAP_F_CA),
@@ -1053,6 +1053,7 @@ static struct iap_event_descr iap_events
IAPDESCR(B0H_02H, 0xB0, 0x02, IAP_F_FM | IAP_F_WM | IAP_F_I7O),
IAPDESCR(B0H_04H, 0xB0, 0x04, IAP_F_FM | IAP_F_WM | IAP_F_I7O),
IAPDESCR(B0H_08H, 0xB0, 0x08, IAP_F_FM | IAP_F_WM | IAP_F_I7O),
+ IAPDESCR(B0H_10H, 0xB0, 0x10, IAP_F_FM | IAP_F_WM | IAP_F_I7O),
IAPDESCR(B0H_20H, 0xB0, 0x20, IAP_F_FM | IAP_F_I7O),
IAPDESCR(B0H_40H, 0xB0, 0x40, IAP_F_FM | IAP_F_I7 | IAP_F_WM),
IAPDESCR(B0H_80H, 0xB0, 0x80, IAP_F_FM | IAP_F_CA | IAP_F_WM | IAP_F_I7O),
Modified: user/imp/tbemd/sys/dev/hwpmc/pmc_events.h
==============================================================================
--- user/imp/tbemd/sys/dev/hwpmc/pmc_events.h Thu Apr 15 19:45:03 2010 (r206684)
+++ user/imp/tbemd/sys/dev/hwpmc/pmc_events.h Thu Apr 15 20:48:57 2010 (r206685)
@@ -2207,7 +2207,7 @@ __PMC_EV_ALIAS("OFFCORE_REQUESTS.DEMAND.
__PMC_EV_ALIAS("OFFCORE_REQUESTS.DEMAND.READ_CODE", IAP_EVENT_B0H_02H) \
__PMC_EV_ALIAS("OFFCORE_REQUESTS.DEMAND.RFO", IAP_EVENT_B0H_04H) \
__PMC_EV_ALIAS("OFFCORE_REQUESTS.ANY.READ", IAP_EVENT_B0H_08H) \
-__PMC_EV_ALIAS("OFFCORE_REQUESTS.ANY.RFO", IAP_EVENT_80H_10H) \
+__PMC_EV_ALIAS("OFFCORE_REQUESTS.ANY.RFO", IAP_EVENT_B0H_10H) \
__PMC_EV_ALIAS("OFFCORE_REQUESTS.L1D_WRITEBACK", IAP_EVENT_B0H_40H) \
__PMC_EV_ALIAS("OFFCORE_REQUESTS.ANY", IAP_EVENT_B0H_80H) \
__PMC_EV_ALIAS("UOPS_EXECUTED.PORT0", IAP_EVENT_B1H_01H) \
Modified: user/imp/tbemd/sys/dev/mxge/if_mxge.c
==============================================================================
--- user/imp/tbemd/sys/dev/mxge/if_mxge.c Thu Apr 15 19:45:03 2010 (r206684)
+++ user/imp/tbemd/sys/dev/mxge/if_mxge.c Thu Apr 15 20:48:57 2010 (r206685)
@@ -883,6 +883,9 @@ mxge_send_cmd(mxge_softc_t *sc, uint32_t
case MXGEFW_CMD_ERROR_BUSY:
err = EBUSY;
break;
+ case MXGEFW_CMD_ERROR_I2C_ABSENT:
+ err = ENXIO;
+ break;
default:
device_printf(sc->dev,
"mxge: command %d "
@@ -2782,37 +2785,25 @@ static struct mxge_media_type mxge_sfp_m
};
static void
-mxge_set_media(mxge_softc_t *sc, int type)
+mxge_media_set(mxge_softc_t *sc, int media_type)
{
- sc->media_flags |= type;
- ifmedia_add(&sc->media, sc->media_flags, 0, NULL);
- ifmedia_set(&sc->media, sc->media_flags);
-}
+
+ ifmedia_add(&sc->media, IFM_ETHER | IFM_FDX | media_type,
+ 0, NULL);
+ ifmedia_set(&sc->media, IFM_ETHER | IFM_FDX | media_type);
+ sc->current_media = media_type;
+ sc->media.ifm_media = sc->media.ifm_cur->ifm_media;
+}
-/*
- * Determine the media type for a NIC. Some XFPs will identify
- * themselves only when their link is up, so this is initiated via a
- * link up interrupt. However, this can potentially take up to
- * several milliseconds, so it is run via the watchdog routine, rather
- * than in the interrupt handler itself. This need only be done
- * once, not each time the link is up.
- */
static void
-mxge_media_probe(mxge_softc_t *sc)
+mxge_media_init(mxge_softc_t *sc)
{
- mxge_cmd_t cmd;
- char *cage_type;
char *ptr;
- struct mxge_media_type *mxge_media_types = NULL;
- int i, err, ms, mxge_media_type_entries;
- uint32_t byte;
-
- sc->need_media_probe = 0;
+ int i;
- /* if we've already set a media type, we're done */
- if (sc->media_flags != (IFM_ETHER | IFM_AUTO))
- return;
+ ifmedia_removeall(&sc->media);
+ mxge_media_set(sc, IFM_AUTO);
/*
* parse the product code to deterimine the interface type
@@ -2823,6 +2814,7 @@ mxge_media_probe(mxge_softc_t *sc)
ptr = sc->product_code_string;
if (ptr == NULL) {
device_printf(sc->dev, "Missing product code\n");
+ return;
}
for (i = 0; i < 3; i++, ptr++) {
@@ -2835,17 +2827,44 @@ mxge_media_probe(mxge_softc_t *sc)
}
if (*ptr == 'C') {
/* -C is CX4 */
- mxge_set_media(sc, IFM_10G_CX4);
- return;
- }
- else if (*ptr == 'Q') {
+ sc->connector = MXGE_CX4;
+ mxge_media_set(sc, IFM_10G_CX4);
+ } else if (*ptr == 'Q') {
/* -Q is Quad Ribbon Fiber */
+ sc->connector = MXGE_QRF;
device_printf(sc->dev, "Quad Ribbon Fiber Media\n");
/* FreeBSD has no media type for Quad ribbon fiber */
- return;
+ } else if (*ptr == 'R') {
+ /* -R is XFP */
+ sc->connector = MXGE_XFP;
+ } else if (*ptr == 'S' || *(ptr +1) == 'S') {
+ /* -S or -2S is SFP+ */
+ sc->connector = MXGE_SFP;
+ } else {
+ device_printf(sc->dev, "Unknown media type: %c\n", *ptr);
}
+}
- if (*ptr == 'R') {
+/*
+ * Determine the media type for a NIC. Some XFPs will identify
+ * themselves only when their link is up, so this is initiated via a
+ * link up interrupt. However, this can potentially take up to
+ * several milliseconds, so it is run via the watchdog routine, rather
+ * than in the interrupt handler itself.
+ */
+static void
+mxge_media_probe(mxge_softc_t *sc)
+{
+ mxge_cmd_t cmd;
+ char *cage_type;
+
+ struct mxge_media_type *mxge_media_types = NULL;
+ int i, err, ms, mxge_media_type_entries;
+ uint32_t byte;
+
+ sc->need_media_probe = 0;
+
+ if (sc->connector == MXGE_XFP) {
/* -R is XFP */
mxge_media_types = mxge_xfp_media_types;
mxge_media_type_entries =
@@ -2853,9 +2872,7 @@ mxge_media_probe(mxge_softc_t *sc)
sizeof (mxge_xfp_media_types[0]);
byte = MXGE_XFP_COMPLIANCE_BYTE;
cage_type = "XFP";
- }
-
- if (*ptr == 'S' || *(ptr +1) == 'S') {
+ } else if (sc->connector == MXGE_SFP) {
/* -S or -2S is SFP+ */
mxge_media_types = mxge_sfp_media_types;
mxge_media_type_entries =
@@ -2863,10 +2880,8 @@ mxge_media_probe(mxge_softc_t *sc)
sizeof (mxge_sfp_media_types[0]);
cage_type = "SFP+";
byte = 3;
- }
-
- if (mxge_media_types == NULL) {
- device_printf(sc->dev, "Unknown media type: %c\n", *ptr);
+ } else {
+ /* nothing to do; media type cannot change */
return;
}
@@ -2909,7 +2924,10 @@ mxge_media_probe(mxge_softc_t *sc)
if (mxge_verbose)
device_printf(sc->dev, "%s:%s\n", cage_type,
mxge_media_types[0].name);
- mxge_set_media(sc, mxge_media_types[0].flag);
+ if (sc->current_media != mxge_media_types[0].flag) {
+ mxge_media_init(sc);
+ mxge_media_set(sc, mxge_media_types[0].flag);
+ }
return;
}
for (i = 1; i < mxge_media_type_entries; i++) {
@@ -2919,12 +2937,16 @@ mxge_media_probe(mxge_softc_t *sc)
cage_type,
mxge_media_types[i].name);
- mxge_set_media(sc, mxge_media_types[i].flag);
+ if (sc->current_media != mxge_media_types[i].flag) {
+ mxge_media_init(sc);
+ mxge_media_set(sc, mxge_media_types[i].flag);
+ }
return;
}
}
- device_printf(sc->dev, "%s media 0x%x unknown\n", cage_type,
- cmd.data0);
+ if (mxge_verbose)
+ device_printf(sc->dev, "%s media 0x%x unknown\n",
+ cage_type, cmd.data0);
return;
}
@@ -2988,10 +3010,12 @@ mxge_intr(void *arg)
sc->link_state = stats->link_up;
if (sc->link_state) {
if_link_state_change(sc->ifp, LINK_STATE_UP);
+ sc->ifp->if_baudrate = IF_Gbps(10UL);
if (mxge_verbose)
device_printf(sc->dev, "link up\n");
} else {
if_link_state_change(sc->ifp, LINK_STATE_DOWN);
+ sc->ifp->if_baudrate = 0;
if (mxge_verbose)
device_printf(sc->dev, "link down\n");
}
@@ -4026,9 +4050,9 @@ mxge_media_status(struct ifnet *ifp, str
if (sc == NULL)
return;
ifmr->ifm_status = IFM_AVALID;
+ ifmr->ifm_active = IFM_ETHER | IFM_FDX;
ifmr->ifm_status |= sc->link_state ? IFM_ACTIVE : 0;
- ifmr->ifm_active = IFM_AUTO | IFM_ETHER;
- ifmr->ifm_active |= sc->link_state ? IFM_FDX : 0;
+ ifmr->ifm_active |= sc->current_media;
}
static int
@@ -4135,6 +4159,9 @@ mxge_ioctl(struct ifnet *ifp, u_long com
break;
case SIOCGIFMEDIA:
+ mtx_lock(&sc->driver_mtx);
+ mxge_media_probe(sc);
+ mtx_unlock(&sc->driver_mtx);
err = ifmedia_ioctl(ifp, (struct ifreq *)data,
&sc->media, command);
break;
@@ -4732,7 +4759,7 @@ mxge_attach(device_t dev)
ifp->if_baudrate = IF_Gbps(10UL);
ifp->if_capabilities = IFCAP_RXCSUM | IFCAP_TXCSUM | IFCAP_TSO4 |
- IFCAP_VLAN_MTU;
+ IFCAP_VLAN_MTU | IFCAP_LINKSTATE;
#ifdef INET
ifp->if_capabilities |= IFCAP_LRO;
#endif
@@ -4766,7 +4793,7 @@ mxge_attach(device_t dev)
/* Initialise the ifmedia structure */
ifmedia_init(&sc->media, 0, mxge_media_change,
mxge_media_status);
- mxge_set_media(sc, IFM_ETHER | IFM_AUTO);
+ mxge_media_init(sc);
mxge_media_probe(sc);
sc->dying = 0;
ether_ifattach(ifp, sc->mac_addr);
Modified: user/imp/tbemd/sys/dev/mxge/if_mxge_var.h
==============================================================================
--- user/imp/tbemd/sys/dev/mxge/if_mxge_var.h Thu Apr 15 19:45:03 2010 (r206684)
+++ user/imp/tbemd/sys/dev/mxge/if_mxge_var.h Thu Apr 15 20:48:57 2010 (r206685)
@@ -268,6 +268,8 @@ struct mxge_softc {
int num_slices;
int rx_ring_size;
int dying;
+ int connector;
+ int current_media;
mxge_dma_t dmabench_dma;
struct callout co_hdl;
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-src-user
mailing list