PERFORCE change 81982 for review

Robert Watson rwatson at FreeBSD.org
Sun Aug 14 17:31:31 GMT 2005


http://perforce.freebsd.org/chv.cgi?CH=81982

Change 81982 by rwatson at rwatson_peppercorn on 2005/08/14 17:30:58

	Integrate netsmp branch; various changes including:
	
	- g_label_ext2fs, g_label_reiserfs
	- if_dc, if_hme, if_my, if_sf, if_sk locking and other cleanups
	- if_drv_flags/if_flags descriptions, loopback, etc.
	- arp/routing race fixes   
	- netnatm fixes to if_atm
	- nswbuf fix

Affected files ...

.. //depot/projects/netsmp/src/sys/amd64/amd64/pmap.c#3 integrate
.. //depot/projects/netsmp/src/sys/conf/files#6 integrate
.. //depot/projects/netsmp/src/sys/contrib/pf/net/if_pflog.c#4 integrate
.. //depot/projects/netsmp/src/sys/contrib/pf/net/if_pfsync.c#4 integrate
.. //depot/projects/netsmp/src/sys/ddb/db_command.c#2 integrate
.. //depot/projects/netsmp/src/sys/dev/acpica/acpi_battery.c#5 integrate
.. //depot/projects/netsmp/src/sys/dev/ata/ata-all.c#2 integrate
.. //depot/projects/netsmp/src/sys/dev/ata/ata-chipset.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/ata/ata-pci.h#3 integrate
.. //depot/projects/netsmp/src/sys/dev/ath/if_ath.c#10 integrate
.. //depot/projects/netsmp/src/sys/dev/awi/awi.c#8 integrate
.. //depot/projects/netsmp/src/sys/dev/ciss/ciss.c#2 integrate
.. //depot/projects/netsmp/src/sys/dev/ciss/cissreg.h#2 integrate
.. //depot/projects/netsmp/src/sys/dev/hme/if_hme.c#6 integrate
.. //depot/projects/netsmp/src/sys/dev/ieee488/upd7210.h#2 integrate
.. //depot/projects/netsmp/src/sys/dev/iicbus/iicbus.h#2 integrate
.. //depot/projects/netsmp/src/sys/dev/ipw/if_ipw.c#6 integrate
.. //depot/projects/netsmp/src/sys/dev/my/if_my.c#6 integrate
.. //depot/projects/netsmp/src/sys/dev/my/if_myreg.h#2 integrate
.. //depot/projects/netsmp/src/sys/dev/ral/if_ral.c#5 integrate
.. //depot/projects/netsmp/src/sys/dev/smbus/smbus.h#2 integrate
.. //depot/projects/netsmp/src/sys/dev/usb/if_rue.c#7 integrate
.. //depot/projects/netsmp/src/sys/dev/usb/if_ural.c#5 integrate
.. //depot/projects/netsmp/src/sys/dev/wi/if_wi.c#9 integrate
.. //depot/projects/netsmp/src/sys/dev/wl/if_wl.c#6 integrate
.. //depot/projects/netsmp/src/sys/fs/fdescfs/fdesc_vnops.c#2 integrate
.. //depot/projects/netsmp/src/sys/fs/pseudofs/pseudofs_vnops.c#2 integrate
.. //depot/projects/netsmp/src/sys/fs/unionfs/union.h#2 integrate
.. //depot/projects/netsmp/src/sys/geom/eli/g_eli.c#2 integrate
.. //depot/projects/netsmp/src/sys/geom/label/g_label.c#2 integrate
.. //depot/projects/netsmp/src/sys/geom/label/g_label.h#2 integrate
.. //depot/projects/netsmp/src/sys/geom/label/g_label_ext2fs.c#1 branch
.. //depot/projects/netsmp/src/sys/geom/label/g_label_reiserfs.c#1 branch
.. //depot/projects/netsmp/src/sys/i386/i386/pmap.c#4 integrate
.. //depot/projects/netsmp/src/sys/ia64/ia64/mp_machdep.c#3 integrate
.. //depot/projects/netsmp/src/sys/ia64/ia64/pmap.c#3 integrate
.. //depot/projects/netsmp/src/sys/ia64/ia64/sal.c#2 integrate
.. //depot/projects/netsmp/src/sys/isofs/cd9660/cd9660_vfsops.c#2 integrate
.. //depot/projects/netsmp/src/sys/kern/kern_cpu.c#2 integrate
.. //depot/projects/netsmp/src/sys/kern/subr_witness.c#6 integrate
.. //depot/projects/netsmp/src/sys/kern/vfs_cluster.c#2 integrate
.. //depot/projects/netsmp/src/sys/kern/vfs_subr.c#5 integrate
.. //depot/projects/netsmp/src/sys/modules/geom/geom_label/Makefile#2 integrate
.. //depot/projects/netsmp/src/sys/modules/procfs/Makefile#2 integrate
.. //depot/projects/netsmp/src/sys/modules/twa/Makefile#2 integrate
.. //depot/projects/netsmp/src/sys/modules/twe/Makefile#2 integrate
.. //depot/projects/netsmp/src/sys/net/if.h#5 integrate
.. //depot/projects/netsmp/src/sys/net/if_atmsubr.c#4 integrate
.. //depot/projects/netsmp/src/sys/net/if_fwsubr.c#4 integrate
.. //depot/projects/netsmp/src/sys/net/if_iso88025subr.c#6 integrate
.. //depot/projects/netsmp/src/sys/net/if_ppp.c#4 integrate
.. //depot/projects/netsmp/src/sys/net/if_pppvar.h#2 integrate
.. //depot/projects/netsmp/src/sys/net/ppp_tty.c#4 integrate
.. //depot/projects/netsmp/src/sys/net/route.c#3 integrate
.. //depot/projects/netsmp/src/sys/net/rtsock.c#5 integrate
.. //depot/projects/netsmp/src/sys/net80211/_ieee80211.h#2 integrate
.. //depot/projects/netsmp/src/sys/net80211/ieee80211.c#4 integrate
.. //depot/projects/netsmp/src/sys/net80211/ieee80211_acl.c#2 integrate
.. //depot/projects/netsmp/src/sys/net80211/ieee80211_input.c#6 integrate
.. //depot/projects/netsmp/src/sys/net80211/ieee80211_ioctl.c#7 integrate
.. //depot/projects/netsmp/src/sys/net80211/ieee80211_ioctl.h#4 integrate
.. //depot/projects/netsmp/src/sys/net80211/ieee80211_node.c#8 integrate
.. //depot/projects/netsmp/src/sys/net80211/ieee80211_node.h#5 integrate
.. //depot/projects/netsmp/src/sys/net80211/ieee80211_output.c#5 integrate
.. //depot/projects/netsmp/src/sys/net80211/ieee80211_proto.c#3 integrate
.. //depot/projects/netsmp/src/sys/net80211/ieee80211_proto.h#3 integrate
.. //depot/projects/netsmp/src/sys/net80211/ieee80211_var.h#4 integrate
.. //depot/projects/netsmp/src/sys/netgraph/atm/atmpif/ng_atmpif_harp.c#2 integrate
.. //depot/projects/netsmp/src/sys/netgraph/atm/ng_atm.c#2 integrate
.. //depot/projects/netsmp/src/sys/netgraph/atm/sscop/ng_sscop.c#2 integrate
.. //depot/projects/netsmp/src/sys/netgraph/atm/uni/ng_uni.c#2 integrate
.. //depot/projects/netsmp/src/sys/netgraph/ng_fec.c#4 integrate
.. //depot/projects/netsmp/src/sys/netgraph/ng_l2tp.c#2 integrate
.. //depot/projects/netsmp/src/sys/netinet/if_atm.c#2 integrate
.. //depot/projects/netsmp/src/sys/netinet/if_ether.c#3 integrate
.. //depot/projects/netsmp/src/sys/netinet/in_proto.c#2 integrate
.. //depot/projects/netsmp/src/sys/netinet/ip_fw.h#2 integrate
.. //depot/projects/netsmp/src/sys/netinet/ip_fw2.c#3 integrate
.. //depot/projects/netsmp/src/sys/netinet/ip_output.c#6 integrate
.. //depot/projects/netsmp/src/sys/netinet/pim_var.h#2 integrate
.. //depot/projects/netsmp/src/sys/netinet6/icmp6.c#3 integrate
.. //depot/projects/netsmp/src/sys/netinet6/in6.h#4 integrate
.. //depot/projects/netsmp/src/sys/netinet6/in6_proto.c#3 integrate
.. //depot/projects/netsmp/src/sys/netinet6/in6_src.c#3 integrate
.. //depot/projects/netsmp/src/sys/netinet6/in6_var.h#7 integrate
.. //depot/projects/netsmp/src/sys/netinet6/ip6_forward.c#3 integrate
.. //depot/projects/netsmp/src/sys/netinet6/ip6_fw.c#2 integrate
.. //depot/projects/netsmp/src/sys/netinet6/ip6_mroute.c#3 integrate
.. //depot/projects/netsmp/src/sys/netinet6/ip6_var.h#4 integrate
.. //depot/projects/netsmp/src/sys/netinet6/nd6.c#5 integrate
.. //depot/projects/netsmp/src/sys/netinet6/nd6_nbr.c#5 integrate
.. //depot/projects/netsmp/src/sys/netinet6/nd6_rtr.c#3 integrate
.. //depot/projects/netsmp/src/sys/netinet6/pim6_var.h#2 integrate
.. //depot/projects/netsmp/src/sys/pci/if_dc.c#6 integrate
.. //depot/projects/netsmp/src/sys/pci/if_dcreg.h#2 integrate
.. //depot/projects/netsmp/src/sys/pci/if_de.c#8 integrate
.. //depot/projects/netsmp/src/sys/pci/if_sf.c#6 integrate
.. //depot/projects/netsmp/src/sys/pci/if_sfreg.h#2 integrate
.. //depot/projects/netsmp/src/sys/pci/if_sk.c#6 integrate
.. //depot/projects/netsmp/src/sys/sys/ata.h#4 integrate
.. //depot/projects/netsmp/src/sys/sys/buf.h#2 integrate
.. //depot/projects/netsmp/src/sys/sys/interrupt.h#2 integrate
.. //depot/projects/netsmp/src/sys/sys/param.h#3 integrate
.. //depot/projects/netsmp/src/sys/sys/proc.h#2 integrate
.. //depot/projects/netsmp/src/sys/sys/protosw.h#2 integrate
.. //depot/projects/netsmp/src/sys/vm/vm_contig.c#2 integrate
.. //depot/projects/netsmp/src/sys/vm/vm_object.c#2 integrate
.. //depot/projects/netsmp/src/sys/vm/vm_page.c#2 integrate
.. //depot/projects/netsmp/src/sys/vm/vm_pageout.c#2 integrate
.. //depot/projects/netsmp/src/sys/vm/vm_pager.c#2 integrate
.. //depot/projects/netsmp/src/sys/vm/vnode_pager.c#3 integrate

Differences ...

==== //depot/projects/netsmp/src/sys/amd64/amd64/pmap.c#3 (text+ko) ====

@@ -75,7 +75,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.517 2005/08/07 22:00:46 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.520 2005/08/11 23:38:01 alc Exp $");
 
 /*
  *	Manages physical address maps.
@@ -104,7 +104,6 @@
  */
 
 #include "opt_msgbuf.h"
-#include "opt_kstack_pages.h"
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -207,8 +206,8 @@
 static int pmap_remove_pte(pmap_t pmap, pt_entry_t *ptq,
 		vm_offset_t sva, pd_entry_t ptepde);
 static void pmap_remove_page(struct pmap *pmap, vm_offset_t va);
-static int pmap_remove_entry(struct pmap *pmap, vm_page_t m,
-		vm_offset_t va, pd_entry_t ptepde);
+static void pmap_remove_entry(struct pmap *pmap, vm_page_t m,
+		vm_offset_t va);
 static void pmap_insert_entry(pmap_t pmap, vm_offset_t va, vm_page_t m);
 
 static vm_page_t pmap_allocpte(pmap_t pmap, vm_offset_t va, int flags);
@@ -1420,11 +1419,10 @@
 }
 
 
-static int
-pmap_remove_entry(pmap_t pmap, vm_page_t m, vm_offset_t va, pd_entry_t ptepde)
+static void
+pmap_remove_entry(pmap_t pmap, vm_page_t m, vm_offset_t va)
 {
 	pv_entry_t pv;
-	int rtval;
 
 	PMAP_LOCK_ASSERT(pmap, MA_OWNED);
 	mtx_assert(&vm_page_queue_mtx, MA_OWNED);
@@ -1439,20 +1437,13 @@
 				break;
 		}
 	}
-
-	rtval = 0;
-	if (pv) {
-		rtval = pmap_unuse_pt(pmap, va, ptepde);
-		TAILQ_REMOVE(&m->md.pv_list, pv, pv_list);
-		m->md.pv_list_count--;
-		if (TAILQ_FIRST(&m->md.pv_list) == NULL)
-			vm_page_flag_clear(m, PG_WRITEABLE);
-
-		TAILQ_REMOVE(&pmap->pm_pvlist, pv, pv_plist);
-		free_pv_entry(pv);
-	}
-			
-	return rtval;
+	KASSERT(pv != NULL, ("pmap_remove_entry: pv not found"));
+	TAILQ_REMOVE(&m->md.pv_list, pv, pv_list);
+	m->md.pv_list_count--;
+	if (TAILQ_EMPTY(&m->md.pv_list))
+		vm_page_flag_clear(m, PG_WRITEABLE);
+	TAILQ_REMOVE(&pmap->pm_pvlist, pv, pv_plist);
+	free_pv_entry(pv);
 }
 
 /*
@@ -1510,10 +1501,9 @@
 		}
 		if (oldpte & PG_A)
 			vm_page_flag_set(m, PG_REFERENCED);
-		return pmap_remove_entry(pmap, m, va, ptepde);
-	} else {
-		return pmap_unuse_pt(pmap, va, ptepde);
+		pmap_remove_entry(pmap, m, va);
 	}
+	return (pmap_unuse_pt(pmap, va, ptepde));
 }
 
 /*
@@ -1930,9 +1920,9 @@
 			pmap->pm_stats.wired_count--;
 		if (origpte & PG_MANAGED) {
 			om = PHYS_TO_VM_PAGE(opa);
-			err = pmap_remove_entry(pmap, om, va, ptepde);
-		} else
-			err = pmap_unuse_pt(pmap, va, ptepde);
+			pmap_remove_entry(pmap, om, va);
+		}
+		err = pmap_unuse_pt(pmap, va, ptepde);
 		if (err)
 			panic("pmap_enter: pte vanished, va: 0x%lx", va);
 	} else
@@ -2566,12 +2556,6 @@
 		 */
 		if (!pmap_track_modified(pv->pv_va))
 			continue;
-#if defined(PMAP_DIAGNOSTIC)
-		if (!pv->pv_pmap) {
-			printf("Null pmap (tb) at va: 0x%lx\n", pv->pv_va);
-			continue;
-		}
-#endif
 		PMAP_LOCK(pv->pv_pmap);
 		pte = pmap_pte(pv->pv_pmap, pv->pv_va);
 		rv = (*pte & PG_M) != 0;
@@ -2633,13 +2617,6 @@
 				continue;
 		}
 
-#if defined(PMAP_DIAGNOSTIC)
-		if (!pv->pv_pmap) {
-			printf("Null pmap (cb) at va: 0x%lx\n", pv->pv_va);
-			continue;
-		}
-#endif
-
 		PMAP_LOCK(pv->pv_pmap);
 		pte = pmap_pte(pv->pv_pmap, pv->pv_va);
 retry:

==== //depot/projects/netsmp/src/sys/conf/files#6 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/files,v 1.1040 2005/08/08 18:31:13 pjd Exp $
+# $FreeBSD: src/sys/conf/files,v 1.1041 2005/08/12 00:27:44 pjd Exp $
 #
 # The long compile-with and dependency lines are required because of
 # limitations in config: backslash-newline doesn't work in strings, and
@@ -1060,8 +1060,10 @@
 geom/geom_vfs.c			standard
 geom/geom_vol_ffs.c		optional geom_vol
 geom/label/g_label.c		optional geom_label
+geom/label/g_label_ext2fs.c	optional geom_label
 geom/label/g_label_iso9660.c	optional geom_label
 geom/label/g_label_msdosfs.c	optional geom_label
+geom/label/g_label_reiserfs.c	optional geom_label
 geom/label/g_label_ufs.c	optional geom_label
 geom/mirror/g_mirror.c		optional geom_mirror
 geom/mirror/g_mirror_ctl.c	optional geom_mirror

==== //depot/projects/netsmp/src/sys/contrib/pf/net/if_pflog.c#4 (text+ko) ====

@@ -1,4 +1,4 @@
-/*	$FreeBSD: src/sys/contrib/pf/net/if_pflog.c,v 1.14 2005/08/09 10:19:42 rwatson Exp $	*/
+/*	$FreeBSD: src/sys/contrib/pf/net/if_pflog.c,v 1.15 2005/08/09 11:59:02 mlaier Exp $	*/
 /*	$OpenBSD: if_pflog.c,v 1.12 2004/05/19 17:50:51 dhartmei Exp $	*/
 
 /*
@@ -271,10 +271,17 @@
 	case SIOCAIFADDR:
 	case SIOCSIFDSTADDR:
 	case SIOCSIFFLAGS:
+#ifdef __FreeBSD__
 		if (ifp->if_flags & IFF_UP)
 			ifp->if_drv_flags |= IFF_DRV_RUNNING;
 		else
 			ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+#else
+		if (ifp->if_flags & IFF_UP)
+			ifp->if_flags |= IFF_RUNNING;
+		else
+			ifp->if_flags &= ~IFF_RUNNING;
+#endif
 		break;
 	default:
 		return (EINVAL);

==== //depot/projects/netsmp/src/sys/contrib/pf/net/if_pfsync.c#4 (text+ko) ====

@@ -1,4 +1,4 @@
-/*	$FreeBSD: src/sys/contrib/pf/net/if_pfsync.c,v 1.21 2005/08/09 10:19:42 rwatson Exp $	*/
+/*	$FreeBSD: src/sys/contrib/pf/net/if_pfsync.c,v 1.22 2005/08/09 11:59:02 mlaier Exp $	*/
 /*	$OpenBSD: if_pfsync.c,v 1.46 2005/02/20 15:58:38 mcbride Exp $	*/
 
 /*
@@ -989,10 +989,17 @@
 	case SIOCAIFADDR:
 	case SIOCSIFDSTADDR:
 	case SIOCSIFFLAGS:
+#ifdef __FreeBSD__
 		if (ifp->if_flags & IFF_UP)
 			ifp->if_drv_flags |= IFF_DRV_RUNNING;
 		else
 			ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+#else
+		if (ifp->if_flags & IFF_UP)
+			ifp->if_flags |= IFF_RUNNING;
+		else
+			ifp->if_flags &= ~IFF_RUNNING;
+#endif
 		break;
 	case SIOCSIFMTU:
 		if (ifr->ifr_mtu < PFSYNC_MINMTU)

==== //depot/projects/netsmp/src/sys/ddb/db_command.c#2 (text+ko) ====

@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/ddb/db_command.c,v 1.60 2005/07/02 23:52:37 marcel Exp $");
+__FBSDID("$FreeBSD: src/sys/ddb/db_command.c,v 1.61 2005/08/10 07:08:14 obrien Exp $");
 
 #include <sys/param.h>
 #include <sys/linker_set.h>
@@ -73,8 +73,60 @@
 static db_cmdfcn_t	db_stack_trace;
 static db_cmdfcn_t	db_watchdog;
 
-/* XXX this is actually forward-static. */
-extern struct command	db_show_cmds[];
+/*
+ * 'show' commands
+ */
+
+static struct command db_show_all_cmds[] = {
+	{ "procs",	db_ps,			0,	0 },
+	{ (char *)0 }
+};
+
+static struct command db_show_cmds[] = {
+	{ "all",	0,			0,	db_show_all_cmds },
+	{ "registers",	db_show_regs,		0,	0 },
+	{ "breaks",	db_listbreak_cmd, 	0,	0 },
+	{ "threads",	db_show_threads,	0,	0 },
+	{ (char *)0, }
+};
+
+static struct command db_command_table[] = {
+	{ "print",	db_print_cmd,		0,	0 },
+	{ "p",		db_print_cmd,		0,	0 },
+	{ "examine",	db_examine_cmd,		CS_SET_DOT, 0 },
+	{ "x",		db_examine_cmd,		CS_SET_DOT, 0 },
+	{ "search",	db_search_cmd,		CS_OWN|CS_SET_DOT, 0 },
+	{ "set",	db_set_cmd,		CS_OWN,	0 },
+	{ "write",	db_write_cmd,		CS_MORE|CS_SET_DOT, 0 },
+	{ "w",		db_write_cmd,		CS_MORE|CS_SET_DOT, 0 },
+	{ "delete",	db_delete_cmd,		0,	0 },
+	{ "d",		db_delete_cmd,		0,	0 },
+	{ "break",	db_breakpoint_cmd,	0,	0 },
+	{ "dwatch",	db_deletewatch_cmd,	0,	0 },
+	{ "watch",	db_watchpoint_cmd,	CS_MORE,0 },
+	{ "dhwatch",	db_deletehwatch_cmd,	0,      0 },
+	{ "hwatch",	db_hwatchpoint_cmd,	0,      0 },
+	{ "step",	db_single_step_cmd,	0,	0 },
+	{ "s",		db_single_step_cmd,	0,	0 },
+	{ "continue",	db_continue_cmd,	0,	0 },
+	{ "c",		db_continue_cmd,	0,	0 },
+	{ "until",	db_trace_until_call_cmd,0,	0 },
+	{ "next",	db_trace_until_matching_cmd,0,	0 },
+	{ "match",	db_trace_until_matching_cmd,0,	0 },
+	{ "trace",	db_stack_trace,		CS_OWN,	0 },
+	{ "where",	db_stack_trace,		CS_OWN,	0 },
+	{ "call",	db_fncall,		CS_OWN,	0 },
+	{ "show",	0,			0,	db_show_cmds },
+	{ "ps",		db_ps,			0,	0 },
+	{ "gdb",	db_gdb,			0,	0 },
+	{ "reset",	db_reset,		0,	0 },
+	{ "kill",	db_kill,		CS_OWN,	0 },
+	{ "watchdog",	db_watchdog,		0,	0 },
+	{ "thread",	db_set_thread,		CS_OWN,	0 },
+	{ (char *)0, }
+};
+
+static struct command	*db_last_command = 0;
 
 /*
  * if 'ed' style: 'dot' is set at start of last item printed,
@@ -372,61 +424,6 @@
 }
 
 /*
- * 'show' commands
- */
-
-static struct command db_show_all_cmds[] = {
-	{ "procs",	db_ps,			0,	0 },
-	{ (char *)0 }
-};
-
-static struct command db_show_cmds[] = {
-	{ "all",	0,			0,	db_show_all_cmds },
-	{ "registers",	db_show_regs,		0,	0 },
-	{ "breaks",	db_listbreak_cmd, 	0,	0 },
-	{ "threads",	db_show_threads,	0,	0 },
-	{ (char *)0, }
-};
-
-static struct command db_command_table[] = {
-	{ "print",	db_print_cmd,		0,	0 },
-	{ "p",		db_print_cmd,		0,	0 },
-	{ "examine",	db_examine_cmd,		CS_SET_DOT, 0 },
-	{ "x",		db_examine_cmd,		CS_SET_DOT, 0 },
-	{ "search",	db_search_cmd,		CS_OWN|CS_SET_DOT, 0 },
-	{ "set",	db_set_cmd,		CS_OWN,	0 },
-	{ "write",	db_write_cmd,		CS_MORE|CS_SET_DOT, 0 },
-	{ "w",		db_write_cmd,		CS_MORE|CS_SET_DOT, 0 },
-	{ "delete",	db_delete_cmd,		0,	0 },
-	{ "d",		db_delete_cmd,		0,	0 },
-	{ "break",	db_breakpoint_cmd,	0,	0 },
-	{ "dwatch",	db_deletewatch_cmd,	0,	0 },
-	{ "watch",	db_watchpoint_cmd,	CS_MORE,0 },
-	{ "dhwatch",	db_deletehwatch_cmd,	0,      0 },
-	{ "hwatch",	db_hwatchpoint_cmd,	0,      0 },
-	{ "step",	db_single_step_cmd,	0,	0 },
-	{ "s",		db_single_step_cmd,	0,	0 },
-	{ "continue",	db_continue_cmd,	0,	0 },
-	{ "c",		db_continue_cmd,	0,	0 },
-	{ "until",	db_trace_until_call_cmd,0,	0 },
-	{ "next",	db_trace_until_matching_cmd,0,	0 },
-	{ "match",	db_trace_until_matching_cmd,0,	0 },
-	{ "trace",	db_stack_trace,		CS_OWN,	0 },
-	{ "where",	db_stack_trace,		CS_OWN,	0 },
-	{ "call",	db_fncall,		CS_OWN,	0 },
-	{ "show",	0,			0,	db_show_cmds },
-	{ "ps",		db_ps,			0,	0 },
-	{ "gdb",	db_gdb,			0,	0 },
-	{ "reset",	db_reset,		0,	0 },
-	{ "kill",	db_kill,		CS_OWN,	0 },
-	{ "watchdog",	db_watchdog,		0,	0 },
-	{ "thread",	db_set_thread,		CS_OWN,	0 },
-	{ (char *)0, }
-};
-
-static struct command	*db_last_command = 0;
-
-/*
  * At least one non-optional command must be implemented using
  * DB_COMMAND() so that db_cmd_set gets created.  Here is one.
  */

==== //depot/projects/netsmp/src/sys/dev/acpica/acpi_battery.c#5 (text+ko) ====

@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_battery.c,v 1.17 2005/08/05 17:00:58 njl Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_battery.c,v 1.18 2005/08/11 17:12:57 njl Exp $");
 
 #include "opt_acpi.h"
 #include <sys/param.h>
@@ -227,9 +227,8 @@
 	total_min += bi[i].min;
 
 	/* If this battery is not present, don't use its capacity. */
-	if (bi[i].cap == -1)
-	    bi[i].cap = 0;
-	total_cap += bi[i].cap;
+	if (bi[i].cap != -1)
+	    total_cap += bi[i].cap;
     }
 
     /*

==== //depot/projects/netsmp/src/sys/dev/ata/ata-all.c#2 (text+ko) ====

@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ata/ata-all.c,v 1.252 2005/05/17 12:31:54 sos Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ata/ata-all.c,v 1.253 2005/08/12 16:54:11 sos Exp $");
 
 #include "opt_ata.h"
 #include <sys/param.h>
@@ -769,6 +769,7 @@
     case ATA_UDMA5: return "UDMA100";
     case ATA_UDMA6: return "UDMA133";
     case ATA_SA150: return "SATA150";
+    case ATA_SA300: return "SATA300";
     default:
 	if (mode & ATA_DMA_MASK)
 	    return "BIOSDMA";

==== //depot/projects/netsmp/src/sys/dev/ata/ata-chipset.c#3 (text+ko) ====

@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ata/ata-chipset.c,v 1.127 2005/08/05 13:14:00 sos Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ata/ata-chipset.c,v 1.128 2005/08/12 16:54:11 sos Exp $");
 
 #include "opt_ata.h"
 #include <sys/param.h>
@@ -208,6 +208,7 @@
 static void
 ata_sata_setmode(device_t dev, int mode)
 {
+    struct ata_pci_controller *ctlr = device_get_softc(GRANDPARENT(dev));
     struct ata_device *atadev = device_get_softc(dev);
 
     /*
@@ -220,7 +221,7 @@
 	atadev->param.satacapabilities != 0xffff) {
 	if (!ata_controlcmd(dev, ATA_SETFEATURES, ATA_SF_SETXFER, 0,
 			    ata_limit_mode(dev, mode, ATA_UDMA6)))
-	    atadev->mode = ATA_SA150;
+	    atadev->mode = ctlr->chip->max_dma;
     }
     else {
 	mode = ata_limit_mode(dev, mode, ATA_UDMA5);
@@ -2233,6 +2234,8 @@
      { ATA_PDC20622,  0, PRMIO, PRSX4X,  ATA_SA150, "Promise PDC20622" },
      { ATA_PDC40518,  0, PRMIO, PRSATA2, ATA_SA150, "Promise PDC40518" },
      { ATA_PDC40519,  0, PRMIO, PRSATA2, ATA_SA150, "Promise PDC40519" },
+     { ATA_PDC40718,  0, PRMIO, PRSATA2, ATA_SA300, "Promise PDC40718" },
+     { ATA_PDC40719,  0, PRMIO, PRSATA2, ATA_SA300, "Promise PDC40719" },
      { 0, 0, 0, 0, 0, 0}};
     char buffer[64];
     uintptr_t devid = 0;

==== //depot/projects/netsmp/src/sys/dev/ata/ata-pci.h#3 (text+ko) ====

@@ -25,7 +25,7 @@
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/dev/ata/ata-pci.h,v 1.50 2005/08/05 13:14:00 sos Exp $
+ * $FreeBSD: src/sys/dev/ata/ata-pci.h,v 1.51 2005/08/12 16:54:11 sos Exp $
  */
 
 /* structure holding chipset config info */
@@ -203,6 +203,8 @@
 #define ATA_PDC20580            0x3570105a
 #define ATA_PDC40518            0x3d18105a
 #define ATA_PDC40519            0x3519105a
+#define ATA_PDC40718            0x3d17105a
+#define ATA_PDC40719            0x3515105a
 #define ATA_PDC20617            0x6617105a
 #define ATA_PDC20618            0x6626105a
 #define ATA_PDC20619            0x6629105a

==== //depot/projects/netsmp/src/sys/dev/ath/if_ath.c#10 (text+ko) ====

@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ath/if_ath.c,v 1.101 2005/08/09 10:19:43 rwatson Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ath/if_ath.c,v 1.103 2005/08/12 23:11:44 sam Exp $");
 
 /*
  * Driver for the Atheros Wireless LAN controller.
@@ -844,7 +844,6 @@
 	struct ath_softc *sc = (struct ath_softc *) arg;
 	struct ieee80211com *ic = &sc->sc_ic;
 	struct ifnet *ifp = sc->sc_ifp;
-	struct ieee80211_node *ni;
 	struct ath_hal *ah = sc->sc_ah;
 	HAL_STATUS status;
 
@@ -865,8 +864,8 @@
 	 * be followed by initialization of the appropriate bits
 	 * and then setup of the interrupt mask.
 	 */
-	sc->sc_curchan.channel = ic->ic_ibss_chan->ic_freq;
-	sc->sc_curchan.channelFlags = ath_chan2flags(ic, ic->ic_ibss_chan);
+	sc->sc_curchan.channel = ic->ic_curchan->ic_freq;
+	sc->sc_curchan.channelFlags = ath_chan2flags(ic, ic->ic_curchan);
 	if (!ath_hal_reset(ah, ic->ic_opmode, &sc->sc_curchan, AH_FALSE, &status)) {
 		if_printf(ifp, "unable to reset hardware; hal status %u\n",
 			status);
@@ -918,9 +917,7 @@
 	 * to kick the 802.11 state machine as it's likely to
 	 * immediately call back to us to send mgmt frames.
 	 */
-	ni = ic->ic_bss;
-	ni->ni_chan = ic->ic_ibss_chan;
-	ath_chan_change(sc, ni->ni_chan);
+	ath_chan_change(sc, ic->ic_curchan);
 	if (ic->ic_opmode != IEEE80211_M_MONITOR) {
 		if (ic->ic_roaming != IEEE80211_ROAMING_MANUAL)
 			ieee80211_new_state(ic, IEEE80211_S_SCAN, -1);
@@ -1022,7 +1019,7 @@
 	 * Convert to a HAL channel description with the flags
 	 * constrained to reflect the current operating mode.
 	 */
-	c = ic->ic_ibss_chan;
+	c = ic->ic_curchan;
 	sc->sc_curchan.channel = c->ic_freq;
 	sc->sc_curchan.channelFlags = ath_chan2flags(ic, c);
 
@@ -3428,14 +3425,14 @@
 			ctsduration += ath_hal_computetxtime(ah,
 				rt, pktlen, rix, AH_TRUE);
 			if ((flags & HAL_TXDESC_NOACK) == 0)	/* SIFS + ACK */
-				ctsduration += rt->info[cix].spAckDuration;
+				ctsduration += rt->info[rix].spAckDuration;
 		} else {
 			if (flags & HAL_TXDESC_RTSENA)		/* SIFS + CTS */
 				ctsduration += rt->info[cix].lpAckDuration;
 			ctsduration += ath_hal_computetxtime(ah,
 				rt, pktlen, rix, AH_FALSE);
 			if ((flags & HAL_TXDESC_NOACK) == 0)	/* SIFS + ACK */
-				ctsduration += rt->info[cix].lpAckDuration;
+				ctsduration += rt->info[rix].lpAckDuration;
 		}
 		/*
 		 * Must disable multi-rate retry when using RTS/CTS.
@@ -4114,7 +4111,7 @@
 		goto done;
 	}
 	ni = ic->ic_bss;
-	error = ath_chan_set(sc, ni->ni_chan);
+	error = ath_chan_set(sc, ic->ic_curchan);
 	if (error != 0)
 		goto bad;
 	rfilt = ath_calcrxfilter(sc, nstate);
@@ -4153,7 +4150,7 @@
 			 , ni->ni_intval
 			 , ether_sprintf(ni->ni_bssid)
 			 , ni->ni_capinfo
-			 , ieee80211_chan2ieee(ic, ni->ni_chan));
+			 , ieee80211_chan2ieee(ic, ic->ic_curchan));
 
 		switch (ic->ic_opmode) {
 		case IEEE80211_M_HOSTAP:

==== //depot/projects/netsmp/src/sys/dev/awi/awi.c#8 (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.41 2005/08/09 10:19:43 rwatson Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/awi/awi.c,v 1.42 2005/08/13 00:30:26 sam Exp $");
 #endif
 
 #include "opt_inet.h"
@@ -691,6 +691,7 @@
 	} else {
 		/* XXX check sc->sc_cur_chan */
 		ni->ni_chan = &ic->ic_channels[sc->sc_cur_chan];
+		ic->ic_curchan = ni->ni_chan;
 		ieee80211_new_state(ic, IEEE80211_S_SCAN, -1);
 	}
 	return 0;
@@ -1973,19 +1974,19 @@
 			if (sc->sc_mib_phy.IEEE_PHY_Type == AWI_PHY_TYPE_FH) {
 				awi_write_1(sc, AWI_CA_SCAN_SET,
 				    IEEE80211_FH_CHANSET(
-				        ieee80211_chan2ieee(ic, ni->ni_chan)));
+				        ieee80211_chan2ieee(ic, ic->ic_curchan)));
 				awi_write_1(sc, AWI_CA_SCAN_PATTERN,
 				    IEEE80211_FH_CHANPAT(
-				        ieee80211_chan2ieee(ic, ni->ni_chan)));
+				        ieee80211_chan2ieee(ic, ic->ic_curchan)));
 				awi_write_1(sc, AWI_CA_SCAN_IDX, 1);
 			} else {
 				awi_write_1(sc, AWI_CA_SCAN_SET,
-				    ieee80211_chan2ieee(ic, ni->ni_chan));
+				    ieee80211_chan2ieee(ic, ic->ic_curchan));
 				awi_write_1(sc, AWI_CA_SCAN_PATTERN, 0);
 				awi_write_1(sc, AWI_CA_SCAN_IDX, 0);
 			}
 			awi_write_1(sc, AWI_CA_SCAN_SUSP, 0);
-			sc->sc_cur_chan = ieee80211_chan2ieee(ic, ni->ni_chan);
+			sc->sc_cur_chan = ieee80211_chan2ieee(ic, ic->ic_curchan);
 			if ((error = awi_cmd(sc, AWI_CMD_SCAN, AWI_NOWAIT))
 			    != 0)
 				break;

==== //depot/projects/netsmp/src/sys/dev/ciss/ciss.c#2 (text+ko) ====

@@ -24,7 +24,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- *	$FreeBSD: src/sys/dev/ciss/ciss.c,v 1.64 2005/05/29 04:42:19 nyan Exp $
+ *	$FreeBSD: src/sys/dev/ciss/ciss.c,v 1.65 2005/08/09 20:53:51 ps Exp $
  */
 
 /*
@@ -597,12 +597,6 @@
 		    sc->ciss_cfg->signature[2], sc->ciss_cfg->signature[3]);
 	return(ENXIO);
     }
-    if ((sc->ciss_cfg->valence < CISS_MIN_VALENCE) ||
-	(sc->ciss_cfg->valence > CISS_MAX_VALENCE)) {
-	ciss_printf(sc, "adapter interface specification (%d) unsupported\n",
-		    sc->ciss_cfg->valence);
-	return(ENXIO);
-    }
 
     /*
      * Put the board into simple mode, and tell it we're using the low

==== //depot/projects/netsmp/src/sys/dev/ciss/cissreg.h#2 (text+ko) ====

@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- *	$FreeBSD: src/sys/dev/ciss/cissreg.h,v 1.15 2005/04/19 06:11:16 ps Exp $
+ *	$FreeBSD: src/sys/dev/ciss/cissreg.h,v 1.16 2005/08/09 20:53:51 ps Exp $
  */
 
 /*
@@ -396,8 +396,6 @@
 {
     char	signature[4];		/* "CISS" */
     u_int32_t	valence;
-#define CISS_MIN_VALENCE	1	/* only value currently supported */
-#define CISS_MAX_VALENCE	1
     u_int32_t	supported_methods;
 #define CISS_TRANSPORT_METHOD_READY	(1<<0)
 #define CISS_TRANSPORT_METHOD_SIMPLE	(1<<1)

==== //depot/projects/netsmp/src/sys/dev/hme/if_hme.c#6 (text+ko) ====

@@ -38,7 +38,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/hme/if_hme.c,v 1.39 2005/08/09 10:19:48 rwatson Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/hme/if_hme.c,v 1.40 2005/08/10 20:12:25 jhb Exp $");
 
 /*
  * HME Ethernet module driver.
@@ -112,7 +112,6 @@
 static int	hme_mac_bitflip(struct hme_softc *, u_int32_t, u_int32_t,
     u_int32_t, u_int32_t);
 static void	hme_mifinit(struct hme_softc *);
-static void	hme_reset(struct hme_softc *);
 static void	hme_setladrf(struct hme_softc *, int);
 
 static int	hme_mediachange(struct ifnet *);
@@ -206,6 +205,8 @@
 	hme_stop(sc);
 	HME_UNLOCK(sc);
 
+	callout_init_mtx(&sc->sc_tick_ch, &sc->sc_lock, 0);
+
 	/*
 	 * Allocate DMA capable memory
 	 * Buffer descriptors must be aligned on a 2048 byte boundary;
@@ -224,7 +225,7 @@
 	error = bus_dma_tag_create(sc->sc_pdmatag, 2048, 0,
 	    BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL, size,
 	    1, BUS_SPACE_MAXSIZE_32BIT, BUS_DMA_ALLOCNOW, busdma_lock_mutex,
-	    &Giant, &sc->sc_cdmatag);
+	    &sc->sc_lock, &sc->sc_cdmatag);
 	if (error)
 		goto fail_ptag;
 
@@ -301,9 +302,7 @@
 	ifp->if_snd.ifq_drv_maxlen = HME_NTXQ;
 	IFQ_SET_READY(&ifp->if_snd);
 
-	HME_LOCK(sc);
 	hme_mifinit(sc);
-	HME_UNLOCK(sc);
 
 	if ((error = mii_phy_probe(sc->sc_dev, &sc->sc_miibus, hme_mediachange,
 	    hme_mediastatus)) != 0) {
@@ -347,8 +346,6 @@
 	ifp->if_capabilities |= IFCAP_VLAN_MTU | IFCAP_HWCSUM;
 	ifp->if_hwassist |= sc->sc_csum_features;
 	ifp->if_capenable |= IFCAP_VLAN_MTU | IFCAP_HWCSUM;
-
-	callout_init(&sc->sc_tick_ch, CALLOUT_MPSAFE);
 	return (0);
 
 fail_txdesc:
@@ -447,34 +444,21 @@
 hme_tick(void *arg)
 {
 	struct hme_softc *sc = arg;
-	int s;
 
-	s = splnet();
+	HME_LOCK_ASSERT(sc, MA_OWNED);
 	mii_tick(sc->sc_mii);
-	splx(s);
 
 	callout_reset(&sc->sc_tick_ch, hz, hme_tick, sc);
 }
 
 static void
-hme_reset(struct hme_softc *sc)
-{
-	int s;
-
-	HME_LOCK(sc);
-	s = splnet();
-	hme_init_locked(sc);
-	splx(s);
-	HME_UNLOCK(sc);
-}
-
-static void
 hme_stop(struct hme_softc *sc)
 {
 	u_int32_t v;
 	int n;
 
 	callout_stop(&sc->sc_tick_ch);
+	sc->sc_ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE);
 
 	/* Reset transmitter and receiver */
 	HME_SEB_WRITE_4(sc, HME_SEBI_RESET, HME_SEB_RESET_ETX |
@@ -872,9 +856,7 @@
 
 	/* Set the current media. */
 	/*
-	 * HME_UNLOCK(sc);	
 	 * mii_mediachg(sc->sc_mii);
-	 * HME_LOCK(sc);	
 	 */
 
 	/* Start the one second timer. */
@@ -1372,9 +1354,9 @@
 #endif
 	device_printf(sc->sc_dev, "device timeout\n");
 	++ifp->if_oerrors;
+
+	hme_init_locked(sc);
 	HME_UNLOCK(sc);
-
-	hme_reset(sc);
 }
 
 /*
@@ -1385,8 +1367,6 @@
 {
 	u_int32_t v;
 
-	HME_LOCK_ASSERT(sc, MA_OWNED);
-
 	/* Configure the MIF in frame mode */
 	v = HME_MIF_READ_4(sc, HME_MIFI_CFG);
 	v &= ~HME_MIF_CFG_BBMODE;
@@ -1403,7 +1383,6 @@
 	int n;
 	u_int32_t v;
 
-	HME_LOCK(sc);
 	/* Select the desired PHY in the MIF configuration register */
 	v = HME_MIF_READ_4(sc, HME_MIFI_CFG);
 	/* Clear PHY select bit */
@@ -1425,13 +1404,11 @@
 		DELAY(1);
 		v = HME_MIF_READ_4(sc, HME_MIFI_FO);
 		if (v & HME_MIF_FO_TALSB) {
-			HME_UNLOCK(sc);
 			return (v & HME_MIF_FO_DATA);
 		}
 	}
 
 	device_printf(sc->sc_dev, "mii_read timeout\n");
-	HME_UNLOCK(sc);
 	return (0);
 }
 
@@ -1442,7 +1419,6 @@
 	int n;
 	u_int32_t v;
 
-	HME_LOCK(sc);
 	/* Select the desired PHY in the MIF configuration register */
 	v = HME_MIF_READ_4(sc, HME_MIFI_CFG);
 	/* Clear PHY select bit */
@@ -1464,14 +1440,11 @@
 	for (n = 0; n < 100; n++) {
 		DELAY(1);
 		v = HME_MIF_READ_4(sc, HME_MIFI_FO);
-		if (v & HME_MIF_FO_TALSB) {
-			HME_UNLOCK(sc);
+		if (v & HME_MIF_FO_TALSB)
 			return (1);
-		}
 	}
 
 	device_printf(sc->sc_dev, "mii_write timeout\n");
-	HME_UNLOCK(sc);
 	return (0);
 }
 
@@ -1483,7 +1456,6 @@
 	int phy;
 	u_int32_t v;
 
-	HME_LOCK(sc);
 	instance = IFM_INST(sc->sc_mii->mii_media.ifm_cur->ifm_media);
 	phy = sc->sc_phys[instance];
 #ifdef HMEDEBUG
@@ -1500,28 +1472,27 @@
 
 	/* Set the MAC Full Duplex bit appropriately */
 	v = HME_MAC_READ_4(sc, HME_MACI_TXCFG);
-	if (!hme_mac_bitflip(sc, HME_MACI_TXCFG, v, HME_MAC_TXCFG_ENABLE, 0)) {
-		HME_UNLOCK(sc);
+	if (!hme_mac_bitflip(sc, HME_MACI_TXCFG, v, HME_MAC_TXCFG_ENABLE, 0))
 		return;
-	}
 	if ((IFM_OPTIONS(sc->sc_mii->mii_media_active) & IFM_FDX) != 0)
 		v |= HME_MAC_TXCFG_FULLDPLX;
 	else
 		v &= ~HME_MAC_TXCFG_FULLDPLX;
 	HME_MAC_WRITE_4(sc, HME_MACI_TXCFG, v);
-	if (!hme_mac_bitflip(sc, HME_MACI_TXCFG, v, 0, HME_MAC_TXCFG_ENABLE)) {
-		HME_UNLOCK(sc);
+	if (!hme_mac_bitflip(sc, HME_MACI_TXCFG, v, 0, HME_MAC_TXCFG_ENABLE))
 		return;
-	}
-	HME_UNLOCK(sc);
 }
 
 static int
 hme_mediachange(struct ifnet *ifp)
 {
 	struct hme_softc *sc = ifp->if_softc;
+	int error;
 
-	return (mii_mediachg(sc->sc_mii));
+	HME_LOCK(sc);
+	error = mii_mediachg(sc->sc_mii);
+	HME_UNLOCK(sc);
+	return (error);
 }
 
 static void
@@ -1535,9 +1506,7 @@
 		return;
 	}
 
-	HME_UNLOCK(sc);
 	mii_pollstat(sc->sc_mii);
-	HME_LOCK(sc);
 	ifmr->ifm_active = sc->sc_mii->mii_media_active;
 	ifmr->ifm_status = sc->sc_mii->mii_media_status;
 	HME_UNLOCK(sc);
@@ -1551,13 +1520,11 @@
 {
 	struct hme_softc *sc = ifp->if_softc;
 	struct ifreq *ifr = (struct ifreq *)data;
-	int s, error = 0;
-
-	HME_LOCK(sc);
-	s = splnet();
+	int error = 0;
 
 	switch (cmd) {
 	case SIOCSIFFLAGS:
+		HME_LOCK(sc);
 		if ((ifp->if_flags & IFF_UP) == 0 &&
 		    (ifp->if_drv_flags & IFF_DRV_RUNNING) != 0) {
 			/*
@@ -1565,7 +1532,6 @@
 			 * stop it.
 			 */
 			hme_stop(sc);
-			ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
 		} else if ((ifp->if_flags & IFF_UP) != 0 &&
 		    	   (ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) {
 			/*
@@ -1589,35 +1555,34 @@
 #ifdef HMEDEBUG
 		sc->sc_debug = (ifp->if_flags & IFF_DEBUG) != 0 ? 1 : 0;
 #endif
+		HME_UNLOCK(sc);
 		break;
 
 	case SIOCADDMULTI:
 	case SIOCDELMULTI:

>>> TRUNCATED FOR MAIL (1000 lines) <<<


More information about the p4-projects mailing list