Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland...
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 27 Oct 2010 00:54:22 +0000 (17:54 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 27 Oct 2010 00:54:22 +0000 (17:54 -0700)
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband: (63 commits)
  IB/qib: clean up properly if pci_set_consistent_dma_mask() fails
  IB/qib: Allow driver to load if PCIe AER fails
  IB/qib: Fix uninitialized pointer if CONFIG_PCI_MSI not set
  IB/qib: Fix extra log level in qib_early_err()
  RDMA/cxgb4: Remove unnecessary KERN_<level> use
  RDMA/cxgb3: Remove unnecessary KERN_<level> use
  IB/core: Add link layer type information to sysfs
  IB/mlx4: Add VLAN support for IBoE
  IB/core: Add VLAN support for IBoE
  IB/mlx4: Add support for IBoE
  mlx4_en: Change multicast promiscuous mode to support IBoE
  mlx4_core: Update data structures and constants for IBoE
  mlx4_core: Allow protocol drivers to find corresponding interfaces
  IB/uverbs: Return link layer type to userspace for query port operation
  IB/srp: Sync buffer before posting send
  IB/srp: Use list_first_entry()
  IB/srp: Reduce number of BUSY conditions
  IB/srp: Eliminate two forward declarations
  IB/mlx4: Signal node desc changes to SM by using FW to generate trap 144
  IB: Replace EXTRA_CFLAGS with ccflags-y
  ...

13 files changed:
1  2 
MAINTAINERS
drivers/infiniband/hw/nes/nes_cm.c
drivers/infiniband/hw/nes/nes_verbs.c
drivers/infiniband/ulp/ipoib/ipoib_main.c
drivers/net/mlx4/en_main.c
drivers/net/mlx4/en_netdev.c
drivers/net/mlx4/en_port.c
drivers/net/mlx4/en_port.h
drivers/net/mlx4/fw.c
drivers/net/mlx4/main.c
drivers/net/mlx4/mlx4_en.h
include/linux/mlx4/cmd.h
include/linux/mlx4/device.h

diff --combined MAINTAINERS
index 635f8801c45a82614413ce099877de44d88fc20c,f94cfc6f4c5d14bdb0e52ead60fa963e5cdd73fa..bbcaf31657ae62bad145f997eb2bdc61b32ae940
@@@ -157,11 -157,9 +157,11 @@@ S:       Maintaine
  F:    drivers/net/r8169.c
  
  8250/16?50 (AND CLONE UARTS) SERIAL DRIVER
 +M:    Greg Kroah-Hartman <gregkh@suse.de>
  L:    linux-serial@vger.kernel.org
  W:    http://serial.sourceforge.net
 -S:    Orphan
 +S:    Maintained
 +T:    quilt kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/
  F:    drivers/serial/8250*
  F:    include/linux/serial_8250.h
  
@@@ -243,6 -241,21 +243,6 @@@ F:        drivers/pnp/pnpacpi
  F:    include/linux/acpi.h
  F:    include/acpi/
  
 -ACPI BATTERY DRIVERS
 -M:    Alexey Starikovskiy <astarikovskiy@suse.de>
 -L:    linux-acpi@vger.kernel.org
 -W:    http://www.lesswatts.org/projects/acpi/
 -S:    Supported
 -F:    drivers/acpi/battery.c
 -F:    drivers/acpi/*sbs*
 -
 -ACPI EC DRIVER
 -M:    Alexey Starikovskiy <astarikovskiy@suse.de>
 -L:    linux-acpi@vger.kernel.org
 -W:    http://www.lesswatts.org/projects/acpi/
 -S:    Supported
 -F:    drivers/acpi/ec.c
 -
  ACPI FAN DRIVER
  M:    Zhang Rui <rui.zhang@intel.com>
  L:    linux-acpi@vger.kernel.org
@@@ -642,7 -655,7 +642,7 @@@ ARM/FARADAY FA526 POR
  M:    Hans Ulli Kroll <ulli.kroll@googlemail.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
 -T:    git://git.berlios.de/gemini-board
 +T:    git git://git.berlios.de/gemini-board
  F:    arch/arm/mm/*-fa*
  
  ARM/FOOTBRIDGE ARCHITECTURE
@@@ -657,7 -670,7 +657,7 @@@ ARM/FREESCALE IMX / MXC ARM ARCHITECTUR
  M:    Sascha Hauer <kernel@pengutronix.de>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
 -T:    git://git.pengutronix.de/git/imx/linux-2.6.git
 +T:    git git://git.pengutronix.de/git/imx/linux-2.6.git
  F:    arch/arm/mach-mx*/
  F:    arch/arm/plat-mxc/
  
@@@ -695,7 -708,8 +695,7 @@@ ARM/INCOME PXA270 SUPPOR
  M:    Marek Vasut <marek.vasut@gmail.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
 -F:    arch/arm/mach-pxa/income.c
 -F:    arch/arm/mach-pxa/include/mach-pxa/income.h
 +F:    arch/arm/mach-pxa/colibri-pxa270-income.c
  
  ARM/INTEL IOP32X ARM ARCHITECTURE
  M:    Lennert Buytenhek <kernel@wantstofly.org>
@@@ -742,7 -756,13 +742,7 @@@ L:        linux-arm-kernel@lists.infradead.or
  S:    Maintained
  F:    arch/arm/mach-ixp4xx/
  
 -ARM/INTEL RESEARCH IMOTE 2 MACHINE SUPPORT
 -M:    Jonathan Cameron <jic23@cam.ac.uk>
 -L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -S:    Maintained
 -F:    arch/arm/mach-pxa/imote2.c
 -
 -ARM/INTEL RESEARCH STARGATE 2 MACHINE SUPPORT
 +ARM/INTEL RESEARCH IMOTE/STARGATE 2 MACHINE SUPPORT
  M:    Jonathan Cameron <jic23@cam.ac.uk>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
@@@ -907,37 -927,40 +907,37 @@@ W:      http://www.fluff.org/ben/linux
  S:    Maintained
  F:    arch/arm/mach-s3c2410/
  
 -ARM/S3C2440 ARM ARCHITECTURE
 +ARM/S3C244x ARM ARCHITECTURE
  M:    Ben Dooks <ben-linux@fluff.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  W:    http://www.fluff.org/ben/linux/
  S:    Maintained
  F:    arch/arm/mach-s3c2440/
 +F:    arch/arm/mach-s3c2443/
  
 -ARM/S3C2442 ARM ARCHITECTURE
 -M:    Ben Dooks <ben-linux@fluff.org>
 -L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -W:    http://www.fluff.org/ben/linux/
 -S:    Maintained
 -F:    arch/arm/mach-s3c2442/
 -
 -ARM/S3C2443 ARM ARCHITECTURE
 +ARM/S3C64xx ARM ARCHITECTURE
  M:    Ben Dooks <ben-linux@fluff.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  W:    http://www.fluff.org/ben/linux/
  S:    Maintained
 -F:    arch/arm/mach-s3c2443/
 +F:    arch/arm/mach-s3c64xx/
  
 -ARM/S3C6400 ARM ARCHITECTURE
 -M:    Ben Dooks <ben-linux@fluff.org>
 +ARM/S5P ARM ARCHITECTURES
 +M:    Kukjin Kim <kgene.kim@samsung.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -W:    http://www.fluff.org/ben/linux/
 +L:    linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
  S:    Maintained
 -F:    arch/arm/mach-s3c6400/
 +F:    arch/arm/mach-s5p*/
  
 -ARM/S3C6410 ARM ARCHITECTURE
 -M:    Ben Dooks <ben-linux@fluff.org>
 -L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -W:    http://www.fluff.org/ben/linux/
 +ARM/SAMSUNG S5P SERIES FIMC SUPPORT
 +M:    Kyungmin Park <kyungmin.park@samsung.com>
 +M:    Sylwester Nawrocki <s.nawrocki@samsung.com>
 +L:    linux-arm-kernel@lists.infradead.org
 +L:    linux-media@vger.kernel.org
  S:    Maintained
 -F:    arch/arm/mach-s3c6410/
 +F:    arch/arm/plat-s5p/dev-fimc*
 +F:    arch/arm/plat-samsung/include/plat/*fimc*
 +F:    drivers/media/video/s5p-fimc/
  
  ARM/SHMOBILE ARM ARCHITECTURE
  M:    Paul Mundt <lethal@linux-sh.org>
@@@ -950,23 -973,11 +950,23 @@@ S:      Supporte
  F:    arch/arm/mach-shmobile/
  F:    drivers/sh/
  
 +ARM/TELECHIPS ARM ARCHITECTURE
 +M:    "Hans J. Koch" <hjk@linutronix.de>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +S:    Maintained
 +F:    arch/arm/plat-tcc/
 +F:    arch/arm/mach-tcc8k/
 +
  ARM/TECHNOLOGIC SYSTEMS TS7250 MACHINE SUPPORT
  M:    Lennert Buytenhek <kernel@wantstofly.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  
 +ARM/TETON BGA MACHINE SUPPORT
 +M:    Mark F. Brown <mark.brown314@gmail.com>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +S:    Maintained
 +
  ARM/THECUS N2100 MACHINE SUPPORT
  M:    Lennert Buytenhek <kernel@wantstofly.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -1109,13 -1120,6 +1109,13 @@@ W:    http://wireless.kernel.org/en/users/
  S:    Maintained
  F:    drivers/net/wireless/ath/ar9170/
  
 +CARL9170 LINUX COMMUNITY WIRELESS DRIVER
 +M:    Christian Lamparter <chunkeey@googlemail.com>
 +L:    linux-wireless@vger.kernel.org
 +W:    http://wireless.kernel.org/en/users/Drivers/carl9170
 +S:    Maintained
 +F:    drivers/net/wireless/ath/carl9170/
 +
  ATK0110 HWMON DRIVER
  M:    Luca Tettamanti <kronos.it@gmail.com>
  L:    lm-sensors@lm-sensors.org
@@@ -1340,19 -1344,16 +1340,19 @@@ F:   drivers/mtd/devices/block2mtd.
  
  BLUETOOTH DRIVERS
  M:    Marcel Holtmann <marcel@holtmann.org>
 +M:    Gustavo F. Padovan <padovan@profusion.mobi>
  L:    linux-bluetooth@vger.kernel.org
  W:    http://www.bluez.org/
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/padovan/bluetooth-2.6.git
  S:    Maintained
  F:    drivers/bluetooth/
  
  BLUETOOTH SUBSYSTEM
  M:    Marcel Holtmann <marcel@holtmann.org>
 +M:    Gustavo F. Padovan <padovan@profusion.mobi>
  L:    linux-bluetooth@vger.kernel.org
  W:    http://www.bluez.org/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/holtmann/bluetooth-2.6.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/padovan/bluetooth-2.6.git
  S:    Maintained
  F:    net/bluetooth/
  F:    include/net/bluetooth/
@@@ -1397,13 -1398,6 +1397,13 @@@ L:    linux-scsi@vger.kernel.or
  S:    Supported
  F:    drivers/scsi/bfa/
  
 +BROCADE BNA 10 GIGABIT ETHERNET DRIVER
 +M:    Rasesh Mody <rmody@brocade.com>
 +M:    Debashis Dutt <ddutt@brocade.com>
 +L:    netdev@vger.kernel.org
 +S:    Supported
 +F:    drivers/net/bna/
 +
  BSG (block layer generic sg v4 driver)
  M:    FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
  L:    linux-scsi@vger.kernel.org
@@@ -1516,12 -1510,11 +1516,12 @@@ T:   git git://git.kernel.org/pub/scm/lin
  S:    Supported
  F:    Documentation/filesystems/ceph.txt
  F:    fs/ceph
 +F:    net/ceph
 +F:    include/linux/ceph
  
  CERTIFIED WIRELESS USB (WUSB) SUBSYSTEM:
 -M:    David Vrabel <david.vrabel@csr.com>
  L:    linux-usb@vger.kernel.org
 -S:    Supported
 +S:    Orphan
  F:    Documentation/usb/WUSB-Design-overview.txt
  F:    Documentation/usb/wusb-cbaf
  F:    drivers/usb/host/hwa-hc.c
@@@ -1560,9 -1553,9 +1560,9 @@@ S:      Supporte
  F:    scripts/checkpatch.pl
  
  CISCO VIC ETHERNET NIC DRIVER
 -M:    Scott Feldman <scofeldm@cisco.com>
  M:    Vasanthy Kolluri <vkolluri@cisco.com>
  M:    Roopa Prabhu <roprabhu@cisco.com>
 +M:    David Wang <dwang2@cisco.com>
  S:    Supported
  F:    drivers/net/enic/
  
@@@ -2040,16 -2033,14 +2040,16 @@@ F:   drivers/block/drbd
  F:    lib/lru_cache.c
  F:    Documentation/blockdev/drbd/
  
 -DRIVER CORE, KOBJECTS, AND SYSFS
 +DRIVER CORE, KOBJECTS, DEBUGFS AND SYSFS
  M:    Greg Kroah-Hartman <gregkh@suse.de>
  T:    quilt kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/
  S:    Supported
  F:    Documentation/kobject.txt
  F:    drivers/base/
  F:    fs/sysfs/
 +F:    fs/debugfs/
  F:    include/linux/kobj*
 +F:    include/linux/debugfs.h
  F:    lib/kobj*
  
  DRM DRIVERS
@@@ -2169,13 -2160,6 +2169,13 @@@ W:    bluesmoke.sourceforge.ne
  S:    Maintained
  F:    drivers/edac/i5400_edac.c
  
 +EDAC-I7300
 +M:    Mauro Carvalho Chehab <mchehab@redhat.com>
 +L:    linux-edac@vger.kernel.org
 +W:    bluesmoke.sourceforge.net
 +S:    Maintained
 +F:    drivers/edac/i7300_edac.c
 +
  EDAC-I7CORE
  M:    Mauro Carvalho Chehab <mchehab@redhat.com>
  L:    linux-edac@vger.kernel.org
@@@ -2544,7 -2528,7 +2544,7 @@@ S:      Supporte
  F:    drivers/scsi/gdt*
  
  GENERIC GPIO I2C DRIVER
 -M:    Haavard Skinnemoen <hskinnemoen@atmel.com>
 +M:    Haavard Skinnemoen <hskinnemoen@gmail.com>
  S:    Supported
  F:    drivers/i2c/busses/i2c-gpio.c
  F:    include/linux/i2c-gpio.h
@@@ -2603,10 -2587,10 +2603,10 @@@ F:   drivers/net/greth
  
  HARD DRIVE ACTIVE PROTECTION SYSTEM (HDAPS) DRIVER
  M:    Frank Seidel <frank@f-seidel.de>
 -L:    lm-sensors@lm-sensors.org
 +L:    platform-driver-x86@vger.kernel.org
  W:    http://www.kernel.org/pub/linux/kernel/people/fseidel/hdaps/
  S:    Maintained
 -F:    drivers/hwmon/hdaps.c
 +F:    drivers/platform/x86/hdaps.c
  
  HWPOISON MEMORY FAILURE HANDLING
  M:    Andi Kleen <andi@firstfloor.org>
@@@ -2903,12 -2887,6 +2903,12 @@@ M:    Brian King <brking@us.ibm.com
  S:    Supported
  F:    drivers/scsi/ipr.*
  
 +IBM Power Virtual Ethernet Device Driver
 +M:    Santiago Leon <santil@linux.vnet.ibm.com>
 +L:    netdev@vger.kernel.org
 +S:    Supported
 +F:    drivers/net/ibmveth.*
 +
  IBM ServeRAID RAID DRIVER
  P:    Jack Hammer
  M:    Dave Jeffery <ipslinux@adaptec.com>
@@@ -2973,7 -2951,7 +2973,7 @@@ M:      Roland Dreier <rolandd@cisco.com
  M:    Sean Hefty <sean.hefty@intel.com>
  M:    Hal Rosenstock <hal.rosenstock@gmail.com>
  L:    linux-rdma@vger.kernel.org
- W:    http://www.openib.org/
+ W:    http://www.openfabrics.org/
  Q:    http://patchwork.kernel.org/project/linux-rdma/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git
  S:    Supported
@@@ -3078,27 -3056,16 +3078,27 @@@ L:   netdev@vger.kernel.or
  S:    Maintained
  F:    drivers/net/ixp2000/
  
 -INTEL ETHERNET DRIVERS (e100/e1000/e1000e/igb/igbvf/ixgb/ixgbe)
 +INTEL ETHERNET DRIVERS (e100/e1000/e1000e/igb/igbvf/ixgb/ixgbe/ixgbevf)
  M:    Jeff Kirsher <jeffrey.t.kirsher@intel.com>
  M:    Jesse Brandeburg <jesse.brandeburg@intel.com>
  M:    Bruce Allan <bruce.w.allan@intel.com>
 -M:    Alex Duyck <alexander.h.duyck@intel.com>
 +M:    Carolyn Wyborny <carolyn.wyborny@intel.com>
 +M:    Don Skidmore <donald.c.skidmore@intel.com>
 +M:    Greg Rose <gregory.v.rose@intel.com>
  M:    PJ Waskiewicz <peter.p.waskiewicz.jr@intel.com>
 +M:    Alex Duyck <alexander.h.duyck@intel.com>
  M:    John Ronciak <john.ronciak@intel.com>
  L:    e1000-devel@lists.sourceforge.net
  W:    http://e1000.sourceforge.net/
  S:    Supported
 +F:    Documentation/networking/e100.txt
 +F:    Documentation/networking/e1000.txt
 +F:    Documentation/networking/e1000e.txt
 +F:    Documentation/networking/igb.txt
 +F:    Documentation/networking/igbvf.txt
 +F:    Documentation/networking/ixgb.txt
 +F:    Documentation/networking/ixgbe.txt
 +F:    Documentation/networking/ixgbevf.txt
  F:    drivers/net/e100.c
  F:    drivers/net/e1000/
  F:    drivers/net/e1000e/
@@@ -3106,7 -3073,6 +3106,7 @@@ F:      drivers/net/igb
  F:    drivers/net/igbvf/
  F:    drivers/net/ixgb/
  F:    drivers/net/ixgbe/
 +F:    drivers/net/ixgbevf/
  
  INTEL PRO/WIRELESS 2100 NETWORK CONNECTION SUPPORT
  L:    linux-wireless@vger.kernel.org
@@@ -3167,7 -3133,7 +3167,7 @@@ F:      drivers/net/ioc3-eth.
  
  IOC3 SERIAL DRIVER
  M:    Pat Gefre <pfg@sgi.com>
 -L:    linux-mips@linux-mips.org
 +L:    linux-serial@vger.kernel.org
  S:    Maintained
  F:    drivers/serial/ioc3_serial.c
  
@@@ -3244,12 -3210,6 +3244,12 @@@ F:    drivers/net/irda
  F:    include/net/irda/
  F:    net/irda/
  
 +IRQ SUBSYSTEM
 +M:    Thomas Gleixner <tglx@linutronix.de>
 +S:    Maintained
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip.git irq/core
 +F:    kernel/irq/
 +
  ISAPNP
  M:    Jaroslav Kysela <perex@perex.cz>
  S:    Maintained
@@@ -3342,12 -3302,6 +3342,12 @@@ F:    fs/jbd*
  F:    include/linux/ext*jbd*.h
  F:    include/linux/jbd*.h
  
 +JSM Neo PCI based serial card
 +M:    Breno Leitao <leitao@linux.vnet.ibm.com>
 +L:    linux-serial@vger.kernel.org
 +S:    Maintained
 +F:    drivers/serial/jsm/
 +
  K8TEMP HARDWARE MONITORING DRIVER
  M:    Rudolf Marek <r.marek@assembler.cz>
  L:    lm-sensors@lm-sensors.org
@@@ -3398,7 -3352,7 +3398,7 @@@ F:      scripts/package
  
  KERNEL JANITORS
  L:    kernel-janitors@vger.kernel.org
 -W:    http://janitor.kernelnewbies.org/
 +W:    http://kernelnewbies.org/KernelJanitors
  S:    Odd Fixes
  
  KERNEL NFSD, SUNRPC, AND LOCKD SERVERS
@@@ -3723,13 -3677,6 +3723,13 @@@ L:    linux-scsi@vger.kernel.or
  S:    Maintained
  F:    drivers/scsi/sym53c8xx_2/
  
 +LTC4261 HARDWARE MONITOR DRIVER
 +M:    Guenter Roeck <linux@roeck-us.net>
 +L:    lm-sensors@lm-sensors.org
 +S:    Maintained
 +F:    Documentation/hwmon/ltc4261
 +F:    drivers/hwmon/ltc4261.c
 +
  LTP (Linux Test Project)
  M:    Rishikesh K Rajak <risrajak@linux.vnet.ibm.com>
  M:    Garrett Cooper <yanegomi@gmail.com>
@@@ -3825,7 -3772,7 +3825,7 @@@ F:      drivers/net/wireless/mwl8k.
  MARVELL SOC MMC/SD/SDIO CONTROLLER DRIVER
  M:    Nicolas Pitre <nico@fluxnic.net>
  S:    Odd Fixes
 -F: drivers/mmc/host/mvsdio.*
 +F:    drivers/mmc/host/mvsdio.*
  
  MARVELL YUKON / SYSKONNECT DRIVER
  M:    Mirko Lindner <mlindner@syskonnect.de>
@@@ -3834,8 -3781,9 +3834,8 @@@ W:      http://www.syskonnect.co
  S:    Supported
  
  MATROX FRAMEBUFFER DRIVER
 -M:    Petr Vandrovec <vandrove@vc.cvut.cz>
  L:    linux-fbdev@vger.kernel.org
 -S:    Maintained
 +S:    Orphan
  F:    drivers/video/matrox/matroxfb_*
  F:    include/linux/matroxfb.h
  
@@@ -4022,8 -3970,8 +4022,8 @@@ S:      Maintaine
  F:    drivers/net/natsemi.c
  
  NCP FILESYSTEM
 -M:    Petr Vandrovec <vandrove@vc.cvut.cz>
 -S:    Maintained
 +M:    Petr Vandrovec <petr@vandrovec.name>
 +S:    Odd Fixes
  F:    fs/ncpfs/
  
  NCR DUAL 700 SCSI DRIVER (MICROCHANNEL)
@@@ -4386,12 -4334,13 +4386,12 @@@ F:   Documentation/filesystems/dlmfs.tx
  F:    fs/ocfs2/
  
  ORINOCO DRIVER
 -M:    Pavel Roskin <proski@gnu.org>
 -M:    David Gibson <hermes@gibson.dropbear.id.au>
  L:    linux-wireless@vger.kernel.org
  L:    orinoco-users@lists.sourceforge.net
  L:    orinoco-devel@lists.sourceforge.net
 +W:    http://linuxwireless.org/en/users/Drivers/orinoco
  W:    http://www.nongnu.org/orinoco/
 -S:    Maintained
 +S:    Orphan
  F:    drivers/net/wireless/orinoco/
  
  OSD LIBRARY and FILESYSTEM
@@@ -4424,15 -4373,6 +4424,15 @@@ L:    linux-i2c@vger.kernel.or
  S:    Maintained
  F:    drivers/i2c/busses/i2c-pasemi.c
  
 +PADATA PARALLEL EXECUTION MECHANISM
 +M:    Steffen Klassert <steffen.klassert@secunet.com>
 +L:    linux-kernel@vger.kernel.org
 +L:    linux-crypto@vger.kernel.org
 +S:    Maintained
 +F:    kernel/padata.c
 +F:    include/linux/padata.h
 +F:    Documentation/padata.txt
 +
  PANASONIC LAPTOP ACPI EXTRAS DRIVER
  M:    Harald Welte <laforge@gnumonks.org>
  L:    platform-driver-x86@vger.kernel.org
@@@ -4512,12 -4452,6 +4512,12 @@@ S:    Maintaine
  F:    drivers/leds/leds-pca9532.c
  F:    include/linux/leds-pca9532.h
  
 +PCA9541 I2C BUS MASTER SELECTOR DRIVER
 +M:    Guenter Roeck <guenter.roeck@ericsson.com>
 +L:    linux-i2c@vger.kernel.org
 +S:    Maintained
 +F:    drivers/i2c/muxes/pca9541.c
 +
  PCA9564/PCA9665 I2C BUS DRIVER
  M:    Wolfram Sang <w.sang@pengutronix.de>
  L:    linux-i2c@vger.kernel.org
@@@ -4566,13 -4500,6 +4566,13 @@@ L:    netdev@vger.kernel.or
  S:    Maintained
  F:    drivers/net/pcnet32.c
  
 +PCRYPT PARALLEL CRYPTO ENGINE
 +M:    Steffen Klassert <steffen.klassert@secunet.com>
 +L:    linux-crypto@vger.kernel.org
 +S:    Maintained
 +F:    crypto/pcrypt.c
 +F:    include/crypto/pcrypt.h
 +
  PER-TASK DELAY ACCOUNTING
  M:    Balbir Singh <balbir@linux.vnet.ibm.com>
  S:    Maintained
@@@ -4601,14 -4528,6 +4601,14 @@@ L:    linux-abi-devel@lists.sourceforge.ne
  S:    Maintained
  F:    include/linux/personality.h
  
 +PHONET PROTOCOL
 +M:    Remi Denis-Courmont <remi.denis-courmont@nokia.com>
 +S:    Supported
 +F:    Documentation/networking/phonet.txt
 +F:    include/linux/phonet.h
 +F:    include/net/phonet/
 +F:    net/phonet/
 +
  PHRAM MTD DRIVER
  M:    Joern Engel <joern@lazybastard.org>
  L:    linux-mtd@lists.infradead.org
@@@ -4858,15 -4777,6 +4858,15 @@@ F:    fs/qnx4
  F:    include/linux/qnx4_fs.h
  F:    include/linux/qnxtypes.h
  
 +RADOS BLOCK DEVICE (RBD)
 +F:    include/linux/qnxtypes.h
 +M:    Yehuda Sadeh <yehuda@hq.newdream.net>
 +M:    Sage Weil <sage@newdream.net>
 +M:    ceph-devel@vger.kernel.org
 +S:    Supported
 +F:    drivers/block/rbd.c
 +F:    drivers/block/rbd_types.h
 +
  RADEON FRAMEBUFFER DISPLAY DRIVER
  M:    Benjamin Herrenschmidt <benh@kernel.crashing.org>
  L:    linux-fbdev@vger.kernel.org
@@@ -4916,7 -4826,7 +4916,7 @@@ RCUTORTURE MODUL
  M:    Josh Triplett <josh@freedesktop.org>
  M:    "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
  S:    Supported
 -T:    git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-2.6-rcu.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-2.6-rcu.git
  F:    Documentation/RCU/torture.txt
  F:    kernel/rcutorture.c
  
@@@ -4941,7 -4851,7 +4941,7 @@@ M:      Dipankar Sarma <dipankar@in.ibm.com
  M:    "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
  W:    http://www.rdrop.com/users/paulmck/rclock/
  S:    Supported
 -T:    git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-2.6-rcu.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-2.6-rcu.git
  F:    Documentation/RCU/
  F:    include/linux/rcu*
  F:    include/linux/srcu*
@@@ -5092,12 -5002,6 +5092,12 @@@ F:    drivers/media/common/saa7146
  F:    drivers/media/video/*7146*
  F:    include/media/*7146*
  
 +SAMSUNG AUDIO (ASoC) DRIVERS
 +M:    Jassi Brar <jassi.brar@samsung.com>
 +L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
 +S:    Supported
 +F:    sound/soc/s3c24xx
 +
  TLG2300 VIDEO4LINUX-2 DRIVER
  M:    Huang Shijie <shijie8@gmail.com>
  M:    Kang Yong <kangyong@telegent.com>
@@@ -5131,6 -5035,16 +5131,16 @@@ W:    http://www.kernel.d
  S:    Maintained
  F:    drivers/scsi/sr*
  
+ SCSI RDMA PROTOCOL (SRP) INITIATOR
+ M:    David Dillow <dillowda@ornl.gov>
+ L:    linux-rdma@vger.kernel.org
+ S:    Supported
+ W:    http://www.openfabrics.org
+ Q:    http://patchwork.kernel.org/project/linux-rdma/list/
+ T:    git git://git.kernel.org/pub/scm/linux/kernel/git/dad/srp-initiator.git
+ F:    drivers/infiniband/ulp/srp/
+ F:    include/scsi/srp.h
  SCSI SG DRIVER
  M:    Doug Gilbert <dgilbert@interlog.com>
  L:    linux-scsi@vger.kernel.org
@@@ -5353,8 -5267,8 +5363,8 @@@ F:      drivers/*/*s3c2410
  F:    drivers/*/*/*s3c2410*
  
  TI DAVINCI MACHINE SUPPORT
 -P:    Kevin Hilman
 -M:    davinci-linux-open-source@linux.davincidsp.com
 +M:    Kevin Hilman <khilman@deeprootsystems.com>
 +L:    davinci-linux-open-source@linux.davincidsp.com (subscribers-only)
  Q:    http://patchwork.kernel.org/project/linux-davinci/list/
  S:    Supported
  F:    arch/arm/mach-davinci
@@@ -5955,9 -5869,13 +5965,9 @@@ F:     Documentation/filesystems/ufs.tx
  F:    fs/ufs/
  
  ULTRA-WIDEBAND (UWB) SUBSYSTEM:
 -M:    David Vrabel <david.vrabel@csr.com>
  L:    linux-usb@vger.kernel.org
 -S:    Supported
 +S:    Orphan
  F:    drivers/uwb/
 -X:    drivers/uwb/wlp/
 -X:    drivers/uwb/i1480/i1480u-wlp/
 -X:    drivers/uwb/i1480/i1480-wlp.h
  F:    include/linux/uwb.h
  F:    include/linux/uwb/
  
@@@ -5992,14 -5910,6 +6002,14 @@@ S:    Maintaine
  F:    Documentation/usb/acm.txt
  F:    drivers/usb/class/cdc-acm.*
  
 +USB ATTACHED SCSI
 +M:    Matthew Wilcox <willy@linux.intel.com>
 +M:    Sarah Sharp <sarah.a.sharp@linux.intel.com>
 +L:    linux-usb@vger.kernel.org
 +L:    linux-scsi@vger.kernel.org
 +S:    Supported
 +F:    drivers/usb/storage/uas.c
 +
  USB BLOCK DRIVER (UB ub)
  M:    Pete Zaitcev <zaitcev@redhat.com>
  L:    linux-usb@vger.kernel.org
@@@ -6099,6 -6009,13 +6109,6 @@@ L:     linux-usb@vger.kernel.or
  S:    Maintained
  F:    drivers/usb/serial/option.c
  
 -USB OV511 DRIVER
 -M:    Mark McClelland <mmcclell@bigfoot.com>
 -L:    linux-usb@vger.kernel.org
 -W:    http://alpha.dyndns.org/ov511/
 -S:    Maintained
 -F:    drivers/media/video/ov511.*
 -
  USB PEGASUS DRIVER
  M:    Petko Manolov <petkan@users.sourceforge.net>
  L:    linux-usb@vger.kernel.org
@@@ -6259,6 -6176,16 +6269,6 @@@ S:     Supporte
  F:    drivers/usb/host/xhci*
  F:    drivers/usb/host/pci-quirks*
  
 -USB ZC0301 DRIVER
 -M:    Luca Risolia <luca.risolia@studio.unibo.it>
 -L:    linux-usb@vger.kernel.org
 -L:    linux-media@vger.kernel.org
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
 -W:    http://www.linux-projects.org
 -S:    Maintained
 -F:    Documentation/video4linux/zc0301.txt
 -F:    drivers/media/video/zc0301/
 -
  USB ZD1201 DRIVER
  L:    linux-wireless@vger.kernel.org
  W:    http://linux-lc100020.sourceforge.net
@@@ -6476,27 -6403,36 +6486,27 @@@ F:   include/linux/wimax/debug.
  F:    include/net/wimax.h
  F:    net/wimax/
  
 -WIMEDIA LLC PROTOCOL (WLP) SUBSYSTEM
 -M:    David Vrabel <david.vrabel@csr.com>
 -L:    netdev@vger.kernel.org
 -S:    Maintained
 -F:    include/linux/wlp.h
 -F:    drivers/uwb/wlp/
 -F:    drivers/uwb/i1480/i1480u-wlp/
 -F:    drivers/uwb/i1480/i1480-wlp.h
 -
  WISTRON LAPTOP BUTTON DRIVER
  M:    Miloslav Trmac <mitr@volny.cz>
  S:    Maintained
  F:    drivers/input/misc/wistron_btns.c
  
  WL1251 WIRELESS DRIVER
 -M:    Kalle Valo <kalle.valo@iki.fi>
 +M:    Kalle Valo <kvalo@adurom.com>
  L:    linux-wireless@vger.kernel.org
  W:    http://wireless.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git
  S:    Maintained
 -F:    drivers/net/wireless/wl12xx/*
 -X:    drivers/net/wireless/wl12xx/wl1271*
 +F:    drivers/net/wireless/wl1251/*
  
  WL1271 WIRELESS DRIVER
  M:    Luciano Coelho <luciano.coelho@nokia.com>
  L:    linux-wireless@vger.kernel.org
  W:    http://wireless.kernel.org
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/luca/wl12xx.git
  S:    Maintained
  F:    drivers/net/wireless/wl12xx/wl1271*
 +F:    include/linux/wl12xx.h
  
  WL3501 WIRELESS PCMCIA CARD DRIVER
  M:    Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
@@@ -6518,10 -6454,8 +6528,10 @@@ F:    include/linux/wm97xx.
  WOLFSON MICROELECTRONICS DRIVERS
  M:    Mark Brown <broonie@opensource.wolfsonmicro.com>
  M:    Ian Lartey <ian@opensource.wolfsonmicro.com>
 +M:    Dimitris Papastamos <dp@opensource.wolfsonmicro.com>
 +T:    git git://opensource.wolfsonmicro.com/linux-2.6-asoc
  T:    git git://opensource.wolfsonmicro.com/linux-2.6-audioplus
 -W:    http://opensource.wolfsonmicro.com/node/8
 +W:    http://opensource.wolfsonmicro.com/content/linux-drivers-wolfson-devices
  S:    Supported
  F:    Documentation/hwmon/wm83??
  F:    drivers/leds/leds-wm83*.c
@@@ -6643,20 -6577,6 +6653,20 @@@ M:    "Maciej W. Rozycki" <macro@linux-mip
  S:    Maintained
  F:    drivers/serial/zs.*
  
 +GRE DEMULTIPLEXER DRIVER
 +M:    Dmitry Kozlov <xeb@mail.ru>
 +L:    netdev@vger.kernel.org
 +S:    Maintained
 +F:    net/ipv4/gre.c
 +F:    include/net/gre.h
 +
 +PPTP DRIVER
 +M:    Dmitry Kozlov <xeb@mail.ru>
 +L:    netdev@vger.kernel.org
 +S:    Maintained
 +F:    drivers/net/pptp.c
 +W:    http://sourceforge.net/projects/accel-pptp
 +
  THE REST
  M:    Linus Torvalds <torvalds@linux-foundation.org>
  L:    linux-kernel@vger.kernel.org
index 6220d9d75b582f468789c9680d1f01399d043792,5c8d34cb6a23f1a4605bd4cb90464543cde043bc..25ad0f9944c0198782e308e9e606cee1c6aba446
@@@ -1424,7 -1424,6 +1424,6 @@@ static void handle_rst_pkt(struct nes_c
  {
  
        int     reset = 0;      /* whether to send reset in case of err.. */
-       int     passive_state;
        atomic_inc(&cm_resets_recvd);
        nes_debug(NES_DBG_CM, "Received Reset, cm_node = %p, state = %u."
                        " refcnt=%d\n", cm_node, cm_node->state,
                active_open_err(cm_node, skb, reset);
                break;
        case NES_CM_STATE_MPAREQ_RCVD:
-               passive_state = atomic_add_return(1, &cm_node->passive_state);
+               atomic_inc(&cm_node->passive_state);
                dev_kfree_skb_any(skb);
                break;
        case NES_CM_STATE_ESTABLISHED:
@@@ -2701,7 -2700,7 +2700,7 @@@ static int nes_disconnect(struct nes_q
        nesibdev = nesvnic->nesibdev;
  
        nes_debug(NES_DBG_CM, "netdev refcnt = %u.\n",
 -                      atomic_read(&nesvnic->netdev->refcnt));
 +                      netdev_refcnt_read(nesvnic->netdev));
  
        if (nesqp->active_conn) {
  
@@@ -2791,7 -2790,7 +2790,7 @@@ int nes_accept(struct iw_cm_id *cm_id, 
        atomic_inc(&cm_accepts);
  
        nes_debug(NES_DBG_CM, "netdev refcnt = %u.\n",
 -                      atomic_read(&nesvnic->netdev->refcnt));
 +                      netdev_refcnt_read(nesvnic->netdev));
  
        /* allocate the ietf frame and space for private data */
        nesqp->ietf_frame = pci_alloc_consistent(nesdev->pcidev,
index 546fc22405fe315636cdf36a2207e5f14302497b,2374efbdda6b7284a61fb113d6fbed21f0031e7c..99933e4e48ff853da4a79f14ce899a1dea5afc67
@@@ -476,9 -476,9 +476,9 @@@ static struct ib_fast_reg_page_list *ne
        }
        nes_debug(NES_DBG_MR, "nes_alloc_fast_reg_pbl: nes_frpl = %p, "
                  "ibfrpl = %p, ibfrpl.page_list = %p, pbl.kva = %p, "
-                 "pbl.paddr= %p\n", pnesfrpl, &pnesfrpl->ibfrpl,
+                 "pbl.paddr = %llx\n", pnesfrpl, &pnesfrpl->ibfrpl,
                  pnesfrpl->ibfrpl.page_list, pnesfrpl->nes_wqe_pbl.kva,
-                 (void *)pnesfrpl->nes_wqe_pbl.paddr);
+                 (unsigned long long) pnesfrpl->nes_wqe_pbl.paddr);
  
        return pifrpl;
  }
@@@ -584,7 -584,9 +584,9 @@@ static int nes_query_port(struct ib_dev
        props->lmc = 0;
        props->sm_lid = 0;
        props->sm_sl = 0;
-       if (nesvnic->linkup)
+       if (netif_queue_stopped(netdev))
+               props->state = IB_PORT_DOWN;
+       else if (nesvnic->linkup)
                props->state = IB_PORT_ACTIVE;
        else
                props->state = IB_PORT_DOWN;
@@@ -785,7 -787,7 +787,7 @@@ static struct ib_pd *nes_alloc_pd(struc
  
        nes_debug(NES_DBG_PD, "nesvnic=%p, netdev=%p %s, ibdev=%p, context=%p, netdev refcnt=%u\n",
                        nesvnic, nesdev->netdev[0], nesdev->netdev[0]->name, ibdev, context,
 -                      atomic_read(&nesvnic->netdev->refcnt));
 +                      netdev_refcnt_read(nesvnic->netdev));
  
        err = nes_alloc_resource(nesadapter, nesadapter->allocated_pds,
                        nesadapter->max_pd, &pd_num, &nesadapter->next_pd);
@@@ -1416,7 -1418,7 +1418,7 @@@ static struct ib_qp *nes_create_qp(stru
        /* update the QP table */
        nesdev->nesadapter->qp_table[nesqp->hwqp.qp_id-NES_FIRST_QPN] = nesqp;
        nes_debug(NES_DBG_QP, "netdev refcnt=%u\n",
 -                      atomic_read(&nesvnic->netdev->refcnt));
 +                      netdev_refcnt_read(nesvnic->netdev));
  
        return &nesqp->ibqp;
  }
@@@ -3483,13 -3485,13 +3485,13 @@@ static int nes_post_send(struct ib_qp *
                        for (i = 0; i < ib_wr->wr.fast_reg.page_list_len; i++)
                                dst_page_list[i] = cpu_to_le64(src_page_list[i]);
  
-                       nes_debug(NES_DBG_IW_TX, "SQ_FMR: iova_start: %p, "
-                                 "length: %d, rkey: %0x, pgl_paddr: %p, "
+                       nes_debug(NES_DBG_IW_TX, "SQ_FMR: iova_start: %llx, "
+                                 "length: %d, rkey: %0x, pgl_paddr: %llx, "
                                  "page_list_len: %u, wqe_misc: %x\n",
-                                 (void *)ib_wr->wr.fast_reg.iova_start,
+                                 (unsigned long long) ib_wr->wr.fast_reg.iova_start,
                                  ib_wr->wr.fast_reg.length,
                                  ib_wr->wr.fast_reg.rkey,
-                                 (void *)pnesfrpl->nes_wqe_pbl.paddr,
+                                 (unsigned long long) pnesfrpl->nes_wqe_pbl.paddr,
                                  ib_wr->wr.fast_reg.page_list_len,
                                  wqe_misc);
                        break;
index 19c5d3b191f43883c533eec4dae970cd64d0ac8c,4f258c88c1b40bb78f175ebc7a0266d26e2ad094..9ff7bc73ed95e8689bede687e30086acc99fe4fe
@@@ -1240,6 -1240,7 +1240,7 @@@ static struct net_device *ipoib_add_por
                goto alloc_mem_failed;
  
        SET_NETDEV_DEV(priv->dev, hca->dma_device);
+       priv->dev->dev_id = port - 1;
  
        if (!ib_query_port(hca, port, &attr))
                priv->max_ib_mtu = ib_mtu_enum_to_int(attr.max_mtu);
@@@ -1362,6 -1363,8 +1363,8 @@@ static void ipoib_add_one(struct ib_dev
        }
  
        for (p = s; p <= e; ++p) {
+               if (rdma_port_get_link_layer(device, p) != IB_LINK_LAYER_INFINIBAND)
+                       continue;
                dev = ipoib_add_port("ib%d", device, p);
                if (!IS_ERR(dev)) {
                        priv = netdev_priv(dev);
@@@ -1409,7 -1412,8 +1412,7 @@@ static int __init ipoib_init_module(voi
  
        ipoib_sendq_size = roundup_pow_of_two(ipoib_sendq_size);
        ipoib_sendq_size = min(ipoib_sendq_size, IPOIB_MAX_QUEUE_SIZE);
 -      ipoib_sendq_size = max(ipoib_sendq_size, max(2 * MAX_SEND_CQE,
 -                                                   IPOIB_MIN_QUEUE_SIZE));
 +      ipoib_sendq_size = max3(ipoib_sendq_size, 2 * MAX_SEND_CQE, IPOIB_MIN_QUEUE_SIZE);
  #ifdef CONFIG_INFINIBAND_IPOIB_CM
        ipoib_max_conn_qp = min(ipoib_max_conn_qp, IPOIB_CM_MAX_CONN_QP);
  #endif
index 14390641704881ffb71ded6fd2d19118be07a4d6,b2df3eeb1598e88cb8f18f466917fcfc7638110b..f6e0d40cd876407ddf998ff846cf095cfaeddd4f
@@@ -63,12 -63,15 +63,12 @@@ static const char mlx4_en_version[] 
   */
  
  
 -/* Use a XOR rathern than Toeplitz hash function for RSS */
 -MLX4_EN_PARM_INT(rss_xor, 0, "Use XOR hash function for RSS");
 -
 -/* RSS hash type mask - default to <saddr, daddr, sport, dport> */
 -MLX4_EN_PARM_INT(rss_mask, 0xf, "RSS hash type bitmask");
 -
 -/* Number of LRO sessions per Rx ring (rounded up to a power of two) */
 -MLX4_EN_PARM_INT(num_lro, MLX4_EN_MAX_LRO_DESCRIPTORS,
 -               "Number of LRO sessions per ring or disabled (0)");
 +/* Enable RSS TCP traffic */
 +MLX4_EN_PARM_INT(tcp_rss, 1,
 +               "Enable RSS for incomming TCP traffic or disabled (0)");
 +/* Enable RSS UDP traffic */
 +MLX4_EN_PARM_INT(udp_rss, 1,
 +               "Enable RSS for incomming UDP traffic or disabled (0)");
  
  /* Priority pausing */
  MLX4_EN_PARM_INT(pfctx, 0, "Priority based Flow Control policy on TX[7:0]."
@@@ -104,12 -107,9 +104,12 @@@ static int mlx4_en_get_profile(struct m
        struct mlx4_en_profile *params = &mdev->profile;
        int i;
  
 -      params->rss_xor = (rss_xor != 0);
 -      params->rss_mask = rss_mask & 0x1f;
 -      params->num_lro = min_t(int, num_lro , MLX4_EN_MAX_LRO_DESCRIPTORS);
 +      params->tcp_rss = tcp_rss;
 +      params->udp_rss = udp_rss;
 +      if (params->udp_rss && !mdev->dev->caps.udp_rss) {
 +              mlx4_warn(mdev, "UDP RSS is not supported on this device.\n");
 +              params->udp_rss = 0;
 +      }
        for (i = 1; i <= MLX4_MAX_PORTS; i++) {
                params->prof[i].rx_pause = 1;
                params->prof[i].rx_ppp = pfcrx;
        return 0;
  }
  
+ static void *mlx4_en_get_netdev(struct mlx4_dev *dev, void *ctx, u8 port)
+ {
+       struct mlx4_en_dev *endev = ctx;
+       return endev->pndev[port];
+ }
  static void mlx4_en_event(struct mlx4_dev *dev, void *endev_ptr,
                          enum mlx4_dev_event event, int port)
  {
@@@ -282,9 -289,11 +289,11 @@@ err_free_res
  }
  
  static struct mlx4_interface mlx4_en_interface = {
-       .add    = mlx4_en_add,
-       .remove = mlx4_en_remove,
-       .event  = mlx4_en_event,
+       .add            = mlx4_en_add,
+       .remove         = mlx4_en_remove,
+       .event          = mlx4_en_event,
+       .get_dev        = mlx4_en_get_netdev,
+       .protocol       = MLX4_PROTOCOL_EN,
  };
  
  static int __init mlx4_en_init(void)
index 79478bd4211a958b369f9c8882351e3bcbb89424,9a87c4f3bbbde121cbbd69b2b6e4110372a5aa7b..6d6806b361e3145e31e654db0acef6152fec7b4b
@@@ -69,6 -69,7 +69,7 @@@ static void mlx4_en_vlan_rx_add_vid(str
        struct mlx4_en_priv *priv = netdev_priv(dev);
        struct mlx4_en_dev *mdev = priv->mdev;
        int err;
+       int idx;
  
        if (!priv->vlgrp)
                return;
                if (err)
                        en_err(priv, "Failed configuring VLAN filter\n");
        }
+       if (mlx4_register_vlan(mdev->dev, priv->port, vid, &idx))
+               en_err(priv, "failed adding vlan %d\n", vid);
        mutex_unlock(&mdev->state_lock);
  }
  
  static void mlx4_en_vlan_rx_kill_vid(struct net_device *dev, unsigned short vid)
@@@ -91,6 -95,7 +95,7 @@@
        struct mlx4_en_priv *priv = netdev_priv(dev);
        struct mlx4_en_dev *mdev = priv->mdev;
        int err;
+       int idx;
  
        if (!priv->vlgrp)
                return;
  
        /* Remove VID from port VLAN filter */
        mutex_lock(&mdev->state_lock);
+       if (!mlx4_find_cached_vlan(mdev->dev, priv->port, vid, &idx))
+               mlx4_unregister_vlan(mdev->dev, priv->port, idx);
+       else
+               en_err(priv, "could not find vid %d in cache\n", vid);
        if (mdev->device_up && priv->port_up) {
                err = mlx4_SET_VLAN_FLTR(mdev->dev, priv->port, priv->vlgrp);
                if (err)
        mutex_unlock(&mdev->state_lock);
  }
  
 -static u64 mlx4_en_mac_to_u64(u8 *addr)
 +u64 mlx4_en_mac_to_u64(u8 *addr)
  {
        u64 mac = 0;
        int i;
@@@ -513,10 -523,6 +523,10 @@@ static void mlx4_en_do_get_stats(struc
  
                queue_delayed_work(mdev->workqueue, &priv->stats_task, STATS_DELAY);
        }
 +      if (mdev->mac_removed[MLX4_MAX_PORTS + 1 - priv->port]) {
 +              queue_work(mdev->workqueue, &priv->mac_task);
 +              mdev->mac_removed[MLX4_MAX_PORTS + 1 - priv->port] = 0;
 +      }
        mutex_unlock(&mdev->state_lock);
  }
  
@@@ -532,10 -538,10 +542,10 @@@ static void mlx4_en_linkstate(struct wo
         * report to system log */
        if (priv->last_link_state != linkstate) {
                if (linkstate == MLX4_DEV_EVENT_PORT_DOWN) {
 -                      en_dbg(LINK, priv, "Link Down\n");
 +                      en_info(priv, "Link Down\n");
                        netif_carrier_off(priv->dev);
                } else {
 -                      en_dbg(LINK, priv, "Link Up\n");
 +                      en_info(priv, "Link Up\n");
                        netif_carrier_on(priv->dev);
                }
        }
@@@ -657,7 -663,6 +667,7 @@@ int mlx4_en_start_port(struct net_devic
                en_err(priv, "Failed setting port mac\n");
                goto tx_err;
        }
 +      mdev->mac_removed[priv->port] = 0;
  
        /* Init port */
        en_dbg(HW, priv, "Initializing port\n");
@@@ -709,12 -714,12 +719,12 @@@ void mlx4_en_stop_port(struct net_devic
        netif_tx_stop_all_queues(dev);
        netif_tx_unlock_bh(dev);
  
 -      /* close port*/
 +      /* Set port as not active */
        priv->port_up = false;
 -      mlx4_CLOSE_PORT(mdev->dev, priv->port);
  
        /* Unregister Mac address for the port */
        mlx4_unregister_mac(mdev->dev, priv->port, priv->mac_index);
 +      mdev->mac_removed[priv->port] = 1;
  
        /* Free TX Rings */
        for (i = 0; i < priv->tx_ring_num; i++) {
                        msleep(1);
                mlx4_en_deactivate_cq(priv, &priv->rx_cq[i]);
        }
 +
 +      /* close port*/
 +      mlx4_CLOSE_PORT(mdev->dev, priv->port);
  }
  
  static void mlx4_en_restart(struct work_struct *work)
@@@ -1025,17 -1027,15 +1035,17 @@@ int mlx4_en_init_netdev(struct mlx4_en_
         */
        dev->netdev_ops = &mlx4_netdev_ops;
        dev->watchdog_timeo = MLX4_EN_WATCHDOG_TIMEOUT;
 -      dev->real_num_tx_queues = MLX4_EN_NUM_TX_RINGS;
 +      netif_set_real_num_tx_queues(dev, priv->tx_ring_num);
 +      netif_set_real_num_rx_queues(dev, priv->rx_ring_num);
  
        SET_ETHTOOL_OPS(dev, &mlx4_en_ethtool_ops);
  
        /* Set defualt MAC */
        dev->addr_len = ETH_ALEN;
 -      for (i = 0; i < ETH_ALEN; i++)
 -              dev->dev_addr[ETH_ALEN - 1 - i] =
 -              (u8) (priv->mac >> (8 * i));
 +      for (i = 0; i < ETH_ALEN; i++) {
 +              dev->dev_addr[ETH_ALEN - 1 - i] = (u8) (priv->mac >> (8 * i));
 +              dev->perm_addr[ETH_ALEN - 1 - i] = (u8) (priv->mac >> (8 * i));
 +      }
  
        /*
         * Set driver features
        dev->features |= NETIF_F_HW_VLAN_TX |
                         NETIF_F_HW_VLAN_RX |
                         NETIF_F_HW_VLAN_FILTER;
 -      if (mdev->profile.num_lro)
 -              dev->features |= NETIF_F_LRO;
 +      dev->features |= NETIF_F_GRO;
        if (mdev->LSO_support) {
                dev->features |= NETIF_F_TSO;
                dev->features |= NETIF_F_TSO6;
index aa3ef2aee5bf8435575a6f75a8e65502ebc09456,a24988799e0194c39c0451d0b66d21548393ee9f..7f5a3221e0c1dc8c8c9071808e18e9f552c11eca
@@@ -127,8 -127,8 +127,8 @@@ int mlx4_SET_PORT_qpn_calc(struct mlx4_
        memset(context, 0, sizeof *context);
  
        context->base_qpn = cpu_to_be32(base_qpn);
-       context->promisc = cpu_to_be32(promisc << SET_PORT_PROMISC_SHIFT | base_qpn);
-       context->mcast = cpu_to_be32(1 << SET_PORT_PROMISC_SHIFT | base_qpn);
+       context->promisc = cpu_to_be32(promisc << SET_PORT_PROMISC_EN_SHIFT | base_qpn);
+       context->mcast = cpu_to_be32(1 << SET_PORT_PROMISC_MODE_SHIFT | base_qpn);
        context->intra_no_vlan = 0;
        context->no_vlan = MLX4_NO_VLAN_IDX;
        context->intra_vlan_miss = 0;
        return err;
  }
  
 +int mlx4_en_QUERY_PORT(struct mlx4_en_dev *mdev, u8 port)
 +{
 +      struct mlx4_en_query_port_context *qport_context;
 +      struct mlx4_en_priv *priv = netdev_priv(mdev->pndev[port]);
 +      struct mlx4_en_port_state *state = &priv->port_state;
 +      struct mlx4_cmd_mailbox *mailbox;
 +      int err;
 +
 +      mailbox = mlx4_alloc_cmd_mailbox(mdev->dev);
 +      if (IS_ERR(mailbox))
 +              return PTR_ERR(mailbox);
 +      memset(mailbox->buf, 0, sizeof(*qport_context));
 +      err = mlx4_cmd_box(mdev->dev, 0, mailbox->dma, port, 0,
 +                         MLX4_CMD_QUERY_PORT, MLX4_CMD_TIME_CLASS_B);
 +      if (err)
 +              goto out;
 +      qport_context = mailbox->buf;
 +
 +      /* This command is always accessed from Ethtool context
 +       * already synchronized, no need in locking */
 +      state->link_state = !!(qport_context->link_up & MLX4_EN_LINK_UP_MASK);
 +      if ((qport_context->link_speed & MLX4_EN_SPEED_MASK) ==
 +          MLX4_EN_1G_SPEED)
 +              state->link_speed = 1000;
 +      else
 +              state->link_speed = 10000;
 +      state->transciver = qport_context->transceiver;
 +
 +out:
 +      mlx4_free_cmd_mailbox(mdev->dev, mailbox);
 +      return err;
 +}
  
  int mlx4_en_DUMP_ETH_STATS(struct mlx4_en_dev *mdev, u8 port, u8 reset)
  {
index f6511aa2b7dfba0a8fca919f606189be9b3a2a5b,935489120400b1302592ceddbc83bdbda0557aa7..092e814b19813bbff8fbef391b69b8acaf0cc291
@@@ -36,7 -36,8 +36,8 @@@
  
  
  #define SET_PORT_GEN_ALL_VALID        0x7
- #define SET_PORT_PROMISC_SHIFT        31
+ #define SET_PORT_PROMISC_EN_SHIFT     31
+ #define SET_PORT_PROMISC_MODE_SHIFT   30
  
  enum {
        MLX4_CMD_SET_VLAN_FLTR  = 0x47,
@@@ -84,20 -85,6 +85,20 @@@ enum 
        MLX4_MCAST_ENABLE       = 2,
  };
  
 +struct mlx4_en_query_port_context {
 +      u8 link_up;
 +#define MLX4_EN_LINK_UP_MASK  0x80
 +      u8 reserved;
 +      __be16 mtu;
 +      u8 reserved2;
 +      u8 link_speed;
 +#define MLX4_EN_SPEED_MASK    0x3
 +#define MLX4_EN_1G_SPEED      0x2
 +      u16 reserved3[5];
 +      __be64 mac;
 +      u8 transceiver;
 +};
 +
  
  struct mlx4_en_stat_out_mbox {
        /* Received frames with a length of 64 octets */
diff --combined drivers/net/mlx4/fw.c
index b716e1a1b2982bae0f25b1ed57793c3ccc31aaa7,5b3593d3cd7465f2e33d8b211822ab521d64f258..b68eee2414c208765849d0136dfb7cb0065f52ba
@@@ -98,7 -98,8 +98,8 @@@ static void dump_dev_cap_flags(struct m
                [20] = "Address vector port checking support",
                [21] = "UD multicast support",
                [24] = "Demand paging support",
-               [25] = "Router support"
+               [25] = "Router support",
+               [30] = "IBoE support"
        };
        int i;
  
@@@ -141,7 -142,6 +142,7 @@@ int mlx4_QUERY_DEV_CAP(struct mlx4_dev 
        struct mlx4_cmd_mailbox *mailbox;
        u32 *outbox;
        u8 field;
 +      u32 field32;
        u16 size;
        u16 stat_rate;
        int err;
  #define QUERY_DEV_CAP_MAX_GID_OFFSET          0x3b
  #define QUERY_DEV_CAP_RATE_SUPPORT_OFFSET     0x3c
  #define QUERY_DEV_CAP_MAX_PKEY_OFFSET         0x3f
 +#define QUERY_DEV_CAP_UDP_RSS_OFFSET          0x42
 +#define QUERY_DEV_CAP_ETH_UC_LOOPBACK_OFFSET  0x43
  #define QUERY_DEV_CAP_FLAGS_OFFSET            0x44
  #define QUERY_DEV_CAP_RSVD_UAR_OFFSET         0x48
  #define QUERY_DEV_CAP_UAR_SZ_OFFSET           0x49
        dev_cap->max_msg_sz = 1 << (field & 0x1f);
        MLX4_GET(stat_rate, outbox, QUERY_DEV_CAP_RATE_SUPPORT_OFFSET);
        dev_cap->stat_rate_support = stat_rate;
 +      MLX4_GET(field, outbox, QUERY_DEV_CAP_UDP_RSS_OFFSET);
 +      dev_cap->udp_rss = field & 0x1;
 +      MLX4_GET(field, outbox, QUERY_DEV_CAP_ETH_UC_LOOPBACK_OFFSET);
 +      dev_cap->loopback_support = field & 0x1;
        MLX4_GET(dev_cap->flags, outbox, QUERY_DEV_CAP_FLAGS_OFFSET);
        MLX4_GET(field, outbox, QUERY_DEV_CAP_RSVD_UAR_OFFSET);
        dev_cap->reserved_uars = field >> 4;
  #define QUERY_PORT_MAX_MACVLAN_OFFSET         0x0a
  #define QUERY_PORT_MAX_VL_OFFSET              0x0b
  #define QUERY_PORT_MAC_OFFSET                 0x10
 +#define QUERY_PORT_TRANS_VENDOR_OFFSET                0x18
 +#define QUERY_PORT_WAVELENGTH_OFFSET          0x1c
 +#define QUERY_PORT_TRANS_CODE_OFFSET          0x20
  
                for (i = 1; i <= dev_cap->num_ports; ++i) {
                        err = mlx4_cmd_box(dev, 0, mailbox->dma, i, 0, MLX4_CMD_QUERY_PORT,
                        dev_cap->log_max_vlans[i] = field >> 4;
                        MLX4_GET(dev_cap->eth_mtu[i], outbox, QUERY_PORT_ETH_MTU_OFFSET);
                        MLX4_GET(dev_cap->def_mac[i], outbox, QUERY_PORT_MAC_OFFSET);
 +                      MLX4_GET(field32, outbox, QUERY_PORT_TRANS_VENDOR_OFFSET);
 +                      dev_cap->trans_type[i] = field32 >> 24;
 +                      dev_cap->vendor_oui[i] = field32 & 0xffffff;
 +                      MLX4_GET(dev_cap->wavelength[i], outbox, QUERY_PORT_WAVELENGTH_OFFSET);
 +                      MLX4_GET(dev_cap->trans_code[i], outbox, QUERY_PORT_TRANS_CODE_OFFSET);
                }
        }
  
diff --combined drivers/net/mlx4/main.c
index 569fa3df381f8131bb6b91454a577bde8314500b,4f6a8597042a50476dd5dc82996e5ec88e52fe32..782f11d8fa71d52e2ae8549c41970c52cdb2cbb8
@@@ -103,7 -103,7 +103,7 @@@ MODULE_PARM_DESC(use_prio, "Enable stee
  
  static int log_mtts_per_seg = ilog2(MLX4_MTT_ENTRY_PER_SEG);
  module_param_named(log_mtts_per_seg, log_mtts_per_seg, int, 0444);
- MODULE_PARM_DESC(log_mtts_per_seg, "Log2 number of MTT entries per segment (1-5)");
+ MODULE_PARM_DESC(log_mtts_per_seg, "Log2 number of MTT entries per segment (1-7)");
  
  int mlx4_check_port_params(struct mlx4_dev *dev,
                           enum mlx4_port_type *port_type)
@@@ -184,10 -184,6 +184,10 @@@ static int mlx4_dev_cap(struct mlx4_de
                dev->caps.eth_mtu_cap[i]    = dev_cap->eth_mtu[i];
                dev->caps.def_mac[i]        = dev_cap->def_mac[i];
                dev->caps.supported_type[i] = dev_cap->supported_port_types[i];
 +              dev->caps.trans_type[i]     = dev_cap->trans_type[i];
 +              dev->caps.vendor_oui[i]     = dev_cap->vendor_oui[i];
 +              dev->caps.wavelength[i]     = dev_cap->wavelength[i];
 +              dev->caps.trans_code[i]     = dev_cap->trans_code[i];
        }
  
        dev->caps.num_uars           = dev_cap->uar_size / PAGE_SIZE;
        dev->caps.bmme_flags         = dev_cap->bmme_flags;
        dev->caps.reserved_lkey      = dev_cap->reserved_lkey;
        dev->caps.stat_rate_support  = dev_cap->stat_rate_support;
 +      dev->caps.udp_rss            = dev_cap->udp_rss;
 +      dev->caps.loopback_support   = dev_cap->loopback_support;
        dev->caps.max_gso_sz         = dev_cap->max_gso_sz;
  
        dev->caps.log_num_macs  = log_num_mac;
@@@ -1310,7 -1304,7 +1310,7 @@@ static int __init mlx4_verify_params(vo
                return -1;
        }
  
-       if ((log_mtts_per_seg < 1) || (log_mtts_per_seg > 5)) {
+       if ((log_mtts_per_seg < 1) || (log_mtts_per_seg > 7)) {
                pr_warning("mlx4_core: bad log_mtts_per_seg: %d\n", log_mtts_per_seg);
                return -1;
        }
index 1fc16ab7ad2f0ebc0d6b7b6d604e593ceb223e69,dab5eafb8946ec16e6f3fb7e7e4d4a1c567c20ca..dfed6a07c2d77d34e9a6a8775afacfac76f07c6c
  #include <linux/list.h>
  #include <linux/mutex.h>
  #include <linux/netdevice.h>
 -#include <linux/inet_lro.h>
  
  #include <linux/mlx4/device.h>
  #include <linux/mlx4/qp.h>
  #include <linux/mlx4/cq.h>
  #include <linux/mlx4/srq.h>
  #include <linux/mlx4/doorbell.h>
 +#include <linux/mlx4/cmd.h>
  
  #include "en_port.h"
  
  #define DRV_NAME      "mlx4_en"
 -#define DRV_VERSION   "1.4.1.1"
 -#define DRV_RELDATE   "June 2009"
 +#define DRV_VERSION   "1.5.1.6"
 +#define DRV_RELDATE   "August 2010"
  
  #define MLX4_EN_MSG_LEVEL     (NETIF_MSG_LINK | NETIF_MSG_IFDOWN)
  
@@@ -61,6 -61,7 +61,6 @@@
  
  #define MLX4_EN_PAGE_SHIFT    12
  #define MLX4_EN_PAGE_SIZE     (1 << MLX4_EN_PAGE_SHIFT)
 -#define MAX_TX_RINGS          16
  #define MAX_RX_RINGS          16
  #define TXBB_SIZE             64
  #define HEADROOM              (2048 / TXBB_SIZE + 1)
@@@ -106,7 -107,6 +106,7 @@@ enum 
  #define MLX4_EN_SMALL_PKT_SIZE                64
  #define MLX4_EN_NUM_TX_RINGS          8
  #define MLX4_EN_NUM_PPP_RINGS         8
 +#define MAX_TX_RINGS                  (MLX4_EN_NUM_TX_RINGS + MLX4_EN_NUM_PPP_RINGS)
  #define MLX4_EN_DEF_TX_RING_SIZE      512
  #define MLX4_EN_DEF_RX_RING_SIZE      1024
  
  
  #define SMALL_PACKET_SIZE      (256 - NET_IP_ALIGN)
  #define HEADER_COPY_SIZE       (128 - NET_IP_ALIGN)
 +#define MLX4_LOOPBACK_TEST_PAYLOAD (HEADER_COPY_SIZE - ETH_HLEN)
  
  #define MLX4_EN_MIN_MTU               46
  #define ETH_BCAST             0xffffffffffffULL
  
 +#define MLX4_EN_LOOPBACK_RETRIES      5
 +#define MLX4_EN_LOOPBACK_TIMEOUT      100
 +
  #ifdef MLX4_EN_PERF_STAT
  /* Number of samples to 'average' */
  #define AVG_SIZE                      128
@@@ -253,6 -249,7 +253,6 @@@ struct mlx4_en_rx_desc 
  struct mlx4_en_rx_ring {
        struct mlx4_hwq_resources wqres;
        struct mlx4_en_rx_alloc page_alloc[MLX4_EN_MAX_RX_FRAGS];
 -      struct net_lro_mgr lro;
        u32 size ;      /* number of Rx descs*/
        u32 actual_size;
        u32 size_mask;
@@@ -316,8 -313,7 +316,8 @@@ struct mlx4_en_port_profile 
  
  struct mlx4_en_profile {
        int rss_xor;
 -      int num_lro;
 +      int tcp_rss;
 +      int udp_rss;
        u8 rss_mask;
        u32 active_ports;
        u32 small_pkt_int;
@@@ -341,7 -337,6 +341,7 @@@ struct mlx4_en_dev 
        struct mlx4_mr          mr;
        u32                     priv_pdn;
        spinlock_t              uar_lock;
 +      u8                      mac_removed[MLX4_MAX_PORTS + 1];
  };
  
  
@@@ -360,13 -355,6 +360,13 @@@ struct mlx4_en_rss_context 
        u8 hash_fn;
        u8 flags;
        __be32 rss_key[10];
 +      __be32 base_qpn_udp;
 +};
 +
 +struct mlx4_en_port_state {
 +      int link_state;
 +      int link_speed;
 +      int transciver;
  };
  
  struct mlx4_en_pkt_stats {
  };
  
  struct mlx4_en_port_stats {
 -      unsigned long lro_aggregated;
 -      unsigned long lro_flushed;
 -      unsigned long lro_no_desc;
        unsigned long tso_packets;
        unsigned long queue_stopped;
        unsigned long wake_queue;
        unsigned long rx_chksum_good;
        unsigned long rx_chksum_none;
        unsigned long tx_chksum_offload;
 -#define NUM_PORT_STATS                11
 +#define NUM_PORT_STATS                8
  };
  
  struct mlx4_en_perf_stats {
@@@ -414,7 -405,6 +414,7 @@@ struct mlx4_en_priv 
        struct vlan_group *vlgrp;
        struct net_device_stats stats;
        struct net_device_stats ret_stats;
 +      struct mlx4_en_port_state port_state;
        spinlock_t stats_lock;
  
        unsigned long last_moder_packets;
        u16 sample_interval;
        u16 adaptive_rx_coal;
        u32 msg_enable;
 +      u32 loopback_ok;
 +      u32 validate_loopback;
  
        struct mlx4_hwq_resources res;
        int link_state;
        char *mc_addrs;
        int mc_addrs_cnt;
        struct mlx4_en_stat_out_mbox hw_stats;
+       int vids[128];
  };
  
  
@@@ -543,11 -532,6 +544,11 @@@ int mlx4_SET_PORT_qpn_calc(struct mlx4_
                           u8 promisc);
  
  int mlx4_en_DUMP_ETH_STATS(struct mlx4_en_dev *mdev, u8 port, u8 reset);
 +int mlx4_en_QUERY_PORT(struct mlx4_en_dev *mdev, u8 port);
 +
 +#define MLX4_EN_NUM_SELF_TEST 5
 +void mlx4_en_ex_selftest(struct net_device *dev, u32 *flags, u64 *buf);
 +u64 mlx4_en_mac_to_u64(u8 *addr);
  
  /*
   * Globals
@@@ -572,8 -556,6 +573,8 @@@ do {                                                               
        en_print(KERN_WARNING, priv, format, ##arg)
  #define en_err(priv, format, arg...)                  \
        en_print(KERN_ERR, priv, format, ##arg)
 +#define en_info(priv, format, arg...)                 \
 +      en_print(KERN_INFO, priv, format, ## arg)
  
  #define mlx4_err(mdev, format, arg...)                        \
        pr_err("%s %s: " format, DRV_NAME,              \
diff --combined include/linux/mlx4/cmd.h
index 78a1b96717523ba47b84867fc875aacef4f51e20,ddbe81261d5dc0d4c92f4a126b547ee478a402b2..9a18667c13cc02a0709e648d339b0c72278887d0
@@@ -56,8 -56,8 +56,9 @@@ enum 
        MLX4_CMD_QUERY_HCA       = 0xb,
        MLX4_CMD_QUERY_PORT      = 0x43,
        MLX4_CMD_SENSE_PORT      = 0x4d,
 +      MLX4_CMD_HW_HEALTH_CHECK = 0x50,
        MLX4_CMD_SET_PORT        = 0xc,
+       MLX4_CMD_SET_NODE        = 0x5a,
        MLX4_CMD_ACCESS_DDR      = 0x2e,
        MLX4_CMD_MAP_ICM         = 0xffa,
        MLX4_CMD_UNMAP_ICM       = 0xff9,
@@@ -141,6 -141,7 +142,7 @@@ enum 
        MLX4_SET_PORT_MAC_TABLE = 0x2,
        MLX4_SET_PORT_VLAN_TABLE = 0x3,
        MLX4_SET_PORT_PRIO_MAP  = 0x4,
+       MLX4_SET_PORT_GID_TABLE = 0x5,
  };
  
  struct mlx4_dev;
index 7338654c02b4de5402cbba6c80a3f96106e3b717,897ec71a0ca5485a3a97cb55fdd093c4f19ff074..a7b15bc7648e27744fea2fee5de8cefb83f99340
@@@ -67,7 -67,8 +67,8 @@@ enum 
        MLX4_DEV_CAP_FLAG_ATOMIC        = 1 << 18,
        MLX4_DEV_CAP_FLAG_RAW_MCAST     = 1 << 19,
        MLX4_DEV_CAP_FLAG_UD_AV_PORT    = 1 << 20,
-       MLX4_DEV_CAP_FLAG_UD_MCAST      = 1 << 21
+       MLX4_DEV_CAP_FLAG_UD_MCAST      = 1 << 21,
+       MLX4_DEV_CAP_FLAG_IBOE          = 1 << 30
  };
  
  enum {
@@@ -171,6 -172,10 +172,10 @@@ enum 
        MLX4_NUM_FEXCH          = 64 * 1024,
  };
  
+ enum {
+       MLX4_MAX_FAST_REG_PAGES = 511,
+ };
  static inline u64 mlx4_fw_ver(u64 major, u64 minor, u64 subminor)
  {
        return (major << 32) | (minor << 16) | subminor;
@@@ -186,10 -191,6 +191,10 @@@ struct mlx4_caps 
        int                     eth_mtu_cap[MLX4_MAX_PORTS + 1];
        int                     gid_table_len[MLX4_MAX_PORTS + 1];
        int                     pkey_table_len[MLX4_MAX_PORTS + 1];
 +      int                     trans_type[MLX4_MAX_PORTS + 1];
 +      int                     vendor_oui[MLX4_MAX_PORTS + 1];
 +      int                     wavelength[MLX4_MAX_PORTS + 1];
 +      u64                     trans_code[MLX4_MAX_PORTS + 1];
        int                     local_ca_ack_delay;
        int                     num_uars;
        int                     bf_reg_size;
        u32                     bmme_flags;
        u32                     reserved_lkey;
        u16                     stat_rate_support;
 +      int                     udp_rss;
 +      int                     loopback_support;
        u8                      port_width_cap[MLX4_MAX_PORTS + 1];
        int                     max_gso_sz;
        int                     reserved_qps_cnt[MLX4_NUM_QP_REGION];
@@@ -379,6 -378,27 +384,27 @@@ struct mlx4_av 
        u8                      dgid[16];
  };
  
+ struct mlx4_eth_av {
+       __be32          port_pd;
+       u8              reserved1;
+       u8              smac_idx;
+       u16             reserved2;
+       u8              reserved3;
+       u8              gid_index;
+       u8              stat_rate;
+       u8              hop_limit;
+       __be32          sl_tclass_flowlabel;
+       u8              dgid[16];
+       u32             reserved4[2];
+       __be16          vlan;
+       u8              mac[6];
+ };
+ union mlx4_ext_av {
+       struct mlx4_av          ib;
+       struct mlx4_eth_av      eth;
+ };
  struct mlx4_dev {
        struct pci_dev         *pdev;
        unsigned long           flags;
@@@ -407,6 -427,12 +433,12 @@@ struct mlx4_init_port_param 
                if (((type) == MLX4_PORT_TYPE_IB ? (dev)->caps.port_mask : \
                     ~(dev)->caps.port_mask) & 1 << ((port) - 1))
  
+ #define mlx4_foreach_ib_transport_port(port, dev)                     \
+       for ((port) = 1; (port) <= (dev)->caps.num_ports; (port)++)     \
+               if (((dev)->caps.port_mask & 1 << ((port) - 1)) ||      \
+                   ((dev)->caps.flags & MLX4_DEV_CAP_FLAG_IBOE))
  int mlx4_buf_alloc(struct mlx4_dev *dev, int size, int max_direct,
                   struct mlx4_buf *buf);
  void mlx4_buf_free(struct mlx4_dev *dev, int size, struct mlx4_buf *buf);
@@@ -474,6 -500,7 +506,7 @@@ int mlx4_multicast_detach(struct mlx4_d
  int mlx4_register_mac(struct mlx4_dev *dev, u8 port, u64 mac, int *index);
  void mlx4_unregister_mac(struct mlx4_dev *dev, u8 port, int index);
  
+ int mlx4_find_cached_vlan(struct mlx4_dev *dev, u8 port, u16 vid, int *idx);
  int mlx4_register_vlan(struct mlx4_dev *dev, u8 port, u16 vlan, int *index);
  void mlx4_unregister_vlan(struct mlx4_dev *dev, u8 port, int index);
  
@@@ -486,6 -513,5 +519,6 @@@ void mlx4_fmr_unmap(struct mlx4_dev *de
                    u32 *lkey, u32 *rkey);
  int mlx4_fmr_free(struct mlx4_dev *dev, struct mlx4_fmr *fmr);
  int mlx4_SYNC_TPT(struct mlx4_dev *dev);
 +int mlx4_test_interrupts(struct mlx4_dev *dev);
  
  #endif /* MLX4_DEVICE_H */