aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl3945-base.c
diff options
context:
space:
mode:
authorJohn W. Linville <linville@tuxdriver.com>2009-12-28 15:09:11 -0500
committerJohn W. Linville <linville@tuxdriver.com>2009-12-28 15:09:11 -0500
commitea1e4b842049fcc4741096538114871a74859314 (patch)
treec2336ab480ac0fd62e0dc41b391d99c97158dc9c /drivers/net/wireless/iwlwifi/iwl3945-base.c
parentb6ce5c33001b1dc83e6a1a6f30c5dccccea651b6 (diff)
parent92c6f8d849178582fc527aaf1e51dd37a74767d3 (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.c27
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