pull request: iwlwifi-next 2014-05-22
Hi John,
This pull request is intended for 3.16.
The regular amount of housekeeping here. I merged iwlwifi-fixes.git to be able to add the patch you didn't want in wireless.git at that stage of the -rc cycle. Luca has a few preparations for CSA implementation and also what seems to be a bugfix for P2P but hasn't caused issues we could notice.
Please pull.
The following changes since commit af7c603eb476216f1c27d82b802f0ce879c54ab3:
iwlwifi: fix LED support Kconfig dependencies (2014-05-15 19:56:18 +0300)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-next.git for-john
for you to fetch changes up to 999609f1206a14039db534058b251c6d5ab39322:
iwlwifi: mvm: remove vif argument from power_update_mac (2014-05-22 10:11:17 +0300)
----------------------------------------------------------------
Arik Nemtsov (1):
iwlwifi: mvm: remove vif argument from power_update_mac
Avri Altman (2):
iwlwifi: mvm: Remove redundant initialization
iwlwifi: mvm: don't filter out the first beacon
Emmanuel Grumbach (6):
iwlwifi: mvm: don't allow diversity if BT Coex / TT forbid it
iwlwifi: mvm: disable beacon filtering
Merge remote-tracking branch 'iwlwifi-fixes/master' into iwlwifi-next
iwlwifi: mvm: disable reduced Tx power when not applicable
iwlwifi: mvm: remove debugfs hook for reduced tx power
iwlwifi: mvm: make iwl_mvm_update_beacon_abort static
Luciano Coelho (4):
iwlwifi: mvm: update power after phy_ctxt is NULL when unassigning chanctx
iwlwifi: mvm: enable MAC_FILTER_IN_BEACON when forced_assoc_off is set
iwlwifi: mvm: set the MAC_FILTER_IN_BEACON flag also for P2P
iwlwifi: mvm: pass force_assoc_off all the way down to avoid hacks
drivers/net/wireless/iwlwifi/mvm/coex.c | 12 +- drivers/net/wireless/iwlwifi/mvm/d3.c | 8 +- drivers/net/wireless/iwlwifi/mvm/debugfs-vif.c | 44 +----- drivers/net/wireless/iwlwifi/mvm/mac-ctxt.c | 26 ++-- drivers/net/wireless/iwlwifi/mvm/mac80211.c | 44 +++--- drivers/net/wireless/iwlwifi/mvm/mvm.h | 16 +- drivers/net/wireless/iwlwifi/mvm/phy-ctxt.c | 3 +- drivers/net/wireless/iwlwifi/mvm/power.c | 162 +++++++++----------- drivers/net/wireless/iwlwifi/mvm/scan.c | 2 +- drivers/net/wireless/iwlwifi/mvm/sta.h | 3 - drivers/net/wireless/iwlwifi/mvm/utils.c | 51 ++++-- 11 files changed, 169 insertions(+), 202 deletions(-)
PATCH 1/11 iwlwifi: mvm: update power after phy_ctxt is NULL when unassigning chanctx
From: Luciano Coelho <[email protected]>
iwl_mvm_power_update_mac() (more specifically iwl_mvm_power_iterator()) relies on the phy_ctxt setting to decide whether the vif is active or not. When unassigning a chanctx, we should therefore call iwl_mvm_power_update_mac() after setting phy_chanctx to NULL.
--- drivers/net/wireless/iwlwifi/mvm/mac80211.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/net/wireless/iwlwifi/mvm/mac80211.c +1 -1
@@ -2299,10 +2299,10 @@ static void iwl_mvm_unassign_vif_chanctx(struct ieee80211_hw *hw, }iwl_mvm_binding_remove_vif (mvm, vif); -iwl_mvm_power_update_mac (mvm, vif); out_unlock: mvmvif->phy_ctxt =NULL ; +iwl_mvm_power_update_mac (mvm, vif);mutex_unlock (&mvm->mutex); }
Signature · 1 line
1.8.3.2
PATCH 2/11 iwlwifi: mvm: Remove redundant initialization
In reply to Emmanuel GrumbachFrom: Avri Altman <[email protected]>
This value is being set few lines under in set_cqm_params.
--- drivers/net/wireless/iwlwifi/mvm/power.c | 1 - 1 file changed, 1 deletion(-)
drivers/net/wireless/iwlwifi/mvm/power.c +0 -1
@@ -130,7 +130,6 @@ int iwl_mvm_update_beacon_abort(struct iwl_mvm *mvm,struct iwl_beacon_filter_cmd cmd = {IWL_BF_CMD_CONFIG_DEFAULTS , .bf_enable_beacon_filter =cpu_to_le32 (1 ), - .ba_enable_beacon_abort =cpu_to_le32 (enable), };if (!mvmvif->bf_data.bf_enabled)
Signature · 1 line
1.8.3.2
PATCH 3/11 iwlwifi: mvm: don't allow diversity if BT Coex / TT forbid it
In reply to Emmanuel GrumbachFrom: Emmanuel Grumbach <[email protected]>
We should not allow diversity when BT Coex needs the second antenna. Thermal Throttling can also request to stop using the second antenna. Honour those requests.
--- drivers/net/wireless/iwlwifi/mvm/mvm.h | 1 + drivers/net/wireless/iwlwifi/mvm/phy-ctxt.c | 3 +-- drivers/net/wireless/iwlwifi/mvm/utils.c | 33 +++++++++++++++++++++++++++++ 3 files changed, 35 insertions(+), 2 deletions(-)
drivers/net/wireless/iwlwifi/mvm/mvm.h +1 -0
@@ -1008,6 +1008,7 @@ int iwl_mvm_update_beacon_filter(struct iwl_mvm *mvm,void iwl_mvm_update_smps (struct iwl_mvm *mvm,struct ieee80211_vif *vif,enum iwl_mvm_smps_type_request req_type,enum ieee80211_smps_mode smps_request); +bool iwl_mvm_rx_diversity_allowed (struct iwl_mvm *mvm);/* Low latency */ int iwl_mvm_update_low_latency(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
drivers/net/wireless/iwlwifi/mvm/phy-ctxt.c +1 -2
@@ -163,8 +163,7 @@ static void iwl_mvm_phy_ctxt_cmd_data(struct iwl_mvm *mvm,* between the two antennas is sufficiently different to impact * performance. */ -if (active_cnt ==1 &&num_of_ant (mvm->fw->valid_rx_ant) >1 && - !mvm->cfg->rx_with_siso_diversity) { +if (active_cnt ==1 &&iwl_mvm_rx_diversity_allowed (mvm)) { idle_cnt =2 ; active_cnt =2 ; }
drivers/net/wireless/iwlwifi/mvm/utils.c +33 -0
@@ -650,6 +650,39 @@ void iwl_mvm_update_smps(struct iwl_mvm *mvm, struct ieee80211_vif *vif,ieee80211_request_smps (vif, smps_mode); } +static void iwl_mvm_diversity_iter (void *_data,u8 *mac, +struct ieee80211_vif *vif) +{ +struct iwl_mvm_vif *mvmvif =iwl_mvm_vif_from_mac80211 (vif); +bool *result = _data; +int i; + +for (i =0 ; i <NUM_IWL_MVM_SMPS_REQ ; i++) { +if (mvmvif->smps_requests[i] ==IEEE80211_SMPS_STATIC || + mvmvif->smps_requests[i] ==IEEE80211_SMPS_DYNAMIC ) + *result = false; + } +} + +bool iwl_mvm_rx_diversity_allowed (struct iwl_mvm *mvm) +{ +bool result = true; + +lockdep_assert_held (&mvm->mutex); + +if (num_of_ant (mvm->fw->valid_rx_ant) ==1 ) +return false; + +if (!mvm->cfg->rx_with_siso_diversity) +return false; + +ieee80211_iterate_active_interfaces_atomic ( + mvm->hw,IEEE80211_IFACE_ITER_NORMAL , + iwl_mvm_diversity_iter, &result); + +return result; +} +int iwl_mvm_update_low_latency (struct iwl_mvm *mvm,struct ieee80211_vif *vif,bool value) {
Signature · 1 line
1.8.3.2
PATCH 4/11 iwlwifi: mvm: enable MAC_FILTER_IN_BEACON when forced_assoc_off is set
In reply to Emmanuel GrumbachFrom: Luciano Coelho <[email protected]>
Set the MAC_FILTER_IN_BEACON flag in iwl_mvm_mac_ctxt_cmd_sata() also when forced_assoc_off is set, so it's aligned with when we are not associated.
--- drivers/net/wireless/iwlwifi/mvm/mac-ctxt.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-)
drivers/net/wireless/iwlwifi/mvm/mac-ctxt.c +6 -8
@@ -713,14 +713,6 @@ static int iwl_mvm_mac_ctxt_cmd_sta(struct iwl_mvm *mvm, IEEE80211_P2P_OPPPS_CTWINDOW_MASK); ctxt_sta = &cmd.p2p_sta.sta; }else { -/* Allow beacons to pass through as long as we are not -* associated, or we do not have dtim period information. -*/ -if (!vif->bss_conf.assoc || !vif->bss_conf.dtim_period) - cmd.filter_flags |=cpu_to_le32 (MAC_FILTER_IN_BEACON ); -else - cmd.filter_flags &= ~cpu_to_le32 (MAC_FILTER_IN_BEACON ); - ctxt_sta = &cmd.sta; }
@@ -729,6 +721,12 @@ static int iwl_mvm_mac_ctxt_cmd_sta(struct iwl_mvm *mvm, !force_assoc_off) {u32 dtim_offs; +/* Allow beacons to pass through as long as we are not +* associated, or we do not have dtim period information. +*/ +if (!vif->p2p) + cmd.filter_flags |=cpu_to_le32 (MAC_FILTER_IN_BEACON ); +/* * The DTIM count counts down, so when it is N that means N * more beacon intervals happen until the DTIM TBTT. Therefore
Signature · 1 line
1.8.3.2
PATCH 5/11 iwlwifi: mvm: set the MAC_FILTER_IN_BEACON flag also for P2P
In reply to Emmanuel GrumbachFrom: Luciano Coelho <[email protected]>
There doesn't seem to be a good reason for not enabling the MAC_FILTER_IN_BEACON flag for P2P client, as we do for station.
This can prevent potential, hard-to-reproduce problems during association.
--- drivers/net/wireless/iwlwifi/mvm/mac-ctxt.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
drivers/net/wireless/iwlwifi/mvm/mac-ctxt.c +1 -2
@@ -724,8 +724,7 @@ static int iwl_mvm_mac_ctxt_cmd_sta(struct iwl_mvm *mvm,/* Allow beacons to pass through as long as we are not * associated, or we do not have dtim period information. */ -if (!vif->p2p) - cmd.filter_flags |=cpu_to_le32 (MAC_FILTER_IN_BEACON ); + cmd.filter_flags |=cpu_to_le32 (MAC_FILTER_IN_BEACON );/* * The DTIM count counts down, so when it is N that means N
Signature · 1 line
1.8.3.2
PATCH 6/11 iwlwifi: mvm: don't filter out the first beacon
In reply to Emmanuel GrumbachFrom: Avri Altman <[email protected]>
Enabling beacon filtering should be done only after a beacon has been received. Doing that too early will cause disconnections.
This has already been fixed, but the fix didn't take care about the case where the beacon is received after the association, it waited only for association which is not enough.
--- drivers/net/wireless/iwlwifi/mvm/mac80211.c | 12 +++--- drivers/net/wireless/iwlwifi/mvm/mvm.h | 5 --- drivers/net/wireless/iwlwifi/mvm/power.c | 62 ++++++++++------------------- 3 files changed, 27 insertions(+), 52 deletions(-)
drivers/net/wireless/iwlwifi/mvm/mac80211.c +7 -5
@@ -1368,9 +1368,12 @@ static void iwl_mvm_bss_info_changed_station(struct iwl_mvm *mvm,IWL_DEBUG_MAC80211 (mvm,"cqm info_changed\n" );/* reset cqm events tracking */ mvmvif->bf_data.last_cqm_event =0 ; - ret =iwl_mvm_update_beacon_filter (mvm, vif, false,0 ); -if (ret) -IWL_ERR (mvm,"failed to update CQM thresholds\n" ); +if (mvmvif->bf_data.bf_enabled) { + ret =iwl_mvm_enable_beacon_filter (mvm, vif,0 ); +if (ret) +IWL_ERR (mvm, +"failed to update CQM thresholds\n" ); + } }if (changes &BSS_CHANGED_ARP_FILTER ) {
@@ -1734,8 +1737,7 @@ static int iwl_mvm_mac_sta_state(struct ieee80211_hw *hw, }else if (old_state ==IEEE80211_STA_ASSOC && new_state ==IEEE80211_STA_AUTHORIZED ) {/* enable beacon filtering */ -if (vif->bss_conf.dtim_period) -WARN_ON (iwl_mvm_enable_beacon_filter (mvm, vif,0 )); +WARN_ON (iwl_mvm_enable_beacon_filter (mvm, vif,0 )); ret =0 ; }else if (old_state ==IEEE80211_STA_AUTHORIZED && new_state ==IEEE80211_STA_ASSOC ) {
drivers/net/wireless/iwlwifi/mvm/mvm.h +0 -5
@@ -999,11 +999,6 @@ int iwl_mvm_disable_beacon_filter(struct iwl_mvm *mvm, u32 flags);int iwl_mvm_update_beacon_abort (struct iwl_mvm *mvm,struct ieee80211_vif *vif,bool enable); -int iwl_mvm_update_beacon_filter (struct iwl_mvm *mvm, -struct ieee80211_vif *vif, -bool force, -u32 flags); -/* SMPS */ void iwl_mvm_update_smps(struct iwl_mvm *mvm, struct ieee80211_vif *vif, enum iwl_mvm_smps_type_request req_type,
drivers/net/wireless/iwlwifi/mvm/power.c +20 -42
83 lines not on this page · raw message
Signature · 1 line
1.8.3.2
PATCH 7/11 iwlwifi: mvm: pass force_assoc_off all the way down to avoid hacks
In reply to Emmanuel GrumbachFrom: Luciano Coelho <[email protected]>
In some cases, we need to force the association to be off in the MAC_CONTEXT_CMD command we send to the firmware. Instead of having to hack the vif->bss_conf.assoc value, pass it all the way down the call chain.
Additionally, for the iwl_mvm_mac_ctxt_add() case, we *always* set forced_assoc_off to true, so we can remove the hack in the d3 code that was forcing it to off by hacking the bss_conf.assoc value.
--- drivers/net/wireless/iwlwifi/mvm/d3.c | 6 ++---- drivers/net/wireless/iwlwifi/mvm/mac-ctxt.c | 13 ++++++++----- drivers/net/wireless/iwlwifi/mvm/mac80211.c | 12 ++++++------ drivers/net/wireless/iwlwifi/mvm/mvm.h | 3 ++- 4 files changed, 18 insertions(+), 16 deletions(-)
drivers/net/wireless/iwlwifi/mvm/d3.c +2 -4
@@ -663,10 +663,8 @@ static int iwl_mvm_d3_reprogram(struct iwl_mvm *mvm, struct ieee80211_vif *vif,if (WARN_ON (!vif->bss_conf.assoc))return -EINVAL ; -/* hack */ - vif->bss_conf.assoc = false; + ret =iwl_mvm_mac_ctxt_add (mvm, vif); - vif->bss_conf.assoc = true;if (ret)return ret;
@@ -702,7 +700,7 @@ static int iwl_mvm_d3_reprogram(struct iwl_mvm *mvm, struct ieee80211_vif *vif,return ret;rcu_assign_pointer (mvm->fw_id_to_mac_id[mvmvif->ap_sta_id], ap_sta); - ret =iwl_mvm_mac_ctxt_changed (mvm, vif); + ret =iwl_mvm_mac_ctxt_changed (mvm, vif, false);if (ret)return ret;
drivers/net/wireless/iwlwifi/mvm/mac-ctxt.c +8 -5
@@ -1109,12 +1109,12 @@ static int iwl_mvm_mac_ctxt_cmd_go(struct iwl_mvm *mvm, }static int iwl_mvm_mac_ctx_send (struct iwl_mvm *mvm,struct ieee80211_vif *vif, -u32 action) +u32 action,bool force_assoc_off) {switch (vif->type) {case NL80211_IFTYPE_STATION :return iwl_mvm_mac_ctxt_cmd_sta (mvm, vif, action, - action ==FW_CTXT_ACTION_ADD ); + force_assoc_off);break ;case NL80211_IFTYPE_AP :if (!vif->p2p)
@@ -1144,7 +1144,8 @@ int iwl_mvm_mac_ctxt_add(struct iwl_mvm *mvm, struct ieee80211_vif *vif) vif->addr, ieee80211_vif_type_p2p(vif)))return -EIO ; - ret =iwl_mvm_mac_ctx_send (mvm, vif,FW_CTXT_ACTION_ADD ); + ret =iwl_mvm_mac_ctx_send (mvm, vif,FW_CTXT_ACTION_ADD , + true);if (ret)return ret;
@@ -1155,7 +1156,8 @@ int iwl_mvm_mac_ctxt_add(struct iwl_mvm *mvm, struct ieee80211_vif *vif)return 0 ; } -int iwl_mvm_mac_ctxt_changed (struct iwl_mvm *mvm,struct ieee80211_vif *vif) +int iwl_mvm_mac_ctxt_changed (struct iwl_mvm *mvm,struct ieee80211_vif *vif, +bool force_assoc_off) {struct iwl_mvm_vif *mvmvif =iwl_mvm_vif_from_mac80211 (vif);
@@ -1163,7 +1165,8 @@ int iwl_mvm_mac_ctxt_changed(struct iwl_mvm *mvm, struct ieee80211_vif *vif) vif->addr, ieee80211_vif_type_p2p(vif)))return -EIO ; -return iwl_mvm_mac_ctx_send (mvm, vif,FW_CTXT_ACTION_MODIFY ); +return iwl_mvm_mac_ctx_send (mvm, vif,FW_CTXT_ACTION_MODIFY , + force_assoc_off); }int iwl_mvm_mac_ctxt_remove (struct iwl_mvm *mvm,struct ieee80211_vif *vif)
drivers/net/wireless/iwlwifi/mvm/mac80211.c +6 -6
@@ -1271,7 +1271,7 @@ static void iwl_mvm_bss_info_changed_station(struct iwl_mvm *mvm,if (changes &BSS_CHANGED_ASSOC && bss_conf->assoc)iwl_mvm_mac_ctxt_recalc_tsf_id (mvm, vif); - ret =iwl_mvm_mac_ctxt_changed (mvm, vif); + ret =iwl_mvm_mac_ctxt_changed (mvm, vif, false);if (ret)IWL_ERR (mvm,"failed to update MAC %pM\n" , vif->addr);
@@ -1431,7 +1431,7 @@ static int iwl_mvm_start_ap_ibss(struct ieee80211_hw *hw,/* Need to update the P2P Device MAC (only GO, IBSS is single vif) */ if (vif->p2p && mvm->p2p_device_vif) -iwl_mvm_mac_ctxt_changed (mvm, mvm->p2p_device_vif); +iwl_mvm_mac_ctxt_changed (mvm, mvm->p2p_device_vif, false);iwl_mvm_ref (mvm,IWL_MVM_REF_AP_IBSS );
@@ -1471,7 +1471,7 @@ static void iwl_mvm_stop_ap_ibss(struct ieee80211_hw *hw,/* Need to update the P2P Device MAC (only GO, IBSS is single vif) */ if (vif->p2p && mvm->p2p_device_vif) -iwl_mvm_mac_ctxt_changed (mvm, mvm->p2p_device_vif); +iwl_mvm_mac_ctxt_changed (mvm, mvm->p2p_device_vif, false);iwl_mvm_update_quotas (mvm,NULL );iwl_mvm_send_rm_bcast_sta (mvm, &mvmvif->bcast_sta);
@@ -1498,7 +1498,7 @@ iwl_mvm_bss_info_changed_ap_ibss(struct iwl_mvm *mvm,if (changes & (BSS_CHANGED_ERP_CTS_PROT |BSS_CHANGED_HT |BSS_CHANGED_BANDWIDTH ) && -iwl_mvm_mac_ctxt_changed (mvm, vif)) +iwl_mvm_mac_ctxt_changed (mvm, vif, false))IWL_ERR (mvm,"failed to update MAC %pM\n" , vif->addr);/* Need to send a new beacon template to the FW */
@@ -1799,7 +1799,7 @@ static int iwl_mvm_mac_conf_tx(struct ieee80211_hw *hw,int ret;mutex_lock (&mvm->mutex); - ret =iwl_mvm_mac_ctxt_changed (mvm, vif); + ret =iwl_mvm_mac_ctxt_changed (mvm, vif, false);mutex_unlock (&mvm->mutex);return ret; }
@@ -2255,7 +2255,7 @@ static int iwl_mvm_assign_vif_chanctx(struct ieee80211_hw *hw,/* Handle binding during CSA */ if (vif->type ==NL80211_IFTYPE_AP ) {iwl_mvm_update_quotas (mvm, vif); -iwl_mvm_mac_ctxt_changed (mvm, vif); +iwl_mvm_mac_ctxt_changed (mvm, vif, false); } goto out_unlock;
drivers/net/wireless/iwlwifi/mvm/mvm.h +2 -1
@@ -814,7 +814,8 @@ void iwl_mvm_phy_ctxt_unref(struct iwl_mvm *mvm,int iwl_mvm_mac_ctxt_init (struct iwl_mvm *mvm,struct ieee80211_vif *vif);void iwl_mvm_mac_ctxt_release (struct iwl_mvm *mvm,struct ieee80211_vif *vif);int iwl_mvm_mac_ctxt_add (struct iwl_mvm *mvm,struct ieee80211_vif *vif); -int iwl_mvm_mac_ctxt_changed (struct iwl_mvm *mvm,struct ieee80211_vif *vif); +int iwl_mvm_mac_ctxt_changed (struct iwl_mvm *mvm,struct ieee80211_vif *vif, +bool force_assoc_off);int iwl_mvm_mac_ctxt_remove (struct iwl_mvm *mvm,struct ieee80211_vif *vif);u32 iwl_mvm_mac_get_queues_mask (struct iwl_mvm *mvm,struct ieee80211_vif *vif);
Signature · 1 line
1.8.3.2
PATCH 8/11 iwlwifi: mvm: disable reduced Tx power when not applicable
In reply to Emmanuel GrumbachFrom: Emmanuel Grumbach <[email protected]>
I forgot to disable the reduced Tx power in a few paths.
--- drivers/net/wireless/iwlwifi/mvm/coex.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
drivers/net/wireless/iwlwifi/mvm/coex.c +5 -1
@@ -831,8 +831,11 @@ static void iwl_mvm_bt_notif_iterator(void *_data, u8 *mac,iwl_mvm_update_smps (mvm, vif,IWL_MVM_SMPS_REQ_BT_COEX , smps_mode); data->reduced_tx_power = false; -if (vif->type ==NL80211_IFTYPE_STATION ) +if (vif->type ==NL80211_IFTYPE_STATION ) { +iwl_mvm_bt_coex_reduced_txp (mvm, mvmvif->ap_sta_id, + false);iwl_mvm_bt_coex_enable_rssi_event (mvm, vif, false,0 ); + }return ; }
@@ -905,6 +908,7 @@ static void iwl_mvm_bt_notif_iterator(void *_data, u8 *mac, mvm->cfg->bt_shared_single_ant || !vif->bss_conf.assoc || !data->notif->bt_status) { data->reduced_tx_power = false; +iwl_mvm_bt_coex_reduced_txp (mvm, mvmvif->ap_sta_id, false);iwl_mvm_bt_coex_enable_rssi_event (mvm, vif, false,0 );return ; }
Signature · 1 line
1.8.3.2
PATCH 9/11 iwlwifi: mvm: remove debugfs hook for reduced tx power
In reply to Emmanuel GrumbachFrom: Emmanuel Grumbach <[email protected]>
This was not used is unlikely to be used, just kill it.
--- drivers/net/wireless/iwlwifi/mvm/coex.c | 6 ++-- drivers/net/wireless/iwlwifi/mvm/debugfs-vif.c | 42 ++------------------------ drivers/net/wireless/iwlwifi/mvm/mvm.h | 1 - drivers/net/wireless/iwlwifi/mvm/sta.h | 3 -- 4 files changed, 5 insertions(+), 47 deletions(-)
drivers/net/wireless/iwlwifi/mvm/coex.c +3 -3
@@ -715,7 +715,8 @@ static int iwl_mvm_bt_udpate_ctrl_kill_msk(struct iwl_mvm *mvm,return ret; } -int iwl_mvm_bt_coex_reduced_txp (struct iwl_mvm *mvm,u8 sta_id,bool enable) +static int iwl_mvm_bt_coex_reduced_txp (struct iwl_mvm *mvm,u8 sta_id, +bool enable) {struct iwl_bt_coex_cmd *bt_cmd;/* Send ASYNC since this can be sent from an atomic context */
@@ -733,8 +734,7 @@ int iwl_mvm_bt_coex_reduced_txp(struct iwl_mvm *mvm, u8 sta_id, bool enable)return 0 ;/* nothing to do */ -if (mvmsta->bt_reduced_txpower_dbg || - mvmsta->bt_reduced_txpower == enable) +if (mvmsta->bt_reduced_txpower == enable)return 0 ; bt_cmd =kzalloc (sizeof (*bt_cmd),GFP_ATOMIC );
drivers/net/wireless/iwlwifi/mvm/debugfs-vif.c +2 -40
67 lines not on this page · raw message
drivers/net/wireless/iwlwifi/mvm/mvm.h +0 -1
@@ -967,7 +967,6 @@ bool iwl_mvm_bt_coex_is_tpc_allowed(struct iwl_mvm *mvm, enum ieee80211_band band);u8 iwl_mvm_bt_coex_tx_prio (struct iwl_mvm *mvm,struct ieee80211_hdr *hdr,struct ieee80211_tx_info *info,u8 ac); -int iwl_mvm_bt_coex_reduced_txp (struct iwl_mvm *mvm,u8 sta_id,bool enable);enum iwl_bt_kill_msk {BT_KILL_MSK_DEFAULT ,
drivers/net/wireless/iwlwifi/mvm/sta.h +0 -3
@@ -287,8 +287,6 @@ static inline u16 iwl_mvm_tid_queued(struct iwl_mvm_tid_data *tid_data)* @tid_disable_agg: bitmap: if bit(tid) is set, the fw won't send ampdus for * tid. * @max_agg_bufsize: the maximal size of the AGG buffer for this station -* @bt_reduced_txpower_dbg: debug mode in which %bt_reduced_txpower is forced -* by debugfs. * @bt_reduced_txpower: is reduced tx power enabled for this station * @next_status_eosp: the next reclaimed packet is a PS-Poll response and * we need to signal the EOSP
@@ -309,7 +307,6 @@ struct iwl_mvm_sta {u32 mac_id_n_color;u16 tid_disable_agg;u8 max_agg_bufsize; -bool bt_reduced_txpower_dbg;bool bt_reduced_txpower;bool next_status_eosp;spinlock_t lock;
Signature · 1 line
1.8.3.2
PATCH 10/11 iwlwifi: mvm: make iwl_mvm_update_beacon_abort static
In reply to Emmanuel GrumbachFrom: Emmanuel Grumbach <[email protected]>
--- drivers/net/wireless/iwlwifi/mvm/mvm.h | 2 - drivers/net/wireless/iwlwifi/mvm/power.c | 103 ++++++++++++++++--------------- 2 files changed, 52 insertions(+), 53 deletions(-)
drivers/net/wireless/iwlwifi/mvm/mvm.h +0 -2
@@ -997,8 +997,6 @@ int iwl_mvm_enable_beacon_filter(struct iwl_mvm *mvm,int iwl_mvm_disable_beacon_filter (struct iwl_mvm *mvm,struct ieee80211_vif *vif,u32 flags); -int iwl_mvm_update_beacon_abort (struct iwl_mvm *mvm, -struct ieee80211_vif *vif,bool enable);/* SMPS */ void iwl_mvm_update_smps(struct iwl_mvm *mvm, struct ieee80211_vif *vif, enum iwl_mvm_smps_type_request req_type,
drivers/net/wireless/iwlwifi/mvm/power.c +52 -51
121 lines not on this page · raw message
Signature · 1 line
1.8.3.2
PATCH 11/11 iwlwifi: mvm: remove vif argument from power_update_mac
In reply to Emmanuel GrumbachFrom: Arik Nemtsov <[email protected]>
The power update function looks at all current vifs to determine the power policy. It doesn't use the current vif. Instead the value was overwritten and used internally.
--- drivers/net/wireless/iwlwifi/mvm/d3.c | 2 +- drivers/net/wireless/iwlwifi/mvm/debugfs-vif.c | 2 +- drivers/net/wireless/iwlwifi/mvm/mac80211.c | 18 +++++++++--------- drivers/net/wireless/iwlwifi/mvm/mvm.h | 2 +- drivers/net/wireless/iwlwifi/mvm/power.c | 8 ++++---- drivers/net/wireless/iwlwifi/mvm/utils.c | 2 +- 6 files changed, 17 insertions(+), 17 deletions(-)
drivers/net/wireless/iwlwifi/mvm/d3.c +1 -1
@@ -1028,7 +1028,7 @@ static int __iwl_mvm_suspend(struct ieee80211_hw *hw,if (ret) goto out; - ret =iwl_mvm_power_update_mac (mvm, vif); + ret =iwl_mvm_power_update_mac (mvm);if (ret) goto out;
drivers/net/wireless/iwlwifi/mvm/debugfs-vif.c +1 -1
@@ -175,7 +175,7 @@ static ssize_t iwl_dbgfs_pm_params_write(struct ieee80211_vif *vif, char *buf,mutex_lock (&mvm->mutex);iwl_dbgfs_update_pm (mvm, vif, param, val); - ret =iwl_mvm_power_update_mac (mvm, vif); + ret =iwl_mvm_power_update_mac (mvm);mutex_unlock (&mvm->mutex);return ret ?: count;
drivers/net/wireless/iwlwifi/mvm/mac80211.c +9 -9
@@ -832,7 +832,7 @@ static int iwl_mvm_mac_add_interface(struct ieee80211_hw *hw,if (ret) goto out_release; - ret =iwl_mvm_power_update_mac (mvm, vif); + ret =iwl_mvm_power_update_mac (mvm);if (ret) goto out_release;
@@ -983,7 +983,7 @@ static void iwl_mvm_mac_remove_interface(struct ieee80211_hw *hw,if (mvm->vif_count && vif->type !=NL80211_IFTYPE_P2P_DEVICE ) mvm->vif_count--; -iwl_mvm_power_update_mac (mvm, vif); +iwl_mvm_power_update_mac (mvm);iwl_mvm_mac_ctxt_remove (mvm, vif); out_release:
@@ -1354,7 +1354,7 @@ static void iwl_mvm_bss_info_changed_station(struct iwl_mvm *mvm,WARN_ON (iwl_mvm_enable_beacon_filter (mvm, vif,0 )); }else if (changes & (BSS_CHANGED_PS |BSS_CHANGED_P2P_PS |BSS_CHANGED_QOS )) { - ret =iwl_mvm_power_update_mac (mvm, vif); + ret =iwl_mvm_power_update_mac (mvm);if (ret)IWL_ERR (mvm,"failed to update power mode\n" ); }
@@ -1423,7 +1423,7 @@ static int iwl_mvm_start_ap_ibss(struct ieee80211_hw *hw, mvmvif->ap_ibss_active = true;/* power updated needs to be done before quotas */ -iwl_mvm_power_update_mac (mvm, vif); +iwl_mvm_power_update_mac (mvm); ret =iwl_mvm_update_quotas (mvm, vif);if (ret)
@@ -1441,7 +1441,7 @@ static int iwl_mvm_start_ap_ibss(struct ieee80211_hw *hw,return 0 ; out_quota_failed: -iwl_mvm_power_update_mac (mvm, vif); +iwl_mvm_power_update_mac (mvm); mvmvif->ap_ibss_active = false;iwl_mvm_send_rm_bcast_sta (mvm, &mvmvif->bcast_sta); out_unbind:
@@ -1477,7 +1477,7 @@ static void iwl_mvm_stop_ap_ibss(struct ieee80211_hw *hw,iwl_mvm_send_rm_bcast_sta (mvm, &mvmvif->bcast_sta);iwl_mvm_binding_remove_vif (mvm, vif); -iwl_mvm_power_update_mac (mvm, vif); +iwl_mvm_power_update_mac (mvm);iwl_mvm_mac_ctxt_remove (mvm, vif);
@@ -2239,7 +2239,7 @@ static int iwl_mvm_assign_vif_chanctx(struct ieee80211_hw *hw,* Power state must be updated before quotas, * otherwise fw will complain. */ -iwl_mvm_power_update_mac (mvm, vif); +iwl_mvm_power_update_mac (mvm);/* Setting the quota at this stage is only required for monitor * interfaces. For the other types, the bss_info changed flow
@@ -2262,7 +2262,7 @@ static int iwl_mvm_assign_vif_chanctx(struct ieee80211_hw *hw, out_remove_binding:iwl_mvm_binding_remove_vif (mvm, vif); -iwl_mvm_power_update_mac (mvm, vif); +iwl_mvm_power_update_mac (mvm); out_unlock:mutex_unlock (&mvm->mutex);if (ret)
@@ -2304,7 +2304,7 @@ static void iwl_mvm_unassign_vif_chanctx(struct ieee80211_hw *hw, out_unlock: mvmvif->phy_ctxt =NULL ; -iwl_mvm_power_update_mac (mvm, vif); +iwl_mvm_power_update_mac (mvm);mutex_unlock (&mvm->mutex); }
drivers/net/wireless/iwlwifi/mvm/mvm.h +1 -1
@@ -894,7 +894,7 @@ int rs_pretty_print_rate(char *buf, const u32 rate);/* power management */ int iwl_mvm_power_update_device (struct iwl_mvm *mvm); -int iwl_mvm_power_update_mac (struct iwl_mvm *mvm,struct ieee80211_vif *vif); +int iwl_mvm_power_update_mac (struct iwl_mvm *mvm);int iwl_mvm_power_mac_dbgfs_read (struct iwl_mvm *mvm,struct ieee80211_vif *vif,char *buf,int bufsz);
drivers/net/wireless/iwlwifi/mvm/power.c +4 -4
@@ -828,7 +828,7 @@ int iwl_mvm_disable_beacon_filter(struct iwl_mvm *mvm,return ret; } -int iwl_mvm_power_update_mac (struct iwl_mvm *mvm,struct ieee80211_vif *vif) +int iwl_mvm_power_update_mac (struct iwl_mvm *mvm) {struct iwl_mvm_vif *mvmvif;struct iwl_power_vifs vifs = {};
@@ -868,11 +868,11 @@ int iwl_mvm_power_update_mac(struct iwl_mvm *mvm, struct ieee80211_vif *vif)if (!vifs.bf_vif)return 0 ; - vif = vifs.bf_vif; - mvmvif =iwl_mvm_vif_from_mac80211 (vif); + mvmvif =iwl_mvm_vif_from_mac80211 (vifs.bf_vif); ba_enable = !(!mvmvif->pm_enabled || mvm->ps_disabled || - !vif->bss_conf.ps ||iwl_mvm_vif_low_latency (mvmvif)); + !vifs.bf_vif->bss_conf.ps || +iwl_mvm_vif_low_latency (mvmvif));return iwl_mvm_update_beacon_abort (mvm, vifs.bf_vif, ba_enable); }
drivers/net/wireless/iwlwifi/mvm/utils.c +1 -1
@@ -702,7 +702,7 @@ int iwl_mvm_update_low_latency(struct iwl_mvm *mvm, struct ieee80211_vif *vif,iwl_mvm_bt_coex_vif_change (mvm); -return iwl_mvm_power_update_mac (mvm, vif); +return iwl_mvm_power_update_mac (mvm); }static void iwl_mvm_ll_iter (void *_data,u8 *mac,struct ieee80211_vif *vif)
Signature · 1 line
1.8.3.2
Quoted 13 lines · Emmanuel Grumbach
Hi John,
This pull request is intended for 3.16.
The regular amount of housekeeping here. I merged iwlwifi-fixes.git to be able to add the patch you didn't want in wireless.git at that stage of the -rc cycle. Luca has a few preparations for CSA implementation and also what seems to be a bugfix for P2P but hasn't caused issues we could notice.
Please pull.
The following changes since commit
af7c603eb476216f1c27d82b802f0ce879c54ab3:iwlwifi: fix LED support
Kconfigdependencies (2014-05-15 19:56:18 +0300)
Quoted 7 lines
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-next.gitfor-johnfor you to fetch changes up to
999609f1206a14039db534058b251c6d5ab39322:iwlwifi: mvm: remove vif argument from
power_update_mac(2014-05-22 10:11:17 +0300)
Pulling now...
Signature · 2 lines
John W. Linville Someday the world will need a hero, and you [email protected] might be all we have. Be ready.