Commit 74c7a09a authored by Linus Torvalds's avatar Linus Torvalds

Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6

* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6:
  ath9k: Fix IRQ nobody cared issue with ath9k
  wireless: zd1211rw: add device ID fix wifi dongle "trust nw-3100"
  ath9k: connectivity is lost after Group rekeying is done
parents f05596db 4c07ab0f
...@@ -294,8 +294,6 @@ static int ath_stop(struct ath_softc *sc) ...@@ -294,8 +294,6 @@ static int ath_stop(struct ath_softc *sc)
* hardware is gone (invalid). * hardware is gone (invalid).
*/ */
if (!sc->sc_invalid)
ath9k_hw_set_interrupts(ah, 0);
ath_draintxq(sc, false); ath_draintxq(sc, false);
if (!sc->sc_invalid) { if (!sc->sc_invalid) {
ath_stoprecv(sc); ath_stoprecv(sc);
...@@ -1336,6 +1334,8 @@ void ath_deinit(struct ath_softc *sc) ...@@ -1336,6 +1334,8 @@ void ath_deinit(struct ath_softc *sc)
DPRINTF(sc, ATH_DBG_CONFIG, "%s\n", __func__); DPRINTF(sc, ATH_DBG_CONFIG, "%s\n", __func__);
tasklet_kill(&sc->intr_tq);
tasklet_kill(&sc->bcon_tasklet);
ath_stop(sc); ath_stop(sc);
if (!sc->sc_invalid) if (!sc->sc_invalid)
ath9k_hw_setpower(sc->sc_ah, ATH9K_PM_AWAKE); ath9k_hw_setpower(sc->sc_ah, ATH9K_PM_AWAKE);
......
...@@ -974,7 +974,6 @@ struct ath_softc { ...@@ -974,7 +974,6 @@ struct ath_softc {
u32 sc_keymax; /* size of key cache */ u32 sc_keymax; /* size of key cache */
DECLARE_BITMAP(sc_keymap, ATH_KEYMAX); /* key use bit map */ DECLARE_BITMAP(sc_keymap, ATH_KEYMAX); /* key use bit map */
u8 sc_splitmic; /* split TKIP MIC keys */ u8 sc_splitmic; /* split TKIP MIC keys */
int sc_keytype;
/* RX */ /* RX */
struct list_head sc_rxbuf; struct list_head sc_rxbuf;
......
...@@ -206,8 +206,6 @@ static int ath_key_config(struct ath_softc *sc, ...@@ -206,8 +206,6 @@ static int ath_key_config(struct ath_softc *sc,
if (!ret) if (!ret)
return -EIO; return -EIO;
if (mac)
sc->sc_keytype = hk.kv_type;
return 0; return 0;
} }
...@@ -778,7 +776,6 @@ static int ath9k_set_key(struct ieee80211_hw *hw, ...@@ -778,7 +776,6 @@ static int ath9k_set_key(struct ieee80211_hw *hw,
case DISABLE_KEY: case DISABLE_KEY:
ath_key_delete(sc, key); ath_key_delete(sc, key);
clear_bit(key->keyidx, sc->sc_keymap); clear_bit(key->keyidx, sc->sc_keymap);
sc->sc_keytype = ATH9K_CIPHER_CLR;
break; break;
default: default:
ret = -EINVAL; ret = -EINVAL;
...@@ -1414,10 +1411,17 @@ static void ath_pci_remove(struct pci_dev *pdev) ...@@ -1414,10 +1411,17 @@ static void ath_pci_remove(struct pci_dev *pdev)
{ {
struct ieee80211_hw *hw = pci_get_drvdata(pdev); struct ieee80211_hw *hw = pci_get_drvdata(pdev);
struct ath_softc *sc = hw->priv; struct ath_softc *sc = hw->priv;
enum ath9k_int status;
if (pdev->irq) if (pdev->irq) {
ath9k_hw_set_interrupts(sc->sc_ah, 0);
/* clear the ISR */
ath9k_hw_getisr(sc->sc_ah, &status);
sc->sc_invalid = 1;
free_irq(pdev->irq, sc); free_irq(pdev->irq, sc);
}
ath_detach(sc); ath_detach(sc);
pci_iounmap(pdev, sc->mem); pci_iounmap(pdev, sc->mem);
pci_release_region(pdev, 0); pci_release_region(pdev, 0);
pci_disable_device(pdev); pci_disable_device(pdev);
......
...@@ -315,11 +315,11 @@ static int ath_tx_prepare(struct ath_softc *sc, ...@@ -315,11 +315,11 @@ static int ath_tx_prepare(struct ath_softc *sc,
txctl->keyix = tx_info->control.hw_key->hw_key_idx; txctl->keyix = tx_info->control.hw_key->hw_key_idx;
txctl->frmlen += tx_info->control.icv_len; txctl->frmlen += tx_info->control.icv_len;
if (sc->sc_keytype == ATH9K_CIPHER_WEP) if (tx_info->control.hw_key->alg == ALG_WEP)
txctl->keytype = ATH9K_KEY_TYPE_WEP; txctl->keytype = ATH9K_KEY_TYPE_WEP;
else if (sc->sc_keytype == ATH9K_CIPHER_TKIP) else if (tx_info->control.hw_key->alg == ALG_TKIP)
txctl->keytype = ATH9K_KEY_TYPE_TKIP; txctl->keytype = ATH9K_KEY_TYPE_TKIP;
else if (sc->sc_keytype == ATH9K_CIPHER_AES_CCM) else if (tx_info->control.hw_key->alg == ALG_CCMP)
txctl->keytype = ATH9K_KEY_TYPE_AES; txctl->keytype = ATH9K_KEY_TYPE_AES;
} }
......
...@@ -58,6 +58,7 @@ static struct usb_device_id usb_ids[] = { ...@@ -58,6 +58,7 @@ static struct usb_device_id usb_ids[] = {
{ USB_DEVICE(0x0586, 0x3407), .driver_info = DEVICE_ZD1211 }, { USB_DEVICE(0x0586, 0x3407), .driver_info = DEVICE_ZD1211 },
{ USB_DEVICE(0x129b, 0x1666), .driver_info = DEVICE_ZD1211 }, { USB_DEVICE(0x129b, 0x1666), .driver_info = DEVICE_ZD1211 },
{ USB_DEVICE(0x157e, 0x300a), .driver_info = DEVICE_ZD1211 }, { USB_DEVICE(0x157e, 0x300a), .driver_info = DEVICE_ZD1211 },
{ USB_DEVICE(0x0105, 0x145f), .driver_info = DEVICE_ZD1211 },
/* ZD1211B */ /* ZD1211B */
{ USB_DEVICE(0x0ace, 0x1215), .driver_info = DEVICE_ZD1211B }, { USB_DEVICE(0x0ace, 0x1215), .driver_info = DEVICE_ZD1211B },
{ USB_DEVICE(0x157e, 0x300d), .driver_info = DEVICE_ZD1211B }, { USB_DEVICE(0x157e, 0x300d), .driver_info = DEVICE_ZD1211B },
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment