aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2015-01-21 12:05:04 -0500
committerEmmanuel Grumbach <emmanuel.grumbach@intel.com>2015-01-22 10:55:25 -0500
commit2f15a829ae3cbc4cb27185f523af3df33757fcae (patch)
treecad10de9e8ef9c72f321251fc2d37ba19582c9cc /drivers/net/wireless
parentc5d679a55dce1c025b12bcea5063d882565622b8 (diff)
iwlwifi: mvm: rs: remove stats argument from functions
The stats argument is always only passed as &mvm->drv_rx_stats, so there's no point in passing it when the mvm pointer is passed. Remove the argument entirely. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Reviewed-by: Eyal Shapira <eyal@wizery.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/mvm.h4
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/rs.c92
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/rx.c2
3 files changed, 72 insertions, 26 deletions
diff --git a/drivers/net/wireless/iwlwifi/mvm/mvm.h b/drivers/net/wireless/iwlwifi/mvm/mvm.h
index aa93ee794670..979ac23522f2 100644
--- a/drivers/net/wireless/iwlwifi/mvm/mvm.h
+++ b/drivers/net/wireless/iwlwifi/mvm/mvm.h
@@ -1143,9 +1143,7 @@ iwl_mvm_vif_dbgfs_clean(struct iwl_mvm *mvm, struct ieee80211_vif *vif)
1143 1143
1144/* rate scaling */ 1144/* rate scaling */
1145int iwl_mvm_send_lq_cmd(struct iwl_mvm *mvm, struct iwl_lq_cmd *lq, bool init); 1145int iwl_mvm_send_lq_cmd(struct iwl_mvm *mvm, struct iwl_lq_cmd *lq, bool init);
1146void iwl_mvm_update_frame_stats(struct iwl_mvm *mvm, 1146void iwl_mvm_update_frame_stats(struct iwl_mvm *mvm, u32 rate, bool agg);
1147 struct iwl_mvm_frame_stats *stats,
1148 u32 rate, bool agg);
1149int rs_pretty_print_rate(char *buf, const u32 rate); 1147int rs_pretty_print_rate(char *buf, const u32 rate);
1150void rs_update_last_rssi(struct iwl_mvm *mvm, 1148void rs_update_last_rssi(struct iwl_mvm *mvm,
1151 struct iwl_lq_sta *lq_sta, 1149 struct iwl_lq_sta *lq_sta,
diff --git a/drivers/net/wireless/iwlwifi/mvm/rs.c b/drivers/net/wireless/iwlwifi/mvm/rs.c
index f30eff20cb6b..9f32f2db95bd 100644
--- a/drivers/net/wireless/iwlwifi/mvm/rs.c
+++ b/drivers/net/wireless/iwlwifi/mvm/rs.c
@@ -2600,68 +2600,116 @@ static void rs_vht_set_enabled_rates(struct ieee80211_sta *sta,
2600 } 2600 }
2601} 2601}
2602 2602
2603static void rs_ht_init(struct iwl_mvm *mvm,
2604 struct ieee80211_sta *sta,
2605 struct iwl_lq_sta *lq_sta,
2606 struct ieee80211_sta_ht_cap *ht_cap)
2607{
2608 /* active_siso_rate mask includes 9 MBits (bit 5),
2609 * and CCK (bits 0-3), supp_rates[] does not;
2610 * shift to convert format, force 9 MBits off.
2611 */
2612 lq_sta->active_siso_rate = ht_cap->mcs.rx_mask[0] << 1;
2613 lq_sta->active_siso_rate |= ht_cap->mcs.rx_mask[0] & 0x1;
2614 lq_sta->active_siso_rate &= ~((u16)0x2);
2615 lq_sta->active_siso_rate <<= IWL_FIRST_OFDM_RATE;
2616
2617 lq_sta->active_mimo2_rate = ht_cap->mcs.rx_mask[1] << 1;
2618 lq_sta->active_mimo2_rate |= ht_cap->mcs.rx_mask[1] & 0x1;
2619 lq_sta->active_mimo2_rate &= ~((u16)0x2);
2620 lq_sta->active_mimo2_rate <<= IWL_FIRST_OFDM_RATE;
2621
2622 if (mvm->cfg->ht_params->ldpc &&
2623 (ht_cap->cap & IEEE80211_HT_CAP_LDPC_CODING))
2624 lq_sta->ldpc = true;
2625
2626 if (mvm->cfg->ht_params->stbc &&
2627 (num_of_ant(iwl_mvm_get_valid_tx_ant(mvm)) > 1) &&
2628 (ht_cap->cap & IEEE80211_HT_CAP_RX_STBC))
2629 lq_sta->stbc = true;
2630
2631 lq_sta->is_vht = false;
2632}
2633
2634static void rs_vht_init(struct iwl_mvm *mvm,
2635 struct ieee80211_sta *sta,
2636 struct iwl_lq_sta *lq_sta,
2637 struct ieee80211_sta_vht_cap *vht_cap)
2638{
2639 rs_vht_set_enabled_rates(sta, vht_cap, lq_sta);
2640
2641 if (mvm->cfg->ht_params->ldpc &&
2642 (vht_cap->cap & IEEE80211_VHT_CAP_RXLDPC))
2643 lq_sta->ldpc = true;
2644
2645 if (mvm->cfg->ht_params->stbc &&
2646 (num_of_ant(iwl_mvm_get_valid_tx_ant(mvm)) > 1) &&
2647 (vht_cap->cap & IEEE80211_VHT_CAP_RXSTBC_MASK))
2648 lq_sta->stbc = true;
2649
2650 lq_sta->is_vht = true;
2651}
2652
2603#ifdef CONFIG_IWLWIFI_DEBUGFS 2653#ifdef CONFIG_IWLWIFI_DEBUGFS
2604static void iwl_mvm_reset_frame_stats(struct iwl_mvm *mvm, 2654static void iwl_mvm_reset_frame_stats(struct iwl_mvm *mvm)
2605 struct iwl_mvm_frame_stats *stats)
2606{ 2655{
2607 spin_lock_bh(&mvm->drv_stats_lock); 2656 spin_lock_bh(&mvm->drv_stats_lock);
2608 memset(stats, 0, sizeof(*stats)); 2657 memset(&mvm->drv_rx_stats, 0, sizeof(mvm->drv_rx_stats));
2609 spin_unlock_bh(&mvm->drv_stats_lock); 2658 spin_unlock_bh(&mvm->drv_stats_lock);
2610} 2659}
2611 2660
2612void iwl_mvm_update_frame_stats(struct iwl_mvm *mvm, 2661void iwl_mvm_update_frame_stats(struct iwl_mvm *mvm, u32 rate, bool agg)
2613 struct iwl_mvm_frame_stats *stats,
2614 u32 rate, bool agg)
2615{ 2662{
2616 u8 nss = 0, mcs = 0; 2663 u8 nss = 0, mcs = 0;
2617 2664
2618 spin_lock(&mvm->drv_stats_lock); 2665 spin_lock(&mvm->drv_stats_lock);
2619 2666
2620 if (agg) 2667 if (agg)
2621 stats->agg_frames++; 2668 mvm->drv_rx_stats.agg_frames++;
2622 2669
2623 stats->success_frames++; 2670 mvm->drv_rx_stats.success_frames++;
2624 2671
2625 switch (rate & RATE_MCS_CHAN_WIDTH_MSK) { 2672 switch (rate & RATE_MCS_CHAN_WIDTH_MSK) {
2626 case RATE_MCS_CHAN_WIDTH_20: 2673 case RATE_MCS_CHAN_WIDTH_20:
2627 stats->bw_20_frames++; 2674 mvm->drv_rx_stats.bw_20_frames++;
2628 break; 2675 break;
2629 case RATE_MCS_CHAN_WIDTH_40: 2676 case RATE_MCS_CHAN_WIDTH_40:
2630 stats->bw_40_frames++; 2677 mvm->drv_rx_stats.bw_40_frames++;
2631 break; 2678 break;
2632 case RATE_MCS_CHAN_WIDTH_80: 2679 case RATE_MCS_CHAN_WIDTH_80:
2633 stats->bw_80_frames++; 2680 mvm->drv_rx_stats.bw_80_frames++;
2634 break; 2681 break;
2635 default: 2682 default:
2636 WARN_ONCE(1, "bad BW. rate 0x%x", rate); 2683 WARN_ONCE(1, "bad BW. rate 0x%x", rate);
2637 } 2684 }
2638 2685
2639 if (rate & RATE_MCS_HT_MSK) { 2686 if (rate & RATE_MCS_HT_MSK) {
2640 stats->ht_frames++; 2687 mvm->drv_rx_stats.ht_frames++;
2641 mcs = rate & RATE_HT_MCS_RATE_CODE_MSK; 2688 mcs = rate & RATE_HT_MCS_RATE_CODE_MSK;
2642 nss = ((rate & RATE_HT_MCS_NSS_MSK) >> RATE_HT_MCS_NSS_POS) + 1; 2689 nss = ((rate & RATE_HT_MCS_NSS_MSK) >> RATE_HT_MCS_NSS_POS) + 1;
2643 } else if (rate & RATE_MCS_VHT_MSK) { 2690 } else if (rate & RATE_MCS_VHT_MSK) {
2644 stats->vht_frames++; 2691 mvm->drv_rx_stats.vht_frames++;
2645 mcs = rate & RATE_VHT_MCS_RATE_CODE_MSK; 2692 mcs = rate & RATE_VHT_MCS_RATE_CODE_MSK;
2646 nss = ((rate & RATE_VHT_MCS_NSS_MSK) >> 2693 nss = ((rate & RATE_VHT_MCS_NSS_MSK) >>
2647 RATE_VHT_MCS_NSS_POS) + 1; 2694 RATE_VHT_MCS_NSS_POS) + 1;
2648 } else { 2695 } else {
2649 stats->legacy_frames++; 2696 mvm->drv_rx_stats.legacy_frames++;
2650 } 2697 }
2651 2698
2652 if (nss == 1) 2699 if (nss == 1)
2653 stats->siso_frames++; 2700 mvm->drv_rx_stats.siso_frames++;
2654 else if (nss == 2) 2701 else if (nss == 2)
2655 stats->mimo2_frames++; 2702 mvm->drv_rx_stats.mimo2_frames++;
2656 2703
2657 if (rate & RATE_MCS_SGI_MSK) 2704 if (rate & RATE_MCS_SGI_MSK)
2658 stats->sgi_frames++; 2705 mvm->drv_rx_stats.sgi_frames++;
2659 else 2706 else
2660 stats->ngi_frames++; 2707 mvm->drv_rx_stats.ngi_frames++;
2661 2708
2662 stats->last_rates[stats->last_frame_idx] = rate; 2709 mvm->drv_rx_stats.last_rates[mvm->drv_rx_stats.last_frame_idx] = rate;
2663 stats->last_frame_idx = (stats->last_frame_idx + 1) % 2710 mvm->drv_rx_stats.last_frame_idx =
2664 ARRAY_SIZE(stats->last_rates); 2711 (mvm->drv_rx_stats.last_frame_idx + 1) %
2712 ARRAY_SIZE(mvm->drv_rx_stats.last_rates);
2665 2713
2666 spin_unlock(&mvm->drv_stats_lock); 2714 spin_unlock(&mvm->drv_stats_lock);
2667} 2715}
@@ -2749,7 +2797,7 @@ void iwl_mvm_rs_rate_init(struct iwl_mvm *mvm, struct ieee80211_sta *sta,
2749 lq_sta->tx_agg_tid_en = IWL_AGG_ALL_TID; 2797 lq_sta->tx_agg_tid_en = IWL_AGG_ALL_TID;
2750 lq_sta->is_agg = 0; 2798 lq_sta->is_agg = 0;
2751#ifdef CONFIG_IWLWIFI_DEBUGFS 2799#ifdef CONFIG_IWLWIFI_DEBUGFS
2752 iwl_mvm_reset_frame_stats(mvm, &mvm->drv_rx_stats); 2800 iwl_mvm_reset_frame_stats(mvm);
2753#endif 2801#endif
2754 rs_initialize_lq(mvm, sta, lq_sta, band, init); 2802 rs_initialize_lq(mvm, sta, lq_sta, band, init);
2755} 2803}
diff --git a/drivers/net/wireless/iwlwifi/mvm/rx.c b/drivers/net/wireless/iwlwifi/mvm/rx.c
index 7919a7b00c7a..f922131b4eab 100644
--- a/drivers/net/wireless/iwlwifi/mvm/rx.c
+++ b/drivers/net/wireless/iwlwifi/mvm/rx.c
@@ -407,7 +407,7 @@ int iwl_mvm_rx_rx_mpdu(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb,
407 } 407 }
408 408
409#ifdef CONFIG_IWLWIFI_DEBUGFS 409#ifdef CONFIG_IWLWIFI_DEBUGFS
410 iwl_mvm_update_frame_stats(mvm, &mvm->drv_rx_stats, rate_n_flags, 410 iwl_mvm_update_frame_stats(mvm, rate_n_flags,
411 rx_status->flag & RX_FLAG_AMPDU_DETAILS); 411 rx_status->flag & RX_FLAG_AMPDU_DETAILS);
412#endif 412#endif
413 iwl_mvm_pass_packet_to_mac80211(mvm, skb, hdr, len, ampdu_status, 413 iwl_mvm_pass_packet_to_mac80211(mvm, skb, hdr, len, ampdu_status,