PERFORCE change 54837 for review
Robert Watson
rwatson at FreeBSD.org
Sun Jun 13 18:50:45 GMT 2004
http://perforce.freebsd.org/chv.cgi?CH=54837
Change 54837 by rwatson at rwatson_tislabs on 2004/06/13 18:50:09
Integrate netperf_socket:
- ALTQ integration
- Proper RFC IP over Firewire
Affected files ...
.. //depot/projects/netperf_socket/sys/conf/NOTES#21 integrate
.. //depot/projects/netperf_socket/sys/conf/files#26 integrate
.. //depot/projects/netperf_socket/sys/conf/kern.pre.mk#11 integrate
.. //depot/projects/netperf_socket/sys/conf/kmod.mk#9 integrate
.. //depot/projects/netperf_socket/sys/conf/options#14 integrate
.. //depot/projects/netperf_socket/sys/dev/aac/aac_debug.c#3 integrate
.. //depot/projects/netperf_socket/sys/dev/acpica/acpi.c#21 integrate
.. //depot/projects/netperf_socket/sys/dev/acpica/acpivar.h#13 integrate
.. //depot/projects/netperf_socket/sys/dev/awi/awi.c#4 integrate
.. //depot/projects/netperf_socket/sys/dev/esp/ncr53c9x.c#3 integrate
.. //depot/projects/netperf_socket/sys/dev/esp/ncr53c9xvar.h#3 integrate
.. //depot/projects/netperf_socket/sys/dev/firewire/if_fwip.c#1 branch
.. //depot/projects/netperf_socket/sys/dev/firewire/if_fwipvar.h#1 branch
.. //depot/projects/netperf_socket/sys/dev/ichwd/ichwd.c#3 integrate
.. //depot/projects/netperf_socket/sys/dev/pdq/pdq_freebsd.h#2 integrate
.. //depot/projects/netperf_socket/sys/dev/usb/if_udav.c#5 integrate
.. //depot/projects/netperf_socket/sys/dev/wi/if_wi.c#5 integrate
.. //depot/projects/netperf_socket/sys/i4b/driver/i4b_ipr.c#2 integrate
.. //depot/projects/netperf_socket/sys/net/firewire.h#1 branch
.. //depot/projects/netperf_socket/sys/net/if.c#9 integrate
.. //depot/projects/netperf_socket/sys/net/if_arp.h#4 integrate
.. //depot/projects/netperf_socket/sys/net/if_fwsubr.c#1 branch
.. //depot/projects/netperf_socket/sys/net/if_ppp.c#5 integrate
.. //depot/projects/netperf_socket/sys/net/if_sl.c#5 integrate
.. //depot/projects/netperf_socket/sys/net/if_spppsubr.c#5 integrate
.. //depot/projects/netperf_socket/sys/net/if_var.h#11 integrate
.. //depot/projects/netperf_socket/sys/net80211/ieee80211_input.c#3 integrate
.. //depot/projects/netperf_socket/sys/netgraph/ng_rfc1490.c#3 integrate
.. //depot/projects/netperf_socket/sys/netgraph/ng_rfc1490.h#2 integrate
.. //depot/projects/netperf_socket/sys/netinet/if_ether.c#9 integrate
.. //depot/projects/netperf_socket/sys/netinet/ip_input.c#12 integrate
.. //depot/projects/netperf_socket/sys/netinet/ip_output.c#11 integrate
.. //depot/projects/netperf_socket/sys/netinet6/ip6_input.c#7 integrate
.. //depot/projects/netperf_socket/sys/pci/if_mn.c#4 integrate
.. //depot/projects/netperf_socket/sys/sys/param.h#11 integrate
Differences ...
==== //depot/projects/netperf_socket/sys/conf/NOTES#21 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/NOTES,v 1.1230 2004/06/11 11:16:19 phk Exp $
+# $FreeBSD: src/sys/conf/NOTES,v 1.1232 2004/06/13 17:29:06 mlaier Exp $
#
# NOTES -- Lines that can be cut/pasted into kernel and hints configs.
#
@@ -399,6 +399,20 @@
# mchain library. It can be either loaded as KLD or compiled into kernel
options LIBMCHAIN
+# altq(9). Enable the base part of the hooks with the ALTQ option.
+# Individual disciplines must be built into the base system and can not be
+# loaded as modules at this point. In order to build a SMP kernel you must
+# also have the ALTQ_NOPCC option.
+options ALTQ
+options ALTQ_CBQ # Class Bases Queueing
+options ALTQ_RED # Random Early Drop
+options ALTQ_RIO # RED In/Out
+options ALTQ_HFSC # Hierarchical Packet Scheduler
+options ALTQ_CDNR # Traffic conditioner
+options ALTQ_PRIQ # Prioirity Queueing
+options ALTQ_NOPCC # Required for SMP build
+options ALTQ_DEBUG
+
# netgraph(4). Enable the base netgraph code with the NETGRAPH option.
# Individual node types can be enabled with the corresponding option
# listed below; however, this is not strictly necessary as netgraph
@@ -2226,6 +2240,7 @@
device sbp # SCSI over Firewire (Requires scbus and da)
device sbp_targ # SBP-2 Target mode (Requires scbus and targ)
device fwe # Ethernet over FireWire (non-standard!)
+device fwip # IP over FireWire (rfc2734 and rfc3146)
#####################################################################
# dcons support (Dumb Console Device)
==== //depot/projects/netperf_socket/sys/conf/files#26 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/files,v 1.903 2004/06/10 05:21:44 scottl Exp $
+# $FreeBSD: src/sys/conf/files,v 1.905 2004/06/13 17:29:06 mlaier Exp $
#
# The long compile-with and dependency lines are required because of
# limitations in config: backslash-newline doesn't work in strings, and
@@ -85,6 +85,14 @@
coda/coda_vfsops.c optional vcoda
coda/coda_vnops.c optional vcoda
compat/linprocfs/linprocfs.c optional linprocfs
+contrib/altq/altq/altq_cbq.c optional altq
+contrib/altq/altq/altq_cdnr.c optional altq
+contrib/altq/altq/altq_hfsc.c optional altq
+contrib/altq/altq/altq_priq.c optional altq
+contrib/altq/altq/altq_red.c optional altq
+contrib/altq/altq/altq_rio.c optional altq
+contrib/altq/altq/altq_rmclass.c optional altq
+contrib/altq/altq/altq_subr.c optional altq
contrib/dev/acpica/dbcmds.c optional acpi acpi_debug
contrib/dev/acpica/dbdisply.c optional acpi acpi_debug
contrib/dev/acpica/dbexec.c optional acpi acpi_debug
@@ -447,6 +455,7 @@
dev/firewire/fwohci.c optional firewire
dev/firewire/fwohci_pci.c optional firewire pci
dev/firewire/if_fwe.c optional fwe
+dev/firewire/if_fwip.c optional fwip
dev/firewire/sbp.c optional sbp
dev/firewire/sbp_targ.c optional sbp_targ
dev/fxp/if_fxp.c optional fxp
@@ -1216,6 +1225,7 @@
net/if_ethersubr.c optional ether
net/if_faith.c optional faith
net/if_fddisubr.c optional fddi
+net/if_fwsubr.c optional firewire
net/if_gif.c optional gif
net/if_gre.c optional gre
net/if_iso88025subr.c optional token
==== //depot/projects/netperf_socket/sys/conf/kern.pre.mk#11 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/kern.pre.mk,v 1.52 2004/04/27 16:38:13 emax Exp $
+# $FreeBSD: src/sys/conf/kern.pre.mk,v 1.53 2004/06/13 17:29:06 mlaier Exp $
# Part of a unified Makefile for building kernels. This part contains all
# of the definitions that need to be before %BEFORE_DEPEND.
@@ -51,6 +51,9 @@
# include path into 100+ source files.
INCLUDES+= -I$S/contrib/dev/acpica
+# ... and the same for altq
+INCLUDES+= -I$S/contrib/altq
+
# ... and the same for ipfilter
INCLUDES+= -I$S/contrib/ipfilter
==== //depot/projects/netperf_socket/sys/conf/kmod.mk#9 (text+ko) ====
@@ -1,5 +1,5 @@
# From: @(#)bsd.prog.mk 5.26 (Berkeley) 6/25/91
-# $FreeBSD: src/sys/conf/kmod.mk,v 1.160 2004/06/09 16:08:20 imp Exp $
+# $FreeBSD: src/sys/conf/kmod.mk,v 1.161 2004/06/13 17:29:06 mlaier Exp $
#
# The include file <bsd.kmod.mk> handles installing Kernel Loadable Device
# drivers (KLD's).
@@ -96,6 +96,10 @@
# set because there are no standard paths for non-headers.
CFLAGS+= -I. -I@
+# Add -I path for altq headers as they are included via net/if_var.h
+# for example.
+CFLAGS+= -I@/contrib/altq
+
# Add a -I path to standard headers like <stddef.h>. Use a relative
# path to src/include if possible. If the @ symlink hasn't been built
# yet, then we can't tell if the relative path exists. Add both the
==== //depot/projects/netperf_socket/sys/conf/options#14 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/options,v 1.452 2004/06/11 11:16:19 phk Exp $
+# $FreeBSD: src/sys/conf/options,v 1.453 2004/06/13 17:29:06 mlaier Exp $
#
# On the handling of kernel options
#
@@ -294,6 +294,15 @@
# Net stuff.
ACCEPT_FILTER_DATA
ACCEPT_FILTER_HTTP
+ALTQ opt_global.h
+ALTQ_CBQ opt_altq.h
+ALTQ_RED opt_altq.h
+ALTQ_RIO opt_altq.h
+ALTQ_HFSC opt_altq.h
+ALTQ_CDNR opt_altq.h
+ALTQ_PRIQ opt_altq.h
+ALTQ_NOPCC opt_altq.h
+ALTQ_DEBUG opt_altq.h
BOOTP opt_bootp.h
BOOTP_COMPAT opt_bootp.h
BOOTP_NFSROOT opt_bootp.h
==== //depot/projects/netperf_socket/sys/dev/aac/aac_debug.c#3 (text+ko) ====
@@ -28,7 +28,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/aac/aac_debug.c,v 1.18 2004/02/07 20:54:29 scottl Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/aac/aac_debug.c,v 1.19 2004/06/13 17:57:15 obrien Exp $");
/*
* Debugging support.
@@ -366,10 +366,10 @@
break;
case AifEnDiskSetEvent: /* A disk set event occured. */
device_printf(sc->aac_dev, "(DiskSetEvent) event %d "
- "diskset %lld creator %lld\n",
+ "diskset %jd creator %jd\n",
aif->data.EN.data.EDS.eventType,
- (long long)aif->data.EN.data.EDS.DsNum,
- (long long)aif->data.EN.data.EDS.CreatorId);
+ (intmax_t)aif->data.EN.data.EDS.DsNum,
+ (intmax_t)aif->data.EN.data.EDS.CreatorId);
break;
case AifDenMorphComplete: /* A morph operation
* completed */
==== //depot/projects/netperf_socket/sys/dev/acpica/acpi.c#21 (text+ko) ====
@@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/dev/acpica/acpi.c,v 1.157 2004/06/05 09:56:04 njl Exp $
+ * $FreeBSD: src/sys/dev/acpica/acpi.c,v 1.158 2004/06/13 17:29:35 njl Exp $
*/
#include "opt_acpi.h"
@@ -1125,7 +1125,10 @@
child = BUS_ADD_CHILD(bus, level * 10, NULL, -1);
if (child == NULL)
break;
+
+ /* Associate the handle with the device_t and vice versa. */
acpi_set_handle(child, handle);
+ AcpiAttachData(handle, acpi_fake_objhandler, child);
/* Check if the device can generate wake events. */
if (ACPI_SUCCESS(AcpiEvaluateObject(handle, "_PRW", NULL, NULL)))
@@ -1159,6 +1162,15 @@
return_ACPI_STATUS (AE_OK);
}
+/*
+ * AcpiAttachData() requires an object handler but never uses it. This is a
+ * placeholder object handler so we can store a device_t in an ACPI_HANDLE.
+ */
+void
+acpi_fake_objhandler(ACPI_HANDLE h, UINT32 fn, void *data)
+{
+}
+
static void
acpi_shutdown_pre_sync(void *arg, int howto)
{
==== //depot/projects/netperf_socket/sys/dev/acpica/acpivar.h#13 (text+ko) ====
@@ -25,7 +25,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/dev/acpica/acpivar.h,v 1.69 2004/05/28 07:15:55 njl Exp $
+ * $FreeBSD: src/sys/dev/acpica/acpivar.h,v 1.70 2004/06/13 17:29:35 njl Exp $
*/
#include "bus_if.h"
@@ -174,6 +174,15 @@
__ACPI_BUS_ACCESSOR(acpi, magic, ACPI, MAGIC, int)
__ACPI_BUS_ACCESSOR(acpi, private, ACPI, PRIVATE, void *)
+void acpi_fake_objhandler(ACPI_HANDLE h, UINT32 fn, void *data);
+static __inline device_t
+acpi_get_device(ACPI_HANDLE handle)
+{
+ void *dev = NULL;
+ AcpiGetData(handle, acpi_fake_objhandler, &dev);
+ return ((device_t)dev);
+}
+
static __inline ACPI_OBJECT_TYPE
acpi_get_type(device_t dev)
{
==== //depot/projects/netperf_socket/sys/dev/awi/awi.c#4 (text+ko) ====
@@ -89,7 +89,7 @@
__KERNEL_RCSID(0, "$NetBSD: awi.c,v 1.62 2004/01/16 14:13:15 onoe Exp $");
#endif
#ifdef __FreeBSD__
-__FBSDID("$FreeBSD: src/sys/dev/awi/awi.c,v 1.32 2004/04/18 01:05:02 onoe Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/awi/awi.c,v 1.33 2004/06/13 17:29:07 mlaier Exp $");
#endif
#include "opt_inet.h"
@@ -235,10 +235,12 @@
}
#endif
+#if 0 /* ALTQ */
#define IFQ_PURGE(ifq) IF_DRAIN(ifq)
#define IF_POLL(ifq, m) ((m) = (ifq)->ifq_head)
#define IFQ_POLL(ifq, m) IF_POLL((ifq), (m))
#define IFQ_DEQUEUE(ifq, m) IF_DEQUEUE((ifq), (m))
+#endif
#endif
==== //depot/projects/netperf_socket/sys/dev/esp/ncr53c9x.c#3 (text+ko) ====
@@ -104,7 +104,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/esp/ncr53c9x.c,v 1.3 2004/06/12 05:19:17 scottl Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/esp/ncr53c9x.c,v 1.4 2004/06/13 09:08:44 scottl Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -117,7 +117,6 @@
#include <sys/queue.h>
#include <sys/time.h>
#include <sys/callout.h>
-#include <vm/uma.h>
#include <cam/cam.h>
#include <cam/cam_ccb.h>
@@ -185,9 +184,6 @@
((ms +0u) * hz) /1000u)
#endif
-static int ecb_zone_initialized = 0;
-static uma_zone_t ecb_zone;
-
/*
* Names for the NCR53c9x variants, correspnding to the variant tags
* in ncr53c9xvar.h.
@@ -228,6 +224,8 @@
struct cam_devq *devq;
struct cam_sim *sim;
struct cam_path *path;
+ struct ncr53c9x_ecb *ecb;
+ int i;
mtx_init(&sc->sc_lock, "ncr", "ncr53c9x lock", MTX_DEF);
@@ -304,7 +302,8 @@
return (ENOMEM);
sim = cam_sim_alloc(ncr53c9x_action, ncr53c9x_poll, "esp", sc,
- device_get_unit(sc->sc_dev), 256, 256, devq);
+ device_get_unit(sc->sc_dev), 1,
+ NCR_TAG_DEPTH, devq);
if (sim == NULL) {
cam_simq_free(devq);
return (ENOMEM);
@@ -332,6 +331,19 @@
sc->sc_state = 0;
ncr53c9x_init(sc, 1);
+ TAILQ_INIT(&sc->free_list);
+ if ((sc->ecb_array = malloc(sizeof(struct ncr53c9x_ecb) * NCR_TAG_DEPTH,
+ M_DEVBUF, M_NOWAIT|M_ZERO)) == NULL) {
+ device_printf(sc->sc_dev, "Cannot allocate ecb array!\n");
+ return (ENOMEM);
+ }
+ for (i = 0; i < NCR_TAG_DEPTH; i++) {
+ ecb = &sc->ecb_array[i];
+ ecb->sc = sc;
+ ecb->tag_id = i;
+ TAILQ_INSERT_HEAD(&sc->free_list, ecb, free_links);
+ }
+
callout_reset(&sc->sc_watchdog, 60*hz, ncr53c9x_watch, sc);
return (0);
@@ -453,14 +465,6 @@
NCR_MISC(("[NCR_INIT(%d) %d] ", doreset, sc->sc_state));
- if (!ecb_zone_initialized) {
- /* All instances share this zone */
- ecb_zone = uma_zcreate("ncr53c9x ecb zone",
- sizeof(struct ncr53c9x_ecb), NULL, NULL,
- NULL, NULL, 0, 0);
- ecb_zone_initialized = 1;
- }
-
if (sc->sc_state == 0) {
/* First time through; initialize. */
@@ -791,7 +795,7 @@
{
ecb->flags = 0;
- uma_zfree(ecb_zone, (void *)ecb);
+ TAILQ_INSERT_TAIL(&sc->free_list, ecb, free_links);
return;
}
@@ -800,11 +804,14 @@
{
struct ncr53c9x_ecb *ecb;
- ecb = (struct ncr53c9x_ecb *)uma_zalloc(ecb_zone, M_NOWAIT);
+ ecb = TAILQ_FIRST(&sc->free_list);
if (ecb) {
- bzero(ecb, sizeof(struct ncr53c9x_ecb));
- ecb->flags |= ECB_ALLOC;
- ecb->sc = sc;
+ if (ecb->flags != 0)
+ panic("ecb flags not cleared\n");
+ TAILQ_REMOVE(&sc->free_list, ecb, free_links);
+ ecb->flags = ECB_ALLOC;
+ bzero(&ecb->ccb, sizeof(struct ncr53c9x_ecb) -
+ offsetof(struct ncr53c9x_ecb, ccb));
}
return (ecb);
}
@@ -847,7 +854,7 @@
struct ccb_pathinq *cpi = &ccb->cpi;
cpi->version_num = 1;
- cpi->hba_inquiry = PI_SDTR_ABLE/*|PI_TAG_ABLE*/;
+ cpi->hba_inquiry = PI_SDTR_ABLE|PI_TAG_ABLE;
cpi->hba_inquiry |=
(sc->sc_rev == NCR_VARIANT_FAS366) ? PI_WIDE_16 : 0;
cpi->target_sprt = 0;
@@ -1000,6 +1007,7 @@
ti->flags &= ~T_WIDE;
ti->width = 0;
}
+ ti->flags |= T_NEGOTIATE;
}
if ((cts->valid & CCB_TRANS_SYNC_RATE_VALID) != 0) {
@@ -1088,6 +1096,10 @@
tag = 0;
else if ((ecb->flags & ECB_SENSE) != 0)
tag = 0;
+ else if ((ecb->ccb->ccb_h.flags & CAM_TAG_ACTION_VALID) == 0)
+ tag = 0;
+ else if (ecb->ccb->csio.tag_action == CAM_TAG_ACTION_NONE)
+ tag = 0;
else
tag = ecb->ccb->csio.tag_action;
@@ -1122,8 +1134,8 @@
}
ecb->tag[0] = tag;
if (tag != 0) {
- li->queued[ecb->ccb->csio.tag_id] = ecb;
- ecb->tag[1] = ecb->ccb->csio.tag_id;
+ li->queued[ecb->tag_id] = ecb;
+ ecb->tag[1] = ecb->tag_id;
li->used++;
}
if (li->untagged != NULL && (li->busy != 1)) {
@@ -1218,7 +1230,8 @@
if (ccb->ccb_h.status == CAM_REQ_CMP) {
if ((ecb->flags & ECB_ABORT) != 0) {
ccb->ccb_h.status = CAM_CMD_TIMEOUT;
- } else if ((ecb->flags & ECB_SENSE) != 0) {
+ } else if ((ecb->flags & ECB_SENSE) != 0 &&
+ (ecb->stat != SCSI_STATUS_CHECK_COND)) {
ccb->ccb_h.status = CAM_AUTOSNS_VALID;
} else if (ecb->stat == SCSI_STATUS_CHECK_COND) {
if ((ecb->flags & ECB_SENSE) != 0)
==== //depot/projects/netperf_socket/sys/dev/esp/ncr53c9xvar.h#3 (text+ko) ====
@@ -66,7 +66,7 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-/* $FreeBSD: src/sys/dev/esp/ncr53c9xvar.h,v 1.2 2004/06/11 15:33:20 scottl Exp $ */
+/* $FreeBSD: src/sys/dev/esp/ncr53c9xvar.h,v 1.3 2004/06/13 09:08:44 scottl Exp $ */
#ifndef _DEV_IC_NCR53C9XVAR_H_
#define _DEV_IC_NCR53C9XVAR_H_
@@ -101,6 +101,9 @@
#define NCR_VARIANT_NCR53C90_86C01 10
#define NCR_VARIANT_MAX 11
+/* XXX Max tag depth. Should this be defined in the register header? */
+#define NCR_TAG_DEPTH 256
+
/*
* ECB. Holds additional information for each SCSI command Comments: We
* need a separate scsi command block because we may need to overwrite it
@@ -110,10 +113,14 @@
* occasionally xs->retries.
*/
struct ncr53c9x_ecb {
- TAILQ_ENTRY(ncr53c9x_ecb) chain;
- union ccb *ccb; /* SCSI xfer ctrl block from above */
+ /* These fields are preserved between alloc and free */
struct ncr53c9x_softc *sc;
+ int tag_id;
int flags;
+
+ union ccb *ccb; /* SCSI xfer ctrl block from above */
+ TAILQ_ENTRY(ncr53c9x_ecb) free_links;
+ TAILQ_ENTRY(ncr53c9x_ecb) chain;
#define ECB_ALLOC 0x01
#define ECB_READY 0x02
#define ECB_SENSE 0x04
@@ -168,7 +175,7 @@
unsigned char avail; /* where to start scanning */
unsigned char busy;
struct ncr53c9x_ecb *untagged;
- struct ncr53c9x_ecb *queued[256];
+ struct ncr53c9x_ecb *queued[NCR_TAG_DEPTH];
};
struct ncr53c9x_tinfo {
@@ -348,6 +355,9 @@
int sc_extended_geom; /* Should we return extended geometry */
struct mtx sc_lock; /* driver mutex */
+
+ struct ncr53c9x_ecb *ecb_array;
+ TAILQ_HEAD(,ncr53c9x_ecb) free_list;
};
/* values for sc_state */
==== //depot/projects/netperf_socket/sys/dev/ichwd/ichwd.c#3 (text+ko) ====
@@ -54,7 +54,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ichwd/ichwd.c,v 1.3 2004/05/30 20:08:34 phk Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ichwd/ichwd.c,v 1.4 2004/06/13 05:00:19 jmg Exp $");
#include <sys/param.h>
#include <sys/kernel.h>
@@ -247,8 +247,10 @@
/* good, add child to bus */
if ((dev = device_find_child(parent, driver->name, 0)) == NULL)
- dev = BUS_ADD_CHILD(parent, 0, driver->name, -1);
- device_set_desc_copy(dev, id->desc);
+ dev = BUS_ADD_CHILD(parent, 0, driver->name, 0);
+
+ if (dev != NULL)
+ device_set_desc_copy(dev, id->desc);
}
static int
==== //depot/projects/netperf_socket/sys/dev/pdq/pdq_freebsd.h#2 (text+ko) ====
@@ -24,7 +24,7 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* Id: pdqvar.h,v 1.21 1997/03/21 21:16:04 thomas Exp
- * $FreeBSD: src/sys/dev/pdq/pdq_freebsd.h,v 1.7 2003/10/31 18:32:03 brooks Exp $
+ * $FreeBSD: src/sys/dev/pdq/pdq_freebsd.h,v 1.8 2004/06/13 17:29:07 mlaier Exp $
*
*/
@@ -97,8 +97,10 @@
#define sc_ifmedia ifmedia
#define sc_if arpcom.ac_if
#define sc_bpf sc_if.if_bpf
+#if 0 /* ALTQ */
#define IFQ_DEQUEUE IF_DEQUEUE
#define IFQ_IS_EMPTY(q) ((q)->ifq_len == 0)
+#endif
typedef struct _pdq_os_ctx_t {
struct arpcom arpcom;
==== //depot/projects/netperf_socket/sys/dev/usb/if_udav.c#5 (text+ko) ====
@@ -1,6 +1,6 @@
/* $NetBSD: if_udav.c,v 1.2 2003/09/04 15:17:38 tsutsui Exp $ */
/* $nabe: if_udav.c,v 1.3 2003/08/21 16:57:19 nabe Exp $ */
-/* $FreeBSD: src/sys/dev/usb/if_udav.c,v 1.5 2004/06/09 00:25:44 naddy Exp $ */
+/* $FreeBSD: src/sys/dev/usb/if_udav.c,v 1.6 2004/06/13 11:22:58 sanpei Exp $ */
/*
* Copyright (c) 2003
* Shingo WATANABE <nabe at nabechan.org>. All rights reserved.
@@ -45,7 +45,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/usb/if_udav.c,v 1.5 2004/06/09 00:25:44 naddy Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/usb/if_udav.c,v 1.6 2004/06/13 11:22:58 sanpei Exp $");
#include "opt_inet.h"
#if defined(__NetBSD__)
@@ -1538,6 +1538,28 @@
switch (cmd) {
#if defined(__FreeBSD__)
+ case SIOCSIFFLAGS:
+ if (ifp->if_flags & IFF_UP) {
+ if (ifp->if_flags & IFF_RUNNING &&
+ ifp->if_flags & IFF_PROMISC) {
+ UDAV_SETBIT(sc, UDAV_RCR,
+ UDAV_RCR_ALL|UDAV_RCR_PRMSC);
+ } else if (ifp->if_flags & IFF_RUNNING &&
+ !(ifp->if_flags & IFF_PROMISC)) {
+ if (ifp->if_flags & IFF_ALLMULTI)
+ UDAV_CLRBIT(sc, UDAV_RCR,
+ UDAV_RCR_PRMSC);
+ else
+ UDAV_CLRBIT(sc, UDAV_RCR,
+ UDAV_RCR_ALL|UDAV_RCR_PRMSC);
+ } else if (!(ifp->if_flags & IFF_RUNNING))
+ udav_init(sc);
+ } else {
+ if (ifp->if_flags & IFF_RUNNING)
+ udav_stop(ifp, 1);
+ }
+ error = 0;
+ break;
case SIOCADDMULTI:
case SIOCDELMULTI:
udav_setmulti(sc);
@@ -1552,10 +1574,12 @@
default:
error = ether_ioctl(ifp, cmd, data);
+#if defined(__NetBSD__)
if (error == ENETRESET) {
udav_setmulti(sc);
error = 0;
}
+#endif
break;
}
==== //depot/projects/netperf_socket/sys/dev/wi/if_wi.c#5 (text+ko) ====
@@ -62,7 +62,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/wi/if_wi.c,v 1.166 2004/04/01 00:38:45 sam Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/wi/if_wi.c,v 1.167 2004/06/13 17:29:07 mlaier Exp $");
#define WI_HERMES_AUTOINC_WAR /* Work around data write autoinc bug. */
#define WI_HERMES_STATS_WAR /* Work around stats counter bug. */
@@ -114,9 +114,11 @@
#include <dev/wi/if_wireg.h>
#include <dev/wi/if_wivar.h>
+#if 0 /* ALTQ */
#define IF_POLL(ifq, m) ((m) = (ifq)->ifq_head)
#define IFQ_POLL(ifq, m) IF_POLL((ifq), (m))
#define IFQ_DEQUEUE(ifq, m) IF_DEQUEUE((ifq), (m))
+#endif
static void wi_start(struct ifnet *);
static int wi_reset(struct wi_softc *);
==== //depot/projects/netperf_socket/sys/i4b/driver/i4b_ipr.c#2 (text+ko) ====
@@ -54,7 +54,7 @@
*---------------------------------------------------------------------------*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/i4b/driver/i4b_ipr.c,v 1.26 2003/10/31 18:32:07 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/i4b/driver/i4b_ipr.c,v 1.27 2004/06/13 17:29:08 mlaier Exp $");
#include "i4bipr.h"
@@ -382,7 +382,7 @@
if(ip->ip_tos & IPTOS_LOWDELAY)
ifq = &sc->sc_fastq;
else
- ifq = &sc->sc_if.if_snd;
+ ifq = (struct ifqueue *)&sc->sc_if.if_snd;
/* check for space in choosen send queue */
==== //depot/projects/netperf_socket/sys/net/if.c#9 (text+ko) ====
@@ -27,7 +27,7 @@
* SUCH DAMAGE.
*
* @(#)if.c 8.5 (Berkeley) 1/9/95
- * $FreeBSD: src/sys/net/if.c,v 1.191 2004/04/24 22:24:48 luigi Exp $
+ * $FreeBSD: src/sys/net/if.c,v 1.192 2004/06/13 17:29:08 mlaier Exp $
*/
#include "opt_compat.h"
@@ -82,7 +82,7 @@
static void if_init(void *);
static void if_check(void *);
static int if_findindex(struct ifnet *);
-static void if_qflush(struct ifqueue *);
+static void if_qflush(struct ifaltq *);
static void if_route(struct ifnet *, int flag, int fam);
static void if_slowtimo(void *);
static void if_unroute(struct ifnet *, int flag, int fam);
@@ -441,6 +441,13 @@
ifa->ifa_refcnt = 1;
TAILQ_INSERT_HEAD(&ifp->if_addrhead, ifa, ifa_link);
ifp->if_broadcastaddr = 0; /* reliably crash if used uninitialized */
+#ifdef ALTQ
+ ifp->if_snd.altq_type = 0;
+ ifp->if_snd.altq_disc = NULL;
+ ifp->if_snd.altq_flags &= ALTQF_CANTCHANGE;
+ ifp->if_snd.altq_tbr = NULL;
+ ifp->if_snd.altq_ifp = ifp;
+#endif
if (domains)
if_attachdomain1(ifp);
@@ -519,6 +526,12 @@
*/
s = splnet();
if_down(ifp);
+#ifdef ALTQ
+ if (ALTQ_IS_ENABLED(&ifp->if_snd))
+ altq_disable(&ifp->if_snd);
+ if (ALTQ_IS_ATTACHED(&ifp->if_snd))
+ altq_detach(&ifp->if_snd);
+#endif
for (ifa = TAILQ_FIRST(&ifp->if_addrhead); ifa; ifa = next) {
next = TAILQ_NEXT(ifa, ifa_link);
@@ -1189,10 +1202,14 @@
* Flush an interface queue.
*/
static void
-if_qflush(struct ifqueue *ifq)
+if_qflush(struct ifaltq *ifq)
{
struct mbuf *m, *n;
+#ifdef ALTQ
+ if (ALTQ_IS_ENABLED(ifq))
+ ALTQ_PURGE(ifq);
+#endif
n = ifq->ifq_head;
while ((m = n) != 0) {
n = m->m_act;
==== //depot/projects/netperf_socket/sys/net/if_arp.h#4 (text+ko) ====
@@ -27,7 +27,7 @@
* SUCH DAMAGE.
*
* @(#)if_arp.h 8.1 (Berkeley) 6/10/93
- * $FreeBSD: src/sys/net/if_arp.h,v 1.19 2004/04/18 01:15:32 luigi Exp $
+ * $FreeBSD: src/sys/net/if_arp.h,v 1.20 2004/06/13 10:54:35 dfr Exp $
*/
#ifndef _NET_IF_ARP_H_
@@ -49,6 +49,7 @@
#define ARPHRD_IEEE802 6 /* token-ring hardware format */
#define ARPHRD_ARCNET 7 /* arcnet hardware format */
#define ARPHRD_FRELAY 15 /* frame relay hardware format */
+#define ARPHRD_IEEE1394 24 /* firewire hardware format */
u_short ar_pro; /* format of protocol address */
u_char ar_hln; /* length of hardware address */
u_char ar_pln; /* length of protocol address */
==== //depot/projects/netperf_socket/sys/net/if_ppp.c#5 (text+ko) ====
@@ -69,7 +69,7 @@
* Paul Mackerras (paulus at cs.anu.edu.au).
*/
-/* $FreeBSD: src/sys/net/if_ppp.c,v 1.97 2004/04/19 01:36:24 rwatson Exp $ */
+/* $FreeBSD: src/sys/net/if_ppp.c,v 1.98 2004/06/13 17:29:08 mlaier Exp $ */
/* from if_sl.c,v 1.11 84/10/04 12:54:47 rick Exp */
/* from NetBSD: if_ppp.c,v 1.15.2.2 1994/07/28 05:17:58 cgd Exp */
@@ -933,7 +933,8 @@
sc->sc_npqtail = &m0->m_nextpkt;
} else {
/* fastq and if_snd are emptied at spl[soft]net now */
- ifq = (m0->m_flags & M_HIGHPRI)? &sc->sc_fastq: &ifp->if_snd;
+ ifq = (m0->m_flags & M_HIGHPRI)? &sc->sc_fastq:
+ (struct ifqueue *)&ifp->if_snd;
IF_LOCK(ifq);
if (_IF_QFULL(ifq) && dst->sa_family != AF_UNSPEC) {
_IF_DROP(ifq);
@@ -988,7 +989,8 @@
*/
*mpp = m->m_nextpkt;
m->m_nextpkt = NULL;
- ifq = (m->m_flags & M_HIGHPRI)? &sc->sc_fastq: &sc->sc_if.if_snd;
+ ifq = (m->m_flags & M_HIGHPRI)? &sc->sc_fastq:
+ (struct ifqueue *)&sc->sc_if.if_snd;
if (! IF_HANDOFF(ifq, m, NULL)) {
sc->sc_if.if_oerrors++;
sc->sc_stats.ppp_oerrors++;
==== //depot/projects/netperf_socket/sys/net/if_sl.c#5 (text+ko) ====
@@ -27,7 +27,7 @@
* SUCH DAMAGE.
*
* @(#)if_sl.c 8.6 (Berkeley) 2/1/94
- * $FreeBSD: src/sys/net/if_sl.c,v 1.115 2004/06/07 20:43:37 phk Exp $
+ * $FreeBSD: src/sys/net/if_sl.c,v 1.116 2004/06/13 17:29:08 mlaier Exp $
*/
/*
@@ -571,7 +571,7 @@
m_freem(m);
return (EHOSTUNREACH);
}
- ifq = &sc->sc_if.if_snd;
+ ifq = (struct ifqueue *)&sc->sc_if.if_snd;
ip = mtod(m, struct ip *);
if (sc->sc_if.if_flags & SC_NOICMP && ip->ip_p == IPPROTO_ICMP) {
m_freem(m);
==== //depot/projects/netperf_socket/sys/net/if_spppsubr.c#5 (text+ko) ====
@@ -17,7 +17,7 @@
*
* From: Version 2.4, Thu Apr 30 17:17:21 MSD 1997
*
- * $FreeBSD: src/sys/net/if_spppsubr.c,v 1.108 2004/05/25 21:54:07 rik Exp $
+ * $FreeBSD: src/sys/net/if_spppsubr.c,v 1.109 2004/06/13 17:29:08 mlaier Exp $
*/
#include <sys/param.h>
@@ -781,7 +781,7 @@
s = splimp();
}
- ifq = &ifp->if_snd;
+ ifq = (struct ifqueue *)&ifp->if_snd;
#ifdef INET
if (dst->sa_family == AF_INET) {
/* XXX Check mbuf length here? */
@@ -1038,7 +1038,7 @@
{
struct sppp *sp = (struct sppp*) ifp;
- sppp_qflush (&sp->pp_if.if_snd);
+ sppp_qflush ((struct ifqueue *)&sp->pp_if.if_snd);
sppp_qflush (&sp->pp_fastq);
sppp_qflush (&sp->pp_cpq);
}
==== //depot/projects/netperf_socket/sys/net/if_var.h#11 (text+ko) ====
@@ -27,7 +27,7 @@
* SUCH DAMAGE.
*
* From: @(#)if.h 8.1 (Berkeley) 6/10/93
- * $FreeBSD: src/sys/net/if_var.h,v 1.74 2004/05/03 13:48:35 andre Exp $
+ * $FreeBSD: src/sys/net/if_var.h,v 1.75 2004/06/13 17:29:08 mlaier Exp $
*/
#ifndef _NET_IF_VAR_H_
@@ -82,6 +82,10 @@
#define IF_DUNIT_NONE -1
+#if 1 /* ALTQ */
+#include <altq/if_altq.h>
+#endif
+
TAILQ_HEAD(ifnethead, ifnet); /* we use TAILQs so that the order of */
TAILQ_HEAD(ifaddrhead, ifaddr); /* instantiation is preserved in the list */
TAILQ_HEAD(ifprefixhead, ifprefix);
@@ -171,7 +175,11 @@
(void *);
int (*if_resolvemulti) /* validate/resolve multicast */
(struct ifnet *, struct sockaddr **, struct sockaddr *);
+#if 1 /* ALTQ */
+ struct ifaltq if_snd; /* output queue (includes altq) */
+#else
struct ifqueue if_snd; /* output queue */
+#endif
const u_int8_t *if_broadcastaddr; /* linklevel broadcast bytestring */
struct lltable *lltables; /* list of L3-L2 resolution tables */
@@ -228,6 +236,7 @@
*/
#define IF_LOCK(ifq) mtx_lock(&(ifq)->ifq_mtx)
#define IF_UNLOCK(ifq) mtx_unlock(&(ifq)->ifq_mtx)
+#define IF_LOCK_ASSERT(ifq) mtx_assert(&(ifq)->ifq_mtx, MA_OWNED)
#define _IF_QFULL(ifq) ((ifq)->ifq_len >= (ifq)->ifq_maxlen)
#define _IF_DROP(ifq) ((ifq)->ifq_drops++)
#define _IF_QLEN(ifq) ((ifq)->ifq_len)
@@ -278,18 +287,25 @@
IF_UNLOCK(ifq); \
} while (0)
-#define IF_DRAIN(ifq) do { \
+#define _IF_POLL(ifq, m) ((m) = (ifq)->ifq_head)
+#define IF_POLL(ifq, m) _IF_POLL(ifq, m)
+
+#define _IF_DRAIN(ifq) do { \
struct mbuf *m; \
- IF_LOCK(ifq); \
for (;;) { \
_IF_DEQUEUE(ifq, m); \
if (m == NULL) \
break; \
m_freem(m); \
} \
- IF_UNLOCK(ifq); \
} while (0)
+#define IF_DRAIN(ifq) do { \
+ IF_LOCK(ifq); \
+ _IF_DRAIN(ifq); \
+ IF_UNLOCK(ifq); \
+} while(0)
+
#ifdef _KERNEL
/* interface address change event */
typedef void (*ifaddr_event_handler_t)(void *, struct ifnet *);
@@ -311,8 +327,10 @@
#define IF_AFDATA_UNLOCK(ifp) mtx_unlock(&(ifp)->if_afdata_mtx)
#define IF_AFDATA_DESTROY(ifp) mtx_destroy(&(ifp)->if_afdata_mtx)
-#define IF_HANDOFF(ifq, m, ifp) if_handoff(ifq, m, ifp, 0)
-#define IF_HANDOFF_ADJ(ifq, m, ifp, adj) if_handoff(ifq, m, ifp, adj)
+#define IF_HANDOFF(ifq, m, ifp) \
+ if_handoff((struct ifqueue *)ifq, m, ifp, 0)
+#define IF_HANDOFF_ADJ(ifq, m, ifp, adj) \
+ if_handoff((struct ifqueue *)ifq, m, ifp, adj)
static __inline int
if_handoff(struct ifqueue *ifq, struct mbuf *m, struct ifnet *ifp, int adjust)
@@ -338,6 +356,185 @@
(*ifp->if_start)(ifp);
return (1);
}
+#if 1 /* ALTQ */
+#define IFQ_ENQUEUE(ifq, m, err) \
+do { \
+ IF_LOCK(ifq); \
+ if (ALTQ_IS_ENABLED(ifq)) \
+ ALTQ_ENQUEUE(ifq, m, NULL, err); \
+ else { \
+ if (_IF_QFULL(ifq)) { \
+ m_freem(m); \
+ (err) = ENOBUFS; \
+ } else { \
+ _IF_ENQUEUE(ifq, m); \
+ (err) = 0; \
+ } \
+ } \
+ if (err) \
+ (ifq)->ifq_drops++; \
+ IF_UNLOCK(ifq); \
+} while (0)
+
+#define IFQ_DEQUEUE_NOLOCK(ifq, m) \
+do { \
+ if (TBR_IS_ENABLED(ifq)) \
+ (m) = tbr_dequeue(ifq, ALTDQ_REMOVE); \
+ else if (ALTQ_IS_ENABLED(ifq)) \
+ ALTQ_DEQUEUE(ifq, m); \
+ else \
+ _IF_DEQUEUE(ifq, m); \
+} while (0)
+
+#define IFQ_DEQUEUE(ifq, m) \
+do { \
+ IF_LOCK(ifq); \
+ IFQ_DEQUEUE_NOLOCK(ifq, m); \
+ IF_UNLOCK(ifq); \
+} while (0)
+
+#define IFQ_POLL_NOLOCK(ifq, m) \
+do { \
+ if (TBR_IS_ENABLED(ifq)) \
+ (m) = tbr_dequeue(ifq, ALTDQ_POLL); \
+ else if (ALTQ_IS_ENABLED(ifq)) \
+ ALTQ_POLL(ifq, m); \
+ else \
+ _IF_POLL(ifq, m); \
+} while (0)
+
+#define IFQ_POLL(ifq, m) \
+do { \
+ IF_LOCK(ifq); \
+ IFQ_POLL_NOLOCK(ifq, m); \
+ IF_UNLOCK(ifq); \
+} while (0)
+
+#define IFQ_PURGE_NOLOCK(ifq) \
+do { \
+ if (ALTQ_IS_ENABLED(ifq)) { \
+ ALTQ_PURGE(ifq); \
+ } else \
+ _IF_DRAIN(ifq); \
+} while (0)
+
+#define IFQ_PURGE(ifq) \
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list