diff options
author | John W. Linville <linville@tuxdriver.com> | 2009-12-28 15:09:11 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-12-28 15:09:11 -0500 |
commit | ea1e4b842049fcc4741096538114871a74859314 (patch) | |
tree | c2336ab480ac0fd62e0dc41b391d99c97158dc9c /drivers/net/wireless/iwlwifi/iwl3945-base.c | |
parent | b6ce5c33001b1dc83e6a1a6f30c5dccccea651b6 (diff) | |
parent | 92c6f8d849178582fc527aaf1e51dd37a74767d3 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl3945-base.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl3945-base.c | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c index f7c7ff4264fb..6533122ed87a 100644 --- a/drivers/net/wireless/iwlwifi/iwl3945-base.c +++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c | |||
@@ -548,6 +548,9 @@ static int iwl3945_tx_skb(struct iwl_priv *priv, struct sk_buff *skb) | |||
548 | txq = &priv->txq[txq_id]; | 548 | txq = &priv->txq[txq_id]; |
549 | q = &txq->q; | 549 | q = &txq->q; |
550 | 550 | ||
551 | if ((iwl_queue_space(q) < q->high_mark)) | ||
552 | goto drop; | ||
553 | |||
551 | spin_lock_irqsave(&priv->lock, flags); | 554 | spin_lock_irqsave(&priv->lock, flags); |
552 | 555 | ||
553 | idx = get_cmd_index(q, q->write_ptr, 0); | 556 | idx = get_cmd_index(q, q->write_ptr, 0); |
@@ -812,7 +815,7 @@ static int iwl3945_get_measurement(struct iwl_priv *priv, | |||
812 | break; | 815 | break; |
813 | } | 816 | } |
814 | 817 | ||
815 | free_pages(cmd.reply_page, priv->hw_params.rx_page_order); | 818 | iwl_free_pages(priv, cmd.reply_page); |
816 | 819 | ||
817 | return rc; | 820 | return rc; |
818 | } | 821 | } |
@@ -1198,9 +1201,7 @@ void iwl3945_rx_queue_reset(struct iwl_priv *priv, struct iwl_rx_queue *rxq) | |||
1198 | pci_unmap_page(priv->pci_dev, rxq->pool[i].page_dma, | 1201 | pci_unmap_page(priv->pci_dev, rxq->pool[i].page_dma, |
1199 | PAGE_SIZE << priv->hw_params.rx_page_order, | 1202 | PAGE_SIZE << priv->hw_params.rx_page_order, |
1200 | PCI_DMA_FROMDEVICE); | 1203 | PCI_DMA_FROMDEVICE); |
1201 | priv->alloc_rxb_page--; | 1204 | __iwl_free_pages(priv, rxq->pool[i].page); |
1202 | __free_pages(rxq->pool[i].page, | ||
1203 | priv->hw_params.rx_page_order); | ||
1204 | rxq->pool[i].page = NULL; | 1205 | rxq->pool[i].page = NULL; |
1205 | } | 1206 | } |
1206 | list_add_tail(&rxq->pool[i].list, &rxq->rx_used); | 1207 | list_add_tail(&rxq->pool[i].list, &rxq->rx_used); |
@@ -1247,10 +1248,8 @@ static void iwl3945_rx_queue_free(struct iwl_priv *priv, struct iwl_rx_queue *rx | |||
1247 | pci_unmap_page(priv->pci_dev, rxq->pool[i].page_dma, | 1248 | pci_unmap_page(priv->pci_dev, rxq->pool[i].page_dma, |
1248 | PAGE_SIZE << priv->hw_params.rx_page_order, | 1249 | PAGE_SIZE << priv->hw_params.rx_page_order, |
1249 | PCI_DMA_FROMDEVICE); | 1250 | PCI_DMA_FROMDEVICE); |
1250 | __free_pages(rxq->pool[i].page, | 1251 | __iwl_free_pages(priv, rxq->pool[i].page); |
1251 | priv->hw_params.rx_page_order); | ||
1252 | rxq->pool[i].page = NULL; | 1252 | rxq->pool[i].page = NULL; |
1253 | priv->alloc_rxb_page--; | ||
1254 | } | 1253 | } |
1255 | } | 1254 | } |
1256 | 1255 | ||
@@ -1716,7 +1715,7 @@ int iwl3945_dump_nic_event_log(struct iwl_priv *priv, bool full_log, | |||
1716 | } | 1715 | } |
1717 | 1716 | ||
1718 | #ifdef CONFIG_IWLWIFI_DEBUG | 1717 | #ifdef CONFIG_IWLWIFI_DEBUG |
1719 | if (!(iwl_get_debug_level(priv) & IWL_DL_FW_ERRORS)) | 1718 | if (!(iwl_get_debug_level(priv) & IWL_DL_FW_ERRORS) && !full_log) |
1720 | size = (size > DEFAULT_IWL3945_DUMP_EVENT_LOG_ENTRIES) | 1719 | size = (size > DEFAULT_IWL3945_DUMP_EVENT_LOG_ENTRIES) |
1721 | ? DEFAULT_IWL3945_DUMP_EVENT_LOG_ENTRIES : size; | 1720 | ? DEFAULT_IWL3945_DUMP_EVENT_LOG_ENTRIES : size; |
1722 | #else | 1721 | #else |
@@ -3908,7 +3907,6 @@ static int iwl3945_init_drv(struct iwl_priv *priv) | |||
3908 | priv->retry_rate = 1; | 3907 | priv->retry_rate = 1; |
3909 | priv->ibss_beacon = NULL; | 3908 | priv->ibss_beacon = NULL; |
3910 | 3909 | ||
3911 | spin_lock_init(&priv->lock); | ||
3912 | spin_lock_init(&priv->sta_lock); | 3910 | spin_lock_init(&priv->sta_lock); |
3913 | spin_lock_init(&priv->hcmd_lock); | 3911 | spin_lock_init(&priv->hcmd_lock); |
3914 | 3912 | ||
@@ -3977,9 +3975,11 @@ static int iwl3945_setup_mac(struct iwl_priv *priv) | |||
3977 | /* Tell mac80211 our characteristics */ | 3975 | /* Tell mac80211 our characteristics */ |
3978 | hw->flags = IEEE80211_HW_SIGNAL_DBM | | 3976 | hw->flags = IEEE80211_HW_SIGNAL_DBM | |
3979 | IEEE80211_HW_NOISE_DBM | | 3977 | IEEE80211_HW_NOISE_DBM | |
3980 | IEEE80211_HW_SPECTRUM_MGMT | | 3978 | IEEE80211_HW_SPECTRUM_MGMT; |
3981 | IEEE80211_HW_SUPPORTS_PS | | 3979 | |
3982 | IEEE80211_HW_SUPPORTS_DYNAMIC_PS; | 3980 | if (!priv->cfg->broken_powersave) |
3981 | hw->flags |= IEEE80211_HW_SUPPORTS_PS | | ||
3982 | IEEE80211_HW_SUPPORTS_DYNAMIC_PS; | ||
3983 | 3983 | ||
3984 | hw->wiphy->interface_modes = | 3984 | hw->wiphy->interface_modes = |
3985 | BIT(NL80211_IFTYPE_STATION) | | 3985 | BIT(NL80211_IFTYPE_STATION) | |
@@ -4098,10 +4098,11 @@ static int iwl3945_pci_probe(struct pci_dev *pdev, const struct pci_device_id *e | |||
4098 | * PCI Tx retries from interfering with C3 CPU state */ | 4098 | * PCI Tx retries from interfering with C3 CPU state */ |
4099 | pci_write_config_byte(pdev, 0x41, 0x00); | 4099 | pci_write_config_byte(pdev, 0x41, 0x00); |
4100 | 4100 | ||
4101 | /* this spin lock will be used in apm_ops.init and EEPROM access | 4101 | /* these spin locks will be used in apm_ops.init and EEPROM access |
4102 | * we should init now | 4102 | * we should init now |
4103 | */ | 4103 | */ |
4104 | spin_lock_init(&priv->reg_lock); | 4104 | spin_lock_init(&priv->reg_lock); |
4105 | spin_lock_init(&priv->lock); | ||
4105 | 4106 | ||
4106 | /*********************** | 4107 | /*********************** |
4107 | * 4. Read EEPROM | 4108 | * 4. Read EEPROM |