]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/commitdiff
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wirel...
authorJohn W. Linville <linville@tuxdriver.com>
Fri, 8 Oct 2010 19:39:28 +0000 (15:39 -0400)
committerJohn W. Linville <linville@tuxdriver.com>
Fri, 8 Oct 2010 19:39:28 +0000 (15:39 -0400)
Conflicts:
Documentation/feature-removal-schedule.txt
drivers/net/wireless/ipw2x00/ipw2200.c

12 files changed:
1  2 
Documentation/feature-removal-schedule.txt
MAINTAINERS
drivers/net/wireless/b43/phy_n.c
drivers/net/wireless/ipw2x00/ipw2200.c
drivers/net/wireless/libertas/cfg.c
drivers/net/wireless/rt2x00/rt2500usb.c
drivers/net/wireless/rt2x00/rt2800lib.c
drivers/net/wireless/rt2x00/rt61pci.c
drivers/net/wireless/rt2x00/rt73usb.c
drivers/net/wireless/wl12xx/wl1271_scan.c
net/mac80211/main.c
net/wireless/core.h

index 842aa9de84a603298f74f9f4b8c036e0104001cf,cd89d1e5a6a80b613f88de89aa16ae2035d77e4b..f45638962858191209b4662693124789a2613de1
@@@ -116,6 -116,29 +116,6 @@@ Who:      Mauro Carvalho Chehab <mchehab@inf
  
  ---------------------------
  
 -What: PCMCIA control ioctl (needed for pcmcia-cs [cardmgr, cardctl])
 -When: 2.6.35/2.6.36
 -Files:        drivers/pcmcia/: pcmcia_ioctl.c
 -Why:  With the 16-bit PCMCIA subsystem now behaving (almost) like a
 -      normal hotpluggable bus, and with it using the default kernel
 -      infrastructure (hotplug, driver core, sysfs) keeping the PCMCIA
 -      control ioctl needed by cardmgr and cardctl from pcmcia-cs is
 -      unnecessary and potentially harmful (it does not provide for
 -      proper locking), and makes further cleanups and integration of the
 -      PCMCIA subsystem into the Linux kernel device driver model more
 -      difficult. The features provided by cardmgr and cardctl are either
 -      handled by the kernel itself now or are available in the new
 -      pcmciautils package available at
 -      http://kernel.org/pub/linux/utils/kernel/pcmcia/
 -
 -      For all architectures except ARM, the associated config symbol
 -      has been removed from kernel 2.6.34; for ARM, it will be likely
 -      be removed from kernel 2.6.35. The actual code will then likely
 -      be removed from kernel 2.6.36.
 -Who:  Dominik Brodowski <linux@dominikbrodowski.net>
 -
 ----------------------------
 -
  What: sys_sysctl
  When: September 2010
  Option: CONFIG_SYSCTL_SYSCALL
@@@ -151,31 -174,6 +151,31 @@@ Who:     Eric Biederman <ebiederm@xmission.
  
  ---------------------------
  
 +What: /proc/<pid>/oom_adj
 +When: August 2012
 +Why:  /proc/<pid>/oom_adj allows userspace to influence the oom killer's
 +      badness heuristic used to determine which task to kill when the kernel
 +      is out of memory.
 +
 +      The badness heuristic has since been rewritten since the introduction of
 +      this tunable such that its meaning is deprecated.  The value was
 +      implemented as a bitshift on a score generated by the badness()
 +      function that did not have any precise units of measure.  With the
 +      rewrite, the score is given as a proportion of available memory to the
 +      task allocating pages, so using a bitshift which grows the score
 +      exponentially is, thus, impossible to tune with fine granularity.
 +
 +      A much more powerful interface, /proc/<pid>/oom_score_adj, was
 +      introduced with the oom killer rewrite that allows users to increase or
 +      decrease the badness() score linearly.  This interface will replace
 +      /proc/<pid>/oom_adj.
 +
 +      A warning will be emitted to the kernel log if an application uses this
 +      deprecated interface.  After it is printed once, future warnings will be
 +      suppressed until the kernel is rebooted.
 +
 +---------------------------
 +
  What: remove EXPORT_SYMBOL(kernel_thread)
  When: August 2006
  Files:        arch/*/kernel/*_ksyms.c
@@@ -360,6 -358,14 +360,6 @@@ When:     2.6.3
  Why:  Should be implemented in userspace, policy daemon.
  Who:  Johannes Berg <johannes@sipsolutions.net>
  
 ----------------------------
 -
 -What: CONFIG_INOTIFY
 -When: 2.6.33
 -Why:  last user (audit) will be converted to the newer more generic
 -      and more easily maintained fsnotify subsystem
 -Who:  Eric Paris <eparis@redhat.com>
 -
  ----------------------------
  
  What: sound-slot/service-* module aliases and related clutters in
@@@ -462,6 -468,16 +462,6 @@@ Who:      Jan Kiszka <jan.kiszka@web.de
  
  ----------------------------
  
 -What: xtime, wall_to_monotonic
 -When: 2.6.36+
 -Files:        kernel/time/timekeeping.c include/linux/time.h
 -Why:  Cleaning up timekeeping internal values. Please use
 -      existing timekeeping accessor functions to access
 -      the equivalent functionality.
 -Who:  John Stultz <johnstul@us.ibm.com>
 -
 -----------------------------
 -
  What: KVM paravirt mmu host support
  When: January 2011
  Why:  The paravirt mmu host support is slower than non-paravirt mmu, both
@@@ -548,19 -564,12 +548,28 @@@ Who:    Rafael J. Wysocki <rjw@sisk.pl
  
  ----------------------------
  
 +What:         PCI DMA unmap state API
 +When: August 2012
 +Why:  PCI DMA unmap state API (include/linux/pci-dma.h) was replaced
 +      with DMA unmap state API (DMA unmap state API can be used for
 +      any bus).
 +Who:  FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
 +
 +----------------------------
 +
 +What:         DMA_xxBIT_MASK macros
 +When: Jun 2011
 +Why:  DMA_xxBIT_MASK macros were replaced with DMA_BIT_MASK() macros.
 +Who:  FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
 +
 +----------------------------
 +
+ What: iwlwifi disable_hw_scan module parameters
+ When: 2.6.40
+ Why:  Hareware scan is the prefer method for iwlwifi devices for
+       scanning operation. Remove software scan support for all the
+       iwlwifi devices.
+ Who:  Wey-Yi Guy <wey-yi.w.guy@intel.com>
+ ----------------------------
diff --combined MAINTAINERS
index 9ddb5ac923cd07db93d0a5f0af49d2035d45f33c,529bfee8c4b2f2639e842c6f56ad1ffbfc0f8d94..51bfd5e856e2072fb03f17fd5ee6ab32ff1e657a
@@@ -454,20 -454,9 +454,20 @@@ L:       linux-rdma@vger.kernel.or
  S:    Maintained
  F:    drivers/infiniband/hw/amso1100/
  
 +ANALOG DEVICES INC ASOC DRIVERS
 +L:    uclinux-dist-devel@blackfin.uclinux.org
 +L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
 +W:    http://blackfin.uclinux.org/
 +S:    Supported
 +F:    sound/soc/blackfin/*
 +F:    sound/soc/codecs/ad1*
 +F:    sound/soc/codecs/adau*
 +F:    sound/soc/codecs/adav*
 +F:    sound/soc/codecs/ssm*
 +
  AOA (Apple Onboard Audio) ALSA DRIVER
  M:    Johannes Berg <johannes@sipsolutions.net>
 -L:    linuxppc-dev@ozlabs.org
 +L:    linuxppc-dev@lists.ozlabs.org
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
  S:    Maintained
  F:    sound/aoa/
@@@ -585,6 -574,7 +585,6 @@@ L: linux-mtd@lists.infradead.or
  S:    Maintained
  F:    drivers/mtd/nand/bcm_umi_nand.c
  F:    drivers/mtd/nand/bcm_umi_bch.c
 -F:    drivers/mtd/nand/bcm_umi_hamming.c
  F:    drivers/mtd/nand/nand_bcm_umi.h
  
  ARM/CAVIUM NETWORKS CNS3XXX MACHINE SUPPORT
@@@ -627,10 -617,10 +627,10 @@@ M:      Richard Purdie <rpurdie@rpsys.net
  S:    Maintained
  
  ARM/CORTINA SYSTEMS GEMINI ARM ARCHITECTURE
 -M:    Paulius Zaleckas <paulius.zaleckas@gmail.com>
 +M:    Hans Ulli Kroll <ulli.kroll@googlemail.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -T:    git git://gitorious.org/linux-gemini/mainline.git
 -S:    Odd Fixes
 +T:    git git://git.berlios.de/gemini-board
 +S:    Maintained
  F:    arch/arm/mach-gemini/
  
  ARM/EBSA110 MACHINE SUPPORT
@@@ -652,10 -642,9 +652,10 @@@ T:       topgit git://git.openezx.org/openezx
  F:    arch/arm/mach-pxa/ezx.c
  
  ARM/FARADAY FA526 PORT
 -M:    Paulius Zaleckas <paulius.zaleckas@gmail.com>
 +M:    Hans Ulli Kroll <ulli.kroll@googlemail.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -S:    Odd Fixes
 +S:    Maintained
 +T:    git://git.berlios.de/gemini-board
  F:    arch/arm/mm/*-fa*
  
  ARM/FOOTBRIDGE ARCHITECTURE
@@@ -704,13 -693,6 +704,13 @@@ T:       git git://git.kernel.org/pub/scm/lin
  F:    arch/arm/mach-sa1100/jornada720.c
  F:    arch/arm/mach-sa1100/include/mach/jornada720.h
  
 +ARM/INCOME PXA270 SUPPORT
 +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
 +
  ARM/INTEL IOP32X ARM ARCHITECTURE
  M:    Lennert Buytenhek <kernel@wantstofly.org>
  M:    Dan Williams <dan.j.williams@intel.com>
@@@ -966,9 -948,8 +966,9 @@@ ARM/SHMOBILE ARM ARCHITECTUR
  M:    Paul Mundt <lethal@linux-sh.org>
  M:    Magnus Damm <magnus.damm@gmail.com>
  L:    linux-sh@vger.kernel.org
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/lethal/genesis-2.6.git
  W:    http://oss.renesas.com
 +Q:    http://patchwork.kernel.org/project/linux-sh/list/
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/lethal/genesis-2.6.git
  S:    Supported
  F:    arch/arm/mach-shmobile/
  F:    drivers/sh/
@@@ -994,11 -975,12 +994,11 @@@ F:      drivers/input/keyboard/w90p910_keypa
  F:    drivers/input/touchscreen/w90p910_ts.c
  F:    drivers/watchdog/nuc900_wdt.c
  F:    drivers/net/arm/w90p910_ether.c
 -F:    drivers/mtd/nand/w90p910_nand.c
 +F:    drivers/mtd/nand/nuc900_nand.c
  F:    drivers/rtc/rtc-nuc900.c
  F:    drivers/spi/spi_nuc900.c
  F:    drivers/usb/host/ehci-w90x900.c
  F:    drivers/video/nuc900fb.c
 -F:    drivers/sound/soc/nuc900/
  
  ARM/U300 MACHINE SUPPORT
  M:    Linus Walleij <linus.walleij@stericsson.com>
@@@ -1028,14 -1010,14 +1028,14 @@@ 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/vpac270.c
 -F:    arch/arm/mach-pxa/include/mach-pxa/vpac270.h
 +F:    arch/arm/mach-pxa/include/mach/vpac270.h
  
  ARM/ZIPIT Z2 SUPPORT
  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/z2.c
 -F:    arch/arm/mach-pxa/include/mach-pxa/z2.h
 +F:    arch/arm/mach-pxa/include/mach/z2.h
  
  ASC7621 HARDWARE MONITOR DRIVER
  M:    George Joseph <george.joseph@fairview5.com>
@@@ -1142,7 -1124,7 +1142,7 @@@ ATLX ETHERNET DRIVER
  M:    Jay Cliburn <jcliburn@gmail.com>
  M:    Chris Snook <chris.snook@gmail.com>
  M:    Jie Yang <jie.yang@atheros.com>
 -L:    atl1-devel@lists.sourceforge.net
 +L:    netdev@vger.kernel.org
  W:    http://sourceforge.net/projects/atl1
  W:    http://atl1.sourceforge.net
  S:    Maintained
@@@ -1277,7 -1259,8 +1277,7 @@@ S:      Maintaine
  F:    drivers/net/hamradio/baycom*
  
  BEFS FILE SYSTEM
 -M:    "Sergey S. Kostyliov" <rathamahata@php4.ru>
 -S:    Maintained
 +S:    Orphan
  F:    Documentation/filesystems/befs.txt
  F:    fs/befs/
  
@@@ -1405,13 -1388,6 +1405,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
@@@ -1459,16 -1435,6 +1459,16 @@@ S:    Maintaine
  F:    Documentation/video4linux/cafe_ccic
  F:    drivers/media/video/cafe_ccic*
  
 +CAIF NETWORK LAYER
 +M:    Sjur Braendeland <sjur.brandeland@stericsson.com>
 +L:    netdev@vger.kernel.org
 +S:    Supported
 +F:    Documentation/networking/caif/
 +F:    drivers/net/caif/
 +F:    include/linux/caif/
 +F:    include/net/caif/
 +F:    net/caif/
 +
  CALGARY x86-64 IOMMU
  M:    Muli Ben-Yehuda <muli@il.ibm.com>
  M:    "Jon D. Mason" <jdmason@kudzu.us>
@@@ -1507,8 -1473,8 +1507,8 @@@ F:      include/linux/can/platform
  
  CELL BROADBAND ENGINE ARCHITECTURE
  M:    Arnd Bergmann <arnd@arndb.de>
 -L:    linuxppc-dev@ozlabs.org
 -L:    cbe-oss-dev@ozlabs.org
 +L:    linuxppc-dev@lists.ozlabs.org
 +L:    cbe-oss-dev@lists.ozlabs.org
  W:    http://www.ibm.com/developerworks/power/cell/
  S:    Supported
  F:    arch/powerpc/include/asm/cell*.h
@@@ -1567,9 -1533,9 +1567,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/
  
@@@ -1609,16 -1575,6 +1609,16 @@@ L:    platform-driver-x86@vger.kernel.or
  S:    Supported
  F:    drivers/platform/x86/classmate-laptop.c
  
 +COCCINELLE/Semantic Patches (SmPL)
 +M:    Julia Lawall <julia@diku.dk>
 +M:    Gilles Muller <Gilles.Muller@lip6.fr>
 +M:    Nicolas Palix <npalix@diku.dk>
 +L:    cocci@diku.dk (moderated for non-subscribers)
 +W:    http://coccinelle.lip6.fr/
 +S:    Supported
 +F:    scripts/coccinelle/
 +F:    scripts/coccicheck
 +
  CODA FILE SYSTEM
  M:    Jan Harkes <jaharkes@cs.cmu.edu>
  M:    coda@cs.cmu.edu
@@@ -1700,7 -1656,8 +1700,7 @@@ F:      kernel/cgroup
  F:    mm/*cgroup*
  
  CORETEMP HARDWARE MONITORING DRIVER
 -M:    Rudolf Marek <r.marek@assembler.cz>
 -M:    Huaxu Wan <huaxu.wan@intel.com>
 +M:    Fenghua Yu <fenghua.yu@intel.com>
  L:    lm-sensors@lm-sensors.org
  S:    Maintained
  F:    Documentation/hwmon/coretemp
@@@ -1773,8 -1730,6 +1773,8 @@@ CRYPTOGRAPHIC RANDOM NUMBER GENERATO
  M:    Neil Horman <nhorman@tuxdriver.com>
  L:    linux-crypto@vger.kernel.org
  S:    Maintained
 +F:    crypto/ansi_cprng.c
 +F:    crypto/rng.c
  
  CS5535 Audio ALSA driver
  M:    Jaya Kumar <jayakumar.alsa@gmail.com>
@@@ -1933,7 -1888,6 +1933,7 @@@ F:      drivers/firmware/dcdbas.
  DELL WMI EXTRAS DRIVER
  M:    Matthew Garrett <mjg59@srcf.ucam.org>
  S:    Maintained
 +F:    drivers/platform/x86/dell-wmi.c
  
  DEVICE NUMBER REGISTRY
  M:    Torben Mathiasen <device@lanana.org>
@@@ -2063,7 -2017,6 +2063,7 @@@ L:      dri-devel@lists.freedesktop.or
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6.git
  S:    Maintained
  F:    drivers/gpu/drm/
 +F:    include/drm/
  
  DSCC4 DRIVER
  M:    Francois Romieu <romieu@fr.zoreil.com>
@@@ -2225,12 -2178,6 +2225,12 @@@ L:    linux-rdma@vger.kernel.or
  S:    Supported
  F:    drivers/infiniband/hw/ehca/
  
 +EHEA (IBM pSeries eHEA 10Gb ethernet adapter) DRIVER
 +M:    Breno Leitao <leitao@linux.vnet.ibm.com>
 +L:    netdev@vger.kernel.org
 +S:    Maintained
 +F:    drivers/net/ehea/
 +
  EMBEDDED LINUX
  M:    Paul Gortmaker <paul.gortmaker@windriver.com>
  M:    Matt Mackall <mpm@selenic.com>
@@@ -2252,12 -2199,6 +2252,12 @@@ F:    drivers/misc/cb710
  F:    drivers/mmc/host/cb710-mmc.*
  F:    include/linux/cb710.h
  
 +ENE KB2426 (ENE0100/ENE020XX) INFRARED RECEIVER
 +M:    Maxim Levitsky <maximlevitsky@gmail.com>
 +S:    Maintained
 +F:    drivers/media/IR/ene_ir.c
 +F:    drivers/media/IR/ene_ir.h
 +
  EPSON 1355 FRAMEBUFFER DRIVER
  M:    Christopher Hoover <ch@murgatroid.com>
  M:    Christopher Hoover <ch@hpl.hp.com>
@@@ -2292,7 -2233,6 +2292,7 @@@ S:      Maintaine
  F:    drivers/net/eth16i.c
  
  EXT2 FILE SYSTEM
 +M:    Jan Kara <jack@suse.cz>
  L:    linux-ext4@vger.kernel.org
  S:    Maintained
  F:    Documentation/filesystems/ext2.txt
@@@ -2300,9 -2240,8 +2300,9 @@@ F:      fs/ext2
  F:    include/linux/ext2*
  
  EXT3 FILE SYSTEM
 +M:    Jan Kara <jack@suse.cz>
  M:    Andrew Morton <akpm@linux-foundation.org>
 -M:    Andreas Dilger <adilger@sun.com>
 +M:    Andreas Dilger <adilger.kernel@dilger.ca>
  L:    linux-ext4@vger.kernel.org
  S:    Maintained
  F:    Documentation/filesystems/ext3.txt
@@@ -2311,7 -2250,7 +2311,7 @@@ F:      include/linux/ext3
  
  EXT4 FILE SYSTEM
  M:    "Theodore Ts'o" <tytso@mit.edu>
 -M:    Andreas Dilger <adilger@sun.com>
 +M:    Andreas Dilger <adilger.kernel@dilger.ca>
  L:    linux-ext4@vger.kernel.org
  W:    http://ext4.wiki.kernel.org
  Q:    http://patchwork.ozlabs.org/project/linux-ext4/list/
@@@ -2326,12 -2265,6 +2326,12 @@@ S:    Maintaine
  F:    Documentation/hwmon/f71805f
  F:    drivers/hwmon/f71805f.c
  
 +FANOTIFY
 +M:    Eric Paris <eparis@redhat.com>
 +S:    Maintained
 +F:    fs/notify/fanotify/
 +F:    include/linux/fanotify.h
 +
  FARSYNC SYNCHRONOUS DRIVER
  M:    Kevin Curtis <kevin.curtis@farsite.co.uk>
  W:    http://www.farsite.co.uk/
@@@ -2385,7 -2318,6 +2385,7 @@@ T:      git git://git.kernel.org/pub/scm/lin
  S:    Maintained
  F:    drivers/firewire/
  F:    include/linux/firewire*.h
 +F:    tools/firewire/
  
  FIRMWARE LOADER (request_firmware)
  S:    Orphan
@@@ -2417,13 -2349,13 +2417,13 @@@ F:   include/linux/fb.
  FREESCALE DMA DRIVER
  M:    Li Yang <leoli@freescale.com>
  M:    Zhang Wei <zw@zh-kernel.org>
 -L:    linuxppc-dev@ozlabs.org
 +L:    linuxppc-dev@lists.ozlabs.org
  S:    Maintained
  F:    drivers/dma/fsldma.*
  
  FREESCALE I2C CPM DRIVER
  M:    Jochen Friedrich <jochen@scram.de>
 -L:    linuxppc-dev@ozlabs.org
 +L:    linuxppc-dev@lists.ozlabs.org
  L:    linux-i2c@vger.kernel.org
  S:    Maintained
  F:    drivers/i2c/busses/i2c-cpm.c
@@@ -2439,7 -2371,7 +2439,7 @@@ F:      drivers/video/imxfb.
  FREESCALE SOC FS_ENET DRIVER
  M:    Pantelis Antoniou <pantelis.antoniou@gmail.com>
  M:    Vitaly Bordug <vbordug@ru.mvista.com>
 -L:    linuxppc-dev@ozlabs.org
 +L:    linuxppc-dev@lists.ozlabs.org
  L:    netdev@vger.kernel.org
  S:    Maintained
  F:    drivers/net/fs_enet/
@@@ -2447,7 -2379,7 +2447,7 @@@ F:      include/linux/fs_enet_pd.
  
  FREESCALE QUICC ENGINE LIBRARY
  M:    Timur Tabi <timur@freescale.com>
 -L:    linuxppc-dev@ozlabs.org
 +L:    linuxppc-dev@lists.ozlabs.org
  S:    Supported
  F:    arch/powerpc/sysdev/qe_lib/
  F:    arch/powerpc/include/asm/*qe.h
  FREESCALE USB PERIPHERAL DRIVERS
  M:    Li Yang <leoli@freescale.com>
  L:    linux-usb@vger.kernel.org
 -L:    linuxppc-dev@ozlabs.org
 +L:    linuxppc-dev@lists.ozlabs.org
  S:    Maintained
  F:    drivers/usb/gadget/fsl*
  
  FREESCALE QUICC ENGINE UCC ETHERNET DRIVER
  M:    Li Yang <leoli@freescale.com>
  L:    netdev@vger.kernel.org
 -L:    linuxppc-dev@ozlabs.org
 +L:    linuxppc-dev@lists.ozlabs.org
  S:    Maintained
  F:    drivers/net/ucc_geth*
  
  FREESCALE QUICC ENGINE UCC UART DRIVER
  M:    Timur Tabi <timur@freescale.com>
 -L:    linuxppc-dev@ozlabs.org
 +L:    linuxppc-dev@lists.ozlabs.org
  S:    Supported
  F:    drivers/serial/ucc_uart.c
  
  FREESCALE SOC SOUND DRIVERS
  M:    Timur Tabi <timur@freescale.com>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
 -L:    linuxppc-dev@ozlabs.org
 +L:    linuxppc-dev@lists.ozlabs.org
  S:    Supported
  F:    sound/soc/fsl/fsl*
  F:    sound/soc/fsl/mpc8610_hpcd.c
@@@ -2610,7 -2542,7 +2610,7 @@@ F:      mm/memory-failure.
  F:    mm/hwpoison-inject.c
  
  HYPERVISOR VIRTUAL CONSOLE DRIVER
 -L:    linuxppc-dev@ozlabs.org
 +L:    linuxppc-dev@lists.ozlabs.org
  S:    Odd Fixes
  F:    drivers/char/hvc_*
  
@@@ -2895,12 -2827,6 +2895,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>
@@@ -3277,13 -3203,6 +3277,13 @@@ F:    Documentation/video4linux/*.ivt
  F:    drivers/media/video/ivtv/
  F:    include/linux/ivtv*
  
 +JC42.4 TEMPERATURE SENSOR DRIVER
 +M:    Guenter Roeck <linux@roeck-us.net>
 +L:    lm-sensors@lm-sensors.org
 +S:    Maintained
 +F:    drivers/hwmon/jc42.c
 +F:    Documentation/hwmon/jc42
 +
  JFS FILESYSTEM
  M:    Dave Kleikamp <shaggy@linux.vnet.ibm.com>
  L:    jfs-discussion@lists.sourceforge.net
@@@ -3353,8 -3272,8 +3353,8 @@@ F:      fs/autofs4
  
  KERNEL BUILD + files below scripts/ (unless maintained elsewhere)
  M:    Michal Marek <mmarek@suse.cz>
 -T:    git git://repo.or.cz/linux-kbuild.git for-next
 -T:    git git://repo.or.cz/linux-kbuild.git for-linus
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild-2.6.git for-next
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild-2.6.git rc-fixes
  L:    linux-kbuild@vger.kernel.org
  S:    Maintained
  F:    Documentation/kbuild/
@@@ -3480,6 -3399,13 +3480,6 @@@ F:     include/linux/kmemleak.
  F:    mm/kmemleak.c
  F:    mm/kmemleak-test.c
  
 -KMEMTRACE
 -M:    Eduard - Gabriel Munteanu <eduard.munteanu@linux360.ro>
 -S:    Maintained
 -F:    Documentation/trace/kmemtrace.txt
 -F:    include/linux/kmemtrace.h
 -F:    kernel/trace/kmemtrace.c
 -
  KPROBES
  M:    Ananth N Mavinakayanahalli <ananth@in.ibm.com>
  M:    Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com>
@@@ -3528,9 -3454,9 +3528,9 @@@ F:      drivers/usb/misc/legousbtower.
  
  LGUEST
  M:    Rusty Russell <rusty@rustcorp.com.au>
 -L:    lguest@ozlabs.org
 +L:    lguest@lists.ozlabs.org
  W:    http://lguest.ozlabs.org/
 -S:    Maintained
 +S:    Odd Fixes
  F:    Documentation/lguest/
  F:    arch/x86/lguest/
  F:    drivers/lguest/
@@@ -3547,7 -3473,7 +3547,7 @@@ LINUX FOR POWERPC (32-BIT AND 64-BIT
  M:    Benjamin Herrenschmidt <benh@kernel.crashing.org>
  M:    Paul Mackerras <paulus@samba.org>
  W:    http://www.penguinppc.org/
 -L:    linuxppc-dev@ozlabs.org
 +L:    linuxppc-dev@lists.ozlabs.org
  Q:    http://patchwork.ozlabs.org/project/linuxppc-dev/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc.git
  S:    Supported
@@@ -3557,14 -3483,14 +3557,14 @@@ F:   arch/powerpc
  LINUX FOR POWER MACINTOSH
  M:    Benjamin Herrenschmidt <benh@kernel.crashing.org>
  W:    http://www.penguinppc.org/
 -L:    linuxppc-dev@ozlabs.org
 +L:    linuxppc-dev@lists.ozlabs.org
  S:    Maintained
  F:    arch/powerpc/platforms/powermac/
  F:    drivers/macintosh/
  
  LINUX FOR POWERPC EMBEDDED MPC5XXX
  M:    Grant Likely <grant.likely@secretlab.ca>
 -L:    linuxppc-dev@ozlabs.org
 +L:    linuxppc-dev@lists.ozlabs.org
  T:    git git://git.secretlab.ca/git/linux-2.6.git
  S:    Maintained
  F:    arch/powerpc/platforms/512x/
@@@ -3574,7 -3500,7 +3574,7 @@@ LINUX FOR POWERPC EMBEDDED PPC4X
  M:    Josh Boyer <jwboyer@linux.vnet.ibm.com>
  M:    Matt Porter <mporter@kernel.crashing.org>
  W:    http://www.penguinppc.org/
 -L:    linuxppc-dev@ozlabs.org
 +L:    linuxppc-dev@lists.ozlabs.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jwboyer/powerpc-4xx.git
  S:    Maintained
  F:    arch/powerpc/platforms/40x/
@@@ -3583,7 -3509,7 +3583,7 @@@ F:      arch/powerpc/platforms/44x
  LINUX FOR POWERPC EMBEDDED XILINX VIRTEX
  M:    Grant Likely <grant.likely@secretlab.ca>
  W:    http://wiki.secretlab.ca/index.php/Linux_on_Xilinx_Virtex
 -L:    linuxppc-dev@ozlabs.org
 +L:    linuxppc-dev@lists.ozlabs.org
  T:    git git://git.secretlab.ca/git/linux-2.6.git
  S:    Maintained
  F:    arch/powerpc/*/*virtex*
@@@ -3593,20 -3519,19 +3593,20 @@@ LINUX FOR POWERPC EMBEDDED PPC8X
  M:    Vitaly Bordug <vitb@kernel.crashing.org>
  M:    Marcelo Tosatti <marcelo@kvack.org>
  W:    http://www.penguinppc.org/
 -L:    linuxppc-dev@ozlabs.org
 +L:    linuxppc-dev@lists.ozlabs.org
  S:    Maintained
 +F:    arch/powerpc/platforms/8xx/
  
  LINUX FOR POWERPC EMBEDDED PPC83XX AND PPC85XX
  M:    Kumar Gala <galak@kernel.crashing.org>
  W:    http://www.penguinppc.org/
 -L:    linuxppc-dev@ozlabs.org
 +L:    linuxppc-dev@lists.ozlabs.org
  S:    Maintained
  F:    arch/powerpc/platforms/83xx/
  
  LINUX FOR POWERPC PA SEMI PWRFICIENT
  M:    Olof Johansson <olof@lixom.net>
 -L:    linuxppc-dev@ozlabs.org
 +L:    linuxppc-dev@lists.ozlabs.org
  S:    Maintained
  F:    arch/powerpc/platforms/pasemi/
  F:    drivers/*/*pasemi*
@@@ -3698,7 -3623,7 +3698,7 @@@ M:      Mike Frysinger <vapier@gentoo.org
  M:    Subrata Modak <subrata@linux.vnet.ibm.com>
  L:    ltp-list@lists.sourceforge.net (subscribers-only)
  W:    http://ltp.sourceforge.net/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/galak/ltp.git
 +T:    git git://ltp.git.sourceforge.net/gitroot/ltp/ltp-dev
  S:    Maintained
  
  M32R ARCHITECTURE
@@@ -3959,7 -3884,8 +3959,7 @@@ F:      Documentation/sound/oss/MultiSoun
  F:    sound/oss/msnd*
  
  MULTITECH MULTIPORT CARD (ISICOM)
 -M:    Jiri Slaby <jirislaby@gmail.com>
 -S:    Maintained
 +S:    Orphan
  F:    drivers/char/isicom.c
  F:    include/linux/isicom.h
  
@@@ -4119,7 -4045,7 +4119,7 @@@ F:      net/rfkill
  F:    net/wireless/
  F:    include/net/ieee80211*
  F:    include/linux/wireless.h
 -F:    include/linux/iw_handler.h
 +F:    include/net/iw_handler.h
  F:    drivers/net/wireless/
  
  NETWORKING DRIVERS
@@@ -4267,8 -4193,6 +4267,8 @@@ M:      David Brownell <dbrownell@users.sour
  L:    linux-usb@vger.kernel.org
  L:    linux-omap@vger.kernel.org
  S:    Maintained
 +F:    drivers/usb/*/*omap*
 +F:    arch/arm/*omap*/usb*
  
  OMFS FILESYSTEM
  M:    Bob Copeland <me@bobcopeland.com>
@@@ -4452,13 -4376,6 +4452,13 @@@ M:    Jim Cromie <jim.cromie@gmail.com
  S:    Maintained
  F:    drivers/char/pc8736x_gpio.c
  
 +PC87427 HARDWARE MONITORING DRIVER
 +M:    Jean Delvare <khali@linux-fr.org>
 +L:    lm-sensors@lm-sensors.org
 +S:    Maintained
 +F:    Documentation/hwmon/pc87427
 +F:    drivers/hwmon/pc87427.c
 +
  PCA9532 LED DRIVER
  M:    Riku Voipio <riku.voipio@iki.fi>
  S:    Maintained
@@@ -4615,7 -4532,7 +4615,7 @@@ F:      drivers/net/pppox.
  PPP OVER L2TP
  M:    James Chapman <jchapman@katalix.com>
  S:    Maintained
 -F:    drivers/net/pppol2tp.c
 +F:    net/l2tp/l2tp_ppp.c
  F:    include/linux/if_pppol2tp.h
  
  PPS SUPPORT
@@@ -4642,6 -4559,11 +4642,6 @@@ W:     http://wireless.kernel.org/en/users/
  S:    Obsolete
  F:    drivers/net/wireless/prism54/
  
 -PROMISE DC4030 CACHING DISK CONTROLLER DRIVER
 -M:    Peter Denison <promise@pnd-pc.demon.co.uk>
 -W:    http://www.pnd-pc.demon.co.uk/promise/
 -S:    Maintained
 -
  PROMISE SATA TX2/TX4 CONTROLLER LIBATA DRIVER
  M:    Mikael Pettersson <mikpe@it.uu.se>
  L:    linux-ide@vger.kernel.org
@@@ -4651,14 -4573,14 +4651,14 @@@ F:   drivers/ata/sata_promise.
  PS3 NETWORK SUPPORT
  M:    Geoff Levand <geoff@infradead.org>
  L:    netdev@vger.kernel.org
 -L:    cbe-oss-dev@ozlabs.org
 +L:    cbe-oss-dev@lists.ozlabs.org
  S:    Maintained
  F:    drivers/net/ps3_gelic_net.*
  
  PS3 PLATFORM SUPPORT
  M:    Geoff Levand <geoff@infradead.org>
 -L:    linuxppc-dev@ozlabs.org
 -L:    cbe-oss-dev@ozlabs.org
 +L:    linuxppc-dev@lists.ozlabs.org
 +L:    cbe-oss-dev@lists.ozlabs.org
  S:    Maintained
  F:    arch/powerpc/boot/ps3*
  F:    arch/powerpc/include/asm/lv1call.h
@@@ -4672,9 -4594,8 +4672,9 @@@ F:      sound/ppc/snd_ps3
  
  PS3VRAM DRIVER
  M:    Jim Paris <jim@jtan.com>
 -L:    cbe-oss-dev@ozlabs.org
 +L:    cbe-oss-dev@lists.ozlabs.org
  S:    Maintained
 +F:    drivers/block/ps3vram.c
  
  PTRACE SUPPORT
  M:    Roland McGrath <roland@redhat.com>
@@@ -4815,7 -4736,7 +4815,7 @@@ T:      git git://git.kernel.org/pub/scm/lin
  F:    drivers/net/wireless/rt2x00/
  
  RAMDISK RAM BLOCK DEVICE DRIVER
 -M:    Nick Piggin <npiggin@suse.de>
 +M:    Nick Piggin <npiggin@kernel.dk>
  S:    Maintained
  F:    Documentation/blockdev/ramdisk.txt
  F:    drivers/block/brd.c
@@@ -4901,8 -4822,8 +4901,8 @@@ F:      net/rfkill
  RICOH SMARTMEDIA/XD DRIVER
  M:    Maxim Levitsky <maximlevitsky@gmail.com>
  S:    Maintained
 -F:    drivers/mtd/nand/r822.c
 -F:    drivers/mtd/nand/r822.h
 +F:    drivers/mtd/nand/r852.c
 +F:    drivers/mtd/nand/r852.h
  
  RISCOM8 DRIVER
  S:    Orphan
@@@ -5118,7 -5039,7 +5118,7 @@@ F:      drivers/mmc/host/sdhci.
  
  SECURE DIGITAL HOST CONTROLLER INTERFACE, OPEN FIRMWARE BINDINGS (SDHCI-OF)
  M:    Anton Vorontsov <avorontsov@ru.mvista.com>
 -L:    linuxppc-dev@ozlabs.org
 +L:    linuxppc-dev@lists.ozlabs.org
  L:    linux-mmc@vger.kernel.org
  S:    Maintained
  F:    drivers/mmc/host/sdhci-of.*
@@@ -5329,20 -5250,6 +5329,20 @@@ M:    Nicolas Pitre <nico@fluxnic.net
  S:    Odd Fixes
  F:    drivers/net/smc91x.*
  
 +SMM665 HARDWARE MONITOR DRIVER
 +M:    Guenter Roeck <linux@roeck-us.net>
 +L:    lm-sensors@lm-sensors.org
 +S:    Maintained
 +F:    Documentation/hwmon/smm665
 +F:    drivers/hwmon/smm665.c
 +
 +SMSC EMC2103 HARDWARE MONITOR DRIVER
 +M:    Steve Glendinning <steve.glendinning@smsc.com>
 +L:    lm-sensors@lm-sensors.org
 +S:    Supported
 +F:    Documentation/hwmon/emc2103
 +F:    drivers/hwmon/emc2103.c
 +
  SMSC47B397 HARDWARE MONITOR DRIVER
  M:    "Mark M. Hoffman" <mhoffman@lightlink.com>
  L:    lm-sensors@lm-sensors.org
@@@ -5363,6 -5270,11 +5363,6 @@@ L:     netdev@vger.kernel.or
  S:    Supported
  F:    drivers/net/smsc9420.*
  
 -SMX UIO Interface
 -M:    Ben Nizette <bn@niasdigital.com>
 -S:    Maintained
 -F:    drivers/uio/uio_smx.c
 -
  SN-IA64 (Itanium) SUB-PLATFORM
  M:    Jes Sorensen <jes@sgi.com>
  L:    linux-altix@sgi.com
@@@ -5450,7 -5362,7 +5450,7 @@@ T:      git git://git.kernel.org/pub/scm/lin
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-next-2.6.git
  S:    Maintained
  F:    arch/sparc/
 -F:    drivers/sbus
 +F:    drivers/sbus/
  
  SPARC SERIAL DRIVERS
  M:    "David S. Miller" <davem@davemloft.net>
@@@ -5492,8 -5404,7 +5492,8 @@@ S:      Maintaine
  F:    arch/arm/mach-spear*/clock.c
  F:    arch/arm/mach-spear*/include/mach/clkdev.h
  F:    arch/arm/plat-spear/clock.c
 -F:    arch/arm/plat-spear/include/plat/clock.h and clkdev.h
 +F:    arch/arm/plat-spear/include/plat/clkdev.h
 +F:    arch/arm/plat-spear/include/plat/clock.h
  
  SPEAR PAD MULTIPLEXING SUPPORT
  M:    Viresh Kumar <viresh.kumar@st.com>
@@@ -5535,8 -5446,8 +5535,8 @@@ F:      drivers/net/spider_net
  
  SPU FILE SYSTEM
  M:    Jeremy Kerr <jk@ozlabs.org>
 -L:    linuxppc-dev@ozlabs.org
 -L:    cbe-oss-dev@ozlabs.org
 +L:    linuxppc-dev@lists.ozlabs.org
 +L:    cbe-oss-dev@lists.ozlabs.org
  W:    http://www.ibm.com/developerworks/power/cell/
  S:    Supported
  F:    Documentation/filesystems/spufs.txt
@@@ -5573,6 -5484,11 +5573,6 @@@ M:     Ion Badulescu <ionut@badula.org
  S:    Odd Fixes
  F:    drivers/net/starfire*
  
 -STARMODE RADIO IP (STRIP) PROTOCOL DRIVER
 -S:    Orphan
 -F:    drivers/staging/strip/strip.c
 -F:    include/linux/if_strip.h
 -
  STRADIS MPEG-2 DECODER DRIVER
  M:    Nathan Laredo <laredo@gnu.org>
  W:    http://www.stradis.com/
@@@ -5648,15 -5564,6 +5648,15 @@@ W:    http://tcp-lp-mod.sourceforge.net
  S:    Maintained
  F:    net/ipv4/tcp_lp.c
  
 +TEGRA SUPPORT
 +M:    Colin Cross <ccross@android.com>
 +M:    Erik Gilling <konkers@android.com>
 +M:    Olof Johansson <olof@lixom.net>
 +L:    linux-tegra@vger.kernel.org
 +T:    git git://android.git.kernel.org/kernel/tegra.git
 +S:    Supported
 +F:    arch/arm/mach-tegra
 +
  TEHUTI ETHERNET DRIVER
  M:    Alexander Indenbaum <baum@tehutinetworks.net>
  M:    Andy Gospodarek <andy@greyhouse.net>
@@@ -5709,12 -5616,6 +5709,12 @@@ F:    include/linux/tipc*.
  F:    include/net/tipc/
  F:    net/tipc/
  
 +TILE ARCHITECTURE
 +M:    Chris Metcalf <cmetcalf@tilera.com>
 +W:    http://www.tilera.com/scm/
 +S:    Supported
 +F:    arch/tile/
 +
  TLAN NETWORK DRIVER
  M:    Samuel Chessman <chessman@tux.org>
  L:    tlan-devel@lists.sourceforge.net (subscribers-only)
@@@ -5779,7 -5680,7 +5779,7 @@@ TRACIN
  M:    Steven Rostedt <rostedt@goodmis.org>
  M:    Frederic Weisbecker <fweisbec@gmail.com>
  M:    Ingo Molnar <mingo@redhat.com>
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip.git tracing/core
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip.git perf/core
  S:    Maintained
  F:    Documentation/trace/ftrace.txt
  F:    arch/*/*/*/ftrace.h
@@@ -5852,9 -5753,6 +5852,9 @@@ UCLINUX FOR RENESAS H8/300 (H8300
  M:    Yoshinori Sato <ysato@users.sourceforge.jp>
  W:    http://uclinux-h8.sourceforge.jp/
  S:    Supported
 +F:    arch/h8300/
 +F:    drivers/ide/ide-h8300.c
 +F:    drivers/net/ne-h8300.c
  
  UDF FILESYSTEM
  M:    Jan Kara <jack@suse.cz>
@@@ -6146,7 -6044,7 +6146,7 @@@ F:      drivers/net/usb/usbnet.
  F:    include/linux/usb/usbnet.h
  
  USB VIDEO CLASS
 -M:    Laurent Pinchart <laurent.pinchart@skynet.be>
 +M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
  L:    linux-uvc-devel@lists.berlios.de (subscribers-only)
  L:    linux-media@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
@@@ -6279,12 -6177,9 +6279,12 @@@ F:    drivers/mmc/host/via-sdmmc.
  
  VIA UNICHROME(PRO)/CHROME9 FRAMEBUFFER DRIVER
  M:    Joseph Chan <JosephChan@via.com.tw>
 -M:    Scott Fang <ScottFang@viatech.com.cn>
 +M:    Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
  L:    linux-fbdev@vger.kernel.org
  S:    Maintained
 +F:    include/linux/via-core.h
 +F:    include/linux/via-gpio.h
 +F:    include/linux/via_i2c.h
  F:    drivers/video/via/
  
  VIA VELOCITY NETWORK DRIVER
@@@ -6398,11 -6293,6 +6398,11 @@@ M:    linux-wimax@intel.co
  L:    wimax@linuxwimax.org
  S:    Supported
  W:    http://linuxwimax.org
 +F:    Documentation/wimax/README.wimax
 +F:    include/linux/wimax.h
 +F:    include/linux/wimax/debug.h
 +F:    include/net/wimax.h
 +F:    net/wimax/
  
  WIMEDIA LLC PROTOCOL (WLP) SUBSYSTEM
  M:    David Vrabel <david.vrabel@csr.com>
@@@ -6431,7 -6321,7 +6431,7 @@@ WL1271 WIRELESS DRIVE
  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
@@@ -6453,9 -6343,8 +6453,9 @@@ S:      Supporte
  F:    drivers/input/touchscreen/*wm97*
  F:    include/linux/wm97xx.h
  
 -WOLFSON MICROELECTRONICS PMIC DRIVERS
 +WOLFSON MICROELECTRONICS DRIVERS
  M:    Mark Brown <broonie@opensource.wolfsonmicro.com>
 +M:    Ian Lartey <ian@opensource.wolfsonmicro.com>
  T:    git git://opensource.wolfsonmicro.com/linux-2.6-audioplus
  W:    http://opensource.wolfsonmicro.com/node/8
  S:    Supported
@@@ -6470,8 -6359,8 +6470,8 @@@ F:      drivers/watchdog/wm83*_wdt.
  F:    include/linux/mfd/wm831x/
  F:    include/linux/mfd/wm8350/
  F:    include/linux/mfd/wm8400*
 -F:    sound/soc/codecs/wm8350.*
 -F:    sound/soc/codecs/wm8400.*
 +F:    include/sound/wm????.h
 +F:    sound/soc/codecs/wm*
  
  X.25 NETWORK LAYER
  M:    Andrew Hendry <andrew.hendry@gmail.com>
@@@ -6579,20 -6468,6 +6579,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 2466c0a52e5d12f548528673f39337b2b1de11eb,52ce4383a0561769c423ed8784ff93ac8f0d8b49..f575e757caeb549ba71ed5a61ab28a63080eac41
@@@ -73,7 -73,6 +73,6 @@@ static void b43_nphy_rf_control_overrid
                                                u16 value, u8 core, bool off);
  static void b43_nphy_rf_control_intc_override(struct b43_wldev *dev, u8 field,
                                                u16 value, u8 core);
- static int nphy_channel_switch(struct b43_wldev *dev, unsigned int channel);
  
  static inline bool b43_empty_chanspec(struct b43_chanspec *chanspec)
  {
@@@ -223,7 -222,7 +222,7 @@@ static void b43_radio_init2055_post(str
        if (i)
                b43err(dev->wl, "radio post init timeout\n");
        b43_radio_mask(dev, B2055_CAL_LPOCTL, 0xFF7F);
-       nphy_channel_switch(dev, dev->phy.channel);
+       b43_switch_channel(dev, dev->phy.channel);
        b43_radio_write(dev, B2055_C1_RX_BB_LPF, 0x9);
        b43_radio_write(dev, B2055_C2_RX_BB_LPF, 0x9);
        b43_radio_write(dev, B2055_C1_RX_BB_MIDACHP, 0x83);
@@@ -1183,7 -1182,7 +1182,7 @@@ static u16 b43_nphy_gen_load_samples(st
                len = bw << 1;
        }
  
 -      samples = kzalloc(len * sizeof(struct b43_c32), GFP_KERNEL);
 +      samples = kcalloc(len, sizeof(struct b43_c32), GFP_KERNEL);
        if (!samples) {
                b43err(dev->wl, "allocation for samples generation failed\n");
                return 0;
@@@ -3351,12 -3350,6 +3350,6 @@@ static void b43_nphy_chanspec_setup(str
  
        b43_chantab_phy_upload(dev, e);
  
-       tmp = chanspec.channel;
-       if (chanspec.b_freq == 1)
-               tmp |= 0x0100;
-       if (chanspec.b_width == 3)
-               tmp |= 0x0200;
-       b43_shm_write16(dev, B43_SHM_SHARED, 0xA0, tmp);
  
        if (nphy->radio_chanspec.channel == 14) {
                b43_nphy_classifier(dev, 2, 0);
@@@ -3438,18 -3431,6 +3431,6 @@@ static int b43_nphy_set_chanspec(struc
        return 0;
  }
  
- /* Tune the hardware to a new channel */
- static int nphy_channel_switch(struct b43_wldev *dev, unsigned int channel)
- {
-       struct b43_phy_n *nphy = dev->phy.n;
-       struct b43_chanspec chanspec;
-       chanspec = nphy->radio_chanspec;
-       chanspec.channel = channel;
-       return b43_nphy_set_chanspec(dev, chanspec);
- }
  static int b43_nphy_op_allocate(struct b43_wldev *dev)
  {
        struct b43_phy_n *nphy;
@@@ -3570,7 -3551,7 +3551,7 @@@ static void b43_nphy_op_software_rfkill
        } else {
                if (dev->phy.rev >= 3) {
                        b43_radio_init2056(dev);
-                       b43_nphy_set_chanspec(dev, nphy->radio_chanspec);
+                       b43_switch_channel(dev, dev->phy.channel);
                } else {
                        b43_radio_init2055(dev);
                }
@@@ -3586,6 -3567,9 +3567,9 @@@ static void b43_nphy_op_switch_analog(s
  static int b43_nphy_op_switch_channel(struct b43_wldev *dev,
                                      unsigned int new_channel)
  {
+       struct b43_phy_n *nphy = dev->phy.n;
+       struct b43_chanspec chanspec;
        if (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ) {
                if ((new_channel < 1) || (new_channel > 14))
                        return -EINVAL;
                        return -EINVAL;
        }
  
-       return nphy_channel_switch(dev, new_channel);
+       chanspec = nphy->radio_chanspec;
+       chanspec.channel = new_channel;
+       return b43_nphy_set_chanspec(dev, chanspec);
  }
  
  static unsigned int b43_nphy_op_get_default_chan(struct b43_wldev *dev)
index 0f2508384c751c35422e598f1c561e1db2372d43,d04d760827779c5bf0289e75985e66f4913bee47..8d6ed5f6f46f4a423e31943dc70b70fd3727569f
@@@ -11467,9 -11467,13 +11467,13 @@@ static int ipw_net_init(struct net_devi
  
                bg_band->band = IEEE80211_BAND_2GHZ;
                bg_band->n_channels = geo->bg_channels;
 -              bg_band->channels =
 -                      kzalloc(geo->bg_channels *
 -                              sizeof(struct ieee80211_channel), GFP_KERNEL);
 +              bg_band->channels = kcalloc(geo->bg_channels,
 +                                          sizeof(struct ieee80211_channel),
 +                                          GFP_KERNEL);
+               if (!bg_band->channels) {
+                       rc = -ENOMEM;
+                       goto out;
+               }
                /* translate geo->bg to bg_band.channels */
                for (i = 0; i < geo->bg_channels; i++) {
                        bg_band->channels[i].band = IEEE80211_BAND_2GHZ;
  
                a_band->band = IEEE80211_BAND_5GHZ;
                a_band->n_channels = geo->a_channels;
 -              a_band->channels =
 -                      kzalloc(geo->a_channels *
 -                              sizeof(struct ieee80211_channel), GFP_KERNEL);
 +              a_band->channels = kcalloc(geo->a_channels,
 +                                         sizeof(struct ieee80211_channel),
 +                                         GFP_KERNEL);
+               if (!a_band->channels) {
+                       rc = -ENOMEM;
+                       goto out;
+               }
                /* translate geo->bg to a_band.channels */
                for (i = 0; i < geo->a_channels; i++) {
                        a_band->channels[i].band = IEEE80211_BAND_2GHZ;
index 1bbdb14f7d760a9309ac2fafc98b862e1dd0b990,1dc44bc6511fb88c8288499449348e211f9c4d50..5046a00050348cc03fa4d10a566144449542bf36
@@@ -6,8 -6,6 +6,8 @@@
   *
   */
  
 +#include <linux/sched.h>
 +#include <linux/wait.h>
  #include <linux/slab.h>
  #include <linux/sched.h>
  #include <linux/wait.h>
@@@ -1440,7 -1438,7 +1440,7 @@@ static int lbs_cfg_set_default_key(stru
  
  
  static int lbs_cfg_add_key(struct wiphy *wiphy, struct net_device *netdev,
-                          u8 idx, const u8 *mac_addr,
+                          u8 idx, bool pairwise, const u8 *mac_addr,
                           struct key_params *params)
  {
        struct lbs_private *priv = wiphy_priv(wiphy);
  
  
  static int lbs_cfg_del_key(struct wiphy *wiphy, struct net_device *netdev,
-                          u8 key_index, const u8 *mac_addr)
+                          u8 key_index, bool pairwise, const u8 *mac_addr)
  {
  
        lbs_deb_enter(LBS_DEB_CFG80211);
index 6e94356265b38335dbc8742b0b5d360740724324,103396495065f96fb6a266a6b27e2241f3617f3c..93e44c7f3a749ac5962fb4c6079ee7e8f0493163
@@@ -1674,10 -1674,15 +1674,15 @@@ static int rt2500usb_probe_hw_mode(stru
  
        /*
         * Initialize all hw fields.
+        *
+        * Don't set IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING unless we are
+        * capable of sending the buffered frames out after the DTIM
+        * transmission using rt2x00lib_beacondone. This will send out
+        * multicast and broadcast traffic immediately instead of buffering it
+        * infinitly and thus dropping it after some time.
         */
        rt2x00dev->hw->flags =
            IEEE80211_HW_RX_INCLUDES_FCS |
-           IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING |
            IEEE80211_HW_SIGNAL_DBM |
            IEEE80211_HW_SUPPORTS_PS |
            IEEE80211_HW_PS_NULLFUNC_STACK;
        /*
         * Create channel information array
         */
 -      info = kzalloc(spec->num_channels * sizeof(*info), GFP_KERNEL);
 +      info = kcalloc(spec->num_channels, sizeof(*info), GFP_KERNEL);
        if (!info)
                return -ENOMEM;
  
index 3bb67492d754897e663f532fc0986fcded430209,7f040b0eac360a6d1b823982139ff9bd070dadfd..10aefc4fb0ccef1266547b2c5a419767ef660869
@@@ -483,7 -483,8 +483,8 @@@ void rt2800_write_tx_data(struct queue_
                           txdesc->key_idx : 0xff);
        rt2x00_set_field32(&word, TXWI_W1_MPDU_TOTAL_BYTE_COUNT,
                           txdesc->length);
-       rt2x00_set_field32(&word, TXWI_W1_PACKETID, txdesc->qid + 1);
+       rt2x00_set_field32(&word, TXWI_W1_PACKETID_QUEUE, txdesc->qid);
+       rt2x00_set_field32(&word, TXWI_W1_PACKETID_ENTRY, (entry->entry_idx % 3) + 1);
        rt2x00_desc_write(txwi, 1, word);
  
        /*
@@@ -630,15 -631,90 +631,90 @@@ static bool rt2800_txdone_entry_check(s
        return true;
  }
  
+ void rt2800_txdone_entry(struct queue_entry *entry, u32 status)
+ {
+       struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev;
+       struct skb_frame_desc *skbdesc = get_skb_frame_desc(entry->skb);
+       struct txdone_entry_desc txdesc;
+       u32 word;
+       u16 mcs, real_mcs;
+       int aggr, ampdu;
+       __le32 *txwi;
+       /*
+        * Obtain the status about this packet.
+        */
+       txdesc.flags = 0;
+       txwi = rt2800_drv_get_txwi(entry);
+       rt2x00_desc_read(txwi, 0, &word);
+       mcs = rt2x00_get_field32(word, TXWI_W0_MCS);
+       ampdu = rt2x00_get_field32(word, TXWI_W0_AMPDU);
+       real_mcs = rt2x00_get_field32(status, TX_STA_FIFO_MCS);
+       aggr = rt2x00_get_field32(status, TX_STA_FIFO_TX_AGGRE);
+       /*
+        * If a frame was meant to be sent as a single non-aggregated MPDU
+        * but ended up in an aggregate the used tx rate doesn't correlate
+        * with the one specified in the TXWI as the whole aggregate is sent
+        * with the same rate.
+        *
+        * For example: two frames are sent to rt2x00, the first one sets
+        * AMPDU=1 and requests MCS7 whereas the second frame sets AMDPU=0
+        * and requests MCS15. If the hw aggregates both frames into one
+        * AMDPU the tx status for both frames will contain MCS7 although
+        * the frame was sent successfully.
+        *
+        * Hence, replace the requested rate with the real tx rate to not
+        * confuse the rate control algortihm by providing clearly wrong
+        * data.
+        */
+       if (aggr == 1 && ampdu == 0 && real_mcs != mcs) {
+               skbdesc->tx_rate_idx = real_mcs;
+               mcs = real_mcs;
+       }
+       /*
+        * Ralink has a retry mechanism using a global fallback
+        * table. We setup this fallback table to try the immediate
+        * lower rate for all rates. In the TX_STA_FIFO, the MCS field
+        * always contains the MCS used for the last transmission, be
+        * it successful or not.
+        */
+       if (rt2x00_get_field32(status, TX_STA_FIFO_TX_SUCCESS)) {
+               /*
+                * Transmission succeeded. The number of retries is
+                * mcs - real_mcs
+                */
+               __set_bit(TXDONE_SUCCESS, &txdesc.flags);
+               txdesc.retry = ((mcs > real_mcs) ? mcs - real_mcs : 0);
+       } else {
+               /*
+                * Transmission failed. The number of retries is
+                * always 7 in this case (for a total number of 8
+                * frames sent).
+                */
+               __set_bit(TXDONE_FAILURE, &txdesc.flags);
+               txdesc.retry = rt2x00dev->long_retry;
+       }
+       /*
+        * the frame was retried at least once
+        * -> hw used fallback rates
+        */
+       if (txdesc.retry)
+               __set_bit(TXDONE_FALLBACK, &txdesc.flags);
+       rt2x00lib_txdone(entry, &txdesc);
+ }
+ EXPORT_SYMBOL_GPL(rt2800_txdone_entry);
  void rt2800_txdone(struct rt2x00_dev *rt2x00dev)
  {
        struct data_queue *queue;
        struct queue_entry *entry;
-       __le32 *txwi;
-       struct txdone_entry_desc txdesc;
-       u32 word;
        u32 reg;
-       u16 mcs, real_mcs;
        u8 pid;
        int i;
  
                 * Skip this entry when it contains an invalid
                 * queue identication number.
                 */
-               pid = rt2x00_get_field32(reg, TX_STA_FIFO_PID_TYPE) - 1;
+               pid = rt2x00_get_field32(reg, TX_STA_FIFO_PID_QUEUE);
                if (pid >= QID_RX)
                        continue;
  
                 * order. We first check that the queue is not empty.
                 */
                entry = NULL;
-               txwi = NULL;
                while (!rt2x00queue_empty(queue)) {
                        entry = rt2x00queue_get_entry(queue, Q_INDEX_DONE);
                        if (rt2800_txdone_entry_check(entry, reg))
                if (!entry || rt2x00queue_empty(queue))
                        break;
  
-               /*
-                * Obtain the status about this packet.
-                */
-               txdesc.flags = 0;
-               txwi = rt2800_drv_get_txwi(entry);
-               rt2x00_desc_read(txwi, 0, &word);
-               mcs = rt2x00_get_field32(word, TXWI_W0_MCS);
-               real_mcs = rt2x00_get_field32(reg, TX_STA_FIFO_MCS);
-               /*
-                * Ralink has a retry mechanism using a global fallback
-                * table. We setup this fallback table to try the immediate
-                * lower rate for all rates. In the TX_STA_FIFO, the MCS field
-                * always contains the MCS used for the last transmission, be
-                * it successful or not.
-                */
-               if (rt2x00_get_field32(reg, TX_STA_FIFO_TX_SUCCESS)) {
-                       /*
-                        * Transmission succeeded. The number of retries is
-                        * mcs - real_mcs
-                        */
-                       __set_bit(TXDONE_SUCCESS, &txdesc.flags);
-                       txdesc.retry = ((mcs > real_mcs) ? mcs - real_mcs : 0);
-               } else {
-                       /*
-                        * Transmission failed. The number of retries is
-                        * always 7 in this case (for a total number of 8
-                        * frames sent).
-                        */
-                       __set_bit(TXDONE_FAILURE, &txdesc.flags);
-                       txdesc.retry = rt2x00dev->long_retry;
-               }
-               /*
-                * the frame was retried at least once
-                * -> hw used fallback rates
-                */
-               if (txdesc.retry)
-                       __set_bit(TXDONE_FALLBACK, &txdesc.flags);
-               rt2x00lib_txdone(entry, &txdesc);
+               rt2800_txdone_entry(entry, reg);
        }
  }
  EXPORT_SYMBOL_GPL(rt2800_txdone);
@@@ -1031,8 -1065,12 +1065,12 @@@ int rt2800_config_pairwise_key(struct r
                 * 1 pairwise key is possible per AID, this means that the AID
                 * equals our hw_key_idx. Make sure the WCID starts _after_ the
                 * last possible shared key entry.
+                *
+                * Since parts of the pairwise key table might be shared with
+                * the beacon frame buffers 6 & 7 we should only write into the
+                * first 222 entries.
                 */
-               if (crypto->aid > (256 - 32))
+               if (crypto->aid > (222 - 32))
                        return -ENOSPC;
  
                key->hw_key_idx = 32 + crypto->aid;
@@@ -1159,6 -1197,102 +1197,102 @@@ void rt2800_config_intf(struct rt2x00_d
  }
  EXPORT_SYMBOL_GPL(rt2800_config_intf);
  
+ static void rt2800_config_ht_opmode(struct rt2x00_dev *rt2x00dev,
+                                   struct rt2x00lib_erp *erp)
+ {
+       bool any_sta_nongf = !!(erp->ht_opmode &
+                               IEEE80211_HT_OP_MODE_NON_GF_STA_PRSNT);
+       u8 protection = erp->ht_opmode & IEEE80211_HT_OP_MODE_PROTECTION;
+       u8 mm20_mode, mm40_mode, gf20_mode, gf40_mode;
+       u16 mm20_rate, mm40_rate, gf20_rate, gf40_rate;
+       u32 reg;
+       /* default protection rate for HT20: OFDM 24M */
+       mm20_rate = gf20_rate = 0x4004;
+       /* default protection rate for HT40: duplicate OFDM 24M */
+       mm40_rate = gf40_rate = 0x4084;
+       switch (protection) {
+       case IEEE80211_HT_OP_MODE_PROTECTION_NONE:
+               /*
+                * All STAs in this BSS are HT20/40 but there might be
+                * STAs not supporting greenfield mode.
+                * => Disable protection for HT transmissions.
+                */
+               mm20_mode = mm40_mode = gf20_mode = gf40_mode = 0;
+               break;
+       case IEEE80211_HT_OP_MODE_PROTECTION_20MHZ:
+               /*
+                * All STAs in this BSS are HT20 or HT20/40 but there
+                * might be STAs not supporting greenfield mode.
+                * => Protect all HT40 transmissions.
+                */
+               mm20_mode = gf20_mode = 0;
+               mm40_mode = gf40_mode = 2;
+               break;
+       case IEEE80211_HT_OP_MODE_PROTECTION_NONMEMBER:
+               /*
+                * Nonmember protection:
+                * According to 802.11n we _should_ protect all
+                * HT transmissions (but we don't have to).
+                *
+                * But if cts_protection is enabled we _shall_ protect
+                * all HT transmissions using a CCK rate.
+                *
+                * And if any station is non GF we _shall_ protect
+                * GF transmissions.
+                *
+                * We decide to protect everything
+                * -> fall through to mixed mode.
+                */
+       case IEEE80211_HT_OP_MODE_PROTECTION_NONHT_MIXED:
+               /*
+                * Legacy STAs are present
+                * => Protect all HT transmissions.
+                */
+               mm20_mode = mm40_mode = gf20_mode = gf40_mode = 2;
+               /*
+                * If erp protection is needed we have to protect HT
+                * transmissions with CCK 11M long preamble.
+                */
+               if (erp->cts_protection) {
+                       /* don't duplicate RTS/CTS in CCK mode */
+                       mm20_rate = mm40_rate = 0x0003;
+                       gf20_rate = gf40_rate = 0x0003;
+               }
+               break;
+       };
+       /* check for STAs not supporting greenfield mode */
+       if (any_sta_nongf)
+               gf20_mode = gf40_mode = 2;
+       /* Update HT protection config */
+       rt2800_register_read(rt2x00dev, MM20_PROT_CFG, &reg);
+       rt2x00_set_field32(&reg, MM20_PROT_CFG_PROTECT_RATE, mm20_rate);
+       rt2x00_set_field32(&reg, MM20_PROT_CFG_PROTECT_CTRL, mm20_mode);
+       rt2800_register_write(rt2x00dev, MM20_PROT_CFG, reg);
+       rt2800_register_read(rt2x00dev, MM40_PROT_CFG, &reg);
+       rt2x00_set_field32(&reg, MM40_PROT_CFG_PROTECT_RATE, mm40_rate);
+       rt2x00_set_field32(&reg, MM40_PROT_CFG_PROTECT_CTRL, mm40_mode);
+       rt2800_register_write(rt2x00dev, MM40_PROT_CFG, reg);
+       rt2800_register_read(rt2x00dev, GF20_PROT_CFG, &reg);
+       rt2x00_set_field32(&reg, GF20_PROT_CFG_PROTECT_RATE, gf20_rate);
+       rt2x00_set_field32(&reg, GF20_PROT_CFG_PROTECT_CTRL, gf20_mode);
+       rt2800_register_write(rt2x00dev, GF20_PROT_CFG, reg);
+       rt2800_register_read(rt2x00dev, GF40_PROT_CFG, &reg);
+       rt2x00_set_field32(&reg, GF40_PROT_CFG_PROTECT_RATE, gf40_rate);
+       rt2x00_set_field32(&reg, GF40_PROT_CFG_PROTECT_CTRL, gf40_mode);
+       rt2800_register_write(rt2x00dev, GF40_PROT_CFG, reg);
+ }
  void rt2800_config_erp(struct rt2x00_dev *rt2x00dev, struct rt2x00lib_erp *erp,
                       u32 changed)
  {
                                   erp->beacon_int * 16);
                rt2800_register_write(rt2x00dev, BCN_TIME_CFG, reg);
        }
+       if (changed & BSS_CHANGED_HT)
+               rt2800_config_ht_opmode(rt2x00dev, erp);
  }
  EXPORT_SYMBOL_GPL(rt2800_config_erp);
  
@@@ -1907,8 -2044,7 +2044,7 @@@ static int rt2800_init_registers(struc
  
        rt2800_register_read(rt2x00dev, MM40_PROT_CFG, &reg);
        rt2x00_set_field32(&reg, MM40_PROT_CFG_PROTECT_RATE, 0x4084);
-       rt2x00_set_field32(&reg, MM40_PROT_CFG_PROTECT_CTRL,
-                          !rt2x00_is_usb(rt2x00dev));
+       rt2x00_set_field32(&reg, MM40_PROT_CFG_PROTECT_CTRL, 0);
        rt2x00_set_field32(&reg, MM40_PROT_CFG_PROTECT_NAV, 1);
        rt2x00_set_field32(&reg, MM40_PROT_CFG_TX_OP_ALLOW_CCK, 1);
        rt2x00_set_field32(&reg, MM40_PROT_CFG_TX_OP_ALLOW_OFDM, 1);
@@@ -3056,11 -3192,20 +3192,20 @@@ int rt2800_probe_hw_mode(struct rt2x00_
         * Initialize all hw fields.
         */
        rt2x00dev->hw->flags =
-           IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING |
            IEEE80211_HW_SIGNAL_DBM |
            IEEE80211_HW_SUPPORTS_PS |
            IEEE80211_HW_PS_NULLFUNC_STACK |
            IEEE80211_HW_AMPDU_AGGREGATION;
+       /*
+        * Don't set IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING for USB devices
+        * unless we are capable of sending the buffered frames out after the
+        * DTIM transmission using rt2x00lib_beacondone. This will send out
+        * multicast and broadcast traffic immediately instead of buffering it
+        * infinitly and thus dropping it after some time.
+        */
+       if (!rt2x00_is_usb(rt2x00dev))
+               rt2x00dev->hw->flags |=
+                       IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING;
  
        SET_IEEE80211_DEV(rt2x00dev->hw, rt2x00dev->dev);
        SET_IEEE80211_PERM_ADDR(rt2x00dev->hw,
         * As rt2800 has a global fallback table we cannot specify
         * more then one tx rate per frame but since the hw will
         * try several rates (based on the fallback table) we should
-        * still initialize max_rates to the maximum number of rates
+        * initialize max_report_rates to the maximum number of rates
         * we are going to try. Otherwise mac80211 will truncate our
         * reported tx rates and the rc algortihm will end up with
         * incorrect data.
         */
-       rt2x00dev->hw->max_rates = 7;
+       rt2x00dev->hw->max_rates = 1;
+       rt2x00dev->hw->max_report_rates = 7;
        rt2x00dev->hw->max_rate_tries = 1;
  
        rt2x00_eeprom_read(rt2x00dev, EEPROM_ANTENNA, &eeprom);
        /*
         * Create channel information array
         */
 -      info = kzalloc(spec->num_channels * sizeof(*info), GFP_KERNEL);
 +      info = kcalloc(spec->num_channels, sizeof(*info), GFP_KERNEL);
        if (!info)
                return -ENOMEM;
  
@@@ -3333,8 -3479,12 +3479,12 @@@ int rt2800_ampdu_action(struct ieee8021
        switch (action) {
        case IEEE80211_AMPDU_RX_START:
        case IEEE80211_AMPDU_RX_STOP:
-               /* we don't support RX aggregation yet */
-               ret = -ENOTSUPP;
+               /*
+                * The hw itself takes care of setting up BlockAck mechanisms.
+                * So, we only have to allow mac80211 to nagotiate a BlockAck
+                * agreement. Once that is done, the hw will BlockAck incoming
+                * AMPDUs without further setup.
+                */
                break;
        case IEEE80211_AMPDU_TX_START:
                ieee80211_start_tx_ba_cb_irqsafe(vif, sta->addr, tid);
index 97b3935f615bfd4388a80cec84ff8bda850c220a,ac370f11e74fc88b594aaff223f224798bc3fbd9..af548c87f1084a6d641430bfd5fbf84bef52b8a0
@@@ -2630,12 -2630,13 +2630,13 @@@ static int rt61pci_probe_hw_mode(struc
         * As rt61 has a global fallback table we cannot specify
         * more then one tx rate per frame but since the hw will
         * try several rates (based on the fallback table) we should
-        * still initialize max_rates to the maximum number of rates
+        * initialize max_report_rates to the maximum number of rates
         * we are going to try. Otherwise mac80211 will truncate our
         * reported tx rates and the rc algortihm will end up with
         * incorrect data.
         */
-       rt2x00dev->hw->max_rates = 7;
+       rt2x00dev->hw->max_rates = 1;
+       rt2x00dev->hw->max_report_rates = 7;
        rt2x00dev->hw->max_rate_tries = 1;
  
        /*
        /*
         * Create channel information array
         */
 -      info = kzalloc(spec->num_channels * sizeof(*info), GFP_KERNEL);
 +      info = kcalloc(spec->num_channels, sizeof(*info), GFP_KERNEL);
        if (!info)
                return -ENOMEM;
  
index e22f01c1818e141a5802b29b14a4f15e13d71b78,66939fd8689dd297f421e5bd403496c31a581516..9be8089317e4b1a6ffe7921f9d46bae9336b7cc7
@@@ -2063,9 -2063,14 +2063,14 @@@ static int rt73usb_probe_hw_mode(struc
  
        /*
         * Initialize all hw fields.
+        *
+        * Don't set IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING unless we are
+        * capable of sending the buffered frames out after the DTIM
+        * transmission using rt2x00lib_beacondone. This will send out
+        * multicast and broadcast traffic immediately instead of buffering it
+        * infinitly and thus dropping it after some time.
         */
        rt2x00dev->hw->flags =
-           IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING |
            IEEE80211_HW_SIGNAL_DBM |
            IEEE80211_HW_SUPPORTS_PS |
            IEEE80211_HW_PS_NULLFUNC_STACK;
        /*
         * Create channel information array
         */
 -      info = kzalloc(spec->num_channels * sizeof(*info), GFP_KERNEL);
 +      info = kcalloc(spec->num_channels, sizeof(*info), GFP_KERNEL);
        if (!info)
                return -ENOMEM;
  
@@@ -2365,6 -2370,7 +2370,7 @@@ static struct usb_device_id rt73usb_dev
        { USB_DEVICE(0x0411, 0x00f4), USB_DEVICE_DATA(&rt73usb_ops) },
        { USB_DEVICE(0x0411, 0x0116), USB_DEVICE_DATA(&rt73usb_ops) },
        { USB_DEVICE(0x0411, 0x0119), USB_DEVICE_DATA(&rt73usb_ops) },
+       { USB_DEVICE(0x0411, 0x0137), USB_DEVICE_DATA(&rt73usb_ops) },
        /* CEIVA */
        { USB_DEVICE(0x178d, 0x02be), USB_DEVICE_DATA(&rt73usb_ops) },
        /* CNet */
index e4950c8e396e38a57c553c81875ab51b2aa04d43,5c76b79a96bf0e27f3e478d746f62f1b9edcb2eb..909bb47995b6907ee8afad05c3acf37500043d4a
  #include "wl1271_scan.h"
  #include "wl1271_acx.h"
  
+ void wl1271_scan_complete_work(struct work_struct *work)
+ {
+       struct delayed_work *dwork;
+       struct wl1271 *wl;
+       dwork = container_of(work, struct delayed_work, work);
+       wl = container_of(dwork, struct wl1271, scan_complete_work);
+       wl1271_debug(DEBUG_SCAN, "Scanning complete");
+       mutex_lock(&wl->mutex);
+       if (wl->scan.state == WL1271_SCAN_STATE_IDLE) {
+               mutex_unlock(&wl->mutex);
+               return;
+       }
+       wl->scan.state = WL1271_SCAN_STATE_IDLE;
+       kfree(wl->scan.scanned_ch);
+       wl->scan.scanned_ch = NULL;
+       mutex_unlock(&wl->mutex);
+       ieee80211_scan_completed(wl->hw, false);
+       if (wl->scan.failed) {
+               wl1271_info("Scan completed due to error.");
+               ieee80211_queue_work(wl->hw, &wl->recovery_work);
+       }
+ }
  static int wl1271_get_scan_channels(struct wl1271 *wl,
                                    struct cfg80211_scan_request *req,
                                    struct basic_scan_channel_params *channels,
                                    enum ieee80211_band band, bool passive)
  {
+       struct conf_scan_settings *c = &wl->conf.scan;
        int i, j;
        u32 flags;
  
                        wl1271_debug(DEBUG_SCAN, "beacon_found %d",
                                     req->channels[i]->beacon_found);
  
-                       channels[j].min_duration =
-                               cpu_to_le32(WL1271_SCAN_CHAN_MIN_DURATION);
-                       channels[j].max_duration =
-                               cpu_to_le32(WL1271_SCAN_CHAN_MAX_DURATION);
+                       if (!passive) {
+                               channels[j].min_duration =
+                                       cpu_to_le32(c->min_dwell_time_active);
+                               channels[j].max_duration =
+                                       cpu_to_le32(c->max_dwell_time_active);
+                       } else {
+                               channels[j].min_duration =
+                                       cpu_to_le32(c->min_dwell_time_passive);
+                               channels[j].max_duration =
+                                       cpu_to_le32(c->max_dwell_time_passive);
+                       }
                        channels[j].early_termination = 0;
                        channels[j].tx_power_att = req->channels[i]->max_power;
                        channels[j].channel = req->channels[i]->hw_value;
@@@ -100,8 -139,11 +139,11 @@@ static int wl1271_scan_send(struct wl12
  
        /* We always use high priority scans */
        scan_options = WL1271_SCAN_OPT_PRIORITY_HIGH;
-       if(passive)
+       /* No SSIDs means that we have a forced passive scan */
+       if (passive || wl->scan.req->n_ssids == 0)
                scan_options |= WL1271_SCAN_OPT_PASSIVE;
        cmd->params.scan_options = cpu_to_le16(scan_options);
  
        cmd->params.n_ch = wl1271_get_scan_channels(wl, wl->scan.req,
        cmd->params.rx_filter_options =
                cpu_to_le32(CFG_RX_PRSP_EN | CFG_RX_MGMT_EN | CFG_RX_BCN_EN);
  
-       cmd->params.n_probe_reqs = WL1271_SCAN_PROBE_REQS;
+       cmd->params.n_probe_reqs = wl->conf.scan.num_probe_reqs;
        cmd->params.tx_rate = cpu_to_le32(basic_rate);
        cmd->params.tid_trigger = 0;
        cmd->params.scan_tag = WL1271_SCAN_DEFAULT_TAG;
@@@ -165,7 -207,7 +207,7 @@@ out
  
  void wl1271_scan_stm(struct wl1271 *wl)
  {
-       int ret;
+       int ret = 0;
  
        switch (wl->scan.state) {
        case WL1271_SCAN_STATE_IDLE:
                ret = wl1271_scan_send(wl, IEEE80211_BAND_2GHZ, true,
                                       wl->conf.tx.basic_rate);
                if (ret == WL1271_NOTHING_TO_SCAN) {
-                       if (wl1271_11a_enabled())
+                       if (wl->enable_11a)
                                wl->scan.state = WL1271_SCAN_STATE_5GHZ_ACTIVE;
                        else
                                wl->scan.state = WL1271_SCAN_STATE_DONE;
                break;
  
        case WL1271_SCAN_STATE_DONE:
-               ieee80211_scan_completed(wl->hw, false);
-               kfree(wl->scan.scanned_ch);
-               wl->scan.scanned_ch = NULL;
-               wl->scan.state = WL1271_SCAN_STATE_IDLE;
+               wl->scan.failed = false;
+               cancel_delayed_work(&wl->scan_complete_work);
+               ieee80211_queue_delayed_work(wl->hw, &wl->scan_complete_work,
+                                            msecs_to_jiffies(0));
                break;
  
        default:
                wl1271_error("invalid scan state");
                break;
        }
+       if (ret < 0) {
+               cancel_delayed_work(&wl->scan_complete_work);
+               ieee80211_queue_delayed_work(wl->hw, &wl->scan_complete_work,
+                                            msecs_to_jiffies(0));
+       }
  }
  
  int wl1271_scan(struct wl1271 *wl, const u8 *ssid, size_t ssid_len,
  
        wl->scan.req = req;
  
 -      wl->scan.scanned_ch = kzalloc(req->n_channels *
 +      wl->scan.scanned_ch = kcalloc(req->n_channels,
                                      sizeof(*wl->scan.scanned_ch),
                                      GFP_KERNEL);
+       /* we assume failure so that timeout scenarios are handled correctly */
+       wl->scan.failed = true;
+       ieee80211_queue_delayed_work(wl->hw, &wl->scan_complete_work,
+                                    msecs_to_jiffies(WL1271_SCAN_TIMEOUT));
        wl1271_scan_stm(wl);
  
        return 0;
diff --combined net/mac80211/main.c
index db341a99c7c7d995ac66964e721df5b984973c1f,915ecf87e4acedf574fae7b342ad0327d1748806..eb0f5997767610f6466032adfb7a529b5ad80aa3
@@@ -201,6 -201,8 +201,8 @@@ void ieee80211_bss_info_change_notify(s
                sdata->vif.bss_conf.bssid = sdata->u.ibss.bssid;
        else if (sdata->vif.type == NL80211_IFTYPE_AP)
                sdata->vif.bss_conf.bssid = sdata->vif.addr;
+       else if (sdata->vif.type == NL80211_IFTYPE_WDS)
+               sdata->vif.bss_conf.bssid = NULL;
        else if (ieee80211_vif_is_mesh(&sdata->vif)) {
                sdata->vif.bss_conf.bssid = zero;
        } else {
        switch (sdata->vif.type) {
        case NL80211_IFTYPE_AP:
        case NL80211_IFTYPE_ADHOC:
+       case NL80211_IFTYPE_WDS:
        case NL80211_IFTYPE_MESH_POINT:
                break;
        default:
@@@ -295,7 -298,16 +298,16 @@@ static void ieee80211_restart_work(stru
        struct ieee80211_local *local =
                container_of(work, struct ieee80211_local, restart_work);
  
+       /* wait for scan work complete */
+       flush_workqueue(local->workqueue);
+       mutex_lock(&local->mtx);
+       WARN(test_bit(SCAN_HW_SCANNING, &local->scanning),
+               "%s called with hardware scan in progress\n", __func__);
+       mutex_unlock(&local->mtx);
        rtnl_lock();
+       ieee80211_scan_cancel(local);
        ieee80211_reconfig(local);
        rtnl_unlock();
  }
@@@ -306,15 -318,6 +318,6 @@@ void ieee80211_restart_hw(struct ieee80
  
        trace_api_restart_hw(local);
  
-       /* wait for scan work complete */
-       flush_workqueue(local->workqueue);
-       WARN(test_bit(SCAN_HW_SCANNING, &local->scanning),
-               "%s called with hardware scan in progress\n", __func__);
-       if (unlikely(test_bit(SCAN_SW_SCANNING, &local->scanning)))
-               ieee80211_scan_cancel(local);
        /* use this reason, ieee80211_reconfig will unblock it */
        ieee80211_stop_queues_by_reason(hw,
                IEEE80211_QUEUE_STOP_REASON_SUSPEND);
@@@ -329,7 -332,7 +332,7 @@@ static void ieee80211_recalc_smps_work(
                container_of(work, struct ieee80211_local, recalc_smps);
  
        mutex_lock(&local->iflist_mtx);
-       ieee80211_recalc_smps(local, NULL);
+       ieee80211_recalc_smps(local);
        mutex_unlock(&local->iflist_mtx);
  }
  
@@@ -366,7 -369,7 +369,7 @@@ static int ieee80211_ifa_changed(struc
        if (sdata->vif.type != NL80211_IFTYPE_STATION)
                return NOTIFY_DONE;
  
 -      idev = sdata->dev->ip_ptr;
 +      idev = __in_dev_get_rtnl(sdata->dev);
        if (!idev)
                return NOTIFY_DONE;
  
@@@ -533,6 -536,7 +536,7 @@@ struct ieee80211_hw *ieee80211_alloc_hw
        /* set up some defaults */
        local->hw.queues = 1;
        local->hw.max_rates = 1;
+       local->hw.max_report_rates = 0;
        local->hw.conf.long_frame_max_tx_count = wiphy->retry_long;
        local->hw.conf.short_frame_max_tx_count = wiphy->retry_short;
        local->user_power_level = -1;
@@@ -608,6 -612,9 +612,9 @@@ int ieee80211_register_hw(struct ieee80
                WLAN_CIPHER_SUITE_AES_CMAC
        };
  
+       if (hw->max_report_rates == 0)
+               hw->max_report_rates = hw->max_rates;
        /*
         * generic code guarantees at least one band,
         * set this very early because much code assumes
diff --combined net/wireless/core.h
index 5d89310b35878f20f9210f76d8c826d3e6f5d5cd,2d1d4c70113ceb6d8e3ab9985e26324b2b52d53c..6583cca0e2ee52a8bec5403cb2a77d59e945d983
@@@ -86,7 -86,7 +86,7 @@@ struct cfg80211_registered_device *wiph
  static inline
  bool wiphy_idx_valid(int wiphy_idx)
  {
 -      return (wiphy_idx >= 0);
 +      return wiphy_idx >= 0;
  }
  
  
@@@ -375,7 -375,7 +375,7 @@@ bool cfg80211_sme_failed_reassoc(struc
  /* internal helpers */
  int cfg80211_validate_key_settings(struct cfg80211_registered_device *rdev,
                                   struct key_params *params, int key_idx,
-                                  const u8 *mac_addr);
+                                  bool pairwise, const u8 *mac_addr);
  void __cfg80211_disconnected(struct net_device *dev, const u8 *ie,
                             size_t ie_len, u16 reason, bool from_ap);
  void cfg80211_sme_scan_done(struct net_device *dev);