Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wirel...
John W. Linville [Mon, 11 Jul 2011 18:46:59 +0000 (14:46 -0400)]
Conflicts:
drivers/net/wireless/ath/ath5k/sysfs.c
net/bluetooth/l2cap_core.c
net/mac80211/wpa.c

1  2 
drivers/net/wireless/ath/ath5k/eeprom.c
drivers/net/wireless/ath/ath5k/pci.c
drivers/net/wireless/ath/ath5k/sysfs.c
drivers/net/wireless/ath/ath9k/xmit.c
drivers/ssb/driver_pcicore.c
net/bluetooth/hci_conn.c
net/bluetooth/l2cap_core.c
net/mac80211/scan.c
net/wireless/nl80211.c
net/wireless/scan.c

Simple merge
@@@ -10,20 -10,20 +10,22 @@@ static ssize_t ath5k_attr_show_##name(s
                        struct device_attribute *attr,                  \
                        char *buf)                                      \
  {                                                                     \
-       struct ath5k_softc *sc = dev_get_drvdata(dev);                  \
+       struct ieee80211_hw *hw = dev_get_drvdata(dev);                 \
+       struct ath5k_softc *sc = hw->priv;                              \
 -      return snprintf(buf, PAGE_SIZE, "%d\n", get);                   \
 +      return snprintf(buf, PAGE_SIZE, "%d\n", get);                   \
  }                                                                     \
                                                                        \
  static ssize_t ath5k_attr_store_##name(struct device *dev,            \
                        struct device_attribute *attr,                  \
                        const char *buf, size_t count)                  \
  {                                                                     \
-       struct ath5k_softc *sc = dev_get_drvdata(dev);                  \
+       struct ieee80211_hw *hw = dev_get_drvdata(dev);                 \
+       struct ath5k_softc *sc = hw->priv;                              \
 -      int val;                                                        \
 +      int val, ret;                                                   \
                                                                        \
 -      val = (int)simple_strtoul(buf, NULL, 10);                       \
 +      ret = kstrtoint(buf, 10, &val);                                 \
 +      if (ret < 0)                                                    \
 +              return ret;                                             \
        set(sc->ah, val);                                               \
        return count;                                                   \
  }                                                                     \
@@@ -35,8 -35,9 +37,9 @@@ static ssize_t ath5k_attr_show_##name(s
                        struct device_attribute *attr,                  \
                        char *buf)                                      \
  {                                                                     \
-       struct ath5k_softc *sc = dev_get_drvdata(dev);                  \
+       struct ieee80211_hw *hw = dev_get_drvdata(dev);                 \
+       struct ath5k_softc *sc = hw->priv;                              \
 -      return snprintf(buf, PAGE_SIZE, "%d\n", get);                   \
 +      return snprintf(buf, PAGE_SIZE, "%d\n", get);                   \
  }                                                                     \
  static DEVICE_ATTR(name, S_IRUGO, ath5k_attr_show_##name, NULL)
  
Simple merge
@@@ -514,13 -514,22 +514,22 @@@ static void ssb_pcicore_pcie_setup_work
   * Generic and Clientmode operation code.
   **************************************************/
  
 -static void ssb_pcicore_init_clientmode(struct ssb_pcicore *pc)
 +static void __devinit ssb_pcicore_init_clientmode(struct ssb_pcicore *pc)
  {
+       ssb_pcicore_fix_sprom_core_index(pc);
        /* Disable PCI interrupts. */
        ssb_write32(pc->dev, SSB_INTVEC, 0);
+       /* Additional PCIe always once-executed workarounds */
+       if (pc->dev->id.coreid == SSB_DEV_PCIE) {
+               ssb_pcicore_serdes_workaround(pc);
+               /* TODO: ASPM */
+               /* TODO: Clock Request Update */
+       }
  }
  
 -void ssb_pcicore_init(struct ssb_pcicore *pc)
 +void __devinit ssb_pcicore_init(struct ssb_pcicore *pc)
  {
        struct ssb_device *dev = pc->dev;
  
Simple merge
@@@ -2530,7 -2323,8 +2530,8 @@@ static inline int l2cap_config_req(stru
  
        sk = chan->sk;
  
-       if (chan->state != BT_CONFIG) {
 -      if ((bt_sk(sk)->defer_setup && sk->sk_state != BT_CONNECT2) ||
 -               (!bt_sk(sk)->defer_setup && sk->sk_state != BT_CONFIG)) {
++      if ((bt_sk(sk)->defer_setup && chan->state != BT_CONNECT2) ||
++               (!bt_sk(sk)->defer_setup && chan->state != BT_CONFIG)) {
                struct l2cap_cmd_rej rej;
  
                rej.reason = cpu_to_le16(0x0002);
Simple merge
@@@ -3626,11 -3625,14 +3634,15 @@@ static int nl80211_stop_sched_scan(stru
            !rdev->ops->sched_scan_stop)
                return -EOPNOTSUPP;
  
-       return __cfg80211_stop_sched_scan(rdev, false);
+       mutex_lock(&rdev->sched_scan_mtx);
+       err = __cfg80211_stop_sched_scan(rdev, false);
+       mutex_unlock(&rdev->sched_scan_mtx);
+       return err;
  }
  
 -static int nl80211_send_bss(struct sk_buff *msg, u32 pid, u32 seq, int flags,
 +static int nl80211_send_bss(struct sk_buff *msg, struct netlink_callback *cb,
 +                          u32 seq, int flags,
                            struct cfg80211_registered_device *rdev,
                            struct wireless_dev *wdev,
                            struct cfg80211_internal_bss *intbss)
@@@ -132,12 -132,13 +132,12 @@@ EXPORT_SYMBOL(cfg80211_sched_scan_stopp
  int __cfg80211_stop_sched_scan(struct cfg80211_registered_device *rdev,
                               bool driver_initiated)
  {
 -      int err;
        struct net_device *dev;
  
-       ASSERT_RDEV_LOCK(rdev);
+       lockdep_assert_held(&rdev->sched_scan_mtx);
  
        if (!rdev->sched_scan_req)
 -              return 0;
 +              return -ENOENT;
  
        dev = rdev->sched_scan_req->dev;