From owner-svn-src-user@FreeBSD.ORG  Sun Aug 19 20:24:47 2012
Return-Path: <owner-svn-src-user@FreeBSD.ORG>
Delivered-To: svn-src-user@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 348E6106564A;
	Sun, 19 Aug 2012 20:24:46 +0000 (UTC)
	(envelope-from jceel@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id D99AC8FC08;
	Sun, 19 Aug 2012 20:24:46 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q7JKOk97031713;
	Sun, 19 Aug 2012 20:24:46 GMT (envelope-from jceel@svn.freebsd.org)
Received: (from jceel@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id q7JKOk4i031711;
	Sun, 19 Aug 2012 20:24:46 GMT (envelope-from jceel@svn.freebsd.org)
Message-Id: <201208192024.q7JKOk4i031711@svn.freebsd.org>
From: Jakub Wojciech Klama <jceel@FreeBSD.org>
Date: Sun, 19 Aug 2012 20:24:46 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r239403 - user/jceel/soc2012_armv6/sys/arm/lpc
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
	src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 19 Aug 2012 20:24:47 -0000

Author: jceel
Date: Sun Aug 19 20:24:46 2012
New Revision: 239403
URL: http://svn.freebsd.org/changeset/base/239403

Log:
  Fix lpc_intc trapframe passing to reflect changes in INTRNG API.

Modified:
  user/jceel/soc2012_armv6/sys/arm/lpc/lpc_intc.c

Modified: user/jceel/soc2012_armv6/sys/arm/lpc/lpc_intc.c
==============================================================================
--- user/jceel/soc2012_armv6/sys/arm/lpc/lpc_intc.c	Sun Aug 19 19:44:13 2012	(r239402)
+++ user/jceel/soc2012_armv6/sys/arm/lpc/lpc_intc.c	Sun Aug 19 20:24:46 2012	(r239403)
@@ -124,15 +124,14 @@ lpc_intc_attach(device_t dev)
 static int
 lpc_intc_intr(void *arg)
 {
-	struct arm_intr_data *id = (struct arm_intr_data *)arg;
-	struct lpc_intc_softc *sc = (struct lpc_intc_softc *)id->arg;
+	struct lpc_intc_softc *sc = (struct lpc_intc_softc *)arg;
 	uint32_t value;
 	int i;
 
 	value = intc_read_4(sc, LPC_INTC_SR);
 	for (i = 0; i < 32; i++) {
 		if (value & (1 << i))
-			arm_dispatch_irq(sc->li_dev, id->tf, i);
+			arm_dispatch_irq(sc->li_dev, NULL, i);
 	}
 
 	return (FILTER_HANDLED);

From owner-svn-src-user@FreeBSD.ORG  Sun Aug 19 20:28:49 2012
Return-Path: <owner-svn-src-user@FreeBSD.ORG>
Delivered-To: svn-src-user@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id C0F21106564A;
	Sun, 19 Aug 2012 20:28:49 +0000 (UTC)
	(envelope-from jceel@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id A22938FC0C;
	Sun, 19 Aug 2012 20:28:49 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q7JKSndA032217;
	Sun, 19 Aug 2012 20:28:49 GMT (envelope-from jceel@svn.freebsd.org)
Received: (from jceel@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id q7JKSnbg032214;
	Sun, 19 Aug 2012 20:28:49 GMT (envelope-from jceel@svn.freebsd.org)
Message-Id: <201208192028.q7JKSnbg032214@svn.freebsd.org>
From: Jakub Wojciech Klama <jceel@FreeBSD.org>
Date: Sun, 19 Aug 2012 20:28:49 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r239404 - in user/jceel/soc2012_armv6/sys/arm: conf ti
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
	src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 19 Aug 2012 20:28:49 -0000

Author: jceel
Date: Sun Aug 19 20:28:48 2012
New Revision: 239404
URL: http://svn.freebsd.org/changeset/base/239404

Log:
  Bring TI AINTC to INTRNG interface and update BEAGLEBONE kernel config
  accordingly.

Modified:
  user/jceel/soc2012_armv6/sys/arm/conf/BEAGLEBONE
  user/jceel/soc2012_armv6/sys/arm/ti/aintc.c

Modified: user/jceel/soc2012_armv6/sys/arm/conf/BEAGLEBONE
==============================================================================
--- user/jceel/soc2012_armv6/sys/arm/conf/BEAGLEBONE	Sun Aug 19 20:24:46 2012	(r239403)
+++ user/jceel/soc2012_armv6/sys/arm/conf/BEAGLEBONE	Sun Aug 19 20:28:48 2012	(r239404)
@@ -46,6 +46,7 @@ options		SYSVSEM			#SYSV-style semaphore
 options		_KPOSIX_PRIORITY_SCHEDULING #Posix P1003_1B real-time extensions
 options		KBD_INSTALL_CDEV	# install a CDEV entry in /dev
 options		PREEMPTION
+options		ARM_INTRNG
 
 # Debugging
 makeoptions	DEBUG=-g		#Build kernel with gdb(1) debug symbols

Modified: user/jceel/soc2012_armv6/sys/arm/ti/aintc.c
==============================================================================
--- user/jceel/soc2012_armv6/sys/arm/ti/aintc.c	Sun Aug 19 20:24:46 2012	(r239403)
+++ user/jceel/soc2012_armv6/sys/arm/ti/aintc.c	Sun Aug 19 20:28:48 2012	(r239404)
@@ -45,6 +45,8 @@ __FBSDID("$FreeBSD$");
 #include <dev/ofw/ofw_bus.h>
 #include <dev/ofw/ofw_bus_subr.h>
 
+#include "pic_if.h"
+
 #define INTC_REVISION		0x00
 #define INTC_SYSCONFIG		0x10
 #define INTC_SYSSTATUS		0x14
@@ -61,22 +63,27 @@ struct ti_aintc_softc {
 	struct resource *	aintc_res[3];
 	bus_space_tag_t		aintc_bst;
 	bus_space_handle_t	aintc_bsh;
+	void *			aintc_intrhand;
 	uint8_t			ver;
 };
 
 static struct resource_spec ti_aintc_spec[] = {
 	{ SYS_RES_MEMORY,	0,	RF_ACTIVE },
+	{ SYS_RES_IRQ,		0,	RF_ACTIVE },
 	{ -1, 0 }
 };
 
-
-static struct ti_aintc_softc *ti_aintc_sc = NULL;
-
-#define	aintc_read_4(reg)		\
-    bus_space_read_4(ti_aintc_sc->aintc_bst, ti_aintc_sc->aintc_bsh, reg)
-#define	aintc_write_4(reg, val)		\
-    bus_space_write_4(ti_aintc_sc->aintc_bst, ti_aintc_sc->aintc_bsh, reg, val)
-
+#define	aintc_read_4(_sc,reg)		\
+    bus_space_read_4(_sc->aintc_bst, _sc->aintc_bsh, (reg))
+#define	aintc_write_4(_sc, reg, val)		\
+    bus_space_write_4(_sc->aintc_bst, _sc->aintc_bsh, (reg), (val))
+
+static int ti_aintc_probe(device_t);
+static int ti_aintc_attach(device_t);
+static void ti_aintc_mask(device_t, int);
+static void ti_aintc_unmask(device_t, int);
+static void ti_aintc_eoi(device_t, int);
+static int ti_aintc_intr(void *);
 
 static int
 ti_aintc_probe(device_t dev)
@@ -95,9 +102,6 @@ ti_aintc_attach(device_t dev)
 
 	sc->sc_dev = dev;
 
-	if (ti_aintc_sc)
-		return (ENXIO);
-
 	if (bus_alloc_resources(dev, ti_aintc_spec, sc->aintc_res)) {
 		device_printf(dev, "could not allocate resources\n");
 		return (ENXIO);
@@ -106,26 +110,39 @@ ti_aintc_attach(device_t dev)
 	sc->aintc_bst = rman_get_bustag(sc->aintc_res[0]);
 	sc->aintc_bsh = rman_get_bushandle(sc->aintc_res[0]);
 
-	ti_aintc_sc = sc;
+	arm_register_pic(dev);
 
-	x = aintc_read_4(INTC_REVISION);
+	if (bus_setup_intr(dev, sc->aintc_res[1],
+	    INTR_TYPE_MISC | INTR_CONTROLLER, ti_aintc_intr, NULL,
+	    sc, &sc->aintc_intrhand)) {
+		device_printf(dev, "could not install interrupt handler\n");
+		return (ENXIO);
+	}
+
+	x = aintc_read_4(sc, INTC_REVISION);
 	device_printf(dev, "Revision %u.%u\n",(x >> 4) & 0xF, x & 0xF);
 
 	/* SoftReset */
-	aintc_write_4(INTC_SYSCONFIG, 2);
+	aintc_write_4(sc, INTC_SYSCONFIG, 2);
 
 	/* Wait for reset to complete */
-	while(!(aintc_read_4(INTC_SYSSTATUS) & 1));
+	while(!(aintc_read_4(sc, INTC_SYSSTATUS) & 1));
 
 	/*Set Priority Threshold */
-	aintc_write_4(INTC_THRESHOLD, 0xFF);
+	aintc_write_4(sc, INTC_THRESHOLD, 0xFF);
 
 	return (0);
 }
 
 static device_method_t ti_aintc_methods[] = {
+	/* Device interface */
 	DEVMETHOD(device_probe,		ti_aintc_probe),
 	DEVMETHOD(device_attach,	ti_aintc_attach),
+	/* PIC interface */
+	DEVMETHOD(pic_mask,		ti_aintc_mask),
+	DEVMETHOD(pic_unmask,		ti_aintc_unmask),
+	DEVMETHOD(pic_eoi,		ti_aintc_eoi),
+
 	{ 0, 0 }
 };
 
@@ -139,41 +156,48 @@ static devclass_t ti_aintc_devclass;
 
 DRIVER_MODULE(aintc, simplebus, ti_aintc_driver, ti_aintc_devclass, 0, 0);
 
-int
-arm_get_next_irq(int last_irq)
+static int
+ti_aintc_intr(void *arg)
 {
+	struct ti_aintc_softc *sc = (struct ti_aintc_softc *)arg;
 	uint32_t active_irq;
 
-	if (last_irq != -1) {
-		aintc_write_4(INTC_ISR_CLEAR(last_irq >> 5),
-			1UL << (last_irq & 0x1F));
-		aintc_write_4(INTC_CONTROL,1);
-	}
-
 	/* Get the next active interrupt */
-	active_irq = aintc_read_4(INTC_SIR_IRQ);
+	active_irq = aintc_read_4(sc, INTC_SIR_IRQ);
 
 	/* Check for spurious interrupt */
 	if ((active_irq & 0xffffff80)) {
-		device_printf(ti_aintc_sc->sc_dev,
-			"Spurious interrupt detected (0x%08x)\n", active_irq);
+		device_printf(sc->sc_dev,
+		    "Spurious interrupt detected (0x%08x)\n", active_irq);
 		return -1;
 	}
 
-	if (active_irq != last_irq)
-		return active_irq;
-	else
-		return -1;
+	return active_irq;
+}
+
+static void
+ti_aintc_mask(device_t dev, int irq)
+{
+	struct ti_aintc_softc *sc = device_get_softc(dev);
+
+	aintc_write_4(sc, INTC_MIR_SET(irq >> 5), (1UL << (irq & 0x1F)));
 }
 
-void
-arm_mask_irq(uintptr_t nb)
+static void
+ti_aintc_unmask(device_t dev, int irq)
 {
-	aintc_write_4(INTC_MIR_SET(nb >> 5), (1UL << (nb & 0x1F)));
+	struct ti_aintc_softc *sc = device_get_softc(dev);
+
+	aintc_write_4(sc, INTC_MIR_CLEAR(irq >> 5), (1UL << (irq & 0x1F)));
 }
 
-void
-arm_unmask_irq(uintptr_t nb)
+static void
+ti_aintc_eoi(device_t dev, int irq)
 {
-	aintc_write_4(INTC_MIR_CLEAR(nb >> 5), (1UL << (nb & 0x1F)));
+	struct ti_aintc_softc *sc = device_get_softc(dev);
+
+	aintc_write_4(sc, INTC_ISR_CLEAR(irq >> 5),
+	    1UL << (irq & 0x1F));
+	aintc_write_4(sc, INTC_CONTROL,1);
 }
+

From owner-svn-src-user@FreeBSD.ORG  Sun Aug 19 20:30:38 2012
Return-Path: <owner-svn-src-user@FreeBSD.ORG>
Delivered-To: svn-src-user@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 3EC01106564A;
	Sun, 19 Aug 2012 20:30:38 +0000 (UTC)
	(envelope-from jceel@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 299568FC08;
	Sun, 19 Aug 2012 20:30:38 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q7JKUcMY032462;
	Sun, 19 Aug 2012 20:30:38 GMT (envelope-from jceel@svn.freebsd.org)
Received: (from jceel@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id q7JKUbN2032460;
	Sun, 19 Aug 2012 20:30:37 GMT (envelope-from jceel@svn.freebsd.org)
Message-Id: <201208192030.q7JKUbN2032460@svn.freebsd.org>
From: Jakub Wojciech Klama <jceel@FreeBSD.org>
Date: Sun, 19 Aug 2012 20:30:37 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r239405 - user/jceel/soc2012_armv6/sys/arm/arm
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
	src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 19 Aug 2012 20:30:38 -0000

Author: jceel
Date: Sun Aug 19 20:30:37 2012
New Revision: 239405
URL: http://svn.freebsd.org/changeset/base/239405

Log:
  Update arm_process_devmap() to became independent of FDT support in kernel.

Modified:
  user/jceel/soc2012_armv6/sys/arm/arm/machdep.c

Modified: user/jceel/soc2012_armv6/sys/arm/arm/machdep.c
==============================================================================
--- user/jceel/soc2012_armv6/sys/arm/arm/machdep.c	Sun Aug 19 20:28:48 2012	(r239404)
+++ user/jceel/soc2012_armv6/sys/arm/arm/machdep.c	Sun Aug 19 20:30:37 2012	(r239405)
@@ -95,8 +95,10 @@ __FBSDID("$FreeBSD$");
 #include <machine/vmparam.h>
 #include <machine/sysarch.h>
 
+#if defined(FDT)
 #include <dev/fdt/fdt_common.h>
 #include <dev/ofw/openfirm.h>
+#endif
 
 /* Define various stack sizes in pages */
 #define IRQ_STACK_SIZE	1
@@ -905,19 +907,23 @@ arm_bootstrap_pagetables(uint32_t memsiz
 static void
 arm_process_devmap(struct pmap_devmap *devmap)
 {
+#if defined(FDT)
 	struct fdt_range ranges[8];
 	struct fdt_range *rptr = ranges;
-	struct pmap_devmap *entry;
 	phandle_t node, parent;
-	vm_offset_t totalsize = 0;
 	u_long start, size;
 	int addr_cells, size_cells, par_addr_cells;
-	int nranges, i;
+	int nranges;
+#endif
+	struct pmap_devmap *entry;
+	vm_offset_t totalsize = 0;
+	int i;
 
 	edebugf("processing devmap entries\n");
 
 	for (i = 0; devmap[i].pd_name != NULL || devmap[i].pd_pa != 0; i++) {
 		entry = &devmap[i];
+#if defined(FDT)
 		if (entry->pd_name != NULL) {
 
 			edebugf("fdt %s: ", entry->pd_name);
@@ -955,6 +961,7 @@ noparent:
 			edebugf("entry: ");
 
 notfound:
+#endif
 		entry->pd_va = ARM_DEVMAP_START + totalsize;
 		totalsize += entry->pd_size;
 		eprintf("pa=0x%x va=0x%x size=0x%x\n", entry->pd_pa, entry->pd_va, entry->pd_size);
@@ -964,7 +971,6 @@ notfound:
 	arm_devmap_size = totalsize;
 }
 
-
 void *
 arm_mmu_init(uint32_t memsize, uint32_t lastaddr, int high_vectors)
 {

From owner-svn-src-user@FreeBSD.ORG  Sun Aug 19 20:31:34 2012
Return-Path: <owner-svn-src-user@FreeBSD.ORG>
Delivered-To: svn-src-user@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 554E9106566C;
	Sun, 19 Aug 2012 20:31:34 +0000 (UTC)
	(envelope-from jceel@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 36ACD8FC0C;
	Sun, 19 Aug 2012 20:31:34 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q7JKVYUc032595;
	Sun, 19 Aug 2012 20:31:34 GMT (envelope-from jceel@svn.freebsd.org)
Received: (from jceel@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id q7JKVX0H032584;
	Sun, 19 Aug 2012 20:31:33 GMT (envelope-from jceel@svn.freebsd.org)
Message-Id: <201208192031.q7JKVX0H032584@svn.freebsd.org>
From: Jakub Wojciech Klama <jceel@FreeBSD.org>
Date: Sun, 19 Aug 2012 20:31:33 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r239406 - in user/jceel/soc2012_armv6/sys/arm: at91
	econa s3c2xx0 sa11x0 xscale/i80321 xscale/ixp425 xscale/pxa
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
	src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 19 Aug 2012 20:31:34 -0000

Author: jceel
Date: Sun Aug 19 20:31:33 2012
New Revision: 239406
URL: http://svn.freebsd.org/changeset/base/239406

Log:
  Unbreak all ARM ports broken by latest arm/machdep.c changes

Modified:
  user/jceel/soc2012_armv6/sys/arm/at91/at91_machdep.c
  user/jceel/soc2012_armv6/sys/arm/at91/files.at91sam9
  user/jceel/soc2012_armv6/sys/arm/econa/econa_machdep.c
  user/jceel/soc2012_armv6/sys/arm/s3c2xx0/s3c24x0_machdep.c
  user/jceel/soc2012_armv6/sys/arm/sa11x0/assabet_machdep.c
  user/jceel/soc2012_armv6/sys/arm/xscale/i80321/ep80219_machdep.c
  user/jceel/soc2012_armv6/sys/arm/xscale/i80321/iq31244_machdep.c
  user/jceel/soc2012_armv6/sys/arm/xscale/ixp425/avila_machdep.c
  user/jceel/soc2012_armv6/sys/arm/xscale/ixp425/files.ixp425
  user/jceel/soc2012_armv6/sys/arm/xscale/pxa/pxa_machdep.c

Modified: user/jceel/soc2012_armv6/sys/arm/at91/at91_machdep.c
==============================================================================
--- user/jceel/soc2012_armv6/sys/arm/at91/at91_machdep.c	Sun Aug 19 20:30:37 2012	(r239405)
+++ user/jceel/soc2012_armv6/sys/arm/at91/at91_machdep.c	Sun Aug 19 20:31:33 2012	(r239406)
@@ -117,17 +117,14 @@ extern void *_end;
 extern int *end;
 
 /* Physical and virtual addresses for some global pages */
-
-vm_paddr_t phys_avail[10];
-vm_paddr_t dump_avail[4];
 vm_offset_t physical_pages;
 
-struct pv_addr systempage;
-struct pv_addr msgbufpv;
-struct pv_addr irqstack;
-struct pv_addr undstack;
-struct pv_addr abtstack;
-struct pv_addr kernelstack;
+extern struct pv_addr systempage;
+extern struct pv_addr msgbufpv;
+extern struct pv_addr irqstack;
+extern struct pv_addr undstack;
+extern struct pv_addr abtstack;
+extern struct pv_addr kernelstack;
 
 static void *boot_arg1;
 static void *boot_arg2;
@@ -144,6 +141,7 @@ const struct pmap_devmap at91_devmap[] =
 		 * and the timer. Other devices should use newbus to
 		 * map their memory anyway.
 		 */
+		NULL,
 		0xdff00000,
 		0xfff00000,
 		0x00100000,
@@ -166,6 +164,7 @@ const struct pmap_devmap at91_devmap[] =
 		 * on this chip select for a VA/PA mapping.
 		 */
 		/* Internal Memory 1MB  */
+		NULL,
 		AT91RM92_OHCI_BASE,
 		AT91RM92_OHCI_PA_BASE,
 		0x00100000,
@@ -174,6 +173,7 @@ const struct pmap_devmap at91_devmap[] =
 	},
 	{
 		/* CompactFlash controller. Portion of EBI CS4 1MB */
+		NULL,
 		AT91RM92_CF_BASE,
 		AT91RM92_CF_PA_BASE,
 		0x00100000,
@@ -184,6 +184,7 @@ const struct pmap_devmap at91_devmap[] =
 	 * addresses mapping is the same. */
 	{
 		/* Internal Memory 1MB  */
+		NULL,
 		AT91SAM9G20_OHCI_BASE,
 		AT91SAM9G20_OHCI_PA_BASE,
 		0x00100000,
@@ -192,13 +193,14 @@ const struct pmap_devmap at91_devmap[] =
 	},
 	{
 		/* EBI CS3 256MB */
+		NULL,
 		AT91SAM9G20_NAND_BASE,
 		AT91SAM9G20_NAND_PA_BASE,
 		AT91SAM9G20_NAND_SIZE,
 		VM_PROT_READ|VM_PROT_WRITE,
 		PTE_NOCACHE,
 	},
-	{ 0, 0, 0, 0, 0, }
+	{ NULL, 0, 0, 0, 0, 0, }
 };
 
 long

Modified: user/jceel/soc2012_armv6/sys/arm/at91/files.at91sam9
==============================================================================
--- user/jceel/soc2012_armv6/sys/arm/at91/files.at91sam9	Sun Aug 19 20:30:37 2012	(r239405)
+++ user/jceel/soc2012_armv6/sys/arm/at91/files.at91sam9	Sun Aug 19 20:31:33 2012	(r239406)
@@ -1,6 +1,7 @@
 # $FreeBSD$
 arm/arm/cpufunc_asm_arm9.S	standard
 arm/arm/irq_dispatch.S		standard
+arm/arm/intr.c			standard
 arm/at91/at91_machdep.c		standard
 arm/at91/at91.c			standard
 arm/at91/at91_mci.c		optional	at91_mci

Modified: user/jceel/soc2012_armv6/sys/arm/econa/econa_machdep.c
==============================================================================
--- user/jceel/soc2012_armv6/sys/arm/econa/econa_machdep.c	Sun Aug 19 20:30:37 2012	(r239405)
+++ user/jceel/soc2012_armv6/sys/arm/econa/econa_machdep.c	Sun Aug 19 20:31:33 2012	(r239406)
@@ -108,17 +108,14 @@ extern void *_end;
 extern int *end;
 
 /* Physical and virtual addresses for some global pages */
-
-vm_paddr_t phys_avail[10];
-vm_paddr_t dump_avail[4];
 vm_offset_t physical_pages;
 
-struct pv_addr systempage;
-struct pv_addr msgbufpv;
-struct pv_addr irqstack;
-struct pv_addr undstack;
-struct pv_addr abtstack;
-struct pv_addr kernelstack;
+extern struct pv_addr systempage;
+extern struct pv_addr msgbufpv;
+extern struct pv_addr irqstack;
+extern struct pv_addr undstack;
+extern struct pv_addr abtstack;
+extern struct pv_addr kernelstack;
 
 static void *boot_arg1;
 static void *boot_arg2;
@@ -129,6 +126,7 @@ static const struct pmap_devmap econa_de
 		/*
 		 * This maps DDR SDRAM
 		 */
+		NULL,
 		ECONA_SDRAM_BASE, /*virtual*/
 		ECONA_SDRAM_BASE, /*physical*/
 		ECONA_SDRAM_SIZE, /*size*/
@@ -144,6 +142,7 @@ static const struct pmap_devmap econa_de
 		 * This maps the interrupt controller, the UART
 		 * and the timer.
 		 */
+		NULL,
 		ECONA_IO_BASE, /*virtual*/
 		ECONA_IO_BASE, /*physical*/
 		ECONA_IO_SIZE, /*size*/
@@ -154,6 +153,7 @@ static const struct pmap_devmap econa_de
 		/*
 		 * OHCI + EHCI
 		 */
+		NULL,
 		ECONA_OHCI_VBASE, /*virtual*/
 		ECONA_OHCI_PBASE, /*physical*/
 		ECONA_USB_SIZE, /*size*/
@@ -164,6 +164,7 @@ static const struct pmap_devmap econa_de
 		/*
 		 * CFI
 		 */
+		NULL,
 		ECONA_CFI_VBASE, /*virtual*/
 		ECONA_CFI_PBASE, /*physical*/
 		ECONA_CFI_SIZE,
@@ -171,6 +172,7 @@ static const struct pmap_devmap econa_de
 		PTE_NOCACHE,
 	},
 	{
+		NULL,
 		0,
 		0,
 		0,

Modified: user/jceel/soc2012_armv6/sys/arm/s3c2xx0/s3c24x0_machdep.c
==============================================================================
--- user/jceel/soc2012_armv6/sys/arm/s3c2xx0/s3c24x0_machdep.c	Sun Aug 19 20:30:37 2012	(r239405)
+++ user/jceel/soc2012_armv6/sys/arm/s3c2xx0/s3c24x0_machdep.c	Sun Aug 19 20:31:33 2012	(r239406)
@@ -123,17 +123,14 @@ extern void *_end;
 extern int *end;
 
 /* Physical and virtual addresses for some global pages */
-
-vm_paddr_t phys_avail[10];
-vm_paddr_t dump_avail[4];
 vm_offset_t physical_pages;
 
-struct pv_addr systempage;
-struct pv_addr msgbufpv;
-struct pv_addr irqstack;
-struct pv_addr undstack;
-struct pv_addr abtstack;
-struct pv_addr kernelstack;
+extern struct pv_addr systempage;
+extern struct pv_addr msgbufpv;
+extern struct pv_addr irqstack;
+extern struct pv_addr undstack;
+extern struct pv_addr abtstack;
+extern struct pv_addr kernelstack;
 
 #define	_A(a)	((a) & ~L1_S_OFFSET)
 #define	_S(s)	(((s) + L1_S_SIZE - 1) & ~(L1_S_SIZE-1))
@@ -144,6 +141,7 @@ static const struct pmap_devmap s3c24x0_
 	 * Map the devices we need early on.
 	 */
 	{
+		NULL,
 		_A(S3C24X0_CLKMAN_BASE),
 		_A(S3C24X0_CLKMAN_PA_BASE),
 		_S(S3C24X0_CLKMAN_SIZE),
@@ -151,6 +149,7 @@ static const struct pmap_devmap s3c24x0_
 		PTE_NOCACHE,
 	},
 	{
+		NULL,
 		_A(S3C24X0_GPIO_BASE),
 		_A(S3C24X0_GPIO_PA_BASE),
 		_S(S3C2410_GPIO_SIZE),
@@ -158,6 +157,7 @@ static const struct pmap_devmap s3c24x0_
 		PTE_NOCACHE,
 	},
 	{
+		NULL,
 		_A(S3C24X0_INTCTL_BASE),
 		_A(S3C24X0_INTCTL_PA_BASE),
 		_S(S3C24X0_INTCTL_SIZE),
@@ -165,6 +165,7 @@ static const struct pmap_devmap s3c24x0_
 		PTE_NOCACHE,
 	},
 	{
+		NULL,
 		_A(S3C24X0_TIMER_BASE),
 		_A(S3C24X0_TIMER_PA_BASE),
 		_S(S3C24X0_TIMER_SIZE),
@@ -172,6 +173,7 @@ static const struct pmap_devmap s3c24x0_
 		PTE_NOCACHE,
 	},
 	{
+		NULL,
 		_A(S3C24X0_UART0_BASE),
 		_A(S3C24X0_UART0_PA_BASE),
 		_S(S3C24X0_UART_PA_BASE(3) - S3C24X0_UART0_PA_BASE),
@@ -179,6 +181,7 @@ static const struct pmap_devmap s3c24x0_
 		PTE_NOCACHE,
 	},
 	{
+		NULL,
 		_A(S3C24X0_WDT_BASE),
 		_A(S3C24X0_WDT_PA_BASE),
 		_S(S3C24X0_WDT_SIZE),
@@ -186,6 +189,7 @@ static const struct pmap_devmap s3c24x0_
 		PTE_NOCACHE,
 	},
 	{
+		NULL,
 		0,
 		0,
 		0,

Modified: user/jceel/soc2012_armv6/sys/arm/sa11x0/assabet_machdep.c
==============================================================================
--- user/jceel/soc2012_armv6/sys/arm/sa11x0/assabet_machdep.c	Sun Aug 19 20:30:37 2012	(r239405)
+++ user/jceel/soc2012_armv6/sys/arm/sa11x0/assabet_machdep.c	Sun Aug 19 20:31:33 2012	(r239406)
@@ -132,18 +132,16 @@ extern int *end;
 #endif
 /* Physical and virtual addresses for some global pages */
 
-vm_paddr_t phys_avail[10];
-vm_paddr_t dump_avail[4];
 vm_paddr_t physical_start;
 vm_paddr_t physical_end;
 vm_paddr_t physical_freestart;
 vm_offset_t physical_pages;
 
-struct pv_addr systempage;
-struct pv_addr irqstack;
-struct pv_addr undstack;
-struct pv_addr abtstack;
-struct pv_addr kernelstack;
+extern struct pv_addr systempage;
+extern struct pv_addr irqstack;
+extern struct pv_addr undstack;
+extern struct pv_addr abtstack;
+extern struct pv_addr kernelstack;
 
 /* Static device mappings. */
 static const struct pmap_devmap assabet_devmap[] = {
@@ -152,6 +150,7 @@ static const struct pmap_devmap assabet_
 	 * with the MMU on or off.
 	 */
 	{
+		NULL,
 		SACOM1_VBASE,
 		SACOM1_BASE,
 		SACOM1_SIZE,
@@ -159,6 +158,7 @@ static const struct pmap_devmap assabet_
 		PTE_NOCACHE,
 	},
 	{
+		NULL,
 		SAIPIC_BASE,
 		SAIPIC_BASE,
 		SAIPIC_SIZE,
@@ -166,6 +166,7 @@ static const struct pmap_devmap assabet_
 		PTE_NOCACHE,
 	},
 	{
+		NULL,
 		0,
 		0,
 		0,

Modified: user/jceel/soc2012_armv6/sys/arm/xscale/i80321/ep80219_machdep.c
==============================================================================
--- user/jceel/soc2012_armv6/sys/arm/xscale/i80321/ep80219_machdep.c	Sun Aug 19 20:30:37 2012	(r239405)
+++ user/jceel/soc2012_armv6/sys/arm/xscale/i80321/ep80219_machdep.c	Sun Aug 19 20:31:33 2012	(r239406)
@@ -120,17 +120,14 @@ extern void *_end;
 extern int *end;
 
 /* Physical and virtual addresses for some global pages */
-
-vm_paddr_t phys_avail[10];
-vm_paddr_t dump_avail[4];
 vm_offset_t physical_pages;
 
-struct pv_addr systempage;
-struct pv_addr msgbufpv;
-struct pv_addr irqstack;
-struct pv_addr undstack;
-struct pv_addr abtstack;
-struct pv_addr kernelstack;
+extern struct pv_addr systempage;
+extern struct pv_addr msgbufpv;
+extern struct pv_addr irqstack;
+extern struct pv_addr undstack;
+extern struct pv_addr abtstack;
+extern struct pv_addr kernelstack;
 struct pv_addr minidataclean;
 
 
@@ -144,6 +141,7 @@ static const struct pmap_devmap ep80219_
 	 * with the MMU on or off.
 	 */
 	{
+		NULL,
 		IQ80321_OBIO_BASE,
 		IQ80321_OBIO_BASE,
 		IQ80321_OBIO_SIZE,
@@ -151,6 +149,7 @@ static const struct pmap_devmap ep80219_
 		PTE_NOCACHE,
 	},
 	{
+		NULL,
 		IQ80321_IOW_VBASE,
 		VERDE_OUT_XLATE_IO_WIN0_BASE,
 		VERDE_OUT_XLATE_IO_WIN_SIZE,
@@ -158,6 +157,7 @@ static const struct pmap_devmap ep80219_
 		PTE_NOCACHE,
 	},	    
 	{
+		NULL,
 		IQ80321_80321_VBASE,
 		VERDE_PMMR_BASE,
 		VERDE_PMMR_SIZE,
@@ -165,6 +165,7 @@ static const struct pmap_devmap ep80219_
 		PTE_NOCACHE,
 	},
 	{
+		NULL,
 		0,
 		0,
 		0,

Modified: user/jceel/soc2012_armv6/sys/arm/xscale/i80321/iq31244_machdep.c
==============================================================================
--- user/jceel/soc2012_armv6/sys/arm/xscale/i80321/iq31244_machdep.c	Sun Aug 19 20:30:37 2012	(r239405)
+++ user/jceel/soc2012_armv6/sys/arm/xscale/i80321/iq31244_machdep.c	Sun Aug 19 20:31:33 2012	(r239406)
@@ -120,17 +120,14 @@ extern void *_end;
 extern int *end;
 
 /* Physical and virtual addresses for some global pages */
-
-vm_paddr_t phys_avail[10];
-vm_paddr_t dump_avail[4];
 vm_offset_t physical_pages;
 
-struct pv_addr systempage;
-struct pv_addr msgbufpv;
-struct pv_addr irqstack;
-struct pv_addr undstack;
-struct pv_addr abtstack;
-struct pv_addr kernelstack;
+extern struct pv_addr systempage;
+extern struct pv_addr msgbufpv;
+extern struct pv_addr irqstack;
+extern struct pv_addr undstack;
+extern struct pv_addr abtstack;
+extern struct pv_addr kernelstack;
 struct pv_addr minidataclean;
 
 #define IQ80321_OBIO_BASE 0xfe800000UL
@@ -142,6 +139,7 @@ static const struct pmap_devmap iq80321_
 	 * with the MMU on or off.
 	 */
 	    {
+		    NULL,
 		    IQ80321_OBIO_BASE,
 		    IQ80321_OBIO_BASE,
 		    IQ80321_OBIO_SIZE,
@@ -149,14 +147,15 @@ static const struct pmap_devmap iq80321_
 		    PTE_NOCACHE,
 	    },
 	    {
+		    NULL,
 	    	    IQ80321_IOW_VBASE,
 		    VERDE_OUT_XLATE_IO_WIN0_BASE,
 		    VERDE_OUT_XLATE_IO_WIN_SIZE,
 		    VM_PROT_READ|VM_PROT_WRITE,
 		    PTE_NOCACHE,
 	    },
-	    
 	    {
+		    NULL,
 		    IQ80321_80321_VBASE,
 		    VERDE_PMMR_BASE,
 		    VERDE_PMMR_SIZE,
@@ -164,6 +163,7 @@ static const struct pmap_devmap iq80321_
 		    PTE_NOCACHE,
 	    },
 	    {
+		    NULL,
 		    0,
 		    0,
 		    0,

Modified: user/jceel/soc2012_armv6/sys/arm/xscale/ixp425/avila_machdep.c
==============================================================================
--- user/jceel/soc2012_armv6/sys/arm/xscale/ixp425/avila_machdep.c	Sun Aug 19 20:30:37 2012	(r239405)
+++ user/jceel/soc2012_armv6/sys/arm/xscale/ixp425/avila_machdep.c	Sun Aug 19 20:31:33 2012	(r239406)
@@ -125,96 +125,94 @@ extern int *end;
 
 /* Physical and virtual addresses for some global pages */
 
-vm_paddr_t phys_avail[10];
-vm_paddr_t dump_avail[4];
 vm_offset_t physical_pages;
 
-struct pv_addr systempage;
-struct pv_addr msgbufpv;
-struct pv_addr irqstack;
-struct pv_addr undstack;
-struct pv_addr abtstack;
-struct pv_addr kernelstack;
+extern struct pv_addr systempage;
+extern struct pv_addr msgbufpv;
+extern struct pv_addr irqstack;
+extern struct pv_addr undstack;
+extern struct pv_addr abtstack;
+extern struct pv_addr kernelstack;
 struct pv_addr minidataclean;
 
 /* Static device mappings. */
 static const struct pmap_devmap ixp425_devmap[] = {
 	/* Physical/Virtual address for I/O space */
-    { IXP425_IO_VBASE, IXP425_IO_HWBASE, IXP425_IO_SIZE,
+    { NULL, IXP425_IO_VBASE, IXP425_IO_HWBASE, IXP425_IO_SIZE,
       VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE, },
 
 	/* Expansion Bus */
-    { IXP425_EXP_VBASE, IXP425_EXP_HWBASE, IXP425_EXP_SIZE,
+    { NULL, IXP425_EXP_VBASE, IXP425_EXP_HWBASE, IXP425_EXP_SIZE,
       VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE, },
 
 	/* CFI Flash on the Expansion Bus */
-    { IXP425_EXP_BUS_CS0_VBASE, IXP425_EXP_BUS_CS0_HWBASE,
+    { NULL, IXP425_EXP_BUS_CS0_VBASE, IXP425_EXP_BUS_CS0_HWBASE,
       IXP425_EXP_BUS_CS0_SIZE, VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE, },
 
 	/* IXP425 PCI Configuration */
-    { IXP425_PCI_VBASE, IXP425_PCI_HWBASE, IXP425_PCI_SIZE,
+    { NULL, IXP425_PCI_VBASE, IXP425_PCI_HWBASE, IXP425_PCI_SIZE,
       VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE, },
 
 	/* SDRAM Controller */
-    { IXP425_MCU_VBASE, IXP425_MCU_HWBASE, IXP425_MCU_SIZE,
+    { NULL, IXP425_MCU_VBASE, IXP425_MCU_HWBASE, IXP425_MCU_SIZE,
       VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE, },
 
 	/* PCI Memory Space */
-    { IXP425_PCI_MEM_VBASE, IXP425_PCI_MEM_HWBASE, IXP425_PCI_MEM_SIZE,
+    { NULL, IXP425_PCI_MEM_VBASE, IXP425_PCI_MEM_HWBASE, IXP425_PCI_MEM_SIZE,
       VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE, },
 
 	/* Q-Mgr Memory Space */
-    { IXP425_QMGR_VBASE, IXP425_QMGR_HWBASE, IXP425_QMGR_SIZE,
+    { NULL, IXP425_QMGR_VBASE, IXP425_QMGR_HWBASE, IXP425_QMGR_SIZE,
       VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE, },
 
-    { 0 },
+    { NULL, 0 },
 };
 
 /* Static device mappings. */
 static const struct pmap_devmap ixp435_devmap[] = {
 	/* Physical/Virtual address for I/O space */
-    { IXP425_IO_VBASE, IXP425_IO_HWBASE, IXP425_IO_SIZE,
+    { NULL, IXP425_IO_VBASE, IXP425_IO_HWBASE, IXP425_IO_SIZE,
       VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE, },
 
-    { IXP425_EXP_VBASE, IXP425_EXP_HWBASE, IXP425_EXP_SIZE,
+    { NULL, IXP425_EXP_VBASE, IXP425_EXP_HWBASE, IXP425_EXP_SIZE,
       VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE, },
 
 	/* IXP425 PCI Configuration */
-    { IXP425_PCI_VBASE, IXP425_PCI_HWBASE, IXP425_PCI_SIZE,
+    { NULL, IXP425_PCI_VBASE, IXP425_PCI_HWBASE, IXP425_PCI_SIZE,
       VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE, },
 
 	/* DDRII Controller NB: mapped same place as IXP425 */
-    { IXP425_MCU_VBASE, IXP435_MCU_HWBASE, IXP425_MCU_SIZE,
+    { NULL, IXP425_MCU_VBASE, IXP435_MCU_HWBASE, IXP425_MCU_SIZE,
       VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE, },
 
 	/* PCI Memory Space */
-    { IXP425_PCI_MEM_VBASE, IXP425_PCI_MEM_HWBASE, IXP425_PCI_MEM_SIZE,
+    { NULL, IXP425_PCI_MEM_VBASE, IXP425_PCI_MEM_HWBASE, IXP425_PCI_MEM_SIZE,
       VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE, },
 
 	/* Q-Mgr Memory Space */
-    { IXP425_QMGR_VBASE, IXP425_QMGR_HWBASE, IXP425_QMGR_SIZE,
+    { NULL, IXP425_QMGR_VBASE, IXP425_QMGR_HWBASE, IXP425_QMGR_SIZE,
       VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE, },
 
 	/* CFI Flash on the Expansion Bus */
-    { IXP425_EXP_BUS_CS0_VBASE, IXP425_EXP_BUS_CS0_HWBASE,
+    { NULL, IXP425_EXP_BUS_CS0_VBASE, IXP425_EXP_BUS_CS0_HWBASE,
       IXP425_EXP_BUS_CS0_SIZE, VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE, },
 
 	/* USB1 Memory Space */
-    { IXP435_USB1_VBASE, IXP435_USB1_HWBASE, IXP435_USB1_SIZE,
+    { NULL, IXP435_USB1_VBASE, IXP435_USB1_HWBASE, IXP435_USB1_SIZE,
       VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE, },
 	/* USB2 Memory Space */
-    { IXP435_USB2_VBASE, IXP435_USB2_HWBASE, IXP435_USB2_SIZE,
+    { NULL, IXP435_USB2_VBASE, IXP435_USB2_HWBASE, IXP435_USB2_SIZE,
       VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE, },
 
 	/* GPS Memory Space */
-    { CAMBRIA_GPS_VBASE, CAMBRIA_GPS_HWBASE, CAMBRIA_GPS_SIZE,
+    { NULL, CAMBRIA_GPS_VBASE, CAMBRIA_GPS_HWBASE, CAMBRIA_GPS_SIZE,
       VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE, },
 
 	/* RS485 Memory Space */
-    { CAMBRIA_RS485_VBASE, CAMBRIA_RS485_HWBASE, CAMBRIA_RS485_SIZE,
+    { NULL, CAMBRIA_RS485_VBASE, CAMBRIA_RS485_HWBASE, CAMBRIA_RS485_SIZE,
       VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE, },
 
-    { 0 }
+    { NULL, 0 }
 };
 
 extern vm_offset_t xscale_cache_clean_addr;

Modified: user/jceel/soc2012_armv6/sys/arm/xscale/ixp425/files.ixp425
==============================================================================
--- user/jceel/soc2012_armv6/sys/arm/xscale/ixp425/files.ixp425	Sun Aug 19 20:30:37 2012	(r239405)
+++ user/jceel/soc2012_armv6/sys/arm/xscale/ixp425/files.ixp425	Sun Aug 19 20:31:33 2012	(r239406)
@@ -2,6 +2,7 @@
 arm/arm/bus_space_generic.c		standard
 arm/arm/cpufunc_asm_xscale.S		standard
 arm/arm/irq_dispatch.S			standard
+arm/arm/intr.c				standard
 arm/xscale/ixp425/ixp425.c		standard
 arm/xscale/ixp425/ixp425_mem.c		standard
 arm/xscale/ixp425/ixp425_space.c	standard

Modified: user/jceel/soc2012_armv6/sys/arm/xscale/pxa/pxa_machdep.c
==============================================================================
--- user/jceel/soc2012_armv6/sys/arm/xscale/pxa/pxa_machdep.c	Sun Aug 19 20:30:37 2012	(r239405)
+++ user/jceel/soc2012_armv6/sys/arm/xscale/pxa/pxa_machdep.c	Sun Aug 19 20:31:33 2012	(r239406)
@@ -121,16 +121,16 @@ extern int *end;
 
 /* Physical and virtual addresses for some global pages */
 
-vm_paddr_t phys_avail[PXA2X0_SDRAM_BANKS * 2 + 4];
-vm_paddr_t dump_avail[PXA2X0_SDRAM_BANKS * 2 + 4];
+//vm_paddr_t phys_avail[PXA2X0_SDRAM_BANKS * 2 + 4];
+//vm_paddr_t dump_avail[PXA2X0_SDRAM_BANKS * 2 + 4];
 vm_offset_t physical_pages;
 
-struct pv_addr systempage;
-struct pv_addr msgbufpv;
-struct pv_addr irqstack;
-struct pv_addr undstack;
-struct pv_addr abtstack;
-struct pv_addr kernelstack;
+extern struct pv_addr systempage;
+extern struct pv_addr msgbufpv;
+extern struct pv_addr irqstack;
+extern struct pv_addr undstack;
+extern struct pv_addr abtstack;
+extern struct pv_addr kernelstack;
 struct pv_addr minidataclean;
 
 static void	pxa_probe_sdram(bus_space_tag_t, bus_space_handle_t,
@@ -143,13 +143,14 @@ static const struct pmap_devmap pxa_devm
 	 * up user-space.
 	 */
 	{
+		NULL,
 		PXA2X0_PERIPH_START + PXA2X0_PERIPH_OFFSET,
 		PXA2X0_PERIPH_START,
 		PXA250_PERIPH_END - PXA2X0_PERIPH_START,
 		VM_PROT_READ|VM_PROT_WRITE,
 		PTE_NOCACHE,
 	},
-	{ 0, 0, 0, 0, 0, }
+	{ NULL, 0, 0, 0, 0, 0, }
 };
 
 #define SDRAM_START 0xa0000000

From owner-svn-src-user@FreeBSD.ORG  Mon Aug 20 18:32:47 2012
Return-Path: <owner-svn-src-user@FreeBSD.ORG>
Delivered-To: svn-src-user@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 9B6FE1065672;
	Mon, 20 Aug 2012 18:32:47 +0000 (UTC)
	(envelope-from jceel@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 86DEE8FC18;
	Mon, 20 Aug 2012 18:32:47 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q7KIWl5i075815;
	Mon, 20 Aug 2012 18:32:47 GMT (envelope-from jceel@svn.freebsd.org)
Received: (from jceel@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id q7KIWlA9075813;
	Mon, 20 Aug 2012 18:32:47 GMT (envelope-from jceel@svn.freebsd.org)
Message-Id: <201208201832.q7KIWlA9075813@svn.freebsd.org>
From: Jakub Wojciech Klama <jceel@FreeBSD.org>
Date: Mon, 20 Aug 2012 18:32:47 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r239461 - user/jceel/soc2012_armv6/sys/arm/ti
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
	src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Aug 2012 18:32:47 -0000

Author: jceel
Date: Mon Aug 20 18:32:46 2012
New Revision: 239461
URL: http://svn.freebsd.org/changeset/base/239461

Log:
  Fix obvious mistake in TI aintc driver.

Modified:
  user/jceel/soc2012_armv6/sys/arm/ti/aintc.c

Modified: user/jceel/soc2012_armv6/sys/arm/ti/aintc.c
==============================================================================
--- user/jceel/soc2012_armv6/sys/arm/ti/aintc.c	Mon Aug 20 18:27:02 2012	(r239460)
+++ user/jceel/soc2012_armv6/sys/arm/ti/aintc.c	Mon Aug 20 18:32:46 2012	(r239461)
@@ -169,10 +169,11 @@ ti_aintc_intr(void *arg)
 	if ((active_irq & 0xffffff80)) {
 		device_printf(sc->sc_dev,
 		    "Spurious interrupt detected (0x%08x)\n", active_irq);
-		return -1;
+		return FILTER_HANDLED;
 	}
 
-	return active_irq;
+	arm_dispatch_irq(sc->sc_dev, NULL, active_irq);
+	return FILTER_HANDLED;
 }
 
 static void

From owner-svn-src-user@FreeBSD.ORG  Wed Aug 22 02:41:03 2012
Return-Path: <owner-svn-src-user@FreeBSD.ORG>
Delivered-To: svn-src-user@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
	by hub.freebsd.org (Postfix) with ESMTP id 6C20B1065674;
	Wed, 22 Aug 2012 02:41:03 +0000 (UTC) (envelope-from np@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 3CE508FC1F;
	Wed, 22 Aug 2012 02:41:03 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q7M2f3wl050970;
	Wed, 22 Aug 2012 02:41:03 GMT (envelope-from np@svn.freebsd.org)
Received: (from np@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id q7M2f3rQ050969;
	Wed, 22 Aug 2012 02:41:03 GMT (envelope-from np@svn.freebsd.org)
Message-Id: <201208220241.q7M2f3rQ050969@svn.freebsd.org>
From: Navdeep Parhar <np@FreeBSD.org>
Date: Wed, 22 Aug 2012 02:41:03 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r239551 - user/np/toe_iwarp
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
	src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Wed, 22 Aug 2012 02:41:03 -0000

Author: np
Date: Wed Aug 22 02:41:02 2012
New Revision: 239551
URL: http://svn.freebsd.org/changeset/base/239551

Log:
  Retire branch; these changes have made it into HEAD.

Deleted:
  user/np/toe_iwarp/

From owner-svn-src-user@FreeBSD.ORG  Wed Aug 22 03:00:57 2012
Return-Path: <owner-svn-src-user@FreeBSD.ORG>
Delivered-To: svn-src-user@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
	by hub.freebsd.org (Postfix) with ESMTP id C39E61065686;
	Wed, 22 Aug 2012 03:00:57 +0000 (UTC) (envelope-from np@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 93C278FC1A;
	Wed, 22 Aug 2012 03:00:57 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q7M30v4e053570;
	Wed, 22 Aug 2012 03:00:57 GMT (envelope-from np@svn.freebsd.org)
Received: (from np@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id q7M30v00053569;
	Wed, 22 Aug 2012 03:00:57 GMT (envelope-from np@svn.freebsd.org)
Message-Id: <201208220300.q7M30v00053569@svn.freebsd.org>
From: Navdeep Parhar <np@FreeBSD.org>
Date: Wed, 22 Aug 2012 03:00:57 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r239552 - user/np/stable_9_toe
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
	src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Wed, 22 Aug 2012 03:00:57 -0000

Author: np
Date: Wed Aug 22 03:00:57 2012
New Revision: 239552
URL: http://svn.freebsd.org/changeset/base/239552

Log:
  Backport of all TOE changes to stable/9.  The changes are mostly MFC-able
  but will be available here initially rather than in stable/9 while they
  are being tested.

Added:
     - copied from r239551, stable/9/
Directory Properties:
  user/np/stable_9_toe/   (props changed)

From owner-svn-src-user@FreeBSD.ORG  Wed Aug 22 21:15:00 2012
Return-Path: <owner-svn-src-user@FreeBSD.ORG>
Delivered-To: svn-src-user@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id C61A5106566B;
	Wed, 22 Aug 2012 21:15:00 +0000 (UTC) (envelope-from np@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id AE9E78FC24;
	Wed, 22 Aug 2012 21:15:00 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q7MLF01p098938;
	Wed, 22 Aug 2012 21:15:00 GMT (envelope-from np@svn.freebsd.org)
Received: (from np@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id q7MLF0qD098909;
	Wed, 22 Aug 2012 21:15:00 GMT (envelope-from np@svn.freebsd.org)
Message-Id: <201208222115.q7MLF0qD098909@svn.freebsd.org>
From: Navdeep Parhar <np@FreeBSD.org>
Date: Wed, 22 Aug 2012 21:15:00 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r239594 - in user/np/stable_9_toe: sbin/ifconfig
	sys/amd64/conf sys/conf sys/contrib/rdma
	sys/contrib/rdma/krping sys/dev/cxgb/ulp/tom sys/dev/cxgbe
	sys/dev/cxgbe/common sys/dev/cxgbe/f...
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
	src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Wed, 22 Aug 2012 21:15:00 -0000

Author: np
Date: Wed Aug 22 21:14:59 2012
New Revision: 239594
URL: http://svn.freebsd.org/changeset/base/239594

Log:
  Fully up-to-date backport/MFC of TOE to stable/9.  I'll promptly push any
  fixes that I make to HEAD to this workspace too.

Added:
  user/np/stable_9_toe/sys/dev/cxgbe/tom/t4_ddp.c
     - copied, changed from r239344, head/sys/dev/cxgbe/tom/t4_ddp.c
  user/np/stable_9_toe/sys/modules/toecore/
     - copied from r237263, head/sys/modules/toecore/
  user/np/stable_9_toe/sys/netinet/toecore.c
     - copied, changed from r237263, head/sys/netinet/toecore.c
  user/np/stable_9_toe/sys/netinet/toecore.h
     - copied, changed from r237263, head/sys/netinet/toecore.h
Deleted:
  user/np/stable_9_toe/sys/netinet/toedev.h
Modified:
  user/np/stable_9_toe/sbin/ifconfig/ifconfig.c
  user/np/stable_9_toe/sys/amd64/conf/GENERIC
  user/np/stable_9_toe/sys/conf/NOTES
  user/np/stable_9_toe/sys/conf/files
  user/np/stable_9_toe/sys/conf/options
  user/np/stable_9_toe/sys/contrib/rdma/krping/krping.c
  user/np/stable_9_toe/sys/contrib/rdma/krping/krping.h
  user/np/stable_9_toe/sys/contrib/rdma/krping/krping_dev.c
  user/np/stable_9_toe/sys/contrib/rdma/rdma_addr.c
  user/np/stable_9_toe/sys/contrib/rdma/rdma_cache.c
  user/np/stable_9_toe/sys/dev/cxgb/ulp/tom/cxgb_cpl_io.c
  user/np/stable_9_toe/sys/dev/cxgb/ulp/tom/cxgb_listen.c
  user/np/stable_9_toe/sys/dev/cxgb/ulp/tom/cxgb_toepcb.h
  user/np/stable_9_toe/sys/dev/cxgbe/adapter.h
  user/np/stable_9_toe/sys/dev/cxgbe/common/t4_hw.h
  user/np/stable_9_toe/sys/dev/cxgbe/common/t4_msg.h
  user/np/stable_9_toe/sys/dev/cxgbe/firmware/t4fw_cfg.txt
  user/np/stable_9_toe/sys/dev/cxgbe/offload.h
  user/np/stable_9_toe/sys/dev/cxgbe/t4_main.c
  user/np/stable_9_toe/sys/dev/cxgbe/t4_sge.c
  user/np/stable_9_toe/sys/dev/cxgbe/tom/t4_connect.c
  user/np/stable_9_toe/sys/dev/cxgbe/tom/t4_cpl_io.c
  user/np/stable_9_toe/sys/dev/cxgbe/tom/t4_listen.c
  user/np/stable_9_toe/sys/dev/cxgbe/tom/t4_tom.c
  user/np/stable_9_toe/sys/dev/cxgbe/tom/t4_tom.h
  user/np/stable_9_toe/sys/i386/conf/GENERIC
  user/np/stable_9_toe/sys/i386/conf/XEN
  user/np/stable_9_toe/sys/modules/Makefile
  user/np/stable_9_toe/sys/modules/cxgb/Makefile
  user/np/stable_9_toe/sys/modules/cxgbe/Makefile
  user/np/stable_9_toe/sys/modules/cxgbe/tom/Makefile
  user/np/stable_9_toe/sys/modules/rdma/krping/Makefile
  user/np/stable_9_toe/sys/net/if_var.h
  user/np/stable_9_toe/sys/net/if_vlan.c
  user/np/stable_9_toe/sys/netinet/if_ether.c
  user/np/stable_9_toe/sys/netinet/if_ether.h
  user/np/stable_9_toe/sys/netinet/in.c
  user/np/stable_9_toe/sys/netinet/tcp_input.c
  user/np/stable_9_toe/sys/netinet/tcp_offload.c
  user/np/stable_9_toe/sys/netinet/tcp_offload.h
  user/np/stable_9_toe/sys/netinet/tcp_output.c
  user/np/stable_9_toe/sys/netinet/tcp_subr.c
  user/np/stable_9_toe/sys/netinet/tcp_syncache.c
  user/np/stable_9_toe/sys/netinet/tcp_syncache.h
  user/np/stable_9_toe/sys/netinet/tcp_timer.c
  user/np/stable_9_toe/sys/netinet/tcp_usrreq.c
  user/np/stable_9_toe/sys/netinet/tcp_var.h
  user/np/stable_9_toe/sys/ofed/drivers/infiniband/core/cma.c
  user/np/stable_9_toe/sys/ofed/drivers/infiniband/core/iwcm.c
  user/np/stable_9_toe/sys/ofed/include/linux/net.h
  user/np/stable_9_toe/sys/ofed/include/net/netevent.h
  user/np/stable_9_toe/sys/ofed/include/rdma/iw_cm.h
  user/np/stable_9_toe/usr.bin/netstat/inet.c
  user/np/stable_9_toe/usr.bin/sockstat/sockstat.c
Directory Properties:
  user/np/stable_9_toe/sbin/ifconfig/   (props changed)
  user/np/stable_9_toe/sys/   (props changed)
  user/np/stable_9_toe/sys/conf/   (props changed)
  user/np/stable_9_toe/sys/dev/   (props changed)
  user/np/stable_9_toe/sys/modules/   (props changed)
  user/np/stable_9_toe/usr.bin/netstat/   (props changed)
  user/np/stable_9_toe/usr.bin/sockstat/   (props changed)

Modified: user/np/stable_9_toe/sbin/ifconfig/ifconfig.c
==============================================================================
--- user/np/stable_9_toe/sbin/ifconfig/ifconfig.c	Wed Aug 22 20:56:53 2012	(r239593)
+++ user/np/stable_9_toe/sbin/ifconfig/ifconfig.c	Wed Aug 22 21:14:59 2012	(r239594)
@@ -910,7 +910,7 @@ unsetifdescr(const char *val, int value,
 #define	IFCAPBITS \
 "\020\1RXCSUM\2TXCSUM\3NETCONS\4VLAN_MTU\5VLAN_HWTAGGING\6JUMBO_MTU\7POLLING" \
 "\10VLAN_HWCSUM\11TSO4\12TSO6\13LRO\14WOL_UCAST\15WOL_MCAST\16WOL_MAGIC" \
-"\21VLAN_HWFILTER\23VLAN_HWTSO\24LINKSTATE\25NETMAP" \
+"\17TOE4\20TOE6\21VLAN_HWFILTER\23VLAN_HWTSO\24LINKSTATE\25NETMAP" \
 "\26RXCSUM_IPV6\27TXCSUM_IPV6"
 
 /*
@@ -1189,6 +1189,8 @@ static struct cmd basic_cmds[] = {
 	DEF_CMD("-tso4",	-IFCAP_TSO4,	setifcap),
 	DEF_CMD("tso",		IFCAP_TSO,	setifcap),
 	DEF_CMD("-tso",		-IFCAP_TSO,	setifcap),
+	DEF_CMD("toe",		IFCAP_TOE,	setifcap),
+	DEF_CMD("-toe",		-IFCAP_TOE,	setifcap),
 	DEF_CMD("lro",		IFCAP_LRO,	setifcap),
 	DEF_CMD("-lro",		-IFCAP_LRO,	setifcap),
 	DEF_CMD("wol",		IFCAP_WOL,	setifcap),

Modified: user/np/stable_9_toe/sys/amd64/conf/GENERIC
==============================================================================
--- user/np/stable_9_toe/sys/amd64/conf/GENERIC	Wed Aug 22 20:56:53 2012	(r239593)
+++ user/np/stable_9_toe/sys/amd64/conf/GENERIC	Wed Aug 22 21:14:59 2012	(r239594)
@@ -27,6 +27,7 @@ options 	SCHED_ULE		# ULE scheduler
 options 	PREEMPTION		# Enable kernel thread preemption
 options 	INET			# InterNETworking
 options 	INET6			# IPv6 communications protocols
+options 	TCP_OFFLOAD		# TCP offload
 options 	SCTP			# Stream Control Transmission Protocol
 options 	FFS			# Berkeley Fast Filesystem
 options 	SOFTUPDATES		# Enable FFS soft updates support

Modified: user/np/stable_9_toe/sys/conf/NOTES
==============================================================================
--- user/np/stable_9_toe/sys/conf/NOTES	Wed Aug 22 20:56:53 2012	(r239593)
+++ user/np/stable_9_toe/sys/conf/NOTES	Wed Aug 22 21:14:59 2012	(r239594)
@@ -545,6 +545,8 @@ options 	INET6			#IPv6 communications pr
 
 options 	ROUTETABLES=2		# max 16. 1 is back compatible.
 
+options 	TCP_OFFLOAD		# TCP offload support.
+
 # In order to enable IPSEC you MUST also add device crypto to 
 # your kernel configuration
 options 	IPSEC			#IP security (requires device crypto)

Modified: user/np/stable_9_toe/sys/conf/files
==============================================================================
--- user/np/stable_9_toe/sys/conf/files	Wed Aug 22 20:56:53 2012	(r239593)
+++ user/np/stable_9_toe/sys/conf/files	Wed Aug 22 21:14:59 2012	(r239594)
@@ -2855,7 +2855,7 @@ netinet/tcp_hostcache.c		optional inet |
 netinet/tcp_input.c		optional inet | inet6
 netinet/tcp_lro.c		optional inet | inet6
 netinet/tcp_output.c		optional inet | inet6
-netinet/tcp_offload.c		optional inet | inet6
+netinet/tcp_offload.c		optional tcp_offload inet | tcp_offload inet6
 netinet/tcp_reass.c		optional inet | inet6
 netinet/tcp_sack.c		optional inet | inet6
 netinet/tcp_subr.c		optional inet | inet6

Modified: user/np/stable_9_toe/sys/conf/options
==============================================================================
--- user/np/stable_9_toe/sys/conf/options	Wed Aug 22 20:56:53 2012	(r239593)
+++ user/np/stable_9_toe/sys/conf/options	Wed Aug 22 21:14:59 2012	(r239594)
@@ -430,7 +430,7 @@ RADIX_MPATH		opt_mpath.h
 ROUTETABLES		opt_route.h
 SLIP_IFF_OPTS		opt_slip.h
 TCPDEBUG
-TCP_OFFLOAD_DISABLE	opt_inet.h #Disable code to dispatch tcp offloading
+TCP_OFFLOAD		opt_inet.h # Enable code to dispatch TCP offloading
 TCP_SIGNATURE		opt_inet.h
 VLAN_ARRAY		opt_vlan.h
 XBONEHACK

Modified: user/np/stable_9_toe/sys/contrib/rdma/krping/krping.c
==============================================================================
--- user/np/stable_9_toe/sys/contrib/rdma/krping/krping.c	Wed Aug 22 20:56:53 2012	(r239593)
+++ user/np/stable_9_toe/sys/contrib/rdma/krping/krping.c	Wed Aug 22 21:14:59 2012	(r239594)
@@ -41,7 +41,6 @@ __FBSDID("$FreeBSD$");
 #include <sys/systm.h>
 #include <sys/kernel.h>
 #include <sys/socket.h>
-#include <sys/module.h>
 #include <sys/endian.h>
 #include <sys/limits.h>
 #include <sys/proc.h>
@@ -53,11 +52,13 @@ __FBSDID("$FreeBSD$");
 #include <sys/queue.h>
 #include <sys/taskqueue.h>
 #include <sys/syslog.h>
+#include <netinet/in.h>
 
 #include <vm/vm.h>
 #include <vm/pmap.h>
 
-#include <contrib/rdma/rdma_cm.h>
+#include <linux/types.h>
+#include <rdma/rdma_cm.h>
 
 #include "getopt.h"
 #include "krping.h"
@@ -83,6 +84,7 @@ static const struct krping_option krping
 	{"bw", OPT_NOPARAM, 'B'},
 	{"tx-depth", OPT_INT, 't'},
   	{"poll", OPT_NOPARAM, 'P'},
+  	{"memlimit", OPT_INT, 'm'},
 	{NULL, 0, 0}
 };
 
@@ -254,10 +256,14 @@ static void krping_cq_event_handler(stru
 		ib_req_notify_cq(cb->cq, IB_CQ_NEXT_COMP);
 	while ((ret = ib_poll_cq(cb->cq, 1, &wc)) == 1) {
 		if (wc.status) {
-			if (wc.status != IB_WC_WR_FLUSH_ERR)
-				log(LOG_ERR, "cq completion failed status %d\n",
+			if (wc.status == IB_WC_WR_FLUSH_ERR) {
+				DEBUG_LOG("cq flushed\n");
+				continue;
+			} else {
+				log(LOG_CRIT, "cq completion failed status %d\n",
 					wc.status);
-			goto error;
+				goto error;
+			}
 		}
 
 		switch (wc.opcode) {
@@ -432,8 +438,17 @@ static int krping_setup_buffers(struct k
 		}
 	}
 
-	cb->rdma_buf = contigmalloc(cb->size, M_DEVBUF, M_WAITOK, 0, -1UL,
-		PAGE_SIZE, 0);
+	/* RNIC adapters have a limit upto which it can register physical memory
+	 * If DMA-MR memory mode is set then normally driver registers maximum
+	 * supported memory. After that if contigmalloc allocates memory beyond the
+	 * specified RNIC limit then Krping may not work.
+	 */
+	if (cb->use_dmamr && cb->memlimit)
+		cb->rdma_buf = contigmalloc(cb->size, M_DEVBUF, M_WAITOK, 0, cb->memlimit,
+					    PAGE_SIZE, 0);
+	else 
+		cb->rdma_buf = contigmalloc(cb->size, M_DEVBUF, M_WAITOK, 0, -1UL,
+					    PAGE_SIZE, 0);
 
 	if (!cb->rdma_buf) {
 		log(LOG_ERR, "rdma_buf malloc failed\n");
@@ -458,8 +473,12 @@ static int krping_setup_buffers(struct k
 	}
 
 	if (!cb->server || cb->wlat || cb->rlat || cb->bw) {
-		cb->start_buf = contigmalloc(cb->size, M_DEVBUF, M_WAITOK,
-			0, -1UL, PAGE_SIZE, 0);
+		if (cb->use_dmamr && cb->memlimit)
+			cb->start_buf = contigmalloc(cb->size, M_DEVBUF, M_WAITOK,
+						     0, cb->memlimit, PAGE_SIZE, 0);
+		else
+			cb->start_buf = contigmalloc(cb->size, M_DEVBUF, M_WAITOK,
+						     0, -1UL, PAGE_SIZE, 0);
 		if (!cb->start_buf) {
 			log(LOG_ERR, "start_buf malloc failed\n");
 			ret = ENOMEM;
@@ -1636,6 +1655,8 @@ int krping_doit(char *cmd)
 	cb->state = IDLE;
 	cb->size = 64;
 	cb->txdepth = RPING_SQ_DEPTH;
+	cb->use_dmamr = 1;
+	cb->memlimit = 0;
 	mtx_init(&cb->lock, "krping mtx", NULL, MTX_DUPOK|MTX_DEF);
 
 	while ((op = krping_getopt("krping", &cmd, krping_opts, NULL, &optarg,
@@ -1713,6 +1734,15 @@ int krping_doit(char *cmd)
 		case 'd':
 			debug++;
 			break;
+		case 'm':
+                        cb->memlimit = optint;
+                        if (cb->memlimit < 1) {
+                                log(LOG_ERR, "Invalid memory limit %ju\n",
+				    cb->memlimit);
+                                ret = EINVAL;
+                        } else
+                                DEBUG_LOG(PFX "memory limit %d\n", (int)optint);
+                        break;
 		default:
 			log(LOG_ERR, "unknown opt %s\n", optarg);
 			ret = EINVAL;

Modified: user/np/stable_9_toe/sys/contrib/rdma/krping/krping.h
==============================================================================
--- user/np/stable_9_toe/sys/contrib/rdma/krping/krping.h	Wed Aug 22 20:56:53 2012	(r239593)
+++ user/np/stable_9_toe/sys/contrib/rdma/krping/krping.h	Wed Aug 22 21:14:59 2012	(r239594)
@@ -1,7 +1,7 @@
 /*
  * $FreeBSD$
  */
-#include <contrib/rdma/ib_verbs.h>
+#include <rdma/ib_verbs.h>
 #include <netinet/in.h>
 
 /*
@@ -92,6 +92,8 @@ struct krping_cb {
 	int count;			/* ping count */
 	int size;			/* ping data size */
 	int validate;			/* validate ping data */
+	uint64_t memlimit;		/* limit of the physical memory that
+					   can be registered with dma_mr mode */
 
 	/* CM stuff */
 	struct rdma_cm_id *cm_id;	/* connection on client side,*/

Modified: user/np/stable_9_toe/sys/contrib/rdma/krping/krping_dev.c
==============================================================================
--- user/np/stable_9_toe/sys/contrib/rdma/krping/krping_dev.c	Wed Aug 22 20:56:53 2012	(r239593)
+++ user/np/stable_9_toe/sys/contrib/rdma/krping/krping_dev.c	Wed Aug 22 21:14:59 2012	(r239594)
@@ -14,7 +14,6 @@
 __FBSDID("$FreeBSD$");
 
 #include <sys/types.h>
-#include <sys/module.h>
 #include <sys/systm.h>  /* uprintf */
 #include <sys/errno.h>
 #include <sys/param.h>  /* defines used in kernel.h */
@@ -51,6 +50,9 @@ typedef struct s_krping {
 /* vars */
 static struct cdev *krping_dev;
 
+#undef MODULE_VERSION
+#include <sys/module.h>
+
 static int
 krping_loader(struct module *m, int what, void *arg)
 {
@@ -175,6 +177,4 @@ krping_write(struct cdev *dev, struct ui
 	return(err);
 }
 
-MODULE_DEPEND(krping, rdma_core, 1, 1, 1);
-MODULE_DEPEND(krping, rdma_cma, 1, 1, 1);
 DEV_MODULE(krping,krping_loader,NULL);

Modified: user/np/stable_9_toe/sys/contrib/rdma/rdma_addr.c
==============================================================================
--- user/np/stable_9_toe/sys/contrib/rdma/rdma_addr.c	Wed Aug 22 20:56:53 2012	(r239593)
+++ user/np/stable_9_toe/sys/contrib/rdma/rdma_addr.c	Wed Aug 22 21:14:59 2012	(r239594)
@@ -117,7 +117,8 @@ int rdma_copy_addr(struct rdma_dev_addr 
 		     const unsigned char *dst_dev_addr)
 {
 	dev_addr->dev_type = RDMA_NODE_RNIC;
-	memcpy(dev_addr->src_dev_addr, IF_LLADDR(dev), MAX_ADDR_LEN);
+	memset(dev_addr->src_dev_addr, 0, MAX_ADDR_LEN);
+	memcpy(dev_addr->src_dev_addr, IF_LLADDR(dev), dev->if_addrlen);
 	memcpy(dev_addr->broadcast, dev->if_broadcastaddr, MAX_ADDR_LEN);
 	if (dst_dev_addr)
 		memcpy(dev_addr->dst_dev_addr, dst_dev_addr, MAX_ADDR_LEN);
@@ -207,7 +208,7 @@ static int addr_resolve_remote(struct so
 		goto put;
 	}
  	ret = arpresolve(iproute.ro_rt->rt_ifp, iproute.ro_rt, NULL, 
-		rt_key(iproute.ro_rt), dmac, &lle);
+		(struct sockaddr *)dst_in, dmac, &lle);
 	if (ret) {
 		goto put;
 	}

Modified: user/np/stable_9_toe/sys/contrib/rdma/rdma_cache.c
==============================================================================
--- user/np/stable_9_toe/sys/contrib/rdma/rdma_cache.c	Wed Aug 22 20:56:53 2012	(r239593)
+++ user/np/stable_9_toe/sys/contrib/rdma/rdma_cache.c	Wed Aug 22 21:14:59 2012	(r239594)
@@ -132,7 +132,7 @@ int ib_find_cached_gid(struct ib_device 
 	for (p = 0; p <= end_port(device) - start_port(device); ++p) {
 		cache = device->cache.gid_cache[p];
 		for (i = 0; i < cache->table_len; ++i) {
-			if (!memcmp(gid, &cache->table[i], 6)) { /* XXX */
+			if (!memcmp(gid, &cache->table[i], sizeof *gid)) {
 				*port_num = p + start_port(device);
 				if (index)
 					*index = i;

Modified: user/np/stable_9_toe/sys/dev/cxgb/ulp/tom/cxgb_cpl_io.c
==============================================================================
--- user/np/stable_9_toe/sys/dev/cxgb/ulp/tom/cxgb_cpl_io.c	Wed Aug 22 20:56:53 2012	(r239593)
+++ user/np/stable_9_toe/sys/dev/cxgb/ulp/tom/cxgb_cpl_io.c	Wed Aug 22 21:14:59 2012	(r239594)
@@ -880,10 +880,10 @@ act_open_rpl_status_to_errno(int status)
 	case CPL_ERR_CONN_TIMEDOUT:
 		return (ETIMEDOUT);
 	case CPL_ERR_TCAM_FULL:
-		return (ENOMEM);
+		return (EAGAIN);
 	case CPL_ERR_CONN_EXIST:
 		log(LOG_ERR, "ACTIVE_OPEN_RPL: 4-tuple in use\n");
-		return (EADDRINUSE);
+		return (EAGAIN);
 	default:
 		return (EIO);
 	}
@@ -912,8 +912,7 @@ do_act_open_rpl(struct sge_qset *qs, str
 	unsigned int atid = G_TID(ntohl(rpl->atid));
 	struct toepcb *toep = lookup_atid(&td->tid_maps, atid);
 	struct inpcb *inp = toep->tp_inp;
-	struct tcpcb *tp = intotcpcb(inp);
-	int s = rpl->status;
+	int s = rpl->status, rc;
 
 	CTR3(KTR_CXGB, "%s: atid %u, status %u ", __func__, atid, s);
 
@@ -923,17 +922,14 @@ do_act_open_rpl(struct sge_qset *qs, str
 	if (act_open_has_tid(s))
 		queue_tid_release(tod, GET_TID(rpl));
 
-	if (s == CPL_ERR_TCAM_FULL || s == CPL_ERR_CONN_EXIST) {
-		INP_WLOCK(inp);
-		toe_connect_failed(tod, tp, EAGAIN);
-		toepcb_release(toep);	/* unlocks inp */
-	} else {
+	rc = act_open_rpl_status_to_errno(s);
+	if (rc != EAGAIN)
 		INP_INFO_WLOCK(&V_tcbinfo);
-		INP_WLOCK(inp);
-		toe_connect_failed(tod, tp, act_open_rpl_status_to_errno(s));
-		toepcb_release(toep);	/* unlocks inp */
+	INP_WLOCK(inp);
+	toe_connect_failed(tod, inp, rc);
+	toepcb_release(toep);	/* unlocks inp */
+	if (rc != EAGAIN)
 		INP_INFO_WUNLOCK(&V_tcbinfo);
-	}
 
 	m_freem(m);
 	return (0);

Modified: user/np/stable_9_toe/sys/dev/cxgb/ulp/tom/cxgb_listen.c
==============================================================================
--- user/np/stable_9_toe/sys/dev/cxgb/ulp/tom/cxgb_listen.c	Wed Aug 22 20:56:53 2012	(r239593)
+++ user/np/stable_9_toe/sys/dev/cxgb/ulp/tom/cxgb_listen.c	Wed Aug 22 21:14:59 2012	(r239594)
@@ -41,6 +41,7 @@ __FBSDID("$FreeBSD$");
 #include <netinet/ip.h>
 #include <netinet/in_pcb.h>
 #include <netinet/in_var.h>
+#include <netinet/tcp_timer.h>
 #include <netinet/tcp_var.h>
 #define TCPSTATES
 #include <netinet/tcp_fsm.h>
@@ -759,6 +760,15 @@ reset:
 		goto reset;
 	}
 
+	if (__predict_false(!(synqe->flags & TP_SYNQE_EXPANDED))) {
+		struct inpcb *new_inp = sotoinpcb(so);
+
+		INP_WLOCK(new_inp);
+		tcp_timer_activate(intotcpcb(new_inp), TT_KEEP, 0);
+		t3_offload_socket(tod, synqe, so);
+		INP_WUNLOCK(new_inp);
+	}
+
 	/* Remove the synq entry and release its reference on the lctx */
 	TAILQ_REMOVE(&lctx->synq, synqe, link);
 	inp = release_lctx(td, lctx);
@@ -1136,5 +1146,6 @@ t3_offload_socket(struct toedev *tod, vo
 	offload_socket(so, toep);
 	make_established(so, cpl->snd_isn, cpl->rcv_isn, cpl->tcp_opt);
 	update_tid(td, toep, synqe->tid);
+	synqe->flags |= TP_SYNQE_EXPANDED;
 }
 #endif

Modified: user/np/stable_9_toe/sys/dev/cxgb/ulp/tom/cxgb_toepcb.h
==============================================================================
--- user/np/stable_9_toe/sys/dev/cxgb/ulp/tom/cxgb_toepcb.h	Wed Aug 22 20:56:53 2012	(r239593)
+++ user/np/stable_9_toe/sys/dev/cxgb/ulp/tom/cxgb_toepcb.h	Wed Aug 22 21:14:59 2012	(r239594)
@@ -44,6 +44,7 @@
 #define TP_IS_A_SYNQ_ENTRY	(1 << 9)
 #define TP_ABORT_RPL_SENT	(1 << 10)
 #define TP_SEND_FIN          	(1 << 11)
+#define TP_SYNQE_EXPANDED	(1 << 12)
 
 struct toepcb {
 	TAILQ_ENTRY(toepcb) link; /* toep_list */

Modified: user/np/stable_9_toe/sys/dev/cxgbe/adapter.h
==============================================================================
--- user/np/stable_9_toe/sys/dev/cxgbe/adapter.h	Wed Aug 22 20:56:53 2012	(r239593)
+++ user/np/stable_9_toe/sys/dev/cxgbe/adapter.h	Wed Aug 22 21:14:59 2012	(r239594)
@@ -135,6 +135,7 @@ enum {
 #else
 	FL_BUF_SIZES = 3,	/* cluster, jumbo9k, jumbo16k */
 #endif
+	OFLD_BUF_SIZE = MJUM16BYTES,	/* size of fl buffer for TOE rxq */
 
 	CTRL_EQ_QSIZE = 128,
 
@@ -143,6 +144,12 @@ enum {
 	TX_WR_FLITS = SGE_MAX_WR_LEN / 8
 };
 
+#ifdef T4_PKT_TIMESTAMP
+#define RX_COPY_THRESHOLD (MINCLSIZE - 8)
+#else
+#define RX_COPY_THRESHOLD MINCLSIZE
+#endif
+
 enum {
 	/* adapter intr_type */
 	INTR_INTX	= (1 << 0),
@@ -510,6 +517,7 @@ struct rss_header;
 typedef int (*cpl_handler_t)(struct sge_iq *, const struct rss_header *,
     struct mbuf *);
 typedef int (*an_handler_t)(struct sge_iq *, const struct rsp_ctrl *);
+typedef int (*fw_msg_handler_t)(struct adapter *, const __be64 *);
 
 struct adapter {
 	SLIST_ENTRY(adapter) link;
@@ -582,7 +590,8 @@ struct adapter {
 	struct callout sfl_callout;
 
 	an_handler_t an_handler __aligned(CACHE_LINE_SIZE);
-	cpl_handler_t cpl_handler[256];
+	fw_msg_handler_t fw_msg_handler[4];	/* NUM_FW6_TYPES */
+	cpl_handler_t cpl_handler[0xef];	/* NUM_CPL_CMDS */
 };
 
 #define ADAPTER_LOCK(sc)		mtx_lock(&(sc)->sc_lock)
@@ -741,6 +750,8 @@ void t4_os_link_changed(struct adapter *
 void t4_iterate(void (*)(struct adapter *, void *), void *);
 int t4_register_cpl_handler(struct adapter *, int, cpl_handler_t);
 int t4_register_an_handler(struct adapter *, an_handler_t);
+int t4_register_fw_msg_handler(struct adapter *, int, fw_msg_handler_t);
+int t4_filter_rpl(struct sge_iq *, const struct rss_header *, struct mbuf *);
 
 /* t4_sge.c */
 void t4_sge_modload(void);

Modified: user/np/stable_9_toe/sys/dev/cxgbe/common/t4_hw.h
==============================================================================
--- user/np/stable_9_toe/sys/dev/cxgbe/common/t4_hw.h	Wed Aug 22 20:56:53 2012	(r239593)
+++ user/np/stable_9_toe/sys/dev/cxgbe/common/t4_hw.h	Wed Aug 22 21:14:59 2012	(r239594)
@@ -161,10 +161,12 @@ struct pagepod {
 #define S_PPOD_TAG    6
 #define M_PPOD_TAG    0xFFFFFF
 #define V_PPOD_TAG(x) ((x) << S_PPOD_TAG)
+#define G_PPOD_TAG(x) (((x) >> S_PPOD_TAG) & M_PPOD_TAG)
 
 #define S_PPOD_PGSZ    30
 #define M_PPOD_PGSZ    0x3
 #define V_PPOD_PGSZ(x) ((x) << S_PPOD_PGSZ)
+#define G_PPOD_PGSZ(x) (((x) >> S_PPOD_PGSZ) & M_PPOD_PGSZ)
 
 #define S_PPOD_TID    32
 #define M_PPOD_TID    0xFFFFFF

Modified: user/np/stable_9_toe/sys/dev/cxgbe/common/t4_msg.h
==============================================================================
--- user/np/stable_9_toe/sys/dev/cxgbe/common/t4_msg.h	Wed Aug 22 20:56:53 2012	(r239593)
+++ user/np/stable_9_toe/sys/dev/cxgbe/common/t4_msg.h	Wed Aug 22 21:14:59 2012	(r239594)
@@ -792,6 +792,14 @@ struct cpl_set_tcb_field {
 	__be64 val;
 };
 
+struct cpl_set_tcb_field_core {
+	union opcode_tid ot;
+	__be16 reply_ctrl;
+	__be16 word_cookie;
+	__be64 mask;
+	__be64 val;
+};
+
 /* cpl_set_tcb_field.word_cookie fields */
 #define S_WORD    0
 #define M_WORD    0x1F
@@ -1376,6 +1384,11 @@ struct cpl_rx_data_ack {
 	__be32 credit_dack;
 };
 
+struct cpl_rx_data_ack_core {
+	union opcode_tid ot;
+	__be32 credit_dack;
+};
+
 /* cpl_rx_data_ack.ack_seq fields */
 #define S_RX_CREDITS    0
 #define M_RX_CREDITS    0x3FFFFFF
@@ -2281,6 +2294,8 @@ enum {
 	FW6_TYPE_WR_RPL = 1,
 	FW6_TYPE_CQE = 2,
 	FW6_TYPE_OFLD_CONNECTION_WR_RPL = 3,
+
+	NUM_FW6_TYPES
 };
 
 struct cpl_fw6_msg_ofld_connection_wr_rpl {

Modified: user/np/stable_9_toe/sys/dev/cxgbe/firmware/t4fw_cfg.txt
==============================================================================
--- user/np/stable_9_toe/sys/dev/cxgbe/firmware/t4fw_cfg.txt	Wed Aug 22 20:56:53 2012	(r239593)
+++ user/np/stable_9_toe/sys/dev/cxgbe/firmware/t4fw_cfg.txt	Wed Aug 22 21:14:59 2012	(r239594)
@@ -20,7 +20,7 @@
 	filterMode = fragmentation, mpshittype, protocol, vlan, port, fcoe
 
 	# TP rx and tx payload memory (% of the total EDRAM + DDR3).
-	tp_pmrx = 40
+	tp_pmrx = 38
 	tp_pmtx = 60
 	tp_pmrx_pagesize = 64K
 	tp_pmtx_pagesize = 64K
@@ -67,7 +67,8 @@
 	# driver will mask off features it won't use
 	protocol = ofld
 
-	tp_l2t = 100
+	tp_l2t = 4096
+	tp_ddp = 2
 
 	# TCAM has 8K cells; each region must start at a multiple of 128 cell.
 	# Each entry in these categories takes 4 cells each.  nhash will use the
@@ -136,7 +137,7 @@
 
 [fini]
 	version = 0x1
-	checksum = 0xdb5813f9
+	checksum = 0x162df193
 #
 # $FreeBSD$
 #

Modified: user/np/stable_9_toe/sys/dev/cxgbe/offload.h
==============================================================================
--- user/np/stable_9_toe/sys/dev/cxgbe/offload.h	Wed Aug 22 20:56:53 2012	(r239593)
+++ user/np/stable_9_toe/sys/dev/cxgbe/offload.h	Wed Aug 22 21:14:59 2012	(r239594)
@@ -31,13 +31,16 @@
 #ifndef __T4_OFFLOAD_H__
 #define __T4_OFFLOAD_H__
 
-#define INIT_ULPTX_WR(w, wrlen, atomic, tid) do { \
-	(w)->wr.wr_hi = htonl(V_FW_WR_OP(FW_ULPTX_WR) | V_FW_WR_ATOMIC(atomic)); \
-	(w)->wr.wr_mid = htonl(V_FW_WR_LEN16(DIV_ROUND_UP(wrlen, 16)) | \
+#define INIT_ULPTX_WRH(w, wrlen, atomic, tid) do { \
+	(w)->wr_hi = htonl(V_FW_WR_OP(FW_ULPTX_WR) | V_FW_WR_ATOMIC(atomic)); \
+	(w)->wr_mid = htonl(V_FW_WR_LEN16(DIV_ROUND_UP(wrlen, 16)) | \
 			       V_FW_WR_FLOWID(tid)); \
-	(w)->wr.wr_lo = cpu_to_be64(0); \
+	(w)->wr_lo = cpu_to_be64(0); \
 } while (0)
 
+#define INIT_ULPTX_WR(w, wrlen, atomic, tid) \
+    INIT_ULPTX_WRH(&((w)->wr), wrlen, atomic, tid)
+
 #define INIT_TP_WR(w, tid) do { \
 	(w)->wr.wr_hi = htonl(V_FW_WR_OP(FW_TP_WR) | \
                               V_FW_WR_IMMDLEN(sizeof(*w) - sizeof(w->wr))); \

Modified: user/np/stable_9_toe/sys/dev/cxgbe/t4_main.c
==============================================================================
--- user/np/stable_9_toe/sys/dev/cxgbe/t4_main.c	Wed Aug 22 20:56:53 2012	(r239593)
+++ user/np/stable_9_toe/sys/dev/cxgbe/t4_main.c	Wed Aug 22 21:14:59 2012	(r239594)
@@ -306,6 +306,7 @@ static void cxgbe_vlan_config(void *, st
 static int cpl_not_handled(struct sge_iq *, const struct rss_header *,
     struct mbuf *);
 static int an_not_handled(struct sge_iq *, const struct rsp_ctrl *);
+static int fw_msg_not_handled(struct adapter *, const __be64 *);
 static int t4_sysctls(struct adapter *);
 static int cxgbe_sysctls(struct port_info *);
 static int sysctl_int_array(SYSCTL_HANDLER_ARGS);
@@ -345,8 +346,6 @@ static int del_filter(struct adapter *, 
 static void clear_filter(struct filter_entry *);
 static int set_filter_wr(struct adapter *, int);
 static int del_filter_wr(struct adapter *, int);
-static int filter_rpl(struct sge_iq *, const struct rss_header *,
-    struct mbuf *);
 static int get_sge_context(struct adapter *, struct t4_sge_context *);
 static int read_card_mem(struct adapter *, struct t4_mem_range *);
 #ifdef TCP_OFFLOAD
@@ -381,6 +380,10 @@ CTASSERT(offsetof(struct sge_ofld_rxq, i
 CTASSERT(offsetof(struct sge_ofld_rxq, fl) == offsetof(struct sge_rxq, fl));
 #endif
 
+/* No easy way to include t4_msg.h before adapter.h so we check this way */
+CTASSERT(ARRAY_SIZE(((struct adapter *)0)->cpl_handler) == NUM_CPL_CMDS);
+CTASSERT(ARRAY_SIZE(((struct adapter *)0)->fw_msg_handler) == NUM_FW6_TYPES);
+
 static int
 t4_probe(device_t dev)
 {
@@ -458,7 +461,9 @@ t4_attach(device_t dev)
 	sc->an_handler = an_not_handled;
 	for (i = 0; i < ARRAY_SIZE(sc->cpl_handler); i++)
 		sc->cpl_handler[i] = cpl_not_handled;
-	t4_register_cpl_handler(sc, CPL_SET_TCB_RPL, filter_rpl);
+	for (i = 0; i < ARRAY_SIZE(sc->fw_msg_handler); i++)
+		sc->fw_msg_handler[i] = fw_msg_not_handled;
+	t4_register_cpl_handler(sc, CPL_SET_TCB_RPL, t4_filter_rpl);
 
 	/* Prepare the adapter for operation */
 	rc = -t4_prep_adapter(sc);
@@ -510,18 +515,24 @@ t4_attach(device_t dev)
 		goto done; /* error message displayed already */
 
 	if (sc->flags & MASTER_PF) {
+		uint16_t indsz = min(RX_COPY_THRESHOLD - 1, M_INDICATESIZE);
 
 		/* final tweaks to some settings */
 
 		t4_load_mtus(sc, sc->params.mtus, sc->params.a_wnd,
 		    sc->params.b_wnd);
-		t4_write_reg(sc, A_ULP_RX_TDDP_PSZ, V_HPZ0(PAGE_SHIFT - 12));
+		/* 4K, 16K, 64K, 256K DDP "page sizes" */
+		t4_write_reg(sc, A_ULP_RX_TDDP_PSZ, V_HPZ0(0) | V_HPZ1(2) |
+		    V_HPZ2(4) | V_HPZ3(6));
+		t4_set_reg_field(sc, A_ULP_RX_CTL, F_TDDPTAGTCB, F_TDDPTAGTCB);
 		t4_set_reg_field(sc, A_TP_PARA_REG3, F_TUNNELCNGDROP0 |
-		    F_TUNNELCNGDROP1 | F_TUNNELCNGDROP2 | F_TUNNELCNGDROP3, 0);
+		    F_TUNNELCNGDROP1 | F_TUNNELCNGDROP2 | F_TUNNELCNGDROP3,
+		    F_TUNNELCNGDROP0 | F_TUNNELCNGDROP1 | F_TUNNELCNGDROP2 |
+		    F_TUNNELCNGDROP3);
 		t4_set_reg_field(sc, A_TP_PARA_REG5,
 		    V_INDICATESIZE(M_INDICATESIZE) |
 		    F_REARMDDPOFFSET | F_RESETDDPOFFSET,
-		    V_INDICATESIZE(M_INDICATESIZE) |
+		    V_INDICATESIZE(indsz) |
 		    F_REARMDDPOFFSET | F_RESETDDPOFFSET);
 	} else {
 		/*
@@ -2942,7 +2953,8 @@ cxgbe_tick(void *arg)
 	ifp->if_omcasts = s->tx_mcast_frames - s->tx_pause;
 	ifp->if_imcasts = s->rx_mcast_frames - s->rx_pause;
 	ifp->if_iqdrops = s->rx_ovflow0 + s->rx_ovflow1 + s->rx_ovflow2 +
-	    s->rx_ovflow3;
+	    s->rx_ovflow3 + s->rx_trunc0 + s->rx_trunc1 + s->rx_trunc2 +
+	    s->rx_trunc3;
 
 	drops = s->tx_drop;
 	for_each_txq(pi, i, txq)
@@ -2977,7 +2989,7 @@ cpl_not_handled(struct sge_iq *iq, const
 	panic("%s: opcode 0x%02x on iq %p with payload %p",
 	    __func__, rss->opcode, iq, m);
 #else
-	log(LOG_ERR, "%s: opcode 0x%02x on iq %p with payload %p",
+	log(LOG_ERR, "%s: opcode 0x%02x on iq %p with payload %p\n",
 	    __func__, rss->opcode, iq, m);
 	m_freem(m);
 #endif
@@ -3006,7 +3018,7 @@ an_not_handled(struct sge_iq *iq, const 
 #ifdef INVARIANTS
 	panic("%s: async notification on iq %p (ctrl %p)", __func__, iq, ctrl);
 #else
-	log(LOG_ERR, "%s: async notification on iq %p (ctrl %p)",
+	log(LOG_ERR, "%s: async notification on iq %p (ctrl %p)\n",
 	    __func__, iq, ctrl);
 #endif
 	return (EDOOFUS);
@@ -3025,6 +3037,35 @@ t4_register_an_handler(struct adapter *s
 }
 
 static int
+fw_msg_not_handled(struct adapter *sc, const __be64 *rpl)
+{
+	__be64 *r = __DECONST(__be64 *, rpl);
+	struct cpl_fw6_msg *cpl = member2struct(cpl_fw6_msg, data, r);
+
+#ifdef INVARIANTS
+	panic("%s: fw_msg type %d", __func__, cpl->type);
+#else
+	log(LOG_ERR, "%s: fw_msg type %d\n", __func__, cpl->type);
+#endif
+	return (EDOOFUS);
+}
+
+int
+t4_register_fw_msg_handler(struct adapter *sc, int type, fw_msg_handler_t h)
+{
+	uintptr_t *loc, new;
+
+	if (type >= ARRAY_SIZE(sc->fw_msg_handler))
+		return (EINVAL);
+
+	new = h ? (uintptr_t)h : (uintptr_t)fw_msg_not_handled;
+	loc = (uintptr_t *) &sc->fw_msg_handler[type];
+	atomic_store_rel_ptr(loc, new);
+
+	return (0);
+}
+
+static int
 t4_sysctls(struct adapter *sc)
 {
 	struct sysctl_ctx_list *ctx;
@@ -3191,10 +3232,13 @@ t4_sysctls(struct adapter *sc)
 		sc->tt.ddp = 0;
 		SYSCTL_ADD_INT(ctx, children, OID_AUTO, "ddp", CTLFLAG_RW,
 		    &sc->tt.ddp, 0, "DDP allowed");
-		sc->tt.indsz = M_INDICATESIZE;
+
+		sc->tt.indsz = G_INDICATESIZE(t4_read_reg(sc, A_TP_PARA_REG5));
 		SYSCTL_ADD_INT(ctx, children, OID_AUTO, "indsz", CTLFLAG_RW,
 		    &sc->tt.indsz, 0, "DDP max indicate size allowed");
-		sc->tt.ddp_thres = 3*4096;
+
+		sc->tt.ddp_thres =
+		    G_RXCOALESCESIZE(t4_read_reg(sc, A_TP_PARA_REG2));
 		SYSCTL_ADD_INT(ctx, children, OID_AUTO, "ddp_thres", CTLFLAG_RW,
 		    &sc->tt.ddp_thres, 0, "DDP threshold");
 	}
@@ -4961,8 +5005,8 @@ del_filter_wr(struct adapter *sc, int fi
 	return (0);
 }
 
-static int
-filter_rpl(struct sge_iq *iq, const struct rss_header *rss, struct mbuf *m)
+int
+t4_filter_rpl(struct sge_iq *iq, const struct rss_header *rss, struct mbuf *m)
 {
 	struct adapter *sc = iq->adapter;
 	const struct cpl_set_tcb_rpl *rpl = (const void *)(rss + 1);

Modified: user/np/stable_9_toe/sys/dev/cxgbe/t4_sge.c
==============================================================================
--- user/np/stable_9_toe/sys/dev/cxgbe/t4_sge.c	Wed Aug 22 20:56:53 2012	(r239593)
+++ user/np/stable_9_toe/sys/dev/cxgbe/t4_sge.c	Wed Aug 22 21:14:59 2012	(r239594)
@@ -68,12 +68,37 @@ static struct fl_buf_info fl_buf_info[FL
 #define FL_BUF_TYPE(x)	(fl_buf_info[x].type)
 #define FL_BUF_ZONE(x)	(fl_buf_info[x].zone)
 
-enum {
-	FL_PKTSHIFT = 2
-};
+/*
+ * Ethernet frames are DMA'd at this byte offset into the freelist buffer.
+ * 0-7 are valid values.
+ */
+static int fl_pktshift = 2;
+TUNABLE_INT("hw.cxgbe.fl_pktshift", &fl_pktshift);
 
-static int fl_pad = CACHE_LINE_SIZE;
-static int spg_len = 64;
+/*
+ * Pad ethernet payload up to this boundary.
+ * -1: driver should figure out a good value.
+ *  Any power of 2, from 32 to 4096 (both inclusive) is a valid value.
+ */
+static int fl_pad = -1;
+TUNABLE_INT("hw.cxgbe.fl_pad", &fl_pad);
+
+/*
+ * Status page length.
+ * -1: driver should figure out a good value.
+ *  64 or 128 are the only other valid values.
+ */
+static int spg_len = -1;
+TUNABLE_INT("hw.cxgbe.spg_len", &spg_len);
+
+/*
+ * Congestion drops.
+ * -1: no congestion feedback (not recommended).
+ *  0: backpressure the channel instead of dropping packets right away.
+ *  1: no backpressure, drop packets for the congested queue immediately.
+ */
+static int cong_drop = 0;
+TUNABLE_INT("hw.cxgbe.cong_drop", &cong_drop);
 
 /* Used to track coalesced tx work request */
 struct txpkts {
@@ -160,7 +185,7 @@ static void write_eqflush_wr(struct sge_
 static __be64 get_flit(bus_dma_segment_t *, int, int);
 static int handle_sge_egr_update(struct sge_iq *, const struct rss_header *,
     struct mbuf *);
-static int handle_fw_rpl(struct sge_iq *, const struct rss_header *,
+static int handle_fw_msg(struct sge_iq *, const struct rss_header *,
     struct mbuf *);
 
 static int sysctl_uint16(SYSCTL_HANDLER_ARGS);
@@ -170,7 +195,8 @@ extern u_int cpu_clflush_line_size;
 #endif
 
 /*
- * Called on MOD_LOAD and fills up fl_buf_info[].
+ * Called on MOD_LOAD.  Fills up fl_buf_info[] and validates/calculates the SGE
+ * tunables.
  */
 void
 t4_sge_modload(void)
@@ -191,10 +217,49 @@ t4_sge_modload(void)
 		FL_BUF_ZONE(i) = m_getzone(bufsize[i]);
 	}
 
+	if (fl_pktshift < 0 || fl_pktshift > 7) {
+		printf("Invalid hw.cxgbe.fl_pktshift value (%d),"
+		    " using 2 instead.\n", fl_pktshift);
+		fl_pktshift = 2;
+	}
+
+	if (fl_pad < 32 || fl_pad > 4096 || !powerof2(fl_pad)) {
+		int pad;
+
 #if defined(__i386__) || defined(__amd64__)
-	fl_pad = max(cpu_clflush_line_size, 32);
-	spg_len = cpu_clflush_line_size > 64 ? 128 : 64;
+		pad = max(cpu_clflush_line_size, 32);
+#else
+		pad = max(CACHE_LINE_SIZE, 32);
 #endif
+		pad = min(pad, 4096);
+
+		if (fl_pad != -1) {
+			printf("Invalid hw.cxgbe.fl_pad value (%d),"
+			    " using %d instead.\n", fl_pad, pad);
+		}
+		fl_pad = pad;
+	}
+
+	if (spg_len != 64 && spg_len != 128) {
+		int len;
+
+#if defined(__i386__) || defined(__amd64__)
+		len = cpu_clflush_line_size > 64 ? 128 : 64;
+#else
+		len = 64;
+#endif
+		if (spg_len != -1) {
+			printf("Invalid hw.cxgbe.spg_len value (%d),"
+			    " using %d instead.\n", spg_len, len);
+		}
+		spg_len = len;
+	}
+
+	if (cong_drop < -1 || cong_drop > 1) {
+		printf("Invalid hw.cxgbe.cong_drop value (%d),"
+		    " using 0 instead.\n", cong_drop);
+		cong_drop = 0;
+	}
 }
 
 /**
@@ -215,7 +280,7 @@ t4_sge_init(struct adapter *sc)
 	ctrl_mask = V_PKTSHIFT(M_PKTSHIFT) | F_RXPKTCPLMODE |
 	    V_INGPADBOUNDARY(M_INGPADBOUNDARY) |
 	    F_EGRSTATUSPAGESIZE;
-	ctrl_val = V_PKTSHIFT(FL_PKTSHIFT) | F_RXPKTCPLMODE |
+	ctrl_val = V_PKTSHIFT(fl_pktshift) | F_RXPKTCPLMODE |
 	    V_INGPADBOUNDARY(ilog2(fl_pad) - 5) |
 	    V_EGRSTATUSPAGESIZE(spg_len == 128);
 
@@ -296,11 +361,13 @@ t4_sge_init(struct adapter *sc)
 	sc->sge.timer_val[4] = G_TIMERVALUE4(v) / core_ticks_per_usec(sc);
 	sc->sge.timer_val[5] = G_TIMERVALUE5(v) / core_ticks_per_usec(sc);
 
-	t4_register_cpl_handler(sc, CPL_FW4_MSG, handle_fw_rpl);
-	t4_register_cpl_handler(sc, CPL_FW6_MSG, handle_fw_rpl);
+	t4_register_cpl_handler(sc, CPL_FW4_MSG, handle_fw_msg);
+	t4_register_cpl_handler(sc, CPL_FW6_MSG, handle_fw_msg);
 	t4_register_cpl_handler(sc, CPL_SGE_EGR_UPDATE, handle_sge_egr_update);
 	t4_register_cpl_handler(sc, CPL_RX_PKT, t4_eth_rx);
 
+	t4_register_fw_msg_handler(sc, FW6_TYPE_CMD_RPL, t4_handle_fw_rpl);
+
 	return (rc);
 }
 
@@ -477,6 +544,18 @@ port_intr_iq(struct port_info *pi, int i
 	return (iq);
 }
 
+static inline int
+mtu_to_bufsize(int mtu)
+{
+	int bufsize;
+
+	/* large enough for a frame even when VLAN extraction is disabled */
+	bufsize = ETHER_HDR_LEN + ETHER_VLAN_ENCAP_LEN + mtu;
+	bufsize = roundup(bufsize + fl_pktshift, fl_pad);
+
+	return (bufsize);
+}
+
 int
 t4_setup_port_queues(struct port_info *pi)
 {
@@ -493,6 +572,7 @@ t4_setup_port_queues(struct port_info *p
 	struct adapter *sc = pi->adapter;
 	struct sysctl_oid *oid = device_get_sysctl_tree(pi->dev);
 	struct sysctl_oid_list *children = SYSCTL_CHILDREN(oid);
+	int bufsize = mtu_to_bufsize(pi->ifp->if_mtu);
 
 	oid = SYSCTL_ADD_NODE(&pi->ctx, children, OID_AUTO, "rxq", CTLFLAG_RD,
 	    NULL, "rx queues");
@@ -522,7 +602,7 @@ t4_setup_port_queues(struct port_info *p
 
 		snprintf(name, sizeof(name), "%s rxq%d-fl",
 		    device_get_nameunit(pi->dev), i);
-		init_fl(&rxq->fl, pi->qsize_rxq / 8, pi->ifp->if_mtu, name);
+		init_fl(&rxq->fl, pi->qsize_rxq / 8, bufsize, name);
 
 		if (sc->flags & INTR_DIRECT
 #ifdef TCP_OFFLOAD
@@ -547,7 +627,7 @@ t4_setup_port_queues(struct port_info *p
 
 		snprintf(name, sizeof(name), "%s ofld_rxq%d-fl",
 		    device_get_nameunit(pi->dev), i);
-		init_fl(&ofld_rxq->fl, pi->qsize_rxq / 8, MJUM16BYTES, name);
+		init_fl(&ofld_rxq->fl, pi->qsize_rxq / 8, OFLD_BUF_SIZE, name);
 
 		if (sc->flags & INTR_DIRECT ||
 		    (sc->intr_count > 1 && pi->nofldrxq > pi->nrxq)) {
@@ -942,13 +1022,6 @@ service_iq(struct sge_iq *iq, int budget
 	return (0);
 }
 
-
-#ifdef T4_PKT_TIMESTAMP
-#define RX_COPY_THRESHOLD (MINCLSIZE - 8)
-#else
-#define RX_COPY_THRESHOLD MINCLSIZE
-#endif
-
 static struct mbuf *
 get_fl_payload(struct adapter *sc, struct sge_fl *fl, uint32_t len_newbuf,
     int *fl_bufs_used)
@@ -1050,9 +1123,9 @@ t4_eth_rx(struct sge_iq *iq, const struc
 	KASSERT(m0 != NULL, ("%s: no payload with opcode %02x", __func__,
 	    rss->opcode));
 
-	m0->m_pkthdr.len -= FL_PKTSHIFT;
-	m0->m_len -= FL_PKTSHIFT;
-	m0->m_data += FL_PKTSHIFT;
+	m0->m_pkthdr.len -= fl_pktshift;
+	m0->m_len -= fl_pktshift;
+	m0->m_data += fl_pktshift;
 
 	m0->m_pkthdr.rcvif = ifp;
 	m0->m_flags |= M_FLOWID;
@@ -1386,11 +1459,8 @@ t4_update_fl_bufsize(struct ifnet *ifp)
 	struct port_info *pi = ifp->if_softc;
 	struct sge_rxq *rxq;
 	struct sge_fl *fl;
-	int i, bufsize;
+	int i, bufsize = mtu_to_bufsize(ifp->if_mtu);
 
-	/* large enough for a frame even when VLAN extraction is disabled */
-	bufsize = ETHER_HDR_LEN + ETHER_VLAN_ENCAP_LEN + ifp->if_mtu;
-	bufsize = roundup(bufsize + FL_PKTSHIFT, fl_pad);
 	for_each_rxq(pi, i, rxq) {
 		fl = &rxq->fl;
 
@@ -1793,6 +1863,18 @@ free_mgmtq(struct adapter *sc)
 	return free_wrq(sc, &sc->sge.mgmtq);
 }
 
+static inline int
+tnl_cong(struct port_info *pi)
+{
+
+	if (cong_drop == -1)
+		return (-1);
+	else if (cong_drop == 1)
+		return (0);
+	else
+		return (1 << pi->tx_chan);
+}
+
 static int
 alloc_rxq(struct port_info *pi, struct sge_rxq *rxq, int intr_idx, int idx,
     struct sysctl_oid *oid)
@@ -1801,7 +1883,7 @@ alloc_rxq(struct port_info *pi, struct s
 	struct sysctl_oid_list *children;
 	char name[16];
 
-	rc = alloc_iq_fl(pi, &rxq->iq, &rxq->fl, intr_idx, 1 << pi->tx_chan);
+	rc = alloc_iq_fl(pi, &rxq->iq, &rxq->fl, intr_idx, tnl_cong(pi));
 	if (rc != 0)
 		return (rc);
 
@@ -3433,17 +3515,15 @@ handle_sge_egr_update(struct sge_iq *iq,
 }
 
 static int
-handle_fw_rpl(struct sge_iq *iq, const struct rss_header *rss, struct mbuf *m)
+handle_fw_msg(struct sge_iq *iq, const struct rss_header *rss, struct mbuf *m)
 {
+	struct adapter *sc = iq->adapter;
 	const struct cpl_fw6_msg *cpl = (const void *)(rss + 1);
 
 	KASSERT(m == NULL, ("%s: payload with opcode %02x", __func__,
 	    rss->opcode));
 
-	if (cpl->type == FW6_TYPE_CMD_RPL)
-		t4_handle_fw_rpl(iq->adapter, cpl->data);
-
-	return (0);
+	return (sc->fw_msg_handler[cpl->type](sc, &cpl->data[0]));
 }
 
 static int

Modified: user/np/stable_9_toe/sys/dev/cxgbe/tom/t4_connect.c
==============================================================================
--- user/np/stable_9_toe/sys/dev/cxgbe/tom/t4_connect.c	Wed Aug 22 20:56:53 2012	(r239593)
+++ user/np/stable_9_toe/sys/dev/cxgbe/tom/t4_connect.c	Wed Aug 22 21:14:59 2012	(r239594)
@@ -167,10 +167,10 @@ act_open_rpl_status_to_errno(int status)
 	case CPL_ERR_CONN_TIMEDOUT:
 		return (ETIMEDOUT);
 	case CPL_ERR_TCAM_FULL:
-		return (ENOMEM);
+		return (EAGAIN);
 	case CPL_ERR_CONN_EXIST:
 		log(LOG_ERR, "ACTIVE_OPEN_RPL: 4-tuple in use\n");
-		return (EADDRINUSE);
+		return (EAGAIN);
 	default:
 		return (EIO);
 	}
@@ -186,8 +186,8 @@ do_act_open_rpl(struct sge_iq *iq, const
 	unsigned int status = G_AOPEN_STATUS(be32toh(cpl->atid_status));
 	struct toepcb *toep = lookup_atid(sc, atid);
 	struct inpcb *inp = toep->inp;
-	struct tcpcb *tp = intotcpcb(inp);
 	struct toedev *tod = &toep->td->tod;
+	int rc;
 
 	KASSERT(m == NULL, ("%s: wasn't expecting payload", __func__));
 	KASSERT(toep->tid == atid, ("%s: toep tid/atid mismatch", __func__));
@@ -204,17 +204,14 @@ do_act_open_rpl(struct sge_iq *iq, const
 	if (status && act_open_has_tid(status))
 		release_tid(sc, GET_TID(cpl), toep->ctrlq);
 
-	if (status == CPL_ERR_TCAM_FULL) {
-		INP_WLOCK(inp);
-		toe_connect_failed(tod, tp, EAGAIN);
-		final_cpl_received(toep);	/* unlocks inp */
-	} else {
+	rc = act_open_rpl_status_to_errno(status);
+	if (rc != EAGAIN)
 		INP_INFO_WLOCK(&V_tcbinfo);
-		INP_WLOCK(inp);
-		toe_connect_failed(tod, tp, act_open_rpl_status_to_errno(status));
-		final_cpl_received(toep);	/* unlocks inp */
+	INP_WLOCK(inp);
+	toe_connect_failed(tod, inp, rc);
+	final_cpl_received(toep);	/* unlocks inp */
+	if (rc != EAGAIN)
 		INP_INFO_WUNLOCK(&V_tcbinfo);
-	}
 
 	return (0);
 }
@@ -247,10 +244,14 @@ calc_opt2a(struct socket *so)
 	opt2 |= F_RX_COALESCE_VALID | V_RX_COALESCE(M_RX_COALESCE);
 	opt2 |= F_RSS_QUEUE_VALID | V_RSS_QUEUE(toep->ofld_rxq->iq.abs_id);
 
+#ifdef USE_DDP_RX_FLOW_CONTROL
+	if (toep->ulp_mode == ULP_MODE_TCPDDP)
+		opt2 |= F_RX_FC_VALID | F_RX_FC_DDP;
+#endif
+
 	return (htobe32(opt2));
 }
 
-
 void
 t4_init_connect_cpl_handlers(struct adapter *sc)

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

From owner-svn-src-user@FreeBSD.ORG  Fri Aug 24 17:47:59 2012
Return-Path: <owner-svn-src-user@FreeBSD.ORG>
Delivered-To: svn-src-user@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
	by hub.freebsd.org (Postfix) with ESMTP id 4039C106566B;
	Fri, 24 Aug 2012 17:47:59 +0000 (UTC)
	(envelope-from adrian@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 2AFFD8FC16;
	Fri, 24 Aug 2012 17:47:59 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q7OHlx7t078968;
	Fri, 24 Aug 2012 17:47:59 GMT (envelope-from adrian@svn.freebsd.org)
Received: (from adrian@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id q7OHlwPF078962;
	Fri, 24 Aug 2012 17:47:58 GMT (envelope-from adrian@svn.freebsd.org)
Message-Id: <201208241747.q7OHlwPF078962@svn.freebsd.org>
From: Adrian Chadd <adrian@FreeBSD.org>
Date: Fri, 24 Aug 2012 17:47:58 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r239659 - user/adrian/ath_radar_stuff/lib/libradarpkt
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
	src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Fri, 24 Aug 2012 17:47:59 -0000

Author: adrian
Date: Fri Aug 24 17:47:58 2012
New Revision: 239659
URL: http://svn.freebsd.org/changeset/base/239659

Log:
  * Add AR5212 radar parsing code
  * Due to API changes, ieee80211.h is now required.

Added:
  user/adrian/ath_radar_stuff/lib/libradarpkt/ar5212_radar.c   (contents, props changed)
  user/adrian/ath_radar_stuff/lib/libradarpkt/ar5212_radar.h   (contents, props changed)
Modified:
  user/adrian/ath_radar_stuff/lib/libradarpkt/Makefile
  user/adrian/ath_radar_stuff/lib/libradarpkt/ar5416_radar.c
  user/adrian/ath_radar_stuff/lib/libradarpkt/ar9280_radar.c

Modified: user/adrian/ath_radar_stuff/lib/libradarpkt/Makefile
==============================================================================
--- user/adrian/ath_radar_stuff/lib/libradarpkt/Makefile	Fri Aug 24 17:39:57 2012	(r239658)
+++ user/adrian/ath_radar_stuff/lib/libradarpkt/Makefile	Fri Aug 24 17:47:58 2012	(r239659)
@@ -1,6 +1,6 @@
 LIB=	radarpkt
 
-SRCS=	ar9280_radar.c ar5416_radar.c
+SRCS=	ar5212_radar.c ar9280_radar.c ar5416_radar.c
 
 # Define 'ATH_ENABLE_RADIOTAP_VENDOR_EXT' as it's not enabled by default
 # in the configuration file.  Ideally this would just fake an "opt_ath.h"

Added: user/adrian/ath_radar_stuff/lib/libradarpkt/ar5212_radar.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/adrian/ath_radar_stuff/lib/libradarpkt/ar5212_radar.c	Fri Aug 24 17:47:58 2012	(r239659)
@@ -0,0 +1,104 @@
+/*-
+ * Copyright (c) 2012 Adrian Chadd
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer,
+ *    without modification.
+ * 2. Redistributions in binary form must reproduce at minimum a disclaimer
+ *    similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any
+ *    redistribution must be conditioned upon including a substantially
+ *    similar Disclaimer requirement for further binary redistribution.
+ *
+ * NO WARRANTY
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+ * THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY,
+ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+ * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGES.
+ *
+ * $FreeBSD$
+ */
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/endian.h>
+#include <string.h>	/* for memcpy() */
+
+/* Headers required for the ioctl interface */
+#include <sys/socket.h>
+#include <net/if.h>
+#include <sys/queue.h>
+
+#include "net80211/ieee80211.h"
+#include "net80211/ieee80211_radiotap.h"
+
+#include "dev/ath/if_athioctl.h"
+
+#include "pkt.h"
+
+#include "ar5212_radar.h"
+
+int
+ar5212_radar_decode(struct ieee80211_radiotap_header *rh,
+    const unsigned char *pkt, int len, struct radar_entry *re)
+{
+	uint64_t tsf;
+	int8_t rssi, nf;
+	struct ath_rx_radiotap_header *rx =
+	    (struct ath_rx_radiotap_header *) rh;
+
+	/* XXX we should really be implementing a real radiotap parser */
+	tsf = le64toh(rx->wr_tsf);
+
+	rssi = rx->wr_v.vh_rssi;
+	nf = rx->wr_antnoise;
+
+	/* Last byte is the pulse width */
+	if (len < 1) {
+		printf("short radar frame\n");
+		return (0);
+	}
+
+#if 0
+	printf("phyerr: %d ", rx->wr_v.vh_phyerr_code);
+	printf("ts: %lld", tsf);
+	printf("\tit_present: %x", le32toh(rh->it_present));
+	printf("\tlen: %d", len);
+	printf("\trssi: %d, nf: %d", rssi, nf);
+	printf("\tpri: %u", pkt[len - 1] & 0xff);
+	printf("\n");
+#endif
+
+	/*
+	 * If RSSI > 0x80, it's a negative RSSI. We store it signed
+	 * so we can at least log that it was negative in order to
+	 * plot it. The radar code IIRC just tosses it.
+	 */
+	re->re_rssi = rssi;
+
+	/*
+	 * XXX TODO:
+	 *
+	 * The radar event is timestamped by the MAC the end of the event.
+	 * To work around this particular issue, a "best guess" of the event
+	 * start time involves its duration.
+	 */
+
+	re->re_timestamp = tsf;
+	/* XXX TODO: re->re_freq */
+	re->re_dur = pkt[len - 1] & 0xff;
+	/* XXX TODO: also store ctl/ext RSSI, and some flags */
+	re->re_freq = 0;
+
+	return(1);
+}

Added: user/adrian/ath_radar_stuff/lib/libradarpkt/ar5212_radar.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/adrian/ath_radar_stuff/lib/libradarpkt/ar5212_radar.h	Fri Aug 24 17:47:58 2012	(r239659)
@@ -0,0 +1,47 @@
+/*-
+ * Copyright (c) 2012 Adrian Chadd
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer,
+ *    without modification.
+ * 2. Redistributions in binary form must reproduce at minimum a disclaimer
+ *    similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any
+ *    redistribution must be conditioned upon including a substantially
+ *    similar Disclaimer requirement for further binary redistribution.
+ *
+ * NO WARRANTY
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+ * THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY,
+ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+ * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGES.
+ *
+ * $FreeBSD$
+ */
+#ifndef	__AR5212_RADAR_H__
+#define	__AR5212_RADAR_H__
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+
+#define	CHIP_AR5212		3
+
+extern	int ar5212_radar_decode(struct ieee80211_radiotap_header *rh,
+	const unsigned char *pkt, int len, struct radar_entry *re);
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif	/* __AR5212_RADAR__ */

Modified: user/adrian/ath_radar_stuff/lib/libradarpkt/ar5416_radar.c
==============================================================================
--- user/adrian/ath_radar_stuff/lib/libradarpkt/ar5416_radar.c	Fri Aug 24 17:39:57 2012	(r239658)
+++ user/adrian/ath_radar_stuff/lib/libradarpkt/ar5416_radar.c	Fri Aug 24 17:47:58 2012	(r239659)
@@ -39,7 +39,7 @@
 #include <net/if.h>
 #include <sys/queue.h>
 
-//#include "net80211/ieee80211_var.h"
+#include "net80211/ieee80211.h"
 #include "net80211/ieee80211_radiotap.h"
 
 #include "dev/ath/if_athioctl.h"

Modified: user/adrian/ath_radar_stuff/lib/libradarpkt/ar9280_radar.c
==============================================================================
--- user/adrian/ath_radar_stuff/lib/libradarpkt/ar9280_radar.c	Fri Aug 24 17:39:57 2012	(r239658)
+++ user/adrian/ath_radar_stuff/lib/libradarpkt/ar9280_radar.c	Fri Aug 24 17:47:58 2012	(r239659)
@@ -37,6 +37,7 @@
 #include <sys/socket.h>
 #include <net/if.h>
 
+#include "net80211/ieee80211.h"
 #include "net80211/ieee80211_radiotap.h"
 
 #include "dev/ath/if_athioctl.h"

From owner-svn-src-user@FreeBSD.ORG  Fri Aug 24 17:48:15 2012
Return-Path: <owner-svn-src-user@FreeBSD.ORG>
Delivered-To: svn-src-user@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
	by hub.freebsd.org (Postfix) with ESMTP id D4DE9106575C;
	Fri, 24 Aug 2012 17:48:15 +0000 (UTC)
	(envelope-from adrian@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id C036B8FC14;
	Fri, 24 Aug 2012 17:48:15 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q7OHmFx9079037;
	Fri, 24 Aug 2012 17:48:15 GMT (envelope-from adrian@svn.freebsd.org)
Received: (from adrian@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id q7OHmFmG079035;
	Fri, 24 Aug 2012 17:48:15 GMT (envelope-from adrian@svn.freebsd.org)
Message-Id: <201208241748.q7OHmFmG079035@svn.freebsd.org>
From: Adrian Chadd <adrian@FreeBSD.org>
Date: Fri, 24 Aug 2012 17:48:15 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r239660 - user/adrian/ath_radar_stuff/src/pktlog
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
	src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Fri, 24 Aug 2012 17:48:15 -0000

Author: adrian
Date: Fri Aug 24 17:48:15 2012
New Revision: 239660
URL: http://svn.freebsd.org/changeset/base/239660

Log:
  * Add AR5212 PHY reporting
  * Fix compile issues

Modified:
  user/adrian/ath_radar_stuff/src/pktlog/main.c

Modified: user/adrian/ath_radar_stuff/src/pktlog/main.c
==============================================================================
--- user/adrian/ath_radar_stuff/src/pktlog/main.c	Fri Aug 24 17:47:58 2012	(r239659)
+++ user/adrian/ath_radar_stuff/src/pktlog/main.c	Fri Aug 24 17:48:15 2012	(r239660)
@@ -6,9 +6,11 @@
 
 #include <pcap.h>
 
+#include "net80211/ieee80211.h"
 #include "net80211/ieee80211_radiotap.h"
 
 #include "libradarpkt/pkt.h"
+#include "libradarpkt/ar5212_radar.h"
 #include "libradarpkt/ar5416_radar.h"
 #include "libradarpkt/ar9280_radar.h"
 
@@ -84,8 +86,10 @@ pkt_handle(int chip, const char *pkt, in
 		return;
 	}
 #endif
-
-	if (chip == CHIP_AR5416)
+	if (chip == CHIP_AR5212)
+		r = ar5212_radar_decode(rh, pkt + rh->it_len, len - rh->it_len,
+		    &re);
+	else if (chip == CHIP_AR5416)
 		r = ar5416_radar_decode(rh, pkt + rh->it_len, len - rh->it_len,
 		    &re);
 	else if (chip == CHIP_AR9280)
@@ -151,7 +155,7 @@ static void
 usage(const char *progname)
 {
 
-	printf("Usage: %s <ar5416|ar9280> <file|if> <filename|ifname>\n",
+	printf("Usage: %s <ar5212|ar5416|ar9280> <file|if> <filename|ifname>\n",
 	    progname);
 }
 
@@ -171,7 +175,9 @@ main(int argc, const char *argv[])
 		exit(255);
 	}
 
-	if (strcmp(argv[1], "ar5416") == 0) {
+	if (strcmp(argv[1], "ar5212") == 0) {
+		chip = CHIP_AR5212;
+	} else if (strcmp(argv[1], "ar5416") == 0) {
 		chip = CHIP_AR5416;
 	} else if (strcmp(argv[1], "ar9280") == 0) {
 		chip = CHIP_AR9280;