diff options
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-5000.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-5000.c | 27 |
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) | |||
697 | static int iwl5000_alive_notify(struct iwl_priv *priv) | 700 | static 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 | ||