Commit 0e10b33a authored by David S. Miller's avatar David S. Miller
parents b42282e5 4a39e781
...@@ -1376,7 +1376,6 @@ static void ath9k_calculate_summary_state(struct ieee80211_hw *hw, ...@@ -1376,7 +1376,6 @@ static void ath9k_calculate_summary_state(struct ieee80211_hw *hw,
ath9k_calculate_iter_data(hw, vif, &iter_data); ath9k_calculate_iter_data(hw, vif, &iter_data);
ath9k_ps_wakeup(sc);
/* Set BSSID mask. */ /* Set BSSID mask. */
memcpy(common->bssidmask, iter_data.mask, ETH_ALEN); memcpy(common->bssidmask, iter_data.mask, ETH_ALEN);
ath_hw_setbssidmask(common); ath_hw_setbssidmask(common);
...@@ -1411,7 +1410,6 @@ static void ath9k_calculate_summary_state(struct ieee80211_hw *hw, ...@@ -1411,7 +1410,6 @@ static void ath9k_calculate_summary_state(struct ieee80211_hw *hw,
} }
ath9k_hw_set_interrupts(ah, ah->imask); ath9k_hw_set_interrupts(ah, ah->imask);
ath9k_ps_restore(sc);
/* Set up ANI */ /* Set up ANI */
if ((iter_data.naps + iter_data.nadhocs) > 0) { if ((iter_data.naps + iter_data.nadhocs) > 0) {
...@@ -1457,6 +1455,7 @@ static int ath9k_add_interface(struct ieee80211_hw *hw, ...@@ -1457,6 +1455,7 @@ static int ath9k_add_interface(struct ieee80211_hw *hw,
struct ath_vif *avp = (void *)vif->drv_priv; struct ath_vif *avp = (void *)vif->drv_priv;
int ret = 0; int ret = 0;
ath9k_ps_wakeup(sc);
mutex_lock(&sc->mutex); mutex_lock(&sc->mutex);
switch (vif->type) { switch (vif->type) {
...@@ -1503,6 +1502,7 @@ static int ath9k_add_interface(struct ieee80211_hw *hw, ...@@ -1503,6 +1502,7 @@ static int ath9k_add_interface(struct ieee80211_hw *hw,
ath9k_do_vif_add_setup(hw, vif); ath9k_do_vif_add_setup(hw, vif);
out: out:
mutex_unlock(&sc->mutex); mutex_unlock(&sc->mutex);
ath9k_ps_restore(sc);
return ret; return ret;
} }
...@@ -1517,6 +1517,7 @@ static int ath9k_change_interface(struct ieee80211_hw *hw, ...@@ -1517,6 +1517,7 @@ static int ath9k_change_interface(struct ieee80211_hw *hw,
ath_dbg(common, ATH_DBG_CONFIG, "Change Interface\n"); ath_dbg(common, ATH_DBG_CONFIG, "Change Interface\n");
mutex_lock(&sc->mutex); mutex_lock(&sc->mutex);
ath9k_ps_wakeup(sc);
/* See if new interface type is valid. */ /* See if new interface type is valid. */
if ((new_type == NL80211_IFTYPE_ADHOC) && if ((new_type == NL80211_IFTYPE_ADHOC) &&
...@@ -1546,6 +1547,7 @@ static int ath9k_change_interface(struct ieee80211_hw *hw, ...@@ -1546,6 +1547,7 @@ static int ath9k_change_interface(struct ieee80211_hw *hw,
ath9k_do_vif_add_setup(hw, vif); ath9k_do_vif_add_setup(hw, vif);
out: out:
ath9k_ps_restore(sc);
mutex_unlock(&sc->mutex); mutex_unlock(&sc->mutex);
return ret; return ret;
} }
...@@ -1558,6 +1560,7 @@ static void ath9k_remove_interface(struct ieee80211_hw *hw, ...@@ -1558,6 +1560,7 @@ static void ath9k_remove_interface(struct ieee80211_hw *hw,
ath_dbg(common, ATH_DBG_CONFIG, "Detach Interface\n"); ath_dbg(common, ATH_DBG_CONFIG, "Detach Interface\n");
ath9k_ps_wakeup(sc);
mutex_lock(&sc->mutex); mutex_lock(&sc->mutex);
sc->nvifs--; sc->nvifs--;
...@@ -1569,6 +1572,7 @@ static void ath9k_remove_interface(struct ieee80211_hw *hw, ...@@ -1569,6 +1572,7 @@ static void ath9k_remove_interface(struct ieee80211_hw *hw,
ath9k_calculate_summary_state(hw, NULL); ath9k_calculate_summary_state(hw, NULL);
mutex_unlock(&sc->mutex); mutex_unlock(&sc->mutex);
ath9k_ps_restore(sc);
} }
static void ath9k_enable_ps(struct ath_softc *sc) static void ath9k_enable_ps(struct ath_softc *sc)
...@@ -1809,6 +1813,7 @@ static int ath9k_conf_tx(struct ieee80211_hw *hw, u16 queue, ...@@ -1809,6 +1813,7 @@ static int ath9k_conf_tx(struct ieee80211_hw *hw, u16 queue,
txq = sc->tx.txq_map[queue]; txq = sc->tx.txq_map[queue];
ath9k_ps_wakeup(sc);
mutex_lock(&sc->mutex); mutex_lock(&sc->mutex);
memset(&qi, 0, sizeof(struct ath9k_tx_queue_info)); memset(&qi, 0, sizeof(struct ath9k_tx_queue_info));
...@@ -1832,6 +1837,7 @@ static int ath9k_conf_tx(struct ieee80211_hw *hw, u16 queue, ...@@ -1832,6 +1837,7 @@ static int ath9k_conf_tx(struct ieee80211_hw *hw, u16 queue,
ath_beaconq_config(sc); ath_beaconq_config(sc);
mutex_unlock(&sc->mutex); mutex_unlock(&sc->mutex);
ath9k_ps_restore(sc);
return ret; return ret;
} }
...@@ -1894,6 +1900,7 @@ static void ath9k_bss_info_changed(struct ieee80211_hw *hw, ...@@ -1894,6 +1900,7 @@ static void ath9k_bss_info_changed(struct ieee80211_hw *hw,
int slottime; int slottime;
int error; int error;
ath9k_ps_wakeup(sc);
mutex_lock(&sc->mutex); mutex_lock(&sc->mutex);
if (changed & BSS_CHANGED_BSSID) { if (changed & BSS_CHANGED_BSSID) {
...@@ -1994,6 +2001,7 @@ static void ath9k_bss_info_changed(struct ieee80211_hw *hw, ...@@ -1994,6 +2001,7 @@ static void ath9k_bss_info_changed(struct ieee80211_hw *hw,
} }
mutex_unlock(&sc->mutex); mutex_unlock(&sc->mutex);
ath9k_ps_restore(sc);
} }
static u64 ath9k_get_tsf(struct ieee80211_hw *hw) static u64 ath9k_get_tsf(struct ieee80211_hw *hw)
......
...@@ -195,6 +195,7 @@ static struct reg_dmn_pair_mapping regDomainPairs[] = { ...@@ -195,6 +195,7 @@ static struct reg_dmn_pair_mapping regDomainPairs[] = {
{APL9_WORLD, CTL_ETSI, CTL_ETSI}, {APL9_WORLD, CTL_ETSI, CTL_ETSI},
{APL3_FCCA, CTL_FCC, CTL_FCC}, {APL3_FCCA, CTL_FCC, CTL_FCC},
{APL7_FCCA, CTL_FCC, CTL_FCC},
{APL1_ETSIC, CTL_FCC, CTL_ETSI}, {APL1_ETSIC, CTL_FCC, CTL_ETSI},
{APL2_ETSIC, CTL_FCC, CTL_ETSI}, {APL2_ETSIC, CTL_FCC, CTL_ETSI},
{APL2_APLD, CTL_FCC, NO_CTL}, {APL2_APLD, CTL_FCC, NO_CTL},
......
config IWLWIFI_LEGACY config IWLWIFI_LEGACY
tristate "Intel Wireless Wifi legacy devices" tristate
depends on PCI && MAC80211
select FW_LOADER select FW_LOADER
select NEW_LEDS select NEW_LEDS
select LEDS_CLASS select LEDS_CLASS
...@@ -65,7 +64,8 @@ endmenu ...@@ -65,7 +64,8 @@ endmenu
config IWL4965 config IWL4965
tristate "Intel Wireless WiFi 4965AGN (iwl4965)" tristate "Intel Wireless WiFi 4965AGN (iwl4965)"
depends on IWLWIFI_LEGACY depends on PCI && MAC80211
select IWLWIFI_LEGACY
---help--- ---help---
This option enables support for This option enables support for
...@@ -92,7 +92,8 @@ config IWL4965 ...@@ -92,7 +92,8 @@ config IWL4965
config IWL3945 config IWL3945
tristate "Intel PRO/Wireless 3945ABG/BG Network Connection (iwl3945)" tristate "Intel PRO/Wireless 3945ABG/BG Network Connection (iwl3945)"
depends on IWLWIFI_LEGACY depends on PCI && MAC80211
select IWLWIFI_LEGACY
---help--- ---help---
Select to build the driver supporting the: Select to build the driver supporting the:
......
...@@ -530,6 +530,9 @@ static struct iwl_ht_params iwl5000_ht_params = { ...@@ -530,6 +530,9 @@ static struct iwl_ht_params iwl5000_ht_params = {
struct iwl_cfg iwl5300_agn_cfg = { struct iwl_cfg iwl5300_agn_cfg = {
.name = "Intel(R) Ultimate N WiFi Link 5300 AGN", .name = "Intel(R) Ultimate N WiFi Link 5300 AGN",
IWL_DEVICE_5000, IWL_DEVICE_5000,
/* at least EEPROM 0x11A has wrong info */
.valid_tx_ant = ANT_ABC, /* .cfg overwrite */
.valid_rx_ant = ANT_ABC, /* .cfg overwrite */
.ht_params = &iwl5000_ht_params, .ht_params = &iwl5000_ht_params,
}; };
......
...@@ -137,6 +137,7 @@ struct mwl8k_tx_queue { ...@@ -137,6 +137,7 @@ struct mwl8k_tx_queue {
struct mwl8k_priv { struct mwl8k_priv {
struct ieee80211_hw *hw; struct ieee80211_hw *hw;
struct pci_dev *pdev; struct pci_dev *pdev;
int irq;
struct mwl8k_device_info *device_info; struct mwl8k_device_info *device_info;
...@@ -3761,9 +3762,11 @@ static int mwl8k_start(struct ieee80211_hw *hw) ...@@ -3761,9 +3762,11 @@ static int mwl8k_start(struct ieee80211_hw *hw)
rc = request_irq(priv->pdev->irq, mwl8k_interrupt, rc = request_irq(priv->pdev->irq, mwl8k_interrupt,
IRQF_SHARED, MWL8K_NAME, hw); IRQF_SHARED, MWL8K_NAME, hw);
if (rc) { if (rc) {
priv->irq = -1;
wiphy_err(hw->wiphy, "failed to register IRQ handler\n"); wiphy_err(hw->wiphy, "failed to register IRQ handler\n");
return -EIO; return -EIO;
} }
priv->irq = priv->pdev->irq;
/* Enable TX reclaim and RX tasklets. */ /* Enable TX reclaim and RX tasklets. */
tasklet_enable(&priv->poll_tx_task); tasklet_enable(&priv->poll_tx_task);
...@@ -3800,6 +3803,7 @@ static int mwl8k_start(struct ieee80211_hw *hw) ...@@ -3800,6 +3803,7 @@ static int mwl8k_start(struct ieee80211_hw *hw)
if (rc) { if (rc) {
iowrite32(0, priv->regs + MWL8K_HIU_A2H_INTERRUPT_MASK); iowrite32(0, priv->regs + MWL8K_HIU_A2H_INTERRUPT_MASK);
free_irq(priv->pdev->irq, hw); free_irq(priv->pdev->irq, hw);
priv->irq = -1;
tasklet_disable(&priv->poll_tx_task); tasklet_disable(&priv->poll_tx_task);
tasklet_disable(&priv->poll_rx_task); tasklet_disable(&priv->poll_rx_task);
} }
...@@ -3818,7 +3822,10 @@ static void mwl8k_stop(struct ieee80211_hw *hw) ...@@ -3818,7 +3822,10 @@ static void mwl8k_stop(struct ieee80211_hw *hw)
/* Disable interrupts */ /* Disable interrupts */
iowrite32(0, priv->regs + MWL8K_HIU_A2H_INTERRUPT_MASK); iowrite32(0, priv->regs + MWL8K_HIU_A2H_INTERRUPT_MASK);
free_irq(priv->pdev->irq, hw); if (priv->irq != -1) {
free_irq(priv->pdev->irq, hw);
priv->irq = -1;
}
/* Stop finalize join worker */ /* Stop finalize join worker */
cancel_work_sync(&priv->finalize_join_worker); cancel_work_sync(&priv->finalize_join_worker);
......
...@@ -703,7 +703,7 @@ void p54_tx_80211(struct ieee80211_hw *dev, struct sk_buff *skb) ...@@ -703,7 +703,7 @@ void p54_tx_80211(struct ieee80211_hw *dev, struct sk_buff *skb)
struct p54_tx_info *p54info; struct p54_tx_info *p54info;
struct p54_hdr *hdr; struct p54_hdr *hdr;
struct p54_tx_data *txhdr; struct p54_tx_data *txhdr;
unsigned int padding, len, extra_len; unsigned int padding, len, extra_len = 0;
int i, j, ridx; int i, j, ridx;
u16 hdr_flags = 0, aid = 0; u16 hdr_flags = 0, aid = 0;
u8 rate, queue = 0, crypt_offset = 0; u8 rate, queue = 0, crypt_offset = 0;
......
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