diff options
author | Johannes Berg <johannes.berg@intel.com> | 2015-01-21 12:05:04 -0500 |
---|---|---|
committer | Emmanuel Grumbach <emmanuel.grumbach@intel.com> | 2015-01-22 10:55:25 -0500 |
commit | 2f15a829ae3cbc4cb27185f523af3df33757fcae (patch) | |
tree | cad10de9e8ef9c72f321251fc2d37ba19582c9cc /drivers/net/wireless | |
parent | c5d679a55dce1c025b12bcea5063d882565622b8 (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.h | 4 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/mvm/rs.c | 92 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/mvm/rx.c | 2 |
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 */ |
1145 | int iwl_mvm_send_lq_cmd(struct iwl_mvm *mvm, struct iwl_lq_cmd *lq, bool init); | 1145 | int iwl_mvm_send_lq_cmd(struct iwl_mvm *mvm, struct iwl_lq_cmd *lq, bool init); |
1146 | void iwl_mvm_update_frame_stats(struct iwl_mvm *mvm, | 1146 | void 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); | ||
1149 | int rs_pretty_print_rate(char *buf, const u32 rate); | 1147 | int rs_pretty_print_rate(char *buf, const u32 rate); |
1150 | void rs_update_last_rssi(struct iwl_mvm *mvm, | 1148 | void 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 | ||
2603 | static 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 | |||
2634 | static 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 |
2604 | static void iwl_mvm_reset_frame_stats(struct iwl_mvm *mvm, | 2654 | static 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 | ||
2612 | void iwl_mvm_update_frame_stats(struct iwl_mvm *mvm, | 2661 | void 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, |