diff options
Diffstat (limited to 'drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c')
| -rw-r--r-- | drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c | 33 | 
1 files changed, 28 insertions, 5 deletions
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c b/drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c index 9c417dd06291..b78992e341d5 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c @@ -855,11 +855,10 @@ u8 iwl_mvm_mac_ctxt_get_lowest_rate(struct ieee80211_tx_info *info,  				    struct ieee80211_vif *vif)  {  	u8 rate; - -	if (info->band == NL80211_BAND_5GHZ || vif->p2p) -		rate = IWL_FIRST_OFDM_RATE; -	else +	if (info->band == NL80211_BAND_2GHZ && !vif->p2p)  		rate = IWL_FIRST_CCK_RATE; +	else +		rate = IWL_FIRST_OFDM_RATE;  	return rate;  } @@ -1404,6 +1403,7 @@ void iwl_mvm_rx_missed_beacons_notif(struct iwl_mvm *mvm,  	u32 rx_missed_bcon, rx_missed_bcon_since_rx;  	struct ieee80211_vif *vif;  	u32 id = le32_to_cpu(mb->mac_id); +	union iwl_dbg_tlv_tp_data tp_data = { .fw_pkt = pkt };  	IWL_DEBUG_INFO(mvm,  		       "missed bcn mac_id=%u, consecutive=%u (%u, %u, %u)\n", @@ -1432,7 +1432,7 @@ void iwl_mvm_rx_missed_beacons_notif(struct iwl_mvm *mvm,  		ieee80211_beacon_loss(vif);  	iwl_dbg_tlv_time_point(&mvm->fwrt, -			       IWL_FW_INI_TIME_POINT_MISSED_BEACONS, NULL); +			       IWL_FW_INI_TIME_POINT_MISSED_BEACONS, &tp_data);  	trigger = iwl_fw_dbg_trigger_on(&mvm->fwrt, ieee80211_vif_to_wdev(vif),  					FW_DBG_TRIGGER_MISSED_BEACONS); @@ -1609,3 +1609,26 @@ void iwl_mvm_channel_switch_noa_notif(struct iwl_mvm *mvm,  out_unlock:  	rcu_read_unlock();  } + +void iwl_mvm_rx_missed_vap_notif(struct iwl_mvm *mvm, +				 struct iwl_rx_cmd_buffer *rxb) +{ +	struct iwl_rx_packet *pkt = rxb_addr(rxb); +	struct iwl_missed_vap_notif *mb = (void *)pkt->data; +	struct ieee80211_vif *vif; +	u32 id = le32_to_cpu(mb->mac_id); + +	IWL_DEBUG_INFO(mvm, +		       "missed_vap notify mac_id=%u, num_beacon_intervals_elapsed=%u, profile_periodicity=%u\n", +		       le32_to_cpu(mb->mac_id), +		       mb->num_beacon_intervals_elapsed, +		       mb->profile_periodicity); + +	rcu_read_lock(); + +	vif = iwl_mvm_rcu_dereference_vif_id(mvm, id, true); +	if (vif) +		iwl_mvm_connection_loss(mvm, vif, "missed vap beacon"); + +	rcu_read_unlock(); +}  |