aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl-5000.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-5000.c')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-5000.c27
1 files changed, 22 insertions, 5 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-5000.c b/drivers/net/wireless/iwlwifi/iwl-5000.c
index ee3613db3132..a738886b434f 100644
--- a/drivers/net/wireless/iwlwifi/iwl-5000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-5000.c
@@ -475,6 +475,9 @@ static void iwl5000_rx_calib_result(struct iwl_priv *priv,
475 case IWL_PHY_CALIBRATE_TX_IQ_PERD_CMD: 475 case IWL_PHY_CALIBRATE_TX_IQ_PERD_CMD:
476 index = IWL_CALIB_TX_IQ_PERD; 476 index = IWL_CALIB_TX_IQ_PERD;
477 break; 477 break;
478 case IWL_PHY_CALIBRATE_BASE_BAND_CMD:
479 index = IWL_CALIB_BASE_BAND;
480 break;
478 default: 481 default:
479 IWL_ERROR("Unknown calibration notification %d\n", 482 IWL_ERROR("Unknown calibration notification %d\n",
480 hdr->op_code); 483 hdr->op_code);
@@ -697,9 +700,10 @@ static int iwl5000_send_wimax_coex(struct iwl_priv *priv)
697static int iwl5000_alive_notify(struct iwl_priv *priv) 700static int iwl5000_alive_notify(struct iwl_priv *priv)
698{ 701{
699 u32 a; 702 u32 a;
700 int i = 0;
701 unsigned long flags; 703 unsigned long flags;
702 int ret; 704 int ret;
705 int i, chan;
706 u32 reg_val;
703 707
704 spin_lock_irqsave(&priv->lock, flags); 708 spin_lock_irqsave(&priv->lock, flags);
705 709
@@ -722,6 +726,18 @@ static int iwl5000_alive_notify(struct iwl_priv *priv)
722 726
723 iwl_write_prph(priv, IWL50_SCD_DRAM_BASE_ADDR, 727 iwl_write_prph(priv, IWL50_SCD_DRAM_BASE_ADDR,
724 priv->scd_bc_tbls.dma >> 10); 728 priv->scd_bc_tbls.dma >> 10);
729
730 /* Enable DMA channel */
731 for (chan = 0; chan < FH50_TCSR_CHNL_NUM ; chan++)
732 iwl_write_direct32(priv, FH_TCSR_CHNL_TX_CONFIG_REG(chan),
733 FH_TCSR_TX_CONFIG_REG_VAL_DMA_CHNL_ENABLE |
734 FH_TCSR_TX_CONFIG_REG_VAL_DMA_CREDIT_ENABLE);
735
736 /* Update FH chicken bits */
737 reg_val = iwl_read_direct32(priv, FH_TX_CHICKEN_BITS_REG);
738 iwl_write_direct32(priv, FH_TX_CHICKEN_BITS_REG,
739 reg_val | FH_TX_CHICKEN_BITS_SCD_AUTO_RETRY_EN);
740
725 iwl_write_prph(priv, IWL50_SCD_QUEUECHAIN_SEL, 741 iwl_write_prph(priv, IWL50_SCD_QUEUECHAIN_SEL,
726 IWL50_SCD_QUEUECHAIN_SEL_ALL(priv->hw_params.max_txq_num)); 742 IWL50_SCD_QUEUECHAIN_SEL_ALL(priv->hw_params.max_txq_num));
727 iwl_write_prph(priv, IWL50_SCD_AGGR_SEL, 0); 743 iwl_write_prph(priv, IWL50_SCD_AGGR_SEL, 0);
@@ -841,8 +857,9 @@ static int iwl5000_hw_set_hw_params(struct iwl_priv *priv)
841 priv->hw_params.calib_init_cfg = 857 priv->hw_params.calib_init_cfg =
842 BIT(IWL_CALIB_XTAL) | 858 BIT(IWL_CALIB_XTAL) |
843 BIT(IWL_CALIB_LO) | 859 BIT(IWL_CALIB_LO) |
844 BIT(IWL_CALIB_TX_IQ) | 860 BIT(IWL_CALIB_TX_IQ) |
845 BIT(IWL_CALIB_TX_IQ_PERD); 861 BIT(IWL_CALIB_TX_IQ_PERD) |
862 BIT(IWL_CALIB_BASE_BAND);
846 break; 863 break;
847 case CSR_HW_REV_TYPE_5150: 864 case CSR_HW_REV_TYPE_5150:
848 priv->hw_params.calib_init_cfg = 0; 865 priv->hw_params.calib_init_cfg = 0;
@@ -969,7 +986,7 @@ static int iwl5000_txq_agg_enable(struct iwl_priv *priv, int txq_id,
969 ra_tid = BUILD_RAxTID(sta_id, tid); 986 ra_tid = BUILD_RAxTID(sta_id, tid);
970 987
971 /* Modify device's station table to Tx this TID */ 988 /* Modify device's station table to Tx this TID */
972 iwl_sta_modify_enable_tid_tx(priv, sta_id, tid); 989 iwl_sta_tx_modify_enable_tid(priv, sta_id, tid);
973 990
974 spin_lock_irqsave(&priv->lock, flags); 991 spin_lock_irqsave(&priv->lock, flags);
975 ret = iwl_grab_nic_access(priv); 992 ret = iwl_grab_nic_access(priv);
@@ -1111,7 +1128,7 @@ static int iwl5000_tx_status_reply_tx(struct iwl_priv *priv,
1111 info = IEEE80211_SKB_CB(priv->txq[txq_id].txb[idx].skb[0]); 1128 info = IEEE80211_SKB_CB(priv->txq[txq_id].txb[idx].skb[0]);
1112 info->status.rates[0].count = tx_resp->failure_frame + 1; 1129 info->status.rates[0].count = tx_resp->failure_frame + 1;
1113 info->flags &= ~IEEE80211_TX_CTL_AMPDU; 1130 info->flags &= ~IEEE80211_TX_CTL_AMPDU;
1114 info->flags |= iwl_is_tx_success(status)? 1131 info->flags |= iwl_is_tx_success(status) ?
1115 IEEE80211_TX_STAT_ACK : 0; 1132 IEEE80211_TX_STAT_ACK : 0;
1116 iwl_hwrate_to_tx_control(priv, rate_n_flags, info); 1133 iwl_hwrate_to_tx_control(priv, rate_n_flags, info);
1117 1134