svn commit: r219842 - in projects/altix/sys: amd64/include conf dev/ath/ath_hal/ar5416 dev/ath/ath_rate/sample dev/hptmv i386/include kern modules modules/mlx4 modules/mlx4ib modules/mlxen modules/...

Marcel Moolenaar marcel at FreeBSD.org
Mon Mar 21 18:39:42 UTC 2011


Author: marcel
Date: Mon Mar 21 18:39:42 2011
New Revision: 219842
URL: http://svn.freebsd.org/changeset/base/219842

Log:
  Merge svn+ssh://svn.freebsd.org/base/head@219841

Added:
  projects/altix/sys/modules/mlx4/
     - copied from r219841, head/sys/modules/mlx4/
  projects/altix/sys/modules/mlx4ib/
     - copied from r219841, head/sys/modules/mlx4ib/
  projects/altix/sys/modules/mlxen/
     - copied from r219841, head/sys/modules/mlxen/
  projects/altix/sys/modules/mthca/
     - copied from r219841, head/sys/modules/mthca/
  projects/altix/sys/ofed/
     - copied from r219841, head/sys/ofed/
Modified:
  projects/altix/sys/amd64/include/endian.h
  projects/altix/sys/conf/files
  projects/altix/sys/conf/files.ia64
  projects/altix/sys/conf/kern.pre.mk
  projects/altix/sys/conf/options
  projects/altix/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c
  projects/altix/sys/dev/ath/ath_rate/sample/sample.c
  projects/altix/sys/dev/hptmv/hptproc.c
  projects/altix/sys/i386/include/endian.h
  projects/altix/sys/kern/kern_intr.c
  projects/altix/sys/kern/kern_jail.c
  projects/altix/sys/kern/kern_sx.c
  projects/altix/sys/kern/kern_sysctl.c
  projects/altix/sys/kern/subr_bus.c
  projects/altix/sys/modules/Makefile
  projects/altix/sys/net/if.c
  projects/altix/sys/net/if_arp.h
  projects/altix/sys/net/if_llatbl.h
  projects/altix/sys/net/if_types.h
  projects/altix/sys/net/if_var.h
  projects/altix/sys/net/if_vlan.c
  projects/altix/sys/net/if_vlan_var.h
  projects/altix/sys/netgraph/ng_base.c
  projects/altix/sys/netinet/if_ether.c
  projects/altix/sys/netinet/in.c
  projects/altix/sys/netinet6/in6.c
  projects/altix/sys/netinet6/nd6.c
  projects/altix/sys/netinet6/nd6_nbr.c
  projects/altix/sys/sys/bus.h
  projects/altix/sys/sys/file.h
  projects/altix/sys/sys/interrupt.h
  projects/altix/sys/sys/jail.h
  projects/altix/sys/sys/sx.h
  projects/altix/sys/sys/sysctl.h
  projects/altix/sys/vm/uma_core.c
  projects/altix/sys/vm/vm_map.c
  projects/altix/sys/vm/vm_map.h
Directory Properties:
  projects/altix/lib/libstand/   (props changed)
  projects/altix/sys/   (props changed)
  projects/altix/sys/amd64/include/xen/   (props changed)
  projects/altix/sys/boot/i386/efi/   (props changed)
  projects/altix/sys/boot/ia64/efi/   (props changed)
  projects/altix/sys/boot/ia64/ski/   (props changed)
  projects/altix/sys/boot/powerpc/boot1.chrp/   (props changed)
  projects/altix/sys/boot/powerpc/ofw/   (props changed)
  projects/altix/sys/cddl/contrib/opensolaris/   (props changed)
  projects/altix/sys/conf/   (props changed)
  projects/altix/sys/contrib/dev/acpica/   (props changed)
  projects/altix/sys/contrib/octeon-sdk/   (props changed)
  projects/altix/sys/contrib/pf/   (props changed)
  projects/altix/sys/contrib/x86emu/   (props changed)
  projects/altix/sys/kern/subr_busdma.c   (props changed)
  projects/altix/sys/ofed/drivers/   (props changed)
  projects/altix/sys/ofed/drivers/infiniband/   (props changed)
  projects/altix/sys/ofed/drivers/infiniband/core/   (props changed)
  projects/altix/sys/ofed/drivers/infiniband/debug/   (props changed)
  projects/altix/sys/ofed/drivers/infiniband/hw/   (props changed)
  projects/altix/sys/ofed/drivers/infiniband/hw/mlx4/   (props changed)
  projects/altix/sys/ofed/drivers/infiniband/hw/mthca/   (props changed)
  projects/altix/sys/ofed/drivers/infiniband/ulp/   (props changed)
  projects/altix/sys/ofed/drivers/infiniband/ulp/ipoib/   (props changed)
  projects/altix/sys/ofed/drivers/infiniband/ulp/sdp/   (props changed)
  projects/altix/sys/ofed/drivers/infiniband/util/   (props changed)
  projects/altix/sys/ofed/drivers/net/   (props changed)
  projects/altix/sys/ofed/drivers/net/mlx4/   (props changed)
  projects/altix/sys/ofed/include/   (props changed)
  projects/altix/sys/ofed/include/asm/   (props changed)
  projects/altix/sys/ofed/include/linux/   (props changed)
  projects/altix/sys/ofed/include/linux/mlx4/   (props changed)
  projects/altix/sys/ofed/include/net/   (props changed)
  projects/altix/sys/ofed/include/rdma/   (props changed)

Modified: projects/altix/sys/amd64/include/endian.h
==============================================================================
--- projects/altix/sys/amd64/include/endian.h	Mon Mar 21 18:20:53 2011	(r219841)
+++ projects/altix/sys/amd64/include/endian.h	Mon Mar 21 18:39:42 2011	(r219842)
@@ -69,73 +69,59 @@ extern "C" {
 
 #if defined(__GNUCLIKE_ASM) && defined(__GNUCLIKE_BUILTIN_CONSTANT_P)
 
-#define __byte_swap_int_var(x) \
-__extension__ ({ register __uint32_t __X = (x); \
-   __asm ("bswap %0" : "+r" (__X)); \
-   __X; })
+#define	__bswap64_const(_x)			\
+	(((_x) >> 56) |				\
+	(((_x) >> 40) & (0xffUL << 8)) |	\
+	(((_x) >> 24) & (0xffUL << 16)) |	\
+	(((_x) >> 8) & (0xffUL << 24)) |	\
+	(((_x) << 8) & (0xffUL << 32)) |	\
+	(((_x) << 24) & (0xffUL << 40)) |	\
+	(((_x) << 40) & (0xffUL << 48)) |	\
+	((_x) << 56))
+
+#define	__bswap32_const(_x)			\
+	(((_x) >> 24) |				\
+	(((_x) & (0xff << 16)) >> 8) |		\
+	(((_x) & (0xff << 8)) << 8) |		\
+	((_x) << 24))
 
-#ifdef __OPTIMIZE__
-
-#define	__byte_swap_int_const(x) \
-	((((x) & 0xff000000) >> 24) | \
-	 (((x) & 0x00ff0000) >>  8) | \
-	 (((x) & 0x0000ff00) <<  8) | \
-	 (((x) & 0x000000ff) << 24))
-#define	__byte_swap_int(x) (__builtin_constant_p(x) ? \
-	__byte_swap_int_const(x) : __byte_swap_int_var(x))
-
-#else	/* __OPTIMIZE__ */
-
-#define	__byte_swap_int(x) __byte_swap_int_var(x)
-
-#endif	/* __OPTIMIZE__ */
-
-#define __byte_swap_long_var(x) \
-__extension__ ({ register __uint64_t __X = (x); \
-   __asm ("bswap %0" : "+r" (__X)); \
-   __X; })
-
-#ifdef __OPTIMIZE__
-
-#define	__byte_swap_long_const(x) \
-	(((x >> 56) | \
-	 ((x >> 40) & 0xff00) | \
-	 ((x >> 24) & 0xff0000) | \
-	 ((x >> 8) & 0xff000000) | \
-	 ((x << 8) & (0xfful << 32)) | \
-	 ((x << 24) & (0xfful << 40)) | \
-	 ((x << 40) & (0xfful << 48)) | \
-	 ((x << 56))))
-
-#define	__byte_swap_long(x) (__builtin_constant_p(x) ? \
-	__byte_swap_long_const(x) : __byte_swap_long_var(x))
-
-#else	/* __OPTIMIZE__ */
-
-#define	__byte_swap_long(x) __byte_swap_long_var(x)
-
-#endif	/* __OPTIMIZE__ */
+#define __bswap16_const(_x)	(__uint16_t)((_x) << 8 | (_x) >> 8)
 
 static __inline __uint64_t
-__bswap64(__uint64_t _x)
+__bswap64_var(__uint64_t _x)
 {
 
-	return (__byte_swap_long(_x));
+	__asm ("bswap %0" : "+r" (_x));
+	return (_x);
 }
 
 static __inline __uint32_t
-__bswap32(__uint32_t _x)
+__bswap32_var(__uint32_t _x)
 {
 
-	return (__byte_swap_int(_x));
+	__asm ("bswap %0" : "+r" (_x));
+	return (_x);
 }
 
 static __inline __uint16_t
-__bswap16(__uint16_t _x)
+__bswap16_var(__uint16_t _x)
 {
-	return (_x << 8 | _x >> 8);
+
+	return (__bswap16_const(_x));
 }
 
+#define	__bswap64(_x)					\
+	(__builtin_constant_p(_x) ?			\
+	    __bswap64_const((__uint64_t)(_x)) : __bswap64_var(_x))
+
+#define	__bswap32(_x)					\
+	(__builtin_constant_p(_x) ?			\
+	    __bswap32_const((__uint32_t)(_x)) : __bswap32_var(_x))
+
+#define	__bswap16(_x)					\
+	(__builtin_constant_p(_x) ?			\
+	    __bswap16_const((__uint16_t)(_x)) : __bswap16_var(_x))
+
 #define	__htonl(x)	__bswap32(x)
 #define	__htons(x)	__bswap16(x)
 #define	__ntohl(x)	__bswap32(x)

Modified: projects/altix/sys/conf/files
==============================================================================
--- projects/altix/sys/conf/files	Mon Mar 21 18:20:53 2011	(r219841)
+++ projects/altix/sys/conf/files	Mon Mar 21 18:39:42 2011	(r219842)
@@ -2792,6 +2792,281 @@ nlm/nlm_prot_server.c		optional nfslockd
 nlm/nlm_prot_svc.c		optional nfslockd | nfsd
 nlm/nlm_prot_xdr.c		optional nfslockd | nfsd
 nlm/sm_inter_xdr.c		optional nfslockd | nfsd
+
+# OpenFabrics Enterprise Distribution (Infiniband)
+ofed/include/linux/linux_compat.c		optional ofed		\
+	no-depend compile-with "${OFED_C}"
+ofed/include/linux/linux_idr.c			optional ofed		\
+	no-depend compile-with "${OFED_C}"
+ofed/include/linux/linux_radix.c		optional ofed		\
+	no-depend compile-with "${OFED_C}"
+ofed/drivers/infiniband/core/addr.c		optional ofed		\
+	no-depend							\
+	compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"	
+ofed/drivers/infiniband/core/agent.c		optional ofed		\
+	no-depend							\
+	compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
+ofed/drivers/infiniband/core/cache.c		optional ofed		\
+	no-depend							\
+	compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
+# XXX Mad.c must be ordered before cm.c for sysinit sets to occur in
+# the correct order.
+ofed/drivers/infiniband/core/mad.c		optional ofed		\
+	no-depend							\
+	compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
+ofed/drivers/infiniband/core/cm.c		optional ofed		\
+	no-depend							\
+	compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
+ofed/drivers/infiniband/core/cma.c		optional ofed		\
+	no-depend							\
+	compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
+ofed/drivers/infiniband/core/device.c		optional ofed		\
+	no-depend							\
+	compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
+ofed/drivers/infiniband/core/fmr_pool.c		optional ofed		\
+	no-depend							\
+	compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
+ofed/drivers/infiniband/core/iwcm.c		optional ofed		\
+	no-depend							\
+	compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
+ofed/drivers/infiniband/core/local_sa.c		optional ofed		\
+	no-depend							\
+	compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
+ofed/drivers/infiniband/core/mad_rmpp.c		optional ofed		\
+	no-depend							\
+	compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
+ofed/drivers/infiniband/core/multicast.c	optional ofed		\
+	no-depend							\
+	compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
+ofed/drivers/infiniband/core/notice.c		optional ofed		\
+	no-depend							\
+	compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
+ofed/drivers/infiniband/core/packer.c		optional ofed		\
+	no-depend							\
+	compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
+ofed/drivers/infiniband/core/sa_query.c		optional ofed		\
+	no-depend							\
+	compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
+ofed/drivers/infiniband/core/smi.c		optional ofed		\
+	no-depend							\
+	compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
+ofed/drivers/infiniband/core/sysfs.c		optional ofed		\
+	no-depend							\
+	compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
+ofed/drivers/infiniband/core/ucm.c		optional ofed		\
+	no-depend							\
+	compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
+ofed/drivers/infiniband/core/ucma.c		optional ofed		\
+	no-depend							\
+	compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
+ofed/drivers/infiniband/core/ud_header.c	optional ofed		\
+	no-depend							\
+	compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
+ofed/drivers/infiniband/core/umem.c		optional ofed		\
+	no-depend							\
+	compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
+ofed/drivers/infiniband/core/user_mad.c		optional ofed		\
+	no-depend							\
+	compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
+ofed/drivers/infiniband/core/uverbs_cmd.c	optional ofed		\
+	no-depend							\
+	compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
+ofed/drivers/infiniband/core/uverbs_main.c	optional ofed		\
+	no-depend							\
+	compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
+ofed/drivers/infiniband/core/uverbs_marshall.c	optional ofed		\
+	no-depend							\
+	compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
+ofed/drivers/infiniband/core/verbs.c		optional ofed		\
+	no-depend							\
+	compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
+
+ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c	optional ipoib		\
+	no-depend							\
+	compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/ipoib/"
+#ofed/drivers/infiniband/ulp/ipoib/ipoib_fs.c	optional ipoib		\
+#	no-depend							\
+#	compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/ipoib/"
+ofed/drivers/infiniband/ulp/ipoib/ipoib_ib.c	optional ipoib		\
+	no-depend							\
+	compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/ipoib/"
+ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c	optional ipoib		\
+	no-depend							\
+	compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/ipoib/"
+ofed/drivers/infiniband/ulp/ipoib/ipoib_multicast.c	optional ipoib	\
+	no-depend							\
+	compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/ipoib/"
+ofed/drivers/infiniband/ulp/ipoib/ipoib_verbs.c	optional ipoib		\
+	no-depend							\
+	compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/ipoib/"
+#ofed/drivers/infiniband/ulp/ipoib/ipoib_vlan.c	optional ipoib		\
+#	no-depend							\
+#	compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/ipoib/"
+
+ofed/drivers/infiniband/ulp/sdp/sdp_bcopy.c	optional sdp		\
+	no-depend							\
+	compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/sdp/"
+ofed/drivers/infiniband/ulp/sdp/sdp_main.c	optional sdp		\
+	no-depend							\
+	compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/sdp/"
+ofed/drivers/infiniband/ulp/sdp/sdp_rx.c	optional sdp		\
+	no-depend							\
+	compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/sdp/"
+ofed/drivers/infiniband/ulp/sdp/sdp_cma.c	optional sdp		\
+	no-depend							\
+	compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/sdp/"
+ofed/drivers/infiniband/ulp/sdp/sdp_tx.c	optional sdp		\
+	no-depend							\
+	compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/sdp/"
+
+ofed/drivers/infiniband/hw/mlx4/ah.c		optional mlx4ib		\
+	no-depend obj-prefix "mlx4ib_"					\
+	compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/infiniband/hw/mlx4/"
+ofed/drivers/infiniband/hw/mlx4/cq.c		optional mlx4ib		\
+	no-depend obj-prefix "mlx4ib_"					\
+	compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/infiniband/hw/mlx4/"
+ofed/drivers/infiniband/hw/mlx4/doorbell.c	optional mlx4ib		\
+	no-depend obj-prefix "mlx4ib_"					\
+	compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/infiniband/hw/mlx4/"
+ofed/drivers/infiniband/hw/mlx4/mad.c		optional mlx4ib		\
+	no-depend obj-prefix "mlx4ib_"					\
+	compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/infiniband/hw/mlx4/"
+ofed/drivers/infiniband/hw/mlx4/main.c		optional mlx4ib		\
+	no-depend obj-prefix "mlx4ib_"					\
+	compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/infiniband/hw/mlx4/"
+ofed/drivers/infiniband/hw/mlx4/mr.c		optional mlx4ib		\
+	no-depend obj-prefix "mlx4ib_"					\
+	compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/infiniband/hw/mlx4/"
+ofed/drivers/infiniband/hw/mlx4/qp.c		optional mlx4ib		\
+	no-depend obj-prefix "mlx4ib_"					\
+	compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/infiniband/hw/mlx4/"
+ofed/drivers/infiniband/hw/mlx4/srq.c		optional mlx4ib		\
+	no-depend obj-prefix "mlx4ib_"					\
+	compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/infiniband/hw/mlx4/"
+ofed/drivers/infiniband/hw/mlx4/wc.c		optional mlx4ib		\
+	no-depend obj-prefix "mlx4ib_"					\
+	compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/infiniband/hw/mlx4/"
+
+ofed/drivers/net/mlx4/alloc.c			optional mlx4ib | mlxen	\
+	no-depend obj-prefix "mlx4_"					\
+	compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
+ofed/drivers/net/mlx4/catas.c			optional mlx4ib | mlxen	\
+	no-depend obj-prefix "mlx4_"					\
+	compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
+ofed/drivers/net/mlx4/cmd.c			optional mlx4ib | mlxen	\
+	no-depend obj-prefix "mlx4_"					\
+	compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
+ofed/drivers/net/mlx4/cq.c			optional mlx4ib | mlxen	\
+	no-depend obj-prefix "mlx4_"					\
+	compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
+ofed/drivers/net/mlx4/eq.c			optional mlx4ib | mlxen	\
+	no-depend obj-prefix "mlx4_"					\
+	compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
+ofed/drivers/net/mlx4/fw.c			optional mlx4ib | mlxen	\
+	no-depend obj-prefix "mlx4_"					\
+	compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
+ofed/drivers/net/mlx4/icm.c			optional mlx4ib | mlxen	\
+	no-depend obj-prefix "mlx4_"					\
+	compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
+ofed/drivers/net/mlx4/intf.c			optional mlx4ib | mlxen	\
+	no-depend obj-prefix "mlx4_"					\
+	compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
+ofed/drivers/net/mlx4/main.c			optional mlx4ib | mlxen	\
+	no-depend obj-prefix "mlx4_"					\
+	compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
+ofed/drivers/net/mlx4/mcg.c			optional mlx4ib | mlxen	\
+	no-depend obj-prefix "mlx4_"					\
+	compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
+ofed/drivers/net/mlx4/mr.c			optional mlx4ib | mlxen	\
+	no-depend obj-prefix "mlx4_"					\
+	compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
+ofed/drivers/net/mlx4/pd.c			optional mlx4ib | mlxen	\
+	no-depend obj-prefix "mlx4_"					\
+	compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
+ofed/drivers/net/mlx4/port.c			optional mlx4ib | mlxen	\
+	no-depend obj-prefix "mlx4_"					\
+	compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
+ofed/drivers/net/mlx4/profile.c			optional mlx4ib | mlxen	\
+	no-depend obj-prefix "mlx4_"					\
+	compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
+ofed/drivers/net/mlx4/qp.c			optional mlx4ib | mlxen	\
+	no-depend obj-prefix "mlx4_"					\
+	compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
+ofed/drivers/net/mlx4/reset.c			optional mlx4ib | mlxen	\
+	no-depend obj-prefix "mlx4_"					\
+	compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
+ofed/drivers/net/mlx4/sense.c			optional mlx4ib | mlxen	\
+	no-depend obj-prefix "mlx4_"					\
+	compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
+ofed/drivers/net/mlx4/srq.c			optional mlx4ib | mlxen	\
+	no-depend obj-prefix "mlx4_"					\
+	compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
+ofed/drivers/net/mlx4/xrcd.c			optional mlx4ib | mlxen	\
+	no-depend obj-prefix "mlx4_"					\
+	compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
+
+ofed/drivers/net/mlx4/en_cq.c			optional mlxen		\
+	no-depend obj-prefix "mlx4_"					\
+	compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
+ofed/drivers/net/mlx4/en_frag.c			optional mlxen		\
+	no-depend obj-prefix "mlx4_"					\
+	compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
+ofed/drivers/net/mlx4/en_main.c			optional mlxen		\
+	no-depend obj-prefix "mlx4_"					\
+	compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
+ofed/drivers/net/mlx4/en_netdev.c		optional mlxen		\
+	no-depend obj-prefix "mlx4_"					\
+	compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
+ofed/drivers/net/mlx4/en_port.c			optional mlxen		\
+	no-depend obj-prefix "mlx4_"					\
+	compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
+ofed/drivers/net/mlx4/en_resources.c		optional mlxen		\
+	no-depend obj-prefix "mlx4_"					\
+	compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
+ofed/drivers/net/mlx4/en_rx.c			optional mlxen		\
+	no-depend obj-prefix "mlx4_"					\
+	compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
+ofed/drivers/net/mlx4/en_tx.c			optional mlxen		\
+	no-depend obj-prefix "mlx4_"					\
+	compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
+
+ofed/drivers/infiniband/hw/mthca/mthca_allocator.c	optional mthca	\
+	no-depend compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/mthca/"
+ofed/drivers/infiniband/hw/mthca/mthca_av.c		optional mthca	\
+	no-depend compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/mthca/"
+ofed/drivers/infiniband/hw/mthca/mthca_catas.c		optional mthca	\
+	no-depend compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/mthca/"
+ofed/drivers/infiniband/hw/mthca/mthca_cmd.c		optional mthca	\
+	no-depend compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/mthca/"
+ofed/drivers/infiniband/hw/mthca/mthca_cq.c		optional mthca	\
+	no-depend compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/mthca/"
+ofed/drivers/infiniband/hw/mthca/mthca_eq.c		optional mthca	\
+	no-depend compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/mthca/"
+ofed/drivers/infiniband/hw/mthca/mthca_mad.c		optional mthca	\
+	no-depend compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/mthca/"
+ofed/drivers/infiniband/hw/mthca/mthca_main.c		optional mthca	\
+	no-depend compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/mthca/"
+ofed/drivers/infiniband/hw/mthca/mthca_mcg.c		optional mthca	\
+	no-depend compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/mthca/"
+ofed/drivers/infiniband/hw/mthca/mthca_memfree.c	optional mthca	\
+	no-depend compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/mthca/"
+ofed/drivers/infiniband/hw/mthca/mthca_mr.c		optional mthca	\
+	no-depend compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/mthca/"
+ofed/drivers/infiniband/hw/mthca/mthca_pd.c		optional mthca	\
+	no-depend compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/mthca/"
+ofed/drivers/infiniband/hw/mthca/mthca_profile.c	optional mthca	\
+	no-depend compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/mthca/"
+ofed/drivers/infiniband/hw/mthca/mthca_provider.c	optional mthca	\
+	no-depend compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/mthca/"
+ofed/drivers/infiniband/hw/mthca/mthca_qp.c		optional mthca	\
+	no-depend compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/mthca/"
+ofed/drivers/infiniband/hw/mthca/mthca_reset.c		optional mthca	\
+	no-depend compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/mthca/"
+ofed/drivers/infiniband/hw/mthca/mthca_srq.c		optional mthca	\
+	no-depend compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/mthca/"
+ofed/drivers/infiniband/hw/mthca/mthca_uar.c		optional mthca	\
+	no-depend compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/mthca/"
+
 # crypto support
 opencrypto/cast.c		optional crypto | ipsec
 opencrypto/criov.c		optional crypto

Modified: projects/altix/sys/conf/files.ia64
==============================================================================
--- projects/altix/sys/conf/files.ia64	Mon Mar 21 18:20:53 2011	(r219841)
+++ projects/altix/sys/conf/files.ia64	Mon Mar 21 18:39:42 2011	(r219842)
@@ -84,7 +84,6 @@ ia64/ia64/efi.c			standard
 ia64/ia64/elf_machdep.c		standard
 ia64/ia64/emulate.c		standard
 ia64/ia64/exception.S		standard
-ia64/ia64/physical.S		standard
 ia64/ia64/gdb_machdep.c		optional	gdb
 ia64/ia64/highfp.c		standard
 ia64/ia64/in_cksum.c		optional	inet
@@ -97,6 +96,7 @@ ia64/ia64/mem.c			optional	mem
 ia64/ia64/mp_machdep.c		optional	smp
 ia64/ia64/nexus.c		standard
 ia64/ia64/pal.S			standard
+ia64/ia64/physical.S		standard
 ia64/ia64/pmap.c		standard
 ia64/ia64/ptrace_machdep.c	standard
 ia64/ia64/sal.c			standard

Modified: projects/altix/sys/conf/kern.pre.mk
==============================================================================
--- projects/altix/sys/conf/kern.pre.mk	Mon Mar 21 18:20:53 2011	(r219841)
+++ projects/altix/sys/conf/kern.pre.mk	Mon Mar 21 18:39:42 2011	(r219842)
@@ -146,6 +146,14 @@ NORMAL_CTFCONVERT= [ -z "${CTFCONVERT}" 
 
 NORMAL_LINT=	${LINT} ${LINTFLAGS} ${CFLAGS:M-[DIU]*} ${.IMPSRC}
 
+# Infiniband C flags.  Correct include paths and omit errors that linux
+# does not honor.
+OFEDINCLUDES=	-I$S/ofed/include/
+OFEDNOERR=	-Wno-cast-qual -Wno-pointer-arith -fms-extensions
+OFEDCFLAGS=	${CFLAGS:N-I*} ${OFEDINCLUDES} ${CFLAGS:M-I*} ${OFEDNOERR}
+OFED_C_NOIMP=	${CC} -c -o ${.TARGET} ${OFEDCFLAGS} ${WERROR} ${PROF}
+OFED_C=		${OFED_C_NOIMP} ${.IMPSRC}
+
 GEN_CFILES= $S/$M/$M/genassym.c ${MFILES:T:S/.m$/.c/}
 SYSTEM_CFILES= config.c env.c hints.c vnode_if.c
 SYSTEM_DEP= Makefile ${SYSTEM_OBJS}

Modified: projects/altix/sys/conf/options
==============================================================================
--- projects/altix/sys/conf/options	Mon Mar 21 18:20:53 2011	(r219841)
+++ projects/altix/sys/conf/options	Mon Mar 21 18:39:42 2011	(r219842)
@@ -862,3 +862,11 @@ X86BIOS
 # Flattened device tree options
 FDT		opt_platform.h
 FDT_DTB_STATIC	opt_platform.h
+
+# OFED Infiniband stack
+OFED		opt_ofed.h
+OFED_DEBUG_INIT	opt_ofed.h
+SDP		opt_ofed.h
+SDP_DEBUG	opt_ofed.h
+IPOIB_DEBUG	opt_ofed.h
+IPOIB_CM	opt_ofed.h

Modified: projects/altix/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c
==============================================================================
--- projects/altix/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c	Mon Mar 21 18:20:53 2011	(r219841)
+++ projects/altix/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c	Mon Mar 21 18:39:42 2011	(r219842)
@@ -277,7 +277,8 @@ ar5416Attach(uint16_t devid, HAL_SOFTC s
 	HAL_INI_INIT(&AH5416(ah)->ah_ini_bank7, ar5416Bank7, 2);
 	HAL_INI_INIT(&AH5416(ah)->ah_ini_addac, ar5416Addac, 2);
 
-	if (!IS_5416V2_2(ah)) {		/* Owl 2.1/2.0 */
+	if (! IS_5416V2_2(ah)) {		/* Owl 2.1/2.0 */
+		ath_hal_printf(ah, "[ath] Enabling CLKDRV workaround for AR5416 < v2.2\n");
 		struct ini {
 			uint32_t	*data;		/* NB: !const */
 			int		rows, cols;

Modified: projects/altix/sys/dev/ath/ath_rate/sample/sample.c
==============================================================================
--- projects/altix/sys/dev/ath/ath_rate/sample/sample.c	Mon Mar 21 18:20:53 2011	(r219841)
+++ projects/altix/sys/dev/ath/ath_rate/sample/sample.c	Mon Mar 21 18:39:42 2011	(r219842)
@@ -250,6 +250,55 @@ pick_sample_rate(struct sample_softc *ss
 #undef	MCS
 }
 
+static int
+ath_rate_get_static_rix(struct ath_softc *sc, const struct ieee80211_node *ni)
+{
+#define	RATE(_ix)	(ni->ni_rates.rs_rates[(_ix)] & IEEE80211_RATE_VAL)
+#define	DOT11RATE(_ix)	(rt->info[(_ix)].dot11Rate & IEEE80211_RATE_VAL)
+#define	MCS(_ix)	(ni->ni_htrates.rs_rates[_ix] | IEEE80211_RATE_MCS)
+	const struct ieee80211_txparam *tp = ni->ni_txparms;
+	int srate;
+
+	/* Check MCS rates */
+	for (srate = ni->ni_htrates.rs_nrates - 1; srate >= 0; srate--) {
+		if (MCS(srate) == tp->ucastrate)
+			return sc->sc_rixmap[tp->ucastrate];
+	}
+
+	/* Check legacy rates */
+	for (srate = ni->ni_rates.rs_nrates - 1; srate >= 0; srate--) {
+		if (RATE(srate) == tp->ucastrate)
+			return sc->sc_rixmap[tp->ucastrate];
+	}
+	return -1;
+#undef	RATE
+#undef	DOT11RATE
+#undef	MCS
+}
+
+static void
+ath_rate_update_static_rix(struct ath_softc *sc, struct ieee80211_node *ni)
+{
+	struct ath_node *an = ATH_NODE(ni);
+	const struct ieee80211_txparam *tp = ni->ni_txparms;
+	struct sample_node *sn = ATH_NODE_SAMPLE(an);
+
+	if (tp != NULL && tp->ucastrate != IEEE80211_FIXED_RATE_NONE) {
+		/*
+		 * A fixed rate is to be used; ucastrate is the IEEE code
+		 * for this rate (sans basic bit).  Check this against the
+		 * negotiated rate set for the node.  Note the fixed rate
+		 * may not be available for various reasons so we only
+		 * setup the static rate index if the lookup is successful.
+		 */
+		sn->static_rix = ath_rate_get_static_rix(sc, ni);
+	} else {
+		sn->static_rix = -1;
+	}
+}
+
+
+
 void
 ath_rate_findrate(struct ath_softc *sc, struct ath_node *an,
 		  int shortPreamble, size_t frameLen,
@@ -267,6 +316,8 @@ ath_rate_findrate(struct ath_softc *sc, 
 	int rix, mrr, best_rix, change_rates;
 	unsigned average_tx_time;
 
+	ath_rate_update_static_rix(sc, &an->an_node);
+
 	if (sn->static_rix != -1) {
 		rix = sn->static_rix;
 		*try0 = ATH_TXMAXTRY;
@@ -560,9 +611,10 @@ ath_rate_tx_complete(struct ath_softc *s
 		 * Only one rate was used; optimize work.
 		 */
 		IEEE80211_NOTE(an->an_node.ni_vap, IEEE80211_MSG_RATECTL,
-		     &an->an_node, "%s: size %d %s rate/try %d %s/%d/%d",
+		     &an->an_node, "%s: size %d (%d bytes) %s rate/try %d %s/%d/%d",
 		     __func__,
 		     bin_to_size(size_to_bin(frame_size)),
+		     frame_size,
 		     ts->ts_status ? "FAIL" : "OK",
 		     dot11rate(rt, final_rix), dot11rate_label(rt, final_rix), short_tries, long_tries);
 		update_stats(sc, an, frame_size, 
@@ -587,9 +639,10 @@ ath_rate_tx_complete(struct ath_softc *s
 
 		IEEE80211_NOTE(an->an_node.ni_vap, IEEE80211_MSG_RATECTL,
 		    &an->an_node,
-"%s: size %d finaltsidx %d tries %d %s rate/try [%d %s/%d %d %s/%d %d %s/%d %d %s/%d]", 
+"%s: size %d (%d bytes) finaltsidx %d tries %d %s rate/try [%d %s/%d %d %s/%d %d %s/%d %d %s/%d]", 
 		     __func__,
 		     bin_to_size(size_to_bin(frame_size)),
+		     frame_size,
 		     finalTSIdx,
 		     long_tries, 
 		     ts->ts_status ? "FAIL" : "OK",
@@ -686,12 +739,10 @@ ath_rate_ctl_reset(struct ath_softc *sc,
 #define	RATE(_ix)	(ni->ni_rates.rs_rates[(_ix)] & IEEE80211_RATE_VAL)
 #define	DOT11RATE(_ix)	(rt->info[(_ix)].dot11Rate & IEEE80211_RATE_VAL)
 #define	MCS(_ix)	(ni->ni_htrates.rs_rates[_ix] | IEEE80211_RATE_MCS)
-
 	struct ath_node *an = ATH_NODE(ni);
-	const struct ieee80211_txparam *tp = ni->ni_txparms;
 	struct sample_node *sn = ATH_NODE_SAMPLE(an);
 	const HAL_RATE_TABLE *rt = sc->sc_currates;
-	int x, y, srate, rix;
+	int x, y, rix;
 
 	KASSERT(rt != NULL, ("no rate table, mode %u", sc->sc_curmode));
 
@@ -702,33 +753,7 @@ ath_rate_ctl_reset(struct ath_softc *sc,
 	    ("no mrr schedule for mode %u", sc->sc_curmode));
 
         sn->static_rix = -1;
-	if (tp != NULL && tp->ucastrate != IEEE80211_FIXED_RATE_NONE) {
-		/*
-		 * A fixed rate is to be used; ucastrate is the IEEE code
-		 * for this rate (sans basic bit).  Check this against the
-		 * negotiated rate set for the node.  Note the fixed rate
-		 * may not be available for various reasons so we only
-		 * setup the static rate index if the lookup is successful.
-		 */
-
-		/* XXX todo: check MCS rates */
-
-		/* Check legacy rates */
-		for (srate = ni->ni_rates.rs_nrates - 1; srate >= 0; srate--)
-			if (RATE(srate) == tp->ucastrate) {
-				sn->static_rix = sc->sc_rixmap[tp->ucastrate];
-				break;
-			}
-#ifdef IEEE80211_DEBUG
-			if (sn->static_rix == -1) {
-				IEEE80211_NOTE(ni->ni_vap,
-				    IEEE80211_MSG_RATECTL, ni,
-				    "%s: ucastrate %u not found, nrates %u",
-				    __func__, tp->ucastrate,
-				    ni->ni_rates.rs_nrates);
-			}
-#endif
-	}
+	ath_rate_update_static_rix(sc, ni);
 
 	/*
 	 * Construct a bitmask of usable rates.  This has all

Modified: projects/altix/sys/dev/hptmv/hptproc.c
==============================================================================
--- projects/altix/sys/dev/hptmv/hptproc.c	Mon Mar 21 18:20:53 2011	(r219841)
+++ projects/altix/sys/dev/hptmv/hptproc.c	Mon Mar 21 18:39:42 2011	(r219842)
@@ -51,8 +51,8 @@ int hpt_rescan_all(void);
 static char hptproc_buffer[256];
 extern char DRIVER_VERSION[];
 
-#define FORMAL_HANDLER_ARGS struct sysctl_oid *oidp, void *arg1, int arg2, \
-	struct sysctl_req *req
+#define FORMAL_HANDLER_ARGS struct sysctl_oid *oidp, void *arg1,	\
+	intptr_t arg2, struct sysctl_req *req
 #define REAL_HANDLER_ARGS oidp, arg1, arg2, req
 typedef struct sysctl_req HPT_GET_INFO;
 

Modified: projects/altix/sys/i386/include/endian.h
==============================================================================
--- projects/altix/sys/i386/include/endian.h	Mon Mar 21 18:20:53 2011	(r219841)
+++ projects/altix/sys/i386/include/endian.h	Mon Mar 21 18:39:42 2011	(r219842)
@@ -69,50 +69,59 @@ extern "C" {
 
 #if defined(__GNUCLIKE_ASM) && defined(__GNUCLIKE_BUILTIN_CONSTANT_P)
 
-#define __byte_swap_int_var(x) \
-__extension__ ({ register __uint32_t __X = (x); \
-   __asm ("bswap %0" : "+r" (__X)); \
-   __X; })
-
-#ifdef __OPTIMIZE__
-
-#define	__byte_swap_int_const(x) \
-	((((x) & 0xff000000) >> 24) | \
-	 (((x) & 0x00ff0000) >>  8) | \
-	 (((x) & 0x0000ff00) <<  8) | \
-	 (((x) & 0x000000ff) << 24))
-#define	__byte_swap_int(x) (__builtin_constant_p(x) ? \
-	__byte_swap_int_const(x) : __byte_swap_int_var(x))
+#define	__bswap64_const(_x)			\
+	(((_x) >> 56) |				\
+	(((_x) >> 40) & (0xffULL << 8)) |	\
+	(((_x) >> 24) & (0xffULL << 16)) |	\
+	(((_x) >> 8) & (0xffULL << 24)) |	\
+	(((_x) << 8) & (0xffULL << 32)) |	\
+	(((_x) << 24) & (0xffULL << 40)) |	\
+	(((_x) << 40) & (0xffULL << 48)) |	\
+	((_x) << 56))
+
+#define	__bswap32_const(_x)			\
+	(((_x) >> 24) |				\
+	(((_x) & (0xff << 16)) >> 8) |		\
+	(((_x) & (0xff << 8)) << 8) |		\
+	((_x) << 24))
 
-#else	/* __OPTIMIZE__ */
-
-#define	__byte_swap_int(x) __byte_swap_int_var(x)
-
-#endif	/* __OPTIMIZE__ */
+#define __bswap16_const(_x)	(__uint16_t)((_x) << 8 | (_x) >> 8)
 
 static __inline __uint64_t
-__bswap64(__uint64_t _x)
+__bswap64_var(__uint64_t __x)
 {
 
-	return ((_x >> 56) | ((_x >> 40) & 0xff00) | ((_x >> 24) & 0xff0000) |
-	    ((_x >> 8) & 0xff000000) | ((_x << 8) & ((__uint64_t)0xff << 32)) |
-	    ((_x << 24) & ((__uint64_t)0xff << 40)) |
-	    ((_x << 40) & ((__uint64_t)0xff << 48)) | ((_x << 56)));
+	return __bswap64_const(__x);
 }
 
+
 static __inline __uint32_t
-__bswap32(__uint32_t _x)
+__bswap32_var(__uint32_t _x)
 {
 
-	return (__byte_swap_int(_x));
+	__asm ("bswap %0" : "+r" (_x));
+	return (_x);
 }
 
 static __inline __uint16_t
-__bswap16(__uint16_t _x)
+__bswap16_var(__uint16_t _x)
 {
-	return (_x << 8 | _x >> 8);
+
+	return (__bswap16_const(_x));
 }
 
+#define	__bswap64(_x)					\
+	(__builtin_constant_p(_x) ?			\
+	    __bswap64_const((__uint64_t)(_x)) : __bswap64_var(_x))
+
+#define	__bswap32(_x)					\
+	(__builtin_constant_p(_x) ?			\
+	    __bswap32_const((__uint32_t)(_x)) : __bswap32_var(_x))
+
+#define	__bswap16(_x)					\
+	(__builtin_constant_p(_x) ?			\
+	    __bswap16_const((__uint16_t)(_x)) : __bswap16_var(_x))
+
 #define	__htonl(x)	__bswap32(x)
 #define	__htons(x)	__bswap16(x)
 #define	__ntohl(x)	__bswap32(x)

Modified: projects/altix/sys/kern/kern_intr.c
==============================================================================
--- projects/altix/sys/kern/kern_intr.c	Mon Mar 21 18:20:53 2011	(r219841)
+++ projects/altix/sys/kern/kern_intr.c	Mon Mar 21 18:39:42 2011	(r219842)
@@ -74,6 +74,7 @@ struct intr_thread {
 
 /* Interrupt thread flags kept in it_flags */
 #define	IT_DEAD		0x000001	/* Thread is waiting to exit. */
+#define	IT_WAIT		0x000002	/* Thread is waiting for completion. */
 
 struct	intr_entropy {
 	struct	thread *td;
@@ -735,6 +736,39 @@ intr_handler_source(void *cookie)
 	return (ie->ie_source);
 }
 
+/*
+ * Sleep until an ithread finishes executing an interrupt handler.
+ *
+ * XXX Doesn't currently handle interrupt filters or fast interrupt
+ * handlers.  This is intended for compatibility with linux drivers
+ * only.  Do not use in BSD code.
+ */
+void
+_intr_drain(int irq)
+{
+	struct mtx *mtx;
+	struct intr_event *ie;
+	struct intr_thread *ithd;
+	struct thread *td;
+
+	ie = intr_lookup(irq);
+	if (ie == NULL)
+		return;
+	if (ie->ie_thread == NULL)
+		return;
+	ithd = ie->ie_thread;
+	td = ithd->it_thread;
+	thread_lock(td);
+	mtx = td->td_lock;
+	if (!TD_AWAITING_INTR(td)) {
+		ithd->it_flags |= IT_WAIT;
+		msleep_spin(ithd, mtx, "isync", 0);
+	}
+	mtx_unlock_spin(mtx);
+	return;
+}
+
+
 #ifndef INTR_FILTER
 int
 intr_event_remove_handler(void *cookie)
@@ -1271,6 +1305,7 @@ ithread_loop(void *arg)
 	struct intr_event *ie;
 	struct thread *td;
 	struct proc *p;
+	int wake;
 
 	td = curthread;
 	p = td->td_proc;
@@ -1279,6 +1314,7 @@ ithread_loop(void *arg)
 	    ("%s: ithread and proc linkage out of sync", __func__));
 	ie = ithd->it_event;
 	ie->ie_count = 0;
+	wake = 0;
 
 	/*
 	 * As long as we have interrupts outstanding, go through the
@@ -1319,12 +1355,20 @@ ithread_loop(void *arg)
 		 * set again, so we have to check it again.
 		 */
 		thread_lock(td);
-		if (!ithd->it_need && !(ithd->it_flags & IT_DEAD)) {
+		if (!ithd->it_need && !(ithd->it_flags & (IT_DEAD | IT_WAIT))) {
 			TD_SET_IWAIT(td);
 			ie->ie_count = 0;
 			mi_switch(SW_VOL | SWT_IWAIT, NULL);
 		}
+		if (ithd->it_flags & IT_WAIT) {
+			wake = 1;
+			ithd->it_flags &= ~IT_WAIT;
+		}
 		thread_unlock(td);
+		if (wake) {
+			wakeup(ithd);
+			wake = 0;
+		}
 	}
 }
 
@@ -1439,6 +1483,7 @@ ithread_loop(void *arg)
 	struct thread *td;
 	struct proc *p;
 	int priv;
+	int wake;
 
 	td = curthread;
 	p = td->td_proc;
@@ -1449,6 +1494,7 @@ ithread_loop(void *arg)
 	    ("%s: ithread and proc linkage out of sync", __func__));
 	ie = ithd->it_event;
 	ie->ie_count = 0;
+	wake = 0;
 
 	/*
 	 * As long as we have interrupts outstanding, go through the
@@ -1492,12 +1538,20 @@ ithread_loop(void *arg)
 		 * set again, so we have to check it again.
 		 */
 		thread_lock(td);
-		if (!ithd->it_need && !(ithd->it_flags & IT_DEAD)) {
+		if (!ithd->it_need && !(ithd->it_flags & (IT_DEAD | IT_WAIT))) {
 			TD_SET_IWAIT(td);
 			ie->ie_count = 0;
 			mi_switch(SW_VOL | SWT_IWAIT, NULL);
 		}
+		if (ithd->it_flags & IT_WAIT) {
+			wake = 1;
+			ithd->it_flags &= ~IT_WAIT;
+		}
 		thread_unlock(td);
+		if (wake) {
+			wakeup(ithd);
+			wake = 0;
+		}
 	}
 }
 

Modified: projects/altix/sys/kern/kern_jail.c
==============================================================================
--- projects/altix/sys/kern/kern_jail.c	Mon Mar 21 18:20:53 2011	(r219841)
+++ projects/altix/sys/kern/kern_jail.c	Mon Mar 21 18:39:42 2011	(r219842)
@@ -4182,7 +4182,7 @@ sysctl_jail_param(SYSCTL_HANDLER_ARGS)
 		i = 0;
 		return (SYSCTL_OUT(req, &i, sizeof(i)));
 	case CTLTYPE_STRING:
-		snprintf(numbuf, sizeof(numbuf), "%d", arg2);
+		snprintf(numbuf, sizeof(numbuf), "%jd", (intmax_t)arg2);
 		return
 		    (sysctl_handle_string(oidp, numbuf, sizeof(numbuf), req));
 	case CTLTYPE_STRUCT:

Modified: projects/altix/sys/kern/kern_sx.c
==============================================================================
--- projects/altix/sys/kern/kern_sx.c	Mon Mar 21 18:20:53 2011	(r219841)
+++ projects/altix/sys/kern/kern_sx.c	Mon Mar 21 18:39:42 2011	(r219842)
@@ -194,7 +194,7 @@ sx_sysinit(void *arg)
 {
 	struct sx_args *sargs = arg;
 
-	sx_init(sargs->sa_sx, sargs->sa_desc);
+	sx_init_flags(sargs->sa_sx, sargs->sa_desc, sargs->sa_flags);
 }
 
 void

Modified: projects/altix/sys/kern/kern_sysctl.c
==============================================================================
--- projects/altix/sys/kern/kern_sysctl.c	Mon Mar 21 18:20:53 2011	(r219841)
+++ projects/altix/sys/kern/kern_sysctl.c	Mon Mar 21 18:39:42 2011	(r219842)
@@ -365,10 +365,31 @@ sysctl_remove_oid(struct sysctl_oid *oid
 	return (error);
 }
 
+int
+sysctl_remove_name(struct sysctl_oid *parent, const char *name,
+    int del, int recurse)
+{
+	struct sysctl_oid *p, *tmp;
+	int error;
+
+	error = ENOENT;
+	SYSCTL_XLOCK();
+	SLIST_FOREACH_SAFE(p, SYSCTL_CHILDREN(parent), oid_link, tmp) {
+		if (strcmp(p->oid_name, name) == 0) {
+			error = sysctl_remove_oid_locked(p, del, recurse);
+			break;
+		}
+	}
+	SYSCTL_XUNLOCK();
+
+	return (error);
+}
+
+
 static int
 sysctl_remove_oid_locked(struct sysctl_oid *oidp, int del, int recurse)
 {
-	struct sysctl_oid *p;
+	struct sysctl_oid *p, *tmp;
 	int error;
 
 	SYSCTL_ASSERT_XLOCKED();
@@ -387,7 +408,8 @@ sysctl_remove_oid_locked(struct sysctl_o
 	 */
 	if ((oidp->oid_kind & CTLTYPE) == CTLTYPE_NODE) {
 		if (oidp->oid_refcnt == 1) {
-			SLIST_FOREACH(p, SYSCTL_CHILDREN(oidp), oid_link) {
+			SLIST_FOREACH_SAFE(p,
+			    SYSCTL_CHILDREN(oidp), oid_link, tmp) {
 				if (!recurse)
 					return (ENOTEMPTY);
 				error = sysctl_remove_oid_locked(p, del,
@@ -428,14 +450,13 @@ sysctl_remove_oid_locked(struct sysctl_o
 	}
 	return (0);
 }
-
 /*
  * Create new sysctls at run time.
  * clist may point to a valid context initialized with sysctl_ctx_init().
  */
 struct sysctl_oid *
 sysctl_add_oid(struct sysctl_ctx_list *clist, struct sysctl_oid_list *parent,
-	int number, const char *name, int kind, void *arg1, int arg2,
+	int number, const char *name, int kind, void *arg1, intptr_t arg2,
 	int (*handler)(SYSCTL_HANDLER_ARGS), const char *fmt, const char *descr)
 {
 	struct sysctl_oid *oidp;
@@ -479,6 +500,7 @@ sysctl_add_oid(struct sysctl_ctx_list *c
 		SYSCTL_CHILDREN_SET(oidp, malloc(sizeof(struct sysctl_oid_list),
 		    M_SYSCTLOID, M_WAITOK));
 		SLIST_INIT(SYSCTL_CHILDREN(oidp));
+		oidp->oid_arg2 = arg2;
 	} else {
 		oidp->oid_arg1 = arg1;
 		oidp->oid_arg2 = arg2;

Modified: projects/altix/sys/kern/subr_bus.c
==============================================================================
--- projects/altix/sys/kern/subr_bus.c	Mon Mar 21 18:20:53 2011	(r219841)
+++ projects/altix/sys/kern/subr_bus.c	Mon Mar 21 18:39:42 2011	(r219842)
@@ -1038,7 +1038,7 @@ devclass_driver_added(devclass_t dc, dri
  * @param dc		the devclass to edit
  * @param driver	the driver to register
  */
-static int
+int
 devclass_add_driver(devclass_t dc, driver_t *driver, int pass, devclass_t *dcp)
 {
 	driverlink_t dl;
@@ -1172,7 +1172,7 @@ devclass_driver_deleted(devclass_t buscl
  * @param dc		the devclass to edit
  * @param driver	the driver to unregister
  */
-static int
+int
 devclass_delete_driver(devclass_t busclass, driver_t *driver)
 {
 	devclass_t dc = devclass_find(driver->name);

Modified: projects/altix/sys/modules/Makefile
==============================================================================
--- projects/altix/sys/modules/Makefile	Mon Mar 21 18:20:53 2011	(r219841)
+++ projects/altix/sys/modules/Makefile	Mon Mar 21 18:39:42 2011	(r219842)
@@ -185,6 +185,9 @@ SUBDIR=	${_3dfx} \
 	mfi \
 	mii \
 	mlx \
+	mlx4 \
+	mlx4ib \
+	mlxen \
 	${_mly} \
 	mmc \
 	mmcsd \
@@ -195,6 +198,7 @@ SUBDIR=	${_3dfx} \
 	msdosfs_iconv \
 	${_mse} \
 	msk \
+	mthca \
 	mvs \
 	mwl \
 	mwlfw \

Modified: projects/altix/sys/net/if.c
==============================================================================
--- projects/altix/sys/net/if.c	Mon Mar 21 18:20:53 2011	(r219841)
+++ projects/altix/sys/net/if.c	Mon Mar 21 18:39:42 2011	(r219842)
@@ -1881,6 +1881,11 @@ if_route(struct ifnet *ifp, int flag, in
 
 void	(*vlan_link_state_p)(struct ifnet *);	/* XXX: private from if_vlan */
 void	(*vlan_trunk_cap_p)(struct ifnet *);		/* XXX: private from if_vlan */
+struct ifnet *(*vlan_trunkdev_p)(struct ifnet *);
+struct	ifnet *(*vlan_devat_p)(struct ifnet *, uint16_t);
+int	(*vlan_tag_p)(struct ifnet *, uint16_t *);
+int	(*vlan_setcookie_p)(struct ifnet *, void *);
+void	*(*vlan_cookie_p)(struct ifnet *);
 
 /*
  * Handle a change in the interface link state. To avoid LORs
@@ -1935,6 +1940,7 @@ do_link_state_change(void *arg, int pend
 	if (log_link_state_change)
 		log(LOG_NOTICE, "%s: link state changed to %s\n", ifp->if_xname,
 		    (link_state == LINK_STATE_UP) ? "UP" : "DOWN" );
+	EVENTHANDLER_INVOKE(ifnet_link_event, ifp, ifp->if_link_state);
 	CURVNET_RESTORE();
 }
 

Modified: projects/altix/sys/net/if_arp.h
==============================================================================
--- projects/altix/sys/net/if_arp.h	Mon Mar 21 18:20:53 2011	(r219841)
+++ projects/altix/sys/net/if_arp.h	Mon Mar 21 18:39:42 2011	(r219842)
@@ -50,6 +50,7 @@ struct	arphdr {
 #define ARPHRD_ARCNET	7	/* arcnet hardware format */
 #define ARPHRD_FRELAY 	15	/* frame relay hardware format */
 #define ARPHRD_IEEE1394	24	/* firewire hardware format */
+#define ARPHRD_INFINIBAND 32	/* infiniband hardware format */
 	u_short	ar_pro;		/* format of protocol address */
 	u_char	ar_hln;		/* length of hardware address */
 	u_char	ar_pln;		/* length of protocol address */

Modified: projects/altix/sys/net/if_llatbl.h
==============================================================================
--- projects/altix/sys/net/if_llatbl.h	Mon Mar 21 18:20:53 2011	(r219841)
+++ projects/altix/sys/net/if_llatbl.h	Mon Mar 21 18:39:42 2011	(r219842)
@@ -30,6 +30,8 @@ __FBSDID("$FreeBSD$");
 #ifndef	_NET_IF_LLATBL_H_
 #define	_NET_IF_LLATBL_H_
 
+#include "opt_ofed.h"
+
 #include <sys/_rwlock.h>
 #include <netinet/in.h>

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


More information about the svn-src-projects mailing list