svn commit: r267054 - in user/attilio/rm_vmobj_cache: contrib/openpam/lib/libpam share/man/man5 sys/arm/broadcom/bcm2835 sys/arm/ti sys/boot/fdt/dts/arm sys/cam/scsi sys/cddl/contrib/opensolaris/ut...

Attilio Rao attilio at FreeBSD.org
Wed Jun 4 13:12:11 UTC 2014


Author: attilio
Date: Wed Jun  4 13:12:07 2014
New Revision: 267054
URL: http://svnweb.freebsd.org/changeset/base/267054

Log:
  Merge from HEAD.

Deleted:
  user/attilio/rm_vmobj_cache/tools/build/options/WITHOUT_TESTS
Modified:
  user/attilio/rm_vmobj_cache/contrib/openpam/lib/libpam/openpam_configure.c
  user/attilio/rm_vmobj_cache/share/man/man5/src.conf.5
  user/attilio/rm_vmobj_cache/sys/arm/broadcom/bcm2835/bcm2835_bsc.c
  user/attilio/rm_vmobj_cache/sys/arm/ti/ti_i2c.c
  user/attilio/rm_vmobj_cache/sys/boot/fdt/dts/arm/beaglebone-black.dts
  user/attilio/rm_vmobj_cache/sys/boot/fdt/dts/arm/beaglebone.dts
  user/attilio/rm_vmobj_cache/sys/cam/scsi/scsi_sg.c
  user/attilio/rm_vmobj_cache/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
  user/attilio/rm_vmobj_cache/sys/compat/linux/linux_ioctl.c
  user/attilio/rm_vmobj_cache/sys/dev/hpt27xx/hpt27xx_osm_bsd.c
  user/attilio/rm_vmobj_cache/sys/dev/usb/controller/dwc_otg.c
  user/attilio/rm_vmobj_cache/sys/dev/usb/wlan/if_rsu.c
  user/attilio/rm_vmobj_cache/sys/dev/usb/wlan/if_rsureg.h
  user/attilio/rm_vmobj_cache/sys/ufs/ffs/ffs_vfsops.c
  user/attilio/rm_vmobj_cache/tools/build/options/WITH_TESTS
  user/attilio/rm_vmobj_cache/tools/tools/vt/fontcvt/fontcvt.c
  user/attilio/rm_vmobj_cache/usr.bin/netstat/main.c
  user/attilio/rm_vmobj_cache/usr.bin/netstat/netstat.1
  user/attilio/rm_vmobj_cache/usr.bin/users/users.c
Directory Properties:
  user/attilio/rm_vmobj_cache/   (props changed)
  user/attilio/rm_vmobj_cache/contrib/openpam/   (props changed)
  user/attilio/rm_vmobj_cache/share/   (props changed)
  user/attilio/rm_vmobj_cache/sys/   (props changed)
  user/attilio/rm_vmobj_cache/sys/boot/   (props changed)
  user/attilio/rm_vmobj_cache/sys/cddl/contrib/opensolaris/   (props changed)

Modified: user/attilio/rm_vmobj_cache/contrib/openpam/lib/libpam/openpam_configure.c
==============================================================================
--- user/attilio/rm_vmobj_cache/contrib/openpam/lib/libpam/openpam_configure.c	Wed Jun  4 12:26:53 2014	(r267053)
+++ user/attilio/rm_vmobj_cache/contrib/openpam/lib/libpam/openpam_configure.c	Wed Jun  4 13:12:07 2014	(r267054)
@@ -1,6 +1,6 @@
 /*-
  * Copyright (c) 2001-2003 Networks Associates Technology, Inc.
- * Copyright (c) 2004-2012 Dag-Erling Smørgrav
+ * Copyright (c) 2004-2014 Dag-Erling Smørgrav
  * All rights reserved.
  *
  * This software was developed for the FreeBSD Project by ThinkSec AS and
@@ -193,6 +193,7 @@ openpam_parse_chain(pam_handle_t *pamh,
 			openpam_log(PAM_LOG_ERROR,
 			    "%s(%d): missing or invalid facility",
 			    filename, lineno);
+			errno = EINVAL;
 			goto fail;
 		}
 		if (facility != fclt && facility != PAM_FACILITY_ANY) {
@@ -208,18 +209,28 @@ openpam_parse_chain(pam_handle_t *pamh,
 				openpam_log(PAM_LOG_ERROR,
 				    "%s(%d): missing or invalid service name",
 				    filename, lineno);
+				errno = EINVAL;
 				goto fail;
 			}
 			if (wordv[i] != NULL) {
 				openpam_log(PAM_LOG_ERROR,
 				    "%s(%d): garbage at end of line",
 				    filename, lineno);
+				errno = EINVAL;
 				goto fail;
 			}
 			ret = openpam_load_chain(pamh, servicename, fclt);
 			FREEV(wordc, wordv);
-			if (ret < 0)
+			if (ret < 0) {
+				/*
+				 * Bogus errno, but this ensures that the
+				 * outer loop does not just ignore the
+				 * error and keep searching.
+				 */
+				if (errno == ENOENT)
+					errno = EINVAL;
 				goto fail;
+			}
 			continue;
 		}
 
@@ -229,6 +240,7 @@ openpam_parse_chain(pam_handle_t *pamh,
 			openpam_log(PAM_LOG_ERROR,
 			    "%s(%d): missing or invalid control flag",
 			    filename, lineno);
+			errno = EINVAL;
 			goto fail;
 		}
 
@@ -238,6 +250,7 @@ openpam_parse_chain(pam_handle_t *pamh,
 			openpam_log(PAM_LOG_ERROR,
 			    "%s(%d): missing or invalid module name",
 			    filename, lineno);
+			errno = EINVAL;
 			goto fail;
 		}
 
@@ -247,8 +260,11 @@ openpam_parse_chain(pam_handle_t *pamh,
 		this->flag = ctlf;
 
 		/* load module */
-		if ((this->module = openpam_load_module(modulename)) == NULL)
+		if ((this->module = openpam_load_module(modulename)) == NULL) {
+			if (errno == ENOENT)
+				errno = ENOEXEC;
 			goto fail;
+		}
 
 		/*
 		 * The remaining items in wordv are the module's
@@ -281,7 +297,11 @@ openpam_parse_chain(pam_handle_t *pamh,
 	 * The loop ended because openpam_readword() returned NULL, which
 	 * can happen for four different reasons: an I/O error (ferror(f)
 	 * is true), a memory allocation failure (ferror(f) is false,
-	 * errno is non-zero)
+	 * feof(f) is false, errno is non-zero), the file ended with an
+	 * unterminated quote or backslash escape (ferror(f) is false,
+	 * feof(f) is true, errno is non-zero), or the end of the file was
+	 * reached without error (ferror(f) is false, feof(f) is true,
+	 * errno is zero).
 	 */
 	if (ferror(f) || errno != 0)
 		goto syserr;
@@ -402,6 +422,9 @@ openpam_load_chain(pam_handle_t *pamh,
 		}
 		ret = openpam_load_file(pamh, service, facility,
 		    filename, style);
+		/* success */
+		if (ret > 0)
+			RETURNN(ret);
 		/* the file exists, but an error occurred */
 		if (ret == -1 && errno != ENOENT)
 			RETURNN(ret);
@@ -411,7 +434,8 @@ openpam_load_chain(pam_handle_t *pamh,
 	}
 
 	/* no hit */
-	RETURNN(0);
+	errno = ENOENT;
+	RETURNN(-1);
 }
 
 /*
@@ -432,8 +456,10 @@ openpam_configure(pam_handle_t *pamh,
 		openpam_log(PAM_LOG_ERROR, "invalid service name");
 		RETURNC(PAM_SYSTEM_ERR);
 	}
-	if (openpam_load_chain(pamh, service, PAM_FACILITY_ANY) < 0)
-		goto load_err;
+	if (openpam_load_chain(pamh, service, PAM_FACILITY_ANY) < 0) {
+		if (errno != ENOENT)
+			goto load_err;
+	}
 	for (fclt = 0; fclt < PAM_NUM_FACILITIES; ++fclt) {
 		if (pamh->chains[fclt] != NULL)
 			continue;

Modified: user/attilio/rm_vmobj_cache/share/man/man5/src.conf.5
==============================================================================
--- user/attilio/rm_vmobj_cache/share/man/man5/src.conf.5	Wed Jun  4 12:26:53 2014	(r267053)
+++ user/attilio/rm_vmobj_cache/share/man/man5/src.conf.5	Wed Jun  4 13:12:07 2014	(r267054)
@@ -1,7 +1,7 @@
 .\" DO NOT EDIT-- this file is automatically generated.
 .\" from FreeBSD: head/tools/build/options/makeman 255964 2013-10-01 07:22:04Z des
 .\" $FreeBSD$
-.Dd May 27, 2014
+.Dd June 3, 2014
 .Dt SRC.CONF 5
 .Os
 .Sh NAME
@@ -1022,7 +1022,8 @@ and related programs.
 .\" from FreeBSD: head/tools/build/options/WITH_TESTS 264408 2014-04-13 11:29:52Z jmmv
 Set to install the
 .Fx
-Test Suite.
+Test Suite in
+.Pa /usr/tests/ .
 See
 .Xr tests 7
 for more details.

Modified: user/attilio/rm_vmobj_cache/sys/arm/broadcom/bcm2835/bcm2835_bsc.c
==============================================================================
--- user/attilio/rm_vmobj_cache/sys/arm/broadcom/bcm2835/bcm2835_bsc.c	Wed Jun  4 12:26:53 2014	(r267053)
+++ user/attilio/rm_vmobj_cache/sys/arm/broadcom/bcm2835/bcm2835_bsc.c	Wed Jun  4 13:12:07 2014	(r267054)
@@ -407,7 +407,7 @@ bcm_bsc_transfer(device_t dev, struct ii
 	for (i = 0; i < nmsgs; i++) {
 
 		/* Write the slave address. */
-		BCM_BSC_WRITE(sc, BCM_BSC_SLAVE, msgs[i].slave);
+		BCM_BSC_WRITE(sc, BCM_BSC_SLAVE, msgs[i].slave >> 1);
 
 		/* Write the data length. */
 		BCM_BSC_WRITE(sc, BCM_BSC_DLEN, msgs[i].len);

Modified: user/attilio/rm_vmobj_cache/sys/arm/ti/ti_i2c.c
==============================================================================
--- user/attilio/rm_vmobj_cache/sys/arm/ti/ti_i2c.c	Wed Jun  4 12:26:53 2014	(r267053)
+++ user/attilio/rm_vmobj_cache/sys/arm/ti/ti_i2c.c	Wed Jun  4 13:12:07 2014	(r267054)
@@ -92,7 +92,6 @@ struct ti_i2c_softc
 
 	volatile uint16_t	sc_stat_flags;	/* contains the status flags last IRQ */
 
-	uint16_t		sc_i2c_addr;
 	uint16_t		sc_rev;
 };
 
@@ -310,10 +309,6 @@ ti_i2c_reset(device_t dev, u_char speed,
 
 	TI_I2C_LOCK(sc);
 
-	if (oldaddr)
-		*oldaddr = sc->sc_i2c_addr;
-	sc->sc_i2c_addr = addr;
-
 	/* First disable the controller while changing the clocks */
 	con_reg = ti_i2c_read_reg(sc, I2C_REG_CON);
 	ti_i2c_write_reg(sc, I2C_REG_CON, 0x0000);
@@ -325,9 +320,6 @@ ti_i2c_reset(device_t dev, u_char speed,
 	ti_i2c_write_reg(sc, I2C_REG_SCLL, clkcfg->scll | (clkcfg->hsscll<<8));
 	ti_i2c_write_reg(sc, I2C_REG_SCLH, clkcfg->sclh | (clkcfg->hssclh<<8));
 
-	/* Set the remote slave address */
-	ti_i2c_write_reg(sc, I2C_REG_SA, addr);
-
 	/* Check if we are dealing with high speed mode */
 	if ((clkcfg->hsscll + clkcfg->hssclh) > 0)
 		con_reg  = I2C_CON_OPMODE_HS;
@@ -339,7 +331,7 @@ ti_i2c_reset(device_t dev, u_char speed,
 
 	TI_I2C_UNLOCK(sc);
 
-	return 0;
+	return (IIC_ENOADDR);
 }
 
 /**
@@ -771,7 +763,7 @@ ti_i2c_transfer(device_t dev, struct iic
 		}
 
 		/* set the slave address */
-		ti_i2c_write_reg(sc, I2C_REG_SA, msgs[i].slave);
+		ti_i2c_write_reg(sc, I2C_REG_SA, msgs[i].slave >> 1);
 
 		/* perform the read or write */
 		if (msgs[i].flags & IIC_M_RD) {

Modified: user/attilio/rm_vmobj_cache/sys/boot/fdt/dts/arm/beaglebone-black.dts
==============================================================================
--- user/attilio/rm_vmobj_cache/sys/boot/fdt/dts/arm/beaglebone-black.dts	Wed Jun  4 12:26:53 2014	(r267053)
+++ user/attilio/rm_vmobj_cache/sys/boot/fdt/dts/arm/beaglebone-black.dts	Wed Jun  4 13:12:07 2014	(r267054)
@@ -149,7 +149,7 @@
 		i2c at 44e0b000 {
 			pmic at 24 {
 				compatible = "ti,am335x-pmic";
-				reg = <0x24>;
+				reg = <0x48>;
 			};
 		};
 	};

Modified: user/attilio/rm_vmobj_cache/sys/boot/fdt/dts/arm/beaglebone.dts
==============================================================================
--- user/attilio/rm_vmobj_cache/sys/boot/fdt/dts/arm/beaglebone.dts	Wed Jun  4 12:26:53 2014	(r267053)
+++ user/attilio/rm_vmobj_cache/sys/boot/fdt/dts/arm/beaglebone.dts	Wed Jun  4 13:12:07 2014	(r267054)
@@ -133,7 +133,7 @@
 		i2c at 44e0b000 {
 			pmic at 24 {
 				compatible = "ti,am335x-pmic";
-				reg = <0x24>;
+				reg = <0x48>;
 			};
 		};
 	};

Modified: user/attilio/rm_vmobj_cache/sys/cam/scsi/scsi_sg.c
==============================================================================
--- user/attilio/rm_vmobj_cache/sys/cam/scsi/scsi_sg.c	Wed Jun  4 12:26:53 2014	(r267053)
+++ user/attilio/rm_vmobj_cache/sys/cam/scsi/scsi_sg.c	Wed Jun  4 13:12:07 2014	(r267054)
@@ -627,6 +627,13 @@ sgioctl(struct cdev *dev, u_long cmd, ca
 		break;
 	}
 
+	case SG_GET_SG_TABLESIZE:
+	{
+		int *size = (int *)arg;
+		*size = 0;
+		break;
+	}
+
 	case SG_EMULATED_HOST:
 	case SG_SET_TRANSFORM:
 	case SG_GET_TRANSFORM:
@@ -638,7 +645,6 @@ sgioctl(struct cdev *dev, u_long cmd, ca
 	case SG_GET_ACCESS_COUNT:
 	case SG_SET_FORCE_LOW_DMA:
 	case SG_GET_LOW_DMA:
-	case SG_GET_SG_TABLESIZE:
 	case SG_SET_FORCE_PACK_ID:
 	case SG_GET_PACK_ID:
 	case SG_SET_RESERVED_SIZE:
@@ -684,6 +690,12 @@ sgwrite(struct cdev *dev, struct uio *ui
 	if (error)
 		goto out_hdr;
 
+	/* XXX: We don't support SG 3.x read/write API. */
+	if (hdr->reply_len < 0) {
+		error = ENODEV;
+		goto out_hdr;
+	}
+
 	ccb = xpt_alloc_ccb();
 	if (ccb == NULL) {
 		error = ENOMEM;

Modified: user/attilio/rm_vmobj_cache/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
==============================================================================
--- user/attilio/rm_vmobj_cache/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c	Wed Jun  4 12:26:53 2014	(r267053)
+++ user/attilio/rm_vmobj_cache/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c	Wed Jun  4 13:12:07 2014	(r267054)
@@ -953,7 +953,11 @@ spa_taskq_dispatch_ent(spa_t *spa, zio_t
 	if (tqs->stqs_count == 1) {
 		tq = tqs->stqs_taskq[0];
 	} else {
+#ifdef _KERNEL
+		tq = tqs->stqs_taskq[cpu_ticks() % tqs->stqs_count];
+#else
 		tq = tqs->stqs_taskq[gethrtime() % tqs->stqs_count];
+#endif
 	}
 
 	taskq_dispatch_ent(tq, func, arg, flags, ent);

Modified: user/attilio/rm_vmobj_cache/sys/compat/linux/linux_ioctl.c
==============================================================================
--- user/attilio/rm_vmobj_cache/sys/compat/linux/linux_ioctl.c	Wed Jun  4 12:26:53 2014	(r267053)
+++ user/attilio/rm_vmobj_cache/sys/compat/linux/linux_ioctl.c	Wed Jun  4 13:12:07 2014	(r267054)
@@ -2751,6 +2751,9 @@ linux_ioctl_sg(struct thread *td, struct
 	case LINUX_SG_GET_SCSI_ID:
 		args->cmd = SG_GET_SCSI_ID;
 		break;
+	case LINUX_SG_GET_SG_TABLESIZE:
+		args->cmd = SG_GET_SG_TABLESIZE;
+		break;
 	default:
 		return (ENODEV);
 	}

Modified: user/attilio/rm_vmobj_cache/sys/dev/hpt27xx/hpt27xx_osm_bsd.c
==============================================================================
--- user/attilio/rm_vmobj_cache/sys/dev/hpt27xx/hpt27xx_osm_bsd.c	Wed Jun  4 12:26:53 2014	(r267053)
+++ user/attilio/rm_vmobj_cache/sys/dev/hpt27xx/hpt27xx_osm_bsd.c	Wed Jun  4 13:12:07 2014	(r267054)
@@ -1345,17 +1345,19 @@ static int	hpt_rescan_bus(void)
 	ldm_for_each_vbus(vbus, vbus_ext) {
 		if ((ccb = xpt_alloc_ccb()) == NULL)
 		{
+			mtx_unlock(&Giant);
 			return(ENOMEM);
 		}
 		if (xpt_create_path(&ccb->ccb_h.path, NULL, cam_sim_path(vbus_ext->sim),
 			CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD) != CAM_REQ_CMP)	
 		{
 			xpt_free_ccb(ccb);
+			mtx_unlock(&Giant);
 			return(EIO);
 		}
 		xpt_rescan(ccb);
 	}
 	mtx_unlock(&Giant);
-	return(0);	
+	return(0);
 }
 

Modified: user/attilio/rm_vmobj_cache/sys/dev/usb/controller/dwc_otg.c
==============================================================================
--- user/attilio/rm_vmobj_cache/sys/dev/usb/controller/dwc_otg.c	Wed Jun  4 12:26:53 2014	(r267053)
+++ user/attilio/rm_vmobj_cache/sys/dev/usb/controller/dwc_otg.c	Wed Jun  4 13:12:07 2014	(r267054)
@@ -3161,11 +3161,20 @@ dwc_otg_setup_standard_chain(struct usb_
 			(xfer->max_packet_size << HCCHAR_MPS_SHIFT) |
 			HCCHAR_CHENA;
 
-		/* XXX stability hack - possible HW issue */
-		if (td->ep_type == UE_CONTROL)
+		/*
+		 * XXX stability hack - possible HW issue
+		 *
+		 * Disable workaround when using a transaction
+		 * translator, hence some TTs reject control endpoint
+		 * traffic using BULK endpoint type:
+		 */
+		if (td->ep_type == UE_CONTROL &&
+		    (xfer->xroot->udev->speed == USB_SPEED_HIGH ||
+		     xfer->xroot->udev->parent_hs_hub == NULL)) {
 			hcchar |= (UE_BULK << HCCHAR_EPTYPE_SHIFT);
-		else
+		} else {
 			hcchar |= (td->ep_type << HCCHAR_EPTYPE_SHIFT);
+		}
 
 		if (usbd_get_speed(xfer->xroot->udev) == USB_SPEED_LOW)
 			hcchar |= HCCHAR_LSPDDEV;

Modified: user/attilio/rm_vmobj_cache/sys/dev/usb/wlan/if_rsu.c
==============================================================================
--- user/attilio/rm_vmobj_cache/sys/dev/usb/wlan/if_rsu.c	Wed Jun  4 12:26:53 2014	(r267053)
+++ user/attilio/rm_vmobj_cache/sys/dev/usb/wlan/if_rsu.c	Wed Jun  4 13:12:07 2014	(r267054)
@@ -128,10 +128,8 @@ static const STRUCT_USB_HOST_ID rsu_devs
 static device_probe_t   rsu_match;
 static device_attach_t  rsu_attach;
 static device_detach_t  rsu_detach;
-static usb_callback_t   rsu_bulk_tx_callback_0;
-static usb_callback_t   rsu_bulk_tx_callback_1;
-static usb_callback_t   rsu_bulk_tx_callback_2;
-static usb_callback_t   rsu_bulk_tx_callback_3;
+static usb_callback_t   rsu_bulk_tx_callback_be_bk;
+static usb_callback_t   rsu_bulk_tx_callback_vi_vo;
 static usb_callback_t   rsu_bulk_rx_callback;
 static usb_error_t	rsu_do_request(struct rsu_softc *,
 			    struct usb_device_request *, void *);
@@ -221,6 +219,13 @@ MODULE_DEPEND(rsu, usb, 1, 1, 1);
 MODULE_DEPEND(rsu, firmware, 1, 1, 1);
 MODULE_VERSION(rsu, 1);
 
+static uint8_t rsu_wme_ac_xfer_map[4] = {
+	[WME_AC_BE] = RSU_BULK_TX_BE_BK,
+	[WME_AC_BK] = RSU_BULK_TX_BE_BK,
+	[WME_AC_VI] = RSU_BULK_TX_VI_VO,
+	[WME_AC_VO] = RSU_BULK_TX_VI_VO,
+};
+
 static const struct usb_config rsu_config[RSU_N_TRANSFER] = {
 	[RSU_BULK_RX] = {
 		.type = UE_BULK,
@@ -233,20 +238,7 @@ static const struct usb_config rsu_confi
 		},
 		.callback = rsu_bulk_rx_callback
 	},
-	[RSU_BULK_TX_BE] = {
-		.type = UE_BULK,
-		.endpoint = 0x06,
-		.direction = UE_DIR_OUT,
-		.bufsize = RSU_TXBUFSZ,
-		.flags = {
-			.ext_buffer = 1,
-			.pipe_bof = 1,
-			.force_short_xfer = 1
-		},
-		.callback = rsu_bulk_tx_callback_0,
-		.timeout = RSU_TX_TIMEOUT
-	},
-	[RSU_BULK_TX_BK] = {
+	[RSU_BULK_TX_BE_BK] = {
 		.type = UE_BULK,
 		.endpoint = 0x06,
 		.direction = UE_DIR_OUT,
@@ -256,10 +248,10 @@ static const struct usb_config rsu_confi
 			.pipe_bof = 1,
 			.force_short_xfer = 1
 		},
-		.callback = rsu_bulk_tx_callback_1,
+		.callback = rsu_bulk_tx_callback_be_bk,
 		.timeout = RSU_TX_TIMEOUT
 	},
-	[RSU_BULK_TX_VI] = {
+	[RSU_BULK_TX_VI_VO] = {
 		.type = UE_BULK,
 		.endpoint = 0x04,
 		.direction = UE_DIR_OUT,
@@ -269,20 +261,7 @@ static const struct usb_config rsu_confi
 			.pipe_bof = 1,
 			.force_short_xfer = 1
 		},
-		.callback = rsu_bulk_tx_callback_2,
-		.timeout = RSU_TX_TIMEOUT
-	},
-	[RSU_BULK_TX_VO] = {
-		.type = UE_BULK,
-		.endpoint = 0x04,
-		.direction = UE_DIR_OUT,
-		.bufsize = RSU_TXBUFSZ,
-		.flags = {
-			.ext_buffer = 1,
-			.pipe_bof = 1,
-			.force_short_xfer = 1
-		},
-		.callback = rsu_bulk_tx_callback_3,
+		.callback = rsu_bulk_tx_callback_vi_vo,
 		.timeout = RSU_TX_TIMEOUT
 	},
 };
@@ -614,7 +593,7 @@ rsu_alloc_tx_list(struct rsu_softc *sc)
 
 	STAILQ_INIT(&sc->sc_tx_inactive);
 
-	for (i = 0; i != RSU_MAX_TX_EP; i++) {
+	for (i = 0; i != RSU_N_TRANSFER; i++) {
 		STAILQ_INIT(&sc->sc_tx_active[i]);
 		STAILQ_INIT(&sc->sc_tx_pending[i]);
 	}
@@ -634,7 +613,7 @@ rsu_free_tx_list(struct rsu_softc *sc)
 	/* prevent further allocations from TX list(s) */
 	STAILQ_INIT(&sc->sc_tx_inactive);
 
-	for (i = 0; i != RSU_MAX_TX_EP; i++) {
+	for (i = 0; i != RSU_N_TRANSFER; i++) {
 		STAILQ_INIT(&sc->sc_tx_active[i]);
 		STAILQ_INIT(&sc->sc_tx_pending[i]);
 	}
@@ -874,7 +853,7 @@ rsu_read_rom(struct rsu_softc *sc)
 static int
 rsu_fw_cmd(struct rsu_softc *sc, uint8_t code, void *buf, int len)
 {
-	const uint8_t which = RSU_BULK_TX_VO - RSU_BULK_TX_BE;
+	const uint8_t which = rsu_wme_ac_xfer_map[WME_AC_VO];
 	struct rsu_data *data;
 	struct r92s_tx_desc *txd;
 	struct r92s_fw_cmd_hdr *cmd;
@@ -913,7 +892,7 @@ rsu_fw_cmd(struct rsu_softc *sc, uint8_t
 	DPRINTFN(2, "Tx cmd code=0x%x len=0x%x\n", code, cmdsz);
 	data->buflen = xferlen;
 	STAILQ_INSERT_TAIL(&sc->sc_tx_pending[which], data, next);
-	usbd_transfer_start(sc->sc_xfer[which + RSU_BULK_TX_BE]);
+	usbd_transfer_start(sc->sc_xfer[which]);
 
 	return (0);
 }
@@ -926,6 +905,7 @@ rsu_calib_task(void *arg, int pending __
 	uint32_t reg;
 
 	DPRINTFN(6, "running calibration task\n");
+
 	RSU_LOCK(sc);
 #ifdef notyet
 	/* Read WPS PBC status. */
@@ -942,12 +922,9 @@ rsu_calib_task(void *arg, int pending __
 		reg = rsu_read_4(sc, R92S_IOCMD_DATA);
 		DPRINTFN(8, "RSSI=%d%%\n", reg >> 4);
 	}
-	if (sc->sc_calibrating) {
-		RSU_UNLOCK(sc);
-		taskqueue_enqueue_timeout(taskqueue_thread, &sc->calib_task, 
-		    hz * 2);
-	} else
-		RSU_UNLOCK(sc);
+	if (sc->sc_calibrating)
+		taskqueue_enqueue_timeout(taskqueue_thread, &sc->calib_task, hz);
+	RSU_UNLOCK(sc);
 }
 
 static int
@@ -1001,11 +978,10 @@ rsu_newstate(struct ieee80211vap *vap, e
 		break;
 	}
 	sc->sc_calibrating = 1;
+	/* Start periodic calibration. */
+	taskqueue_enqueue_timeout(taskqueue_thread, &sc->calib_task, hz);
 	RSU_UNLOCK(sc);
 	IEEE80211_LOCK(ic);
-	/* Start periodic calibration. */
-	taskqueue_enqueue_timeout(taskqueue_thread, &sc->calib_task, hz * 2);
-
 	return (uvp->newstate(vap, nstate, arg));
 }
 
@@ -1271,6 +1247,9 @@ rsu_rx_event(struct rsu_softc *sc, uint8
 		if (vap->iv_state == IEEE80211_S_AUTH)
 			rsu_event_join_bss(sc, buf, len);
 		break;
+#if 0
+XXX This event is occurring regularly, possibly due to some power saving event
+XXX and disrupts the WLAN traffic. Disable for now.
 	case R92S_EVT_DEL_STA:
 		DPRINTF("disassociated from %s\n", ether_sprintf(buf));
 		if (vap->iv_state == IEEE80211_S_RUN &&
@@ -1280,6 +1259,7 @@ rsu_rx_event(struct rsu_softc *sc, uint8
 			RSU_LOCK(sc);
 		}
 		break;
+#endif
 	case R92S_EVT_WPS_PBC:
 		DPRINTF("WPS PBC pushed.\n");
 		break;
@@ -1289,6 +1269,8 @@ rsu_rx_event(struct rsu_softc *sc, uint8
 			printf("FWDBG: %s\n", (char *)buf);
 		}
 		break;
+	default:
+		break;
 	}
 }
 
@@ -1662,27 +1644,15 @@ tr_setup:
 }
 
 static void
-rsu_bulk_tx_callback_0(struct usb_xfer *xfer, usb_error_t error)
+rsu_bulk_tx_callback_be_bk(struct usb_xfer *xfer, usb_error_t error)
 {
-	rsu_bulk_tx_callback_sub(xfer, error, 0);
+	rsu_bulk_tx_callback_sub(xfer, error, RSU_BULK_TX_BE_BK);
 }
 
 static void
-rsu_bulk_tx_callback_1(struct usb_xfer *xfer, usb_error_t error)
+rsu_bulk_tx_callback_vi_vo(struct usb_xfer *xfer, usb_error_t error)
 {
-	rsu_bulk_tx_callback_sub(xfer, error, 1);
-}
-
-static void
-rsu_bulk_tx_callback_2(struct usb_xfer *xfer, usb_error_t error)
-{
-	rsu_bulk_tx_callback_sub(xfer, error, 2);
-}
-
-static void
-rsu_bulk_tx_callback_3(struct usb_xfer *xfer, usb_error_t error)
-{
-	rsu_bulk_tx_callback_sub(xfer, error, 3);
+	rsu_bulk_tx_callback_sub(xfer, error, RSU_BULK_TX_VI_VO);
 }
 
 static int
@@ -1720,12 +1690,10 @@ rsu_tx_start(struct rsu_softc *sc, struc
 	switch (type) {
 	case IEEE80211_FC0_TYPE_CTL:
 	case IEEE80211_FC0_TYPE_MGT:
-		which = RSU_BULK_TX_VO - RSU_BULK_TX_BE;
+		which = rsu_wme_ac_xfer_map[WME_AC_VO];
 		break;
 	default:
-		which = M_WME_GETAC(m0);
-		KASSERT(which < RSU_MAX_TX_EP,
-		    ("unsupported WME pipe %d", which));
+		which = rsu_wme_ac_xfer_map[M_WME_GETAC(m0)];
 		break;
 	}
 	hasqos = 0;
@@ -1790,7 +1758,7 @@ rsu_tx_start(struct rsu_softc *sc, struc
 	STAILQ_INSERT_TAIL(&sc->sc_tx_pending[which], data, next);
 
 	/* start transfer, if any */
-	usbd_transfer_start(sc->sc_xfer[which + RSU_BULK_TX_BE]);
+	usbd_transfer_start(sc->sc_xfer[which]);
 	return (0);
 }
 
@@ -2105,7 +2073,7 @@ rsu_power_off(struct rsu_softc *sc)
 static int
 rsu_fw_loadsection(struct rsu_softc *sc, const uint8_t *buf, int len)
 {
-	const uint8_t which = RSU_BULK_TX_VO - RSU_BULK_TX_BE;
+	const uint8_t which = rsu_wme_ac_xfer_map[WME_AC_VO];
 	struct rsu_data *data;
 	struct r92s_tx_desc *txd;
 	int mlen;
@@ -2130,7 +2098,7 @@ rsu_fw_loadsection(struct rsu_softc *sc,
 		buf += mlen;
 		len -= mlen;
 	}
-	usbd_transfer_start(sc->sc_xfer[RSU_BULK_TX_BE + which]);
+	usbd_transfer_start(sc->sc_xfer[which]);
 	return (0);
 }
 
@@ -2146,6 +2114,11 @@ rsu_load_firmware(struct rsu_softc *sc)
 	uint32_t reg;
 	int ntries, error;
 
+	if (rsu_read_1(sc, R92S_TCR) & R92S_TCR_FWRDY) {
+		DPRINTF("Firmware already loaded\n");
+		return (0);
+	}
+
 	RSU_UNLOCK(sc);
 	/* Read firmware image from the filesystem. */
 	if ((fw = firmware_get("rsu-rtl8712fw")) == NULL) {
@@ -2202,7 +2175,7 @@ rsu_load_firmware(struct rsu_softc *sc)
 	/* Wait for load to complete. */
 	for (ntries = 0; ntries != 50; ntries++) {
 		usb_pause_mtx(&sc->sc_mtx, hz / 100);
-		reg = rsu_read_2(sc, R92S_TCR);
+		reg = rsu_read_1(sc, R92S_TCR);
 		if (reg & R92S_TCR_IMEM_CODE_DONE)
 			break;
 	}
@@ -2211,7 +2184,6 @@ rsu_load_firmware(struct rsu_softc *sc)
 		error = ETIMEDOUT;
 		goto fail;
 	}
-
 	/* Load EMEM section. */
 	error = rsu_fw_loadsection(sc, emem, ememsz);
 	if (error != 0) {
@@ -2231,7 +2203,6 @@ rsu_load_firmware(struct rsu_softc *sc)
 		error = ETIMEDOUT;
 		goto fail;
 	}
-
 	/* Enable CPU. */
 	rsu_write_1(sc, R92S_SYS_CLKR,
 	    rsu_read_1(sc, R92S_SYS_CLKR) | R92S_SYS_CPU_CLKSEL);
@@ -2250,7 +2221,7 @@ rsu_load_firmware(struct rsu_softc *sc)
 	}
 	/* Wait for CPU to initialize. */
 	for (ntries = 0; ntries < 100; ntries++) {
-		if (rsu_read_2(sc, R92S_TCR) & R92S_TCR_IMEM_RDY)
+		if (rsu_read_1(sc, R92S_TCR) & R92S_TCR_IMEM_RDY)
 			break;
 		rsu_ms_delay(sc);
 	}
@@ -2282,7 +2253,7 @@ rsu_load_firmware(struct rsu_softc *sc)
 	}
 	/* Wait for load to complete. */
 	for (ntries = 0; ntries < 100; ntries++) {
-		if (rsu_read_2(sc, R92S_TCR) & R92S_TCR_DMEM_CODE_DONE)
+		if (rsu_read_1(sc, R92S_TCR) & R92S_TCR_DMEM_CODE_DONE)
 			break;
 		rsu_ms_delay(sc);
 	}
@@ -2294,7 +2265,7 @@ rsu_load_firmware(struct rsu_softc *sc)
 	}
 	/* Wait for firmware readiness. */
 	for (ntries = 0; ntries < 60; ntries++) {
-		if (!(rsu_read_2(sc, R92S_TCR) & R92S_TCR_FWRDY))
+		if (!(rsu_read_1(sc, R92S_TCR) & R92S_TCR_FWRDY))
 			break;
 		rsu_ms_delay(sc);
 	}
@@ -2372,6 +2343,7 @@ rsu_init_locked(struct rsu_softc *sc)
 		rsu_power_on_acut(sc);
 	else
 		rsu_power_on_bcut(sc);
+
 	/* Load firmware. */
 	error = rsu_load_firmware(sc);
 	if (error != 0)

Modified: user/attilio/rm_vmobj_cache/sys/dev/usb/wlan/if_rsureg.h
==============================================================================
--- user/attilio/rm_vmobj_cache/sys/dev/usb/wlan/if_rsureg.h	Wed Jun  4 12:26:53 2014	(r267053)
+++ user/attilio/rm_vmobj_cache/sys/dev/usb/wlan/if_rsureg.h	Wed Jun  4 13:12:07 2014	(r267054)
@@ -698,11 +698,9 @@ struct rsu_host_cmd_ring {
 
 enum {
 	RSU_BULK_RX,
-	RSU_BULK_TX_BE,	/* = WME_AC_BE */
-	RSU_BULK_TX_BK,	/* = WME_AC_BK */
-	RSU_BULK_TX_VI,	/* = WME_AC_VI */
-	RSU_BULK_TX_VO,	/* = WME_AC_VI */
-	RSU_N_TRANSFER = 5,
+	RSU_BULK_TX_BE_BK,	/* = WME_AC_BE/BK */
+	RSU_BULK_TX_VI_VO,	/* = WME_AC_VI/VO */
+	RSU_N_TRANSFER,
 };
 
 struct rsu_data {
@@ -727,8 +725,6 @@ struct rsu_vap {
 #define	RSU_UNLOCK(sc)			mtx_unlock(&(sc)->sc_mtx)
 #define	RSU_ASSERT_LOCKED(sc)		mtx_assert(&(sc)->sc_mtx, MA_OWNED)
 
-#define	RSU_MAX_TX_EP			4
-
 struct rsu_softc {
 	struct ifnet			*sc_ifp;
 	device_t			sc_dev;
@@ -754,9 +750,9 @@ struct rsu_softc {
 
 	STAILQ_HEAD(, rsu_data)		sc_rx_active;
 	STAILQ_HEAD(, rsu_data)		sc_rx_inactive;
-	STAILQ_HEAD(, rsu_data)		sc_tx_active[RSU_MAX_TX_EP];
+	STAILQ_HEAD(, rsu_data)		sc_tx_active[RSU_N_TRANSFER];
 	STAILQ_HEAD(, rsu_data)		sc_tx_inactive;
-	STAILQ_HEAD(, rsu_data)		sc_tx_pending[RSU_MAX_TX_EP];
+	STAILQ_HEAD(, rsu_data)		sc_tx_pending[RSU_N_TRANSFER];
 
 	union {
 		struct rsu_rx_radiotap_header th;

Modified: user/attilio/rm_vmobj_cache/sys/ufs/ffs/ffs_vfsops.c
==============================================================================
--- user/attilio/rm_vmobj_cache/sys/ufs/ffs/ffs_vfsops.c	Wed Jun  4 12:26:53 2014	(r267053)
+++ user/attilio/rm_vmobj_cache/sys/ufs/ffs/ffs_vfsops.c	Wed Jun  4 13:12:07 2014	(r267054)
@@ -1931,13 +1931,13 @@ ffs_sbupdate(ump, waitfor, suspended)
 	}
 	bp = sbbp;
 	if (fs->fs_magic == FS_UFS1_MAGIC && fs->fs_sblockloc != SBLOCK_UFS1 &&
-	    (fs->fs_flags & FS_FLAGS_UPDATED) == 0) {
+	    (fs->fs_old_flags & FS_FLAGS_UPDATED) == 0) {
 		printf("WARNING: %s: correcting fs_sblockloc from %jd to %d\n",
 		    fs->fs_fsmnt, fs->fs_sblockloc, SBLOCK_UFS1);
 		fs->fs_sblockloc = SBLOCK_UFS1;
 	}
 	if (fs->fs_magic == FS_UFS2_MAGIC && fs->fs_sblockloc != SBLOCK_UFS2 &&
-	    (fs->fs_flags & FS_FLAGS_UPDATED) == 0) {
+	    (fs->fs_old_flags & FS_FLAGS_UPDATED) == 0) {
 		printf("WARNING: %s: correcting fs_sblockloc from %jd to %d\n",
 		    fs->fs_fsmnt, fs->fs_sblockloc, SBLOCK_UFS2);
 		fs->fs_sblockloc = SBLOCK_UFS2;

Modified: user/attilio/rm_vmobj_cache/tools/build/options/WITH_TESTS
==============================================================================
--- user/attilio/rm_vmobj_cache/tools/build/options/WITH_TESTS	Wed Jun  4 12:26:53 2014	(r267053)
+++ user/attilio/rm_vmobj_cache/tools/build/options/WITH_TESTS	Wed Jun  4 13:12:07 2014	(r267054)
@@ -1,7 +1,8 @@
 .\" $FreeBSD$
 Set to install the
 .Fx
-Test Suite.
+Test Suite in
+.Pa /usr/tests/ .
 See
 .Xr tests 7
 for more details.

Modified: user/attilio/rm_vmobj_cache/tools/tools/vt/fontcvt/fontcvt.c
==============================================================================
--- user/attilio/rm_vmobj_cache/tools/tools/vt/fontcvt/fontcvt.c	Wed Jun  4 12:26:53 2014	(r267053)
+++ user/attilio/rm_vmobj_cache/tools/tools/vt/fontcvt/fontcvt.c	Wed Jun  4 13:12:07 2014	(r267054)
@@ -30,6 +30,8 @@
 #include <sys/cdefs.h>
 __FBSDID("$FreeBSD$");
 
+#include <sys/types.h>
+#include <sys/fnv_hash.h>
 #include <sys/endian.h>
 #include <sys/param.h>
 #include <sys/queue.h>
@@ -39,20 +41,24 @@ __FBSDID("$FreeBSD$");
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <unistd.h>
 
 #define VFNT_MAPS 4
 #define VFNT_MAP_NORMAL 0
 #define VFNT_MAP_BOLD 2
 
-static unsigned int width, wbytes, height;
+static unsigned int width = 8, wbytes, height = 16;
 
 struct glyph {
 	TAILQ_ENTRY(glyph)	 g_list;
+	SLIST_ENTRY(glyph)	 g_hash;
 	uint8_t			*g_data;
 	unsigned int		 g_index;
 };
 
+#define	FONTCVT_NHASH 4096
 TAILQ_HEAD(glyph_list, glyph);
+static SLIST_HEAD(, glyph) glyph_hash[FONTCVT_NHASH];
 static struct glyph_list glyphs[VFNT_MAPS] = {
     TAILQ_HEAD_INITIALIZER(glyphs[0]),
     TAILQ_HEAD_INITIALIZER(glyphs[1]),
@@ -83,7 +89,7 @@ usage(void)
 {
 
 	fprintf(stderr,
-"usage: fontcvt width height normal.bdf bold.bdf out.fnt\n");
+"usage: fontcvt [-w width] [-h height] normal.bdf [bold.bdf] out.fnt\n");
 	exit(1);
 }
 
@@ -146,17 +152,16 @@ static struct glyph *
 add_glyph(const uint8_t *bytes, unsigned int map_idx, int fallback)
 {
 	struct glyph *gl;
-	unsigned int i;
+	int hash;
 
 	glyph_total++;
 	glyph_count[map_idx]++;
 
-	for (i = 0; i < VFNT_MAPS; i++) {
-		TAILQ_FOREACH(gl, &glyphs[i], g_list) {
-			if (memcmp(gl->g_data, bytes, wbytes * height) == 0) {
-				glyph_dupe++;
-				return (gl);
-			}
+	hash = fnv_32_buf(bytes, wbytes * height, FNV1_32_INIT) % FONTCVT_NHASH;
+	SLIST_FOREACH(gl, &glyph_hash[hash], g_hash) {
+		if (memcmp(gl->g_data, bytes, wbytes * height) == 0) {
+			glyph_dupe++;
+			return (gl);
 		}
 	}
 
@@ -167,6 +172,7 @@ add_glyph(const uint8_t *bytes, unsigned
 		TAILQ_INSERT_HEAD(&glyphs[map_idx], gl, g_list);
 	else
 		TAILQ_INSERT_TAIL(&glyphs[map_idx], gl, g_list);
+	SLIST_INSERT_HEAD(&glyph_hash[hash], gl, g_hash);
 
 	glyph_unique++;
 	return (gl);
@@ -384,27 +390,48 @@ write_fnt(const char *filename)
 int
 main(int argc, char *argv[])
 {
+	int ch;
 
 	assert(sizeof(struct file_header) == 32);
 	assert(sizeof(struct file_mapping) == 8);
 
-	if (argc != 6)
+	while ((ch = getopt(argc, argv, "h:w:")) != -1) {
+		switch (ch) {
+		case 'h':
+			height = atoi(optarg);
+			break;
+		case 'w':
+			height = atoi(optarg);
+			break;
+		case '?':
+		default:
+			usage();
+		}
+	}
+	argc -= optind;
+	argv += optind;
+
+	if (argc < 2 || argc > 3)
 		usage();
-	
-	width = atoi(argv[1]);
+
 	wbytes = howmany(width, 8);
-	height = atoi(argv[2]);
 
-	if (parse_bdf(argv[3], VFNT_MAP_NORMAL) != 0)
-		return (1);
-	if (parse_bdf(argv[4], VFNT_MAP_BOLD) != 0)
+	if (parse_bdf(argv[0], VFNT_MAP_NORMAL) != 0)
 		return (1);
+	argc--;
+	argv++;
+	if (argc == 2) {
+		if (parse_bdf(argv[0], VFNT_MAP_BOLD) != 0)
+			return (1);
+		argc--;
+		argv++;
+	}
 	number_glyphs();
 	fold_mappings(0);
 	fold_mappings(1);
 	fold_mappings(2);
 	fold_mappings(3);
-	if (write_fnt(argv[5]) != 0)
+	if (write_fnt(argv[0]) != 0)
 		return (1);
 	
 	printf(

Modified: user/attilio/rm_vmobj_cache/usr.bin/netstat/main.c
==============================================================================
--- user/attilio/rm_vmobj_cache/usr.bin/netstat/main.c	Wed Jun  4 12:26:53 2014	(r267053)
+++ user/attilio/rm_vmobj_cache/usr.bin/netstat/main.c	Wed Jun  4 13:12:07 2014	(r267054)
@@ -828,14 +828,16 @@ usage(void)
 "               [-M core] [-N system]",
 "       netstat -i | -I interface [-46abdhnW] [-f address_family]\n"
 "               [-M core] [-N system]",
-"       netstat -w wait [-I interface] [-46d] [-M core] [-N system] [-q howmany]",
-"       netstat -s [-s] [-46z] [-f protocol_family | -p protocol]\n"
-"               [-M core] [-N system]",
-"       netstat -i | -I interface [-46s] [-f protocol_family | -p protocol]\n"
+"       netstat -w wait [-I interface] [-46d] [-M core] [-N system]\n"
+"               [-q howmany]",
+"       netstat -s [-46sz] [-f protocol_family | -p protocol]\n"
 "               [-M core] [-N system]",
+"       netstat -i | -I interface -s [-46s]\n"
+"               [-f protocol_family | -p protocol] [-M core] [-N system]",
 "       netstat -m [-M core] [-N system]",
-"       netstat -B [-I interface]",
-"       netstat -r [-46AanW] [-f address_family] [-M core] [-N system]",
+"       netstat -B [-z] [-I interface]",
+"       netstat -r [-46AnW] [-F fibnum] [-f address_family]\n"
+"               [-M core] [-N system]",
 "       netstat -rs [-s] [-M core] [-N system]",
 "       netstat -g [-46W] [-f address_family] [-M core] [-N system]",
 "       netstat -gs [-46s] [-f address_family] [-M core] [-N system]",

Modified: user/attilio/rm_vmobj_cache/usr.bin/netstat/netstat.1
==============================================================================
--- user/attilio/rm_vmobj_cache/usr.bin/netstat/netstat.1	Wed Jun  4 12:26:53 2014	(r267053)
+++ user/attilio/rm_vmobj_cache/usr.bin/netstat/netstat.1	Wed Jun  4 13:12:07 2014	(r267054)
@@ -28,12 +28,70 @@
 .\"	@(#)netstat.1	8.8 (Berkeley) 4/18/94
 .\" $FreeBSD$
 .\"
-.Dd January 11, 2014
+.Dd July 4, 2014
 .Dt NETSTAT 1
 .Os
 .Sh NAME
 .Nm netstat
-.Nd show network status
+.Nd show network status and statistics
+.Sh SYNOPSIS
+.Bk -words
+.Bl -tag -width "netstat"
+.It Nm
+.Op Fl 46AaLnRSTWx
+.Op Fl f Ar protocol_family | Fl p Ar protocol
+.Op Fl M Ar core
+.Op Fl N Ar system
+.It Nm Fl i | I Ar interface
+.Op Fl 46abdhnW
+.Op Fl f Ar address_family
+.Op Fl M Ar core
+.Op Fl N Ar system
+.It Nm Fl w Ar wait
+.Op Fl I Ar interface
+.Op Fl 46d
+.Op Fl M Ar core
+.Op Fl N Ar system
+.Op Fl q Ar howmany
+.It Nm Fl s
+.Op Fl 46sz
+.Op Fl f Ar protocol_family | Fl p Ar protocol
+.Op Fl M Ar core
+.Op Fl N Ar system
+.It Nm Fl i | I Ar interface Fl s
+.Op Fl 46s
+.Op Fl f Ar protocol_family | Fl p Ar protocol
+.Op Fl M Ar core
+.Op Fl N Ar system
+.It Nm Fl m
+.Op Fl M Ar core
+.Op Fl N Ar system
+.It Nm Fl B
+.Op Fl z
+.Op Fl I Ar interface
+.It Nm Fl r
+.Op Fl 46AnW
+.Op Fl F Ar fibnum
+.Op Fl f Ar address_family
+.Op Fl M Ar core
+.Op Fl N Ar system
+.It Nm Fl rs
+.Op Fl s
+.Op Fl M Ar core
+.Op Fl N Ar system
+.It Nm Fl g
+.Op Fl 46W
+.Op Fl f Ar address_family
+.Op Fl M Ar core
+.Op Fl N Ar system
+.It Nm Fl gs
+.Op Fl 46s
+.Op Fl f Ar address_family
+.Op Fl M Ar core
+.Op Fl N Ar system
+.It Nm Fl Q
+.Ek
+.El
 .Sh DESCRIPTION
 The
 .Nm
@@ -45,7 +103,7 @@ depending on the options for the informa
 .It Xo
 .Bk -words
 .Nm
-.Op Fl 46AaLnSTWxR
+.Op Fl 46AaLnRSTWx
 .Op Fl f Ar protocol_family | Fl p Ar protocol
 .Op Fl M Ar core
 .Op Fl N Ar system
@@ -53,50 +111,132 @@ depending on the options for the informa
 .Xc
 Display a list of active sockets
 (protocol control blocks)
-for each network protocol,
-for a particular
-.Ar protocol_family ,
-or for a single
-.Ar protocol .
-If
-.Fl A
-is also present,
-show the address of a protocol control block (PCB)
+for each network protocol.
+.Pp
+The default display for active sockets shows the local
+and remote addresses, send and receive queue sizes (in bytes), protocol,

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***


More information about the svn-src-user mailing list