From: John W. Linville Date: Fri, 18 Feb 2011 22:03:41 +0000 (-0500) Subject: Merge ssh://master.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 X-Git-Tag: v2.6.39-rc1~468^2~238^2^2~29 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b67afe7f43afd2f5cd98798993561920c1684c12;p=pandora-kernel.git Merge ssh:///linux/kernel/git/linville/wireless-2.6 Conflicts: drivers/bluetooth/ath3k.c drivers/bluetooth/btusb.c --- b67afe7f43afd2f5cd98798993561920c1684c12 diff --cc drivers/bluetooth/ath3k.c index e6acaba1e45c,6dcd55a74c0a..5577ed656e2f --- a/drivers/bluetooth/ath3k.c +++ b/drivers/bluetooth/ath3k.c @@@ -66,9 -42,8 +66,12 @@@ static struct usb_device_id ath3k_table /* Atheros AR9285 Malbec with sflash firmware */ { USB_DEVICE(0x03F0, 0x311D) }, + /* Atheros AR3012 with sflash firmware*/ + { USB_DEVICE(0x0CF3, 0x3004) }, + + /* Atheros AR5BBU12 with sflash firmware */ + { USB_DEVICE(0x0489, 0xE02C) }, ++ { } /* Terminating entry */ }; diff --cc drivers/bluetooth/btusb.c index 89b9e51eec1f,b7f2f373c631..411ae9c9b384 --- a/drivers/bluetooth/btusb.c +++ b/drivers/bluetooth/btusb.c @@@ -105,9 -105,9 +105,12 @@@ static struct usb_device_id blacklist_t /* Atheros AR9285 Malbec with sflash firmware */ { USB_DEVICE(0x03f0, 0x311d), .driver_info = BTUSB_IGNORE }, + /* Atheros 3012 with sflash firmware */ + { USB_DEVICE(0x0cf3, 0x3004), .driver_info = BTUSB_IGNORE }, + + /* Atheros AR5BBU12 with sflash firmware */ + { USB_DEVICE(0x0489, 0xe02c), .driver_info = BTUSB_IGNORE }, + /* Broadcom BCM2035 */ { USB_DEVICE(0x0a5c, 0x2035), .driver_info = BTUSB_WRONG_SCO_MTU }, { USB_DEVICE(0x0a5c, 0x200a), .driver_info = BTUSB_WRONG_SCO_MTU }, diff --cc drivers/net/wireless/ath/ath9k/ath9k.h index 4d60583b0f69,1a7fa6ea4cf5..a224c56448de --- a/drivers/net/wireless/ath/ath9k/ath9k.h +++ b/drivers/net/wireless/ath/ath9k/ath9k.h @@@ -602,10 -591,7 +600,9 @@@ struct ath_softc struct work_struct paprd_work; struct work_struct hw_check_work; struct completion paprd_complete; - bool paprd_pending; + unsigned int hw_busy_count; + u32 intrstatus; u32 sc_flags; /* SC_OP_* */ u16 ps_flags; /* PS_* */ @@@ -649,10 -630,25 +646,8 @@@ struct ath_descdma txsdma; struct ath_ant_comb ant_comb; - - struct pm_qos_request_list pm_qos_req; }; -struct ath_wiphy { - struct ath_softc *sc; /* shared for all virtual wiphys */ - struct ieee80211_hw *hw; - struct ath9k_hw_cal_data caldata; - enum ath_wiphy_state { - ATH_WIPHY_INACTIVE, - ATH_WIPHY_ACTIVE, - ATH_WIPHY_PAUSING, - ATH_WIPHY_PAUSED, - ATH_WIPHY_SCAN, - } state; - bool idle; - int chan_idx; - int chan_is_ht; - int last_rssi; -}; - void ath9k_tasklet(unsigned long data); int ath_reset(struct ath_softc *sc, bool retry_tx); int ath_cabq_update(struct ath_softc *); diff --cc drivers/net/wireless/ath/ath9k/init.c index e5c1eead98a2,a033d01bf8a0..f66c882a39e2 --- a/drivers/net/wireless/ath/ath9k/init.c +++ b/drivers/net/wireless/ath/ath9k/init.c @@@ -818,8 -814,16 +811,7 @@@ void ath9k_deinit_device(struct ath_sof ath9k_ps_restore(sc); - for (i = 0; i < sc->num_sec_wiphy; i++) { - struct ath_wiphy *aphy = sc->sec_wiphy[i]; - if (aphy == NULL) - continue; - sc->sec_wiphy[i] = NULL; - ieee80211_unregister_hw(aphy->hw); - ieee80211_free_hw(aphy->hw); - } - ieee80211_unregister_hw(hw); - pm_qos_remove_request(&sc->pm_qos_req); ath_rx_cleanup(sc); ath_tx_cleanup(sc); ath9k_deinit_softc(sc); diff --cc drivers/net/wireless/iwlwifi/iwl-agn.c index a3af656aab3d,a236b8b14da1..abd0461bd307 --- a/drivers/net/wireless/iwlwifi/iwl-agn.c +++ b/drivers/net/wireless/iwlwifi/iwl-agn.c @@@ -1180,9 -1154,12 +1180,12 @@@ static void iwl_irq_tasklet_legacy(stru } /* Re-enable all interrupts */ - /* only Re-enable if diabled by irq */ + /* only Re-enable if disabled by irq */ if (test_bit(STATUS_INT_ENABLED, &priv->status)) iwl_enable_interrupts(priv); + /* Re-enable RF_KILL if it occurred */ + else if (handled & CSR_INT_BIT_RF_KILL) + iwl_enable_rfkill_int(priv); #ifdef CONFIG_IWLWIFI_DEBUG if (iwl_get_debug_level(priv) & (IWL_DL_ISR)) { @@@ -1394,9 -1371,12 +1397,12 @@@ static void iwl_irq_tasklet(struct iwl_ } /* Re-enable all interrupts */ - /* only Re-enable if diabled by irq */ + /* only Re-enable if disabled by irq */ if (test_bit(STATUS_INT_ENABLED, &priv->status)) iwl_enable_interrupts(priv); + /* Re-enable RF_KILL if it occurred */ + else if (handled & CSR_INT_BIT_RF_KILL) + iwl_enable_rfkill_int(priv); } /* the threshold ratio of actual_ack_cnt to expected_ack_cnt in percent */