diff options
author | John W. Linville <linville@tuxdriver.com> | 2012-07-12 13:44:50 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2012-07-12 13:44:50 -0400 |
commit | 38a00840638b4932152bca48098dbfa069d942a2 (patch) | |
tree | dd12897854f6df8aac237d5fd46551c74be8153a /drivers/net/wireless/iwlwifi/pcie/trans.c | |
parent | 391e5c22f5f4e55817f8ba18a08ea717ed2d4a1f (diff) | |
parent | 2f8684ce7a47c91da7e0ccba2686277c103d02b6 (diff) |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem
Diffstat (limited to 'drivers/net/wireless/iwlwifi/pcie/trans.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/pcie/trans.c | 36 |
1 files changed, 12 insertions, 24 deletions
diff --git a/drivers/net/wireless/iwlwifi/pcie/trans.c b/drivers/net/wireless/iwlwifi/pcie/trans.c index d1950838f17f..09795afccb23 100644 --- a/drivers/net/wireless/iwlwifi/pcie/trans.c +++ b/drivers/net/wireless/iwlwifi/pcie/trans.c | |||
@@ -1059,7 +1059,7 @@ static void iwl_tx_start(struct iwl_trans *trans) | |||
1059 | { | 1059 | { |
1060 | struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans); | 1060 | struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans); |
1061 | u32 a; | 1061 | u32 a; |
1062 | int i, chan; | 1062 | int chan; |
1063 | u32 reg_val; | 1063 | u32 reg_val; |
1064 | 1064 | ||
1065 | /* make sure all queue are not stopped/used */ | 1065 | /* make sure all queue are not stopped/used */ |
@@ -1091,12 +1091,8 @@ static void iwl_tx_start(struct iwl_trans *trans) | |||
1091 | */ | 1091 | */ |
1092 | iwl_write_prph(trans, SCD_CHAINEXT_EN, 0); | 1092 | iwl_write_prph(trans, SCD_CHAINEXT_EN, 0); |
1093 | 1093 | ||
1094 | for (i = 0; i < trans_pcie->n_q_to_fifo; i++) { | 1094 | iwl_trans_ac_txq_enable(trans, trans_pcie->cmd_queue, |
1095 | int fifo = trans_pcie->setup_q_to_fifo[i]; | 1095 | trans_pcie->cmd_fifo); |
1096 | |||
1097 | iwl_trans_pcie_txq_enable(trans, i, fifo, IWL_INVALID_STATION, | ||
1098 | IWL_TID_NON_QOS, SCD_FRAME_LIMIT, 0); | ||
1099 | } | ||
1100 | 1096 | ||
1101 | /* Activate all Tx DMA/FIFO channels */ | 1097 | /* Activate all Tx DMA/FIFO channels */ |
1102 | iwl_trans_txq_set_sched(trans, IWL_MASK(0, 7)); | 1098 | iwl_trans_txq_set_sched(trans, IWL_MASK(0, 7)); |
@@ -1145,7 +1141,7 @@ static int iwl_trans_tx_stop(struct iwl_trans *trans) | |||
1145 | FH_TSSR_TX_STATUS_REG_MSK_CHNL_IDLE(ch), 1000); | 1141 | FH_TSSR_TX_STATUS_REG_MSK_CHNL_IDLE(ch), 1000); |
1146 | if (ret < 0) | 1142 | if (ret < 0) |
1147 | IWL_ERR(trans, | 1143 | IWL_ERR(trans, |
1148 | "Failing on timeout while stopping DMA channel %d [0x%08x]", | 1144 | "Failing on timeout while stopping DMA channel %d [0x%08x]\n", |
1149 | ch, | 1145 | ch, |
1150 | iwl_read_direct32(trans, | 1146 | iwl_read_direct32(trans, |
1151 | FH_TSSR_TX_STATUS_REG)); | 1147 | FH_TSSR_TX_STATUS_REG)); |
@@ -1153,7 +1149,8 @@ static int iwl_trans_tx_stop(struct iwl_trans *trans) | |||
1153 | spin_unlock_irqrestore(&trans_pcie->irq_lock, flags); | 1149 | spin_unlock_irqrestore(&trans_pcie->irq_lock, flags); |
1154 | 1150 | ||
1155 | if (!trans_pcie->txq) { | 1151 | if (!trans_pcie->txq) { |
1156 | IWL_WARN(trans, "Stopping tx queues that aren't allocated..."); | 1152 | IWL_WARN(trans, |
1153 | "Stopping tx queues that aren't allocated...\n"); | ||
1157 | return 0; | 1154 | return 0; |
1158 | } | 1155 | } |
1159 | 1156 | ||
@@ -1430,7 +1427,7 @@ static int iwl_trans_pcie_start_hw(struct iwl_trans *trans) | |||
1430 | 1427 | ||
1431 | err = iwl_prepare_card_hw(trans); | 1428 | err = iwl_prepare_card_hw(trans); |
1432 | if (err) { | 1429 | if (err) { |
1433 | IWL_ERR(trans, "Error while preparing HW: %d", err); | 1430 | IWL_ERR(trans, "Error while preparing HW: %d\n", err); |
1434 | goto err_free_irq; | 1431 | goto err_free_irq; |
1435 | } | 1432 | } |
1436 | 1433 | ||
@@ -1528,6 +1525,7 @@ static void iwl_trans_pcie_configure(struct iwl_trans *trans, | |||
1528 | struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans); | 1525 | struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans); |
1529 | 1526 | ||
1530 | trans_pcie->cmd_queue = trans_cfg->cmd_queue; | 1527 | trans_pcie->cmd_queue = trans_cfg->cmd_queue; |
1528 | trans_pcie->cmd_fifo = trans_cfg->cmd_fifo; | ||
1531 | if (WARN_ON(trans_cfg->n_no_reclaim_cmds > MAX_NO_RECLAIM_CMDS)) | 1529 | if (WARN_ON(trans_cfg->n_no_reclaim_cmds > MAX_NO_RECLAIM_CMDS)) |
1532 | trans_pcie->n_no_reclaim_cmds = 0; | 1530 | trans_pcie->n_no_reclaim_cmds = 0; |
1533 | else | 1531 | else |
@@ -1536,17 +1534,6 @@ static void iwl_trans_pcie_configure(struct iwl_trans *trans, | |||
1536 | memcpy(trans_pcie->no_reclaim_cmds, trans_cfg->no_reclaim_cmds, | 1534 | memcpy(trans_pcie->no_reclaim_cmds, trans_cfg->no_reclaim_cmds, |
1537 | trans_pcie->n_no_reclaim_cmds * sizeof(u8)); | 1535 | trans_pcie->n_no_reclaim_cmds * sizeof(u8)); |
1538 | 1536 | ||
1539 | trans_pcie->n_q_to_fifo = trans_cfg->n_queue_to_fifo; | ||
1540 | |||
1541 | if (WARN_ON(trans_pcie->n_q_to_fifo > IWL_MAX_HW_QUEUES)) | ||
1542 | trans_pcie->n_q_to_fifo = IWL_MAX_HW_QUEUES; | ||
1543 | |||
1544 | /* at least the command queue must be mapped */ | ||
1545 | WARN_ON(!trans_pcie->n_q_to_fifo); | ||
1546 | |||
1547 | memcpy(trans_pcie->setup_q_to_fifo, trans_cfg->queue_to_fifo, | ||
1548 | trans_pcie->n_q_to_fifo * sizeof(u8)); | ||
1549 | |||
1550 | trans_pcie->rx_buf_size_8k = trans_cfg->rx_buf_size_8k; | 1537 | trans_pcie->rx_buf_size_8k = trans_cfg->rx_buf_size_8k; |
1551 | if (trans_pcie->rx_buf_size_8k) | 1538 | if (trans_pcie->rx_buf_size_8k) |
1552 | trans_pcie->rx_page_order = get_order(8 * 1024); | 1539 | trans_pcie->rx_page_order = get_order(8 * 1024); |
@@ -2141,13 +2128,14 @@ struct iwl_trans *iwl_trans_pcie_alloc(struct pci_dev *pdev, | |||
2141 | 2128 | ||
2142 | err = pci_request_regions(pdev, DRV_NAME); | 2129 | err = pci_request_regions(pdev, DRV_NAME); |
2143 | if (err) { | 2130 | if (err) { |
2144 | dev_printk(KERN_ERR, &pdev->dev, "pci_request_regions failed"); | 2131 | dev_printk(KERN_ERR, &pdev->dev, |
2132 | "pci_request_regions failed\n"); | ||
2145 | goto out_pci_disable_device; | 2133 | goto out_pci_disable_device; |
2146 | } | 2134 | } |
2147 | 2135 | ||
2148 | trans_pcie->hw_base = pci_ioremap_bar(pdev, 0); | 2136 | trans_pcie->hw_base = pci_ioremap_bar(pdev, 0); |
2149 | if (!trans_pcie->hw_base) { | 2137 | if (!trans_pcie->hw_base) { |
2150 | dev_printk(KERN_ERR, &pdev->dev, "pci_ioremap_bar failed"); | 2138 | dev_printk(KERN_ERR, &pdev->dev, "pci_ioremap_bar failed\n"); |
2151 | err = -ENODEV; | 2139 | err = -ENODEV; |
2152 | goto out_pci_release_regions; | 2140 | goto out_pci_release_regions; |
2153 | } | 2141 | } |
@@ -2168,7 +2156,7 @@ struct iwl_trans *iwl_trans_pcie_alloc(struct pci_dev *pdev, | |||
2168 | err = pci_enable_msi(pdev); | 2156 | err = pci_enable_msi(pdev); |
2169 | if (err) | 2157 | if (err) |
2170 | dev_printk(KERN_ERR, &pdev->dev, | 2158 | dev_printk(KERN_ERR, &pdev->dev, |
2171 | "pci_enable_msi failed(0X%x)", err); | 2159 | "pci_enable_msi failed(0X%x)\n", err); |
2172 | 2160 | ||
2173 | trans->dev = &pdev->dev; | 2161 | trans->dev = &pdev->dev; |
2174 | trans_pcie->irq = pdev->irq; | 2162 | trans_pcie->irq = pdev->irq; |