aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2008-10-01 09:12:56 -0400
committerDavid S. Miller <davem@davemloft.net>2008-10-01 09:12:56 -0400
commitb262e60309e1b0eb25d300c7e739427d5316abb1 (patch)
treebf319d78c79bb5cb617ff0c8340c73aa349bba15 /drivers/net/wireless
parent93c8b90f01f0dc73891da4e84b26524b61d29d66 (diff)
parent0523820482dcb42784572ffd2296c2f08c275a2b (diff)
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
Conflicts: drivers/net/wireless/ath9k/core.c drivers/net/wireless/ath9k/main.c net/core/dev.c
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r--drivers/net/wireless/ath9k/core.c9
-rw-r--r--drivers/net/wireless/ath9k/core.h1
-rw-r--r--drivers/net/wireless/ath9k/main.c12
-rw-r--r--drivers/net/wireless/ath9k/xmit.c6
-rw-r--r--drivers/net/wireless/b43/rfkill.c18
-rw-r--r--drivers/net/wireless/b43legacy/rfkill.c18
-rw-r--r--drivers/net/wireless/zd1211rw/zd_usb.c1
7 files changed, 21 insertions, 44 deletions
diff --git a/drivers/net/wireless/ath9k/core.c b/drivers/net/wireless/ath9k/core.c
index 690f7c56af3d..6c433a4d003e 100644
--- a/drivers/net/wireless/ath9k/core.c
+++ b/drivers/net/wireless/ath9k/core.c
@@ -678,6 +678,12 @@ int ath_open(struct ath_softc *sc, struct ath9k_channel *initial_chan)
678 if (ah->ah_caps.hw_caps & ATH9K_HW_CAP_HT) 678 if (ah->ah_caps.hw_caps & ATH9K_HW_CAP_HT)
679 sc->sc_imask |= ATH9K_INT_CST; 679 sc->sc_imask |= ATH9K_INT_CST;
680 680
681 /* Note: We disable MIB interrupts for now as we don't yet
682 * handle processing ANI, otherwise you will get an interrupt
683 * storm after about 7 hours of usage making the system unusable
684 * with huge latency. Once we do have ANI processing included
685 * we can re-enable this interrupt. */
686#if 0
681 /* 687 /*
682 * Enable MIB interrupts when there are hardware phy counters. 688 * Enable MIB interrupts when there are hardware phy counters.
683 * Note we only do this (at the moment) for station mode. 689 * Note we only do this (at the moment) for station mode.
@@ -686,6 +692,7 @@ int ath_open(struct ath_softc *sc, struct ath9k_channel *initial_chan)
686 ((sc->sc_ah->ah_opmode == ATH9K_M_STA) || 692 ((sc->sc_ah->ah_opmode == ATH9K_M_STA) ||
687 (sc->sc_ah->ah_opmode == ATH9K_M_IBSS))) 693 (sc->sc_ah->ah_opmode == ATH9K_M_IBSS)))
688 sc->sc_imask |= ATH9K_INT_MIB; 694 sc->sc_imask |= ATH9K_INT_MIB;
695#endif
689 /* 696 /*
690 * Some hardware processes the TIM IE and fires an 697 * Some hardware processes the TIM IE and fires an
691 * interrupt when the TIM bit is set. For hardware 698 * interrupt when the TIM bit is set. For hardware
@@ -1184,6 +1191,8 @@ void ath_deinit(struct ath_softc *sc)
1184 1191
1185 DPRINTF(sc, ATH_DBG_CONFIG, "%s\n", __func__); 1192 DPRINTF(sc, ATH_DBG_CONFIG, "%s\n", __func__);
1186 1193
1194 tasklet_kill(&sc->intr_tq);
1195 tasklet_kill(&sc->bcon_tasklet);
1187 ath_stop(sc); 1196 ath_stop(sc);
1188 if (!(sc->sc_flags & SC_OP_INVALID)) 1197 if (!(sc->sc_flags & SC_OP_INVALID))
1189 ath9k_hw_setpower(sc->sc_ah, ATH9K_PM_AWAKE); 1198 ath9k_hw_setpower(sc->sc_ah, ATH9K_PM_AWAKE);
diff --git a/drivers/net/wireless/ath9k/core.h b/drivers/net/wireless/ath9k/core.h
index 6ff3befe39f7..872f0c5a0b0e 100644
--- a/drivers/net/wireless/ath9k/core.h
+++ b/drivers/net/wireless/ath9k/core.h
@@ -976,7 +976,6 @@ struct ath_softc {
976 u32 sc_keymax; /* size of key cache */ 976 u32 sc_keymax; /* size of key cache */
977 DECLARE_BITMAP(sc_keymap, ATH_KEYMAX); /* key use bit map */ 977 DECLARE_BITMAP(sc_keymap, ATH_KEYMAX); /* key use bit map */
978 u8 sc_splitmic; /* split TKIP MIC keys */ 978 u8 sc_splitmic; /* split TKIP MIC keys */
979 int sc_keytype;
980 979
981 /* RX */ 980 /* RX */
982 struct list_head sc_rxbuf; 981 struct list_head sc_rxbuf;
diff --git a/drivers/net/wireless/ath9k/main.c b/drivers/net/wireless/ath9k/main.c
index 1ba18006f475..2caba4403167 100644
--- a/drivers/net/wireless/ath9k/main.c
+++ b/drivers/net/wireless/ath9k/main.c
@@ -204,8 +204,6 @@ static int ath_key_config(struct ath_softc *sc,
204 if (!ret) 204 if (!ret)
205 return -EIO; 205 return -EIO;
206 206
207 if (mac)
208 sc->sc_keytype = hk.kv_type;
209 return 0; 207 return 0;
210} 208}
211 209
@@ -1507,7 +1505,6 @@ static int ath9k_set_key(struct ieee80211_hw *hw,
1507 case DISABLE_KEY: 1505 case DISABLE_KEY:
1508 ath_key_delete(sc, key); 1506 ath_key_delete(sc, key);
1509 clear_bit(key->keyidx, sc->sc_keymap); 1507 clear_bit(key->keyidx, sc->sc_keymap);
1510 sc->sc_keytype = ATH9K_CIPHER_CLR;
1511 break; 1508 break;
1512 default: 1509 default:
1513 ret = -EINVAL; 1510 ret = -EINVAL;
@@ -1784,10 +1781,17 @@ static void ath_pci_remove(struct pci_dev *pdev)
1784{ 1781{
1785 struct ieee80211_hw *hw = pci_get_drvdata(pdev); 1782 struct ieee80211_hw *hw = pci_get_drvdata(pdev);
1786 struct ath_softc *sc = hw->priv; 1783 struct ath_softc *sc = hw->priv;
1784 enum ath9k_int status;
1787 1785
1788 if (pdev->irq) 1786 if (pdev->irq) {
1787 ath9k_hw_set_interrupts(sc->sc_ah, 0);
1788 /* clear the ISR */
1789 ath9k_hw_getisr(sc->sc_ah, &status);
1790 sc->sc_flags |= SC_OP_INVALID;
1789 free_irq(pdev->irq, sc); 1791 free_irq(pdev->irq, sc);
1792 }
1790 ath_detach(sc); 1793 ath_detach(sc);
1794
1791 pci_iounmap(pdev, sc->mem); 1795 pci_iounmap(pdev, sc->mem);
1792 pci_release_region(pdev, 0); 1796 pci_release_region(pdev, 0);
1793 pci_disable_device(pdev); 1797 pci_disable_device(pdev);
diff --git a/drivers/net/wireless/ath9k/xmit.c b/drivers/net/wireless/ath9k/xmit.c
index 3fc6641e8bf7..25929059c7dc 100644
--- a/drivers/net/wireless/ath9k/xmit.c
+++ b/drivers/net/wireless/ath9k/xmit.c
@@ -239,11 +239,11 @@ static int ath_tx_prepare(struct ath_softc *sc,
239 txctl->keyix = tx_info->control.hw_key->hw_key_idx; 239 txctl->keyix = tx_info->control.hw_key->hw_key_idx;
240 txctl->frmlen += tx_info->control.icv_len; 240 txctl->frmlen += tx_info->control.icv_len;
241 241
242 if (sc->sc_keytype == ATH9K_CIPHER_WEP) 242 if (tx_info->control.hw_key->alg == ALG_WEP)
243 txctl->keytype = ATH9K_KEY_TYPE_WEP; 243 txctl->keytype = ATH9K_KEY_TYPE_WEP;
244 else if (sc->sc_keytype == ATH9K_CIPHER_TKIP) 244 else if (tx_info->control.hw_key->alg == ALG_TKIP)
245 txctl->keytype = ATH9K_KEY_TYPE_TKIP; 245 txctl->keytype = ATH9K_KEY_TYPE_TKIP;
246 else if (sc->sc_keytype == ATH9K_CIPHER_AES_CCM) 246 else if (tx_info->control.hw_key->alg == ALG_CCMP)
247 txctl->keytype = ATH9K_KEY_TYPE_AES; 247 txctl->keytype = ATH9K_KEY_TYPE_AES;
248 } 248 }
249 249
diff --git a/drivers/net/wireless/b43/rfkill.c b/drivers/net/wireless/b43/rfkill.c
index 96902da7d661..713753781f40 100644
--- a/drivers/net/wireless/b43/rfkill.c
+++ b/drivers/net/wireless/b43/rfkill.c
@@ -44,23 +44,6 @@ static bool b43_is_hw_radio_enabled(struct b43_wldev *dev)
44 return 0; 44 return 0;
45} 45}
46 46
47/* Update the rfkill state */
48static void b43_rfkill_update_state(struct b43_wldev *dev)
49{
50 struct b43_rfkill *rfk = &(dev->wl->rfkill);
51
52 if (!dev->radio_hw_enable) {
53 rfk->rfkill->state = RFKILL_STATE_HARD_BLOCKED;
54 return;
55 }
56
57 if (!dev->phy.radio_on)
58 rfk->rfkill->state = RFKILL_STATE_SOFT_BLOCKED;
59 else
60 rfk->rfkill->state = RFKILL_STATE_UNBLOCKED;
61
62}
63
64/* The poll callback for the hardware button. */ 47/* The poll callback for the hardware button. */
65static void b43_rfkill_poll(struct input_polled_dev *poll_dev) 48static void b43_rfkill_poll(struct input_polled_dev *poll_dev)
66{ 49{
@@ -78,7 +61,6 @@ static void b43_rfkill_poll(struct input_polled_dev *poll_dev)
78 if (unlikely(enabled != dev->radio_hw_enable)) { 61 if (unlikely(enabled != dev->radio_hw_enable)) {
79 dev->radio_hw_enable = enabled; 62 dev->radio_hw_enable = enabled;
80 report_change = 1; 63 report_change = 1;
81 b43_rfkill_update_state(dev);
82 b43info(wl, "Radio hardware status changed to %s\n", 64 b43info(wl, "Radio hardware status changed to %s\n",
83 enabled ? "ENABLED" : "DISABLED"); 65 enabled ? "ENABLED" : "DISABLED");
84 } 66 }
diff --git a/drivers/net/wireless/b43legacy/rfkill.c b/drivers/net/wireless/b43legacy/rfkill.c
index 476add97e974..b32bf6a94f19 100644
--- a/drivers/net/wireless/b43legacy/rfkill.c
+++ b/drivers/net/wireless/b43legacy/rfkill.c
@@ -44,23 +44,6 @@ static bool b43legacy_is_hw_radio_enabled(struct b43legacy_wldev *dev)
44 return 0; 44 return 0;
45} 45}
46 46
47/* Update the rfkill state */
48static void b43legacy_rfkill_update_state(struct b43legacy_wldev *dev)
49{
50 struct b43legacy_rfkill *rfk = &(dev->wl->rfkill);
51
52 if (!dev->radio_hw_enable) {
53 rfk->rfkill->state = RFKILL_STATE_HARD_BLOCKED;
54 return;
55 }
56
57 if (!dev->phy.radio_on)
58 rfk->rfkill->state = RFKILL_STATE_SOFT_BLOCKED;
59 else
60 rfk->rfkill->state = RFKILL_STATE_UNBLOCKED;
61
62}
63
64/* The poll callback for the hardware button. */ 47/* The poll callback for the hardware button. */
65static void b43legacy_rfkill_poll(struct input_polled_dev *poll_dev) 48static void b43legacy_rfkill_poll(struct input_polled_dev *poll_dev)
66{ 49{
@@ -78,7 +61,6 @@ static void b43legacy_rfkill_poll(struct input_polled_dev *poll_dev)
78 if (unlikely(enabled != dev->radio_hw_enable)) { 61 if (unlikely(enabled != dev->radio_hw_enable)) {
79 dev->radio_hw_enable = enabled; 62 dev->radio_hw_enable = enabled;
80 report_change = 1; 63 report_change = 1;
81 b43legacy_rfkill_update_state(dev);
82 b43legacyinfo(wl, "Radio hardware status changed to %s\n", 64 b43legacyinfo(wl, "Radio hardware status changed to %s\n",
83 enabled ? "ENABLED" : "DISABLED"); 65 enabled ? "ENABLED" : "DISABLED");
84 } 66 }
diff --git a/drivers/net/wireless/zd1211rw/zd_usb.c b/drivers/net/wireless/zd1211rw/zd_usb.c
index da8b7433e3a6..a60ae86bd5c9 100644
--- a/drivers/net/wireless/zd1211rw/zd_usb.c
+++ b/drivers/net/wireless/zd1211rw/zd_usb.c
@@ -58,6 +58,7 @@ static struct usb_device_id usb_ids[] = {
58 { USB_DEVICE(0x0586, 0x3407), .driver_info = DEVICE_ZD1211 }, 58 { USB_DEVICE(0x0586, 0x3407), .driver_info = DEVICE_ZD1211 },
59 { USB_DEVICE(0x129b, 0x1666), .driver_info = DEVICE_ZD1211 }, 59 { USB_DEVICE(0x129b, 0x1666), .driver_info = DEVICE_ZD1211 },
60 { USB_DEVICE(0x157e, 0x300a), .driver_info = DEVICE_ZD1211 }, 60 { USB_DEVICE(0x157e, 0x300a), .driver_info = DEVICE_ZD1211 },
61 { USB_DEVICE(0x0105, 0x145f), .driver_info = DEVICE_ZD1211 },
61 /* ZD1211B */ 62 /* ZD1211B */
62 { USB_DEVICE(0x0ace, 0x1215), .driver_info = DEVICE_ZD1211B }, 63 { USB_DEVICE(0x0ace, 0x1215), .driver_info = DEVICE_ZD1211B },
63 { USB_DEVICE(0x157e, 0x300d), .driver_info = DEVICE_ZD1211B }, 64 { USB_DEVICE(0x157e, 0x300d), .driver_info = DEVICE_ZD1211B },