diff options
Diffstat (limited to 'drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c')
| -rw-r--r-- | drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c | 29 | 
1 files changed, 24 insertions, 5 deletions
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c b/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c index 77b03b757193..ef99c49247b7 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c @@ -23,7 +23,7 @@   * in the file called COPYING.   *   * Contact Information: - *  Intel Linux Wireless <[email protected]> + *  Intel Linux Wireless <[email protected]>   * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497   *   * BSD LICENSE @@ -1542,6 +1542,19 @@ static void iwl_mvm_decode_lsig(struct sk_buff *skb,  	}  } +static inline u8 iwl_mvm_nl80211_band_from_rx_msdu(u8 phy_band) +{ +	switch (phy_band) { +	case PHY_BAND_24: +		return NL80211_BAND_2GHZ; +	case PHY_BAND_5: +		return NL80211_BAND_5GHZ; +	default: +		WARN_ONCE(1, "Unsupported phy band (%u)\n", phy_band); +		return NL80211_BAND_5GHZ; +	} +} +  void iwl_mvm_rx_mpdu_mq(struct iwl_mvm *mvm, struct napi_struct *napi,  			struct iwl_rx_cmd_buffer *rxb, int queue)  { @@ -1565,7 +1578,7 @@ void iwl_mvm_rx_mpdu_mq(struct iwl_mvm *mvm, struct napi_struct *napi,  	if (unlikely(test_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status)))  		return; -	if (mvm->trans->trans_cfg->device_family >= IWL_DEVICE_FAMILY_22560) { +	if (mvm->trans->trans_cfg->device_family >= IWL_DEVICE_FAMILY_AX210) {  		rate_n_flags = le32_to_cpu(desc->v3.rate_n_flags);  		channel = desc->v3.channel;  		gp2_on_air_rise = le32_to_cpu(desc->v3.gp2_on_air_rise); @@ -1667,7 +1680,7 @@ void iwl_mvm_rx_mpdu_mq(struct iwl_mvm *mvm, struct napi_struct *napi,  		u64 tsf_on_air_rise;  		if (mvm->trans->trans_cfg->device_family >= -		    IWL_DEVICE_FAMILY_22560) +		    IWL_DEVICE_FAMILY_AX210)  			tsf_on_air_rise = le64_to_cpu(desc->v3.tsf_on_air_rise);  		else  			tsf_on_air_rise = le64_to_cpu(desc->v1.tsf_on_air_rise); @@ -1678,8 +1691,14 @@ void iwl_mvm_rx_mpdu_mq(struct iwl_mvm *mvm, struct napi_struct *napi,  	}  	rx_status->device_timestamp = gp2_on_air_rise; -	rx_status->band = channel > 14 ? NL80211_BAND_5GHZ : -		NL80211_BAND_2GHZ; +	if (iwl_mvm_is_band_in_rx_supported(mvm)) { +		u8 band = BAND_IN_RX_STATUS(desc->mac_phy_idx); + +		rx_status->band = iwl_mvm_nl80211_band_from_rx_msdu(band); +	} else { +		rx_status->band = channel > 14 ? NL80211_BAND_5GHZ : +			NL80211_BAND_2GHZ; +	}  	rx_status->freq = ieee80211_channel_to_frequency(channel,  							 rx_status->band);  	iwl_mvm_get_signal_strength(mvm, rx_status, rate_n_flags, energy_a,  |