summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichal Kazior <michal.kazior@tieto.com>2015-03-09 14:19:24 +0100
committerKalle Valo <kvalo@qca.qualcomm.com>2015-03-12 14:16:45 +0200
commit8513d95b4b6cd7029cca5aac3bedef25c25b64a0 (patch)
tree61eb1811768f407d2f6d34875bc81501e618b215
parent9ff4be96ebd6e2a8d3bb18362e8868ed5bf40161 (diff)
ath10k: fix patching mistake for AP/IBSS CSA
Mistakenly v1 of `ath10k: fix AP/IBSS CSA with template based fw` (81a9a17db5d766d2872c4ab8a77b8666d22031ec) was applied. This patch applies the missing bits from v2: * remove unnecessary locking * add some (sanity) checks There are no practical functionality differences between v1 and v2. Signed-off-by: Michal Kazior <michal.kazior@tieto.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
-rw-r--r--drivers/net/wireless/ath/ath10k/mac.c12
-rw-r--r--drivers/net/wireless/ath/ath10k/wmi-tlv.c4
2 files changed, 8 insertions, 8 deletions
diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
index 42be1e1685afa..cd806c50f3cb3 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -1230,9 +1230,10 @@ static void ath10k_control_beaconing(struct ath10k_vif *arvif,
if (!info->enable_beacon) {
ath10k_vdev_stop(arvif);
- spin_lock_bh(&arvif->ar->data_lock);
arvif->is_started = false;
arvif->is_up = false;
+
+ spin_lock_bh(&arvif->ar->data_lock);
ath10k_mac_vif_beacon_free(arvif);
spin_unlock_bh(&arvif->ar->data_lock);
@@ -1466,6 +1467,11 @@ static void ath10k_mac_vif_ap_csa_count_down(struct ath10k_vif *arvif)
struct ieee80211_vif *vif = arvif->vif;
int ret;
+ lockdep_assert_held(&arvif->ar->conf_mutex);
+
+ if (WARN_ON(!test_bit(WMI_SERVICE_BEACON_OFFLOAD, ar->wmi.svc_map)))
+ return;
+
if (arvif->vdev_type != WMI_VDEV_TYPE_AP)
return;
@@ -2091,9 +2097,7 @@ static void ath10k_bss_assoc(struct ieee80211_hw *hw,
return;
}
- spin_lock_bh(&arvif->ar->data_lock);
arvif->is_up = true;
- spin_unlock_bh(&arvif->ar->data_lock);
/* Workaround: Some firmware revisions (tested with qca6174
* WLAN.RM.2.0-00073) have buggy powersave state machine and must be
@@ -2135,9 +2139,7 @@ static void ath10k_bss_disassoc(struct ieee80211_hw *hw,
return;
}
- spin_lock_bh(&arvif->ar->data_lock);
arvif->is_up = false;
- spin_unlock_bh(&arvif->ar->data_lock);
}
static int ath10k_station_assoc(struct ath10k *ar,
diff --git a/drivers/net/wireless/ath/ath10k/wmi-tlv.c b/drivers/net/wireless/ath/ath10k/wmi-tlv.c
index 939d86bf6ca12..2e126377964fb 100644
--- a/drivers/net/wireless/ath/ath10k/wmi-tlv.c
+++ b/drivers/net/wireless/ath/ath10k/wmi-tlv.c
@@ -206,11 +206,9 @@ static int ath10k_wmi_tlv_event_bcn_tx_status(struct ath10k *ar,
break;
}
- spin_lock_bh(&ar->data_lock);
arvif = ath10k_get_arvif(ar, vdev_id);
- if (arvif && arvif->is_up)
+ if (arvif && arvif->is_up && arvif->vif->csa_active)
ieee80211_queue_work(ar->hw, &arvif->ap_csa_work);
- spin_unlock_bh(&ar->data_lock);
kfree(tb);
return 0;