Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 24 Apr 2008 15:40:34 +0000 (08:40 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 24 Apr 2008 15:40:34 +0000 (08:40 -0700)
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (22 commits)
  tun: Multicast handling in tun_chr_ioctl() needs proper locking.
  [NET]: Fix heavy stack usage in seq_file output routines.
  [AF_UNIX] Initialise UNIX sockets before general device initcalls
  [RTNETLINK]: Fix bogus ASSERT_RTNL warning
  iwlwifi: Fix built-in compilation of iwlcore (part 2)
  tun: Fix minor race in TUNSETLINK ioctl handling.
  ppp_generic: use stats from net_device structure
  iwlwifi: Don't unlock priv->mutex if it isn't locked
  wireless: rndis_wlan: modparam_workaround_interval is never below 0.
  prism54: prism54_get_encode() test below 0 on unsigned index
  mac80211: update mesh EID values
  b43: Workaround DMA quirks
  mac80211: fix use before check of Qdisc length
  net/mac80211/rx.c: fix off-by-one
  mac80211: Fix race between ieee80211_rx_bss_put and lookup routines.
  ath5k: Fix radio identification on AR5424/2424
  ssb: Fix all-ones boardflags
  b43: Add more btcoexist workarounds
  b43: Fix HostFlags data types
  b43: Workaround invalid bluetooth settings
  ...

1  2 
MAINTAINERS
drivers/net/wireless/b43/main.c
net/unix/af_unix.c

diff --combined MAINTAINERS
index c0cc52a9afe5c4a1342af84e095663b27bc42297,36aadf6003b96688dcbb2c4ade639272c81ea83d..f50e927a118992e8d69953675c65a87998a63231
@@@ -486,12 -486,6 +486,12 @@@ M:       kernel@wantstofly.or
  L:    linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
  S:    Maintained
  
 +ARM/GUMSTIX MACHINE SUPPORT
 +P:    Steve Sakoman
 +M:    sakoman@gmail.com
 +L:    linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
 +S:    Maintained
 +
  ARM/HP JORNADA 7XX MACHINE SUPPORT
  P:      Kristoffer Ericson
  M:      kristoffer.ericson@gmail.com
@@@ -684,11 -678,6 +684,11 @@@ L:       linux-wireless@vger.kernel.or
  L:    ath5k-devel@lists.ath5k.org
  S:    Maintained
  
 +ATI_REMOTE2 DRIVER
 +P:    Ville Syrjala
 +M:    syrjala@sci.fi
 +S:    Maintained
 +
  ATL1 ETHERNET DRIVER
  P:    Jay Cliburn
  M:    jcliburn@gmail.com
@@@ -2558,12 -2547,10 +2558,10 @@@ W:   http://www.tazenda.demon.co.uk/phil/
  S:    Maintained
  
  MAC80211
- P:    Michael Wu
- M:    flamingice@sourmilk.net
  P:    Johannes Berg
  M:    johannes@sipsolutions.net
- P:    Jiri Benc
- M:    jbenc@suse.cz
+ P:    Michael Wu
+ M:    flamingice@sourmilk.net
  L:    linux-wireless@vger.kernel.org
  W:    http://linuxwireless.org/
  T:    git kernel.org:/pub/scm/linux/kernel/git/linville/wireless-2.6.git
@@@ -2952,7 -2939,7 +2950,7 @@@ P:      Mark Fashe
  M:    mfasheh@suse.com
  P:    Joel Becker
  M:    joel.becker@oracle.com
 -L:    ocfs2-devel@oss.oracle.com
 +L:    ocfs2-devel@oss.oracle.com (moderated for non-subscribers)
  W:    http://oss.oracle.com/projects/ocfs2/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2.git
  S:    Supported
@@@ -3070,10 -3057,11 +3068,10 @@@ L:   linux-pci@atrey.karlin.mff.cuni.c
  S:    Supported
  
  PCI SUBSYSTEM
 -P:    Greg Kroah-Hartman
 -M:    gregkh@suse.de
 +P:    Jesse Barnes
 +M:    jbarnes@virtuousgeek.org
  L:    linux-kernel@vger.kernel.org
  L:    linux-pci@atrey.karlin.mff.cuni.cz
 -T:    quilt kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/
  S:    Supported
  
  PCI HOTPLUG CORE
@@@ -3614,11 -3602,6 +3612,11 @@@ M:    mhoffman@lightlink.co
  L:    lm-sensors@lm-sensors.org
  S:    Maintained
  
 +SMX UIO Interface
 +P:    Ben Nizette
 +M:    bn@niasdigital.com
 +S:    Maintained
 +
  SOFTWARE RAID (Multiple Disks) SUPPORT
  P:    Ingo Molnar
  M:    mingo@redhat.com
index 943cc851c5043152d8ff521e18cc5a792da5fcad,94a0cdeb39a8dfb62a7221ae1795f99af5d9488a..4bf8a99099fee7713f357b5f3f450148441c19a6
@@@ -84,6 -84,10 +84,10 @@@ int b43_modparam_qos = 1
  module_param_named(qos, b43_modparam_qos, int, 0444);
  MODULE_PARM_DESC(qos, "Enable QOS support (default on)");
  
+ static int modparam_btcoex = 1;
+ module_param_named(btcoex, modparam_btcoex, int, 0444);
+ MODULE_PARM_DESC(btcoex, "Enable Bluetooth coexistance (default on)");
  
  static const struct ssb_device_id b43_ssb_tbl[] = {
        SSB_DEVICE(SSB_VENDOR_BROADCOM, SSB_DEV_80211, 5),
@@@ -2804,10 -2808,10 +2808,10 @@@ static int b43_rng_read(struct hwrng *r
        return (sizeof(u16));
  }
  
 -static void b43_rng_exit(struct b43_wl *wl, bool suspended)
 +static void b43_rng_exit(struct b43_wl *wl)
  {
        if (wl->rng_initialized)
 -              __hwrng_unregister(&wl->rng, suspended);
 +              hwrng_unregister(&wl->rng);
  }
  
  static int b43_rng_init(struct b43_wl *wl)
@@@ -3706,8 -3710,10 +3710,10 @@@ static void setup_struct_wldev_for_init
  static void b43_bluetooth_coext_enable(struct b43_wldev *dev)
  {
        struct ssb_sprom *sprom = &dev->dev->bus->sprom;
-       u32 hf;
+       u64 hf;
  
+       if (!modparam_btcoex)
+               return;
        if (!(sprom->boardflags_lo & B43_BFL_BTCOEXIST))
                return;
        if (dev->phy.type != B43_PHYTYPE_B && !dev->phy.gmode)
        else
                hf |= B43_HF_BTCOEX;
        b43_hf_write(dev, hf);
-       //TODO
  }
  
  static void b43_bluetooth_coext_disable(struct b43_wldev *dev)
- {                             //TODO
+ {
+       if (!modparam_btcoex)
+               return;
+       //TODO
  }
  
  static void b43_imcfglo_timeouts_workaround(struct b43_wldev *dev)
@@@ -3824,7 -3832,7 +3832,7 @@@ static void b43_wireless_core_exit(stru
  
        if (!dev->suspend_in_progress) {
                b43_leds_exit(dev);
 -              b43_rng_exit(dev->wl, false);
 +              b43_rng_exit(dev->wl);
        }
        b43_dma_free(dev);
        b43_pio_free(dev);
@@@ -3852,7 -3860,8 +3860,8 @@@ static int b43_wireless_core_init(struc
        struct ssb_sprom *sprom = &bus->sprom;
        struct b43_phy *phy = &dev->phy;
        int err;
-       u32 hf, tmp;
+       u64 hf;
+       u32 tmp;
  
        B43_WARN_ON(b43_status(dev) != B43_STAT_UNINIT);
  
@@@ -4414,8 -4423,16 +4423,16 @@@ static int b43_one_core_attach(struct s
        return err;
  }
  
+ #define IS_PDEV(pdev, _vendor, _device, _subvendor, _subdevice)               ( \
+       (pdev->vendor == PCI_VENDOR_ID_##_vendor) &&                    \
+       (pdev->device == _device) &&                                    \
+       (pdev->subsystem_vendor == PCI_VENDOR_ID_##_subvendor) &&       \
+       (pdev->subsystem_device == _subdevice)                          )
  static void b43_sprom_fixup(struct ssb_bus *bus)
  {
+       struct pci_dev *pdev;
        /* boardflags workarounds */
        if (bus->boardinfo.vendor == SSB_BOARDVENDOR_DELL &&
            bus->chip_id == 0x4301 && bus->boardinfo.rev == 0x74)
        if (bus->boardinfo.vendor == PCI_VENDOR_ID_APPLE &&
            bus->boardinfo.type == 0x4E && bus->boardinfo.rev > 0x40)
                bus->sprom.boardflags_lo |= B43_BFL_PACTRL;
+       if (bus->bustype == SSB_BUSTYPE_PCI) {
+               pdev = bus->host_pci;
+               if (IS_PDEV(pdev, BROADCOM, 0x4318, ASUSTEK, 0x100F) ||
+                   IS_PDEV(pdev, BROADCOM, 0x4320, LINKSYS, 0x0015) ||
+                   IS_PDEV(pdev, BROADCOM, 0x4320, LINKSYS, 0x0013))
+                       bus->sprom.boardflags_lo &= ~B43_BFL_BTCOEXIST;
+       }
  }
  
  static void b43_wireless_exit(struct ssb_device *dev, struct b43_wl *wl)
@@@ -4589,7 -4613,7 +4613,7 @@@ static int b43_resume(struct ssb_devic
                err = b43_wireless_core_start(wldev);
                if (err) {
                        b43_leds_exit(wldev);
 -                      b43_rng_exit(wldev->wl, true);
 +                      b43_rng_exit(wldev->wl);
                        b43_wireless_core_exit(wldev);
                        b43err(wl, "Resume failed at core start\n");
                        goto out;
diff --combined net/unix/af_unix.c
index 1454afcc06c48e962298ac9934b3dfbe35965dcc,63ed69ffad99a94c102dfd70f702f17d539d5468..e18cd3628db4f7fe12ad6acc9fe6c0922d022a82
@@@ -819,11 -819,7 +819,11 @@@ static int unix_bind(struct socket *soc
                 */
                mode = S_IFSOCK |
                       (SOCK_INODE(sock)->i_mode & ~current->fs->umask);
 +              err = mnt_want_write(nd.path.mnt);
 +              if (err)
 +                      goto out_mknod_dput;
                err = vfs_mknod(nd.path.dentry->d_inode, dentry, mode, 0);
 +              mnt_drop_write(nd.path.mnt);
                if (err)
                        goto out_mknod_dput;
                mutex_unlock(&nd.path.dentry->d_inode->i_mutex);
@@@ -2197,7 -2193,11 +2197,11 @@@ static void __exit af_unix_exit(void
        unregister_pernet_subsys(&unix_net_ops);
  }
  
- module_init(af_unix_init);
+ /* Earlier than device_initcall() so that other drivers invoking
+    request_module() don't end up in a loop when modprobe tries
+    to use a UNIX socket. But later than subsys_initcall() because
+    we depend on stuff initialised there */
+ fs_initcall(af_unix_init);
  module_exit(af_unix_exit);
  
  MODULE_LICENSE("GPL");