Lines Matching refs:priv

21 void ath9k_htc_beaconq_config(struct ath9k_htc_priv *priv)  in ath9k_htc_beaconq_config()  argument
23 struct ath_hw *ah = priv->ah; in ath9k_htc_beaconq_config()
29 ath9k_hw_get_txq_props(ah, priv->beacon.beaconq, &qi); in ath9k_htc_beaconq_config()
31 if (priv->ah->opmode == NL80211_IFTYPE_AP || in ath9k_htc_beaconq_config()
32 priv->ah->opmode == NL80211_IFTYPE_MESH_POINT) { in ath9k_htc_beaconq_config()
36 } else if (priv->ah->opmode == NL80211_IFTYPE_ADHOC) { in ath9k_htc_beaconq_config()
37 int qnum = priv->hwq_map[IEEE80211_AC_BE]; in ath9k_htc_beaconq_config()
57 if (!ath9k_hw_set_txq_props(ah, priv->beacon.beaconq, &qi)) { in ath9k_htc_beaconq_config()
59 "Unable to update beacon queue %u!\n", priv->beacon.beaconq); in ath9k_htc_beaconq_config()
61 ath9k_hw_resettxqueue(ah, priv->beacon.beaconq); in ath9k_htc_beaconq_config()
68 static void ath9k_htc_beacon_init(struct ath9k_htc_priv *priv, in ath9k_htc_beacon_init() argument
72 struct ath_hw *ah = priv->ah; in ath9k_htc_beacon_init()
85 ath9k_htc_beaconq_config(priv); in ath9k_htc_beacon_init()
87 priv->beacon.bmisscnt = 0; in ath9k_htc_beacon_init()
92 static void ath9k_htc_beacon_config_sta(struct ath9k_htc_priv *priv, in ath9k_htc_beacon_config_sta() argument
101 if (ath9k_cmn_beacon_config_sta(priv->ah, bss_conf, &bs) == -EPERM) in ath9k_htc_beacon_config_sta()
105 ath9k_hw_set_sta_beacon_timers(priv->ah, &bs); in ath9k_htc_beacon_config_sta()
111 static void ath9k_htc_beacon_config_ap(struct ath9k_htc_priv *priv, in ath9k_htc_beacon_config_ap() argument
114 struct ath_hw *ah = priv->ah; in ath9k_htc_beacon_config_ap()
118 ath9k_htc_beacon_init(priv, conf, false); in ath9k_htc_beacon_config_ap()
121 static void ath9k_htc_beacon_config_adhoc(struct ath9k_htc_priv *priv, in ath9k_htc_beacon_config_adhoc() argument
124 struct ath_hw *ah = priv->ah; in ath9k_htc_beacon_config_adhoc()
128 ath9k_htc_beacon_init(priv, conf, conf->ibss_creator); in ath9k_htc_beacon_config_adhoc()
137 static void ath9k_htc_send_buffered(struct ath9k_htc_priv *priv, in ath9k_htc_send_buffered() argument
140 struct ath_common *common = ath9k_hw_common(priv->ah); in ath9k_htc_send_buffered()
146 spin_lock_bh(&priv->beacon_lock); in ath9k_htc_send_buffered()
148 vif = priv->beacon.bslot[slot]; in ath9k_htc_send_buffered()
150 skb = ieee80211_get_buffered_bc(priv->hw, vif); in ath9k_htc_send_buffered()
166 tx_slot = ath9k_htc_tx_get_slot(priv); in ath9k_htc_send_buffered()
173 ret = ath9k_htc_tx_start(priv, NULL, skb, tx_slot, true); in ath9k_htc_send_buffered()
175 ath9k_htc_tx_clear_slot(priv, tx_slot); in ath9k_htc_send_buffered()
180 spin_lock_bh(&priv->tx.tx_lock); in ath9k_htc_send_buffered()
181 priv->tx.queued_cnt++; in ath9k_htc_send_buffered()
182 spin_unlock_bh(&priv->tx.tx_lock); in ath9k_htc_send_buffered()
185 skb = ieee80211_get_buffered_bc(priv->hw, vif); in ath9k_htc_send_buffered()
188 spin_unlock_bh(&priv->beacon_lock); in ath9k_htc_send_buffered()
191 static void ath9k_htc_send_beacon(struct ath9k_htc_priv *priv, in ath9k_htc_send_beacon() argument
194 struct ath_common *common = ath9k_hw_common(priv->ah); in ath9k_htc_send_beacon()
207 spin_lock_bh(&priv->beacon_lock); in ath9k_htc_send_beacon()
209 vif = priv->beacon.bslot[slot]; in ath9k_htc_send_beacon()
213 spin_unlock_bh(&priv->beacon_lock); in ath9k_htc_send_beacon()
218 beacon = ieee80211_beacon_get(priv->hw, vif); in ath9k_htc_send_beacon()
220 spin_unlock_bh(&priv->beacon_lock); in ath9k_htc_send_beacon()
244 tx_ctl->epid = priv->beacon_ep; in ath9k_htc_send_beacon()
250 ret = htc_send(priv->htc, beacon); in ath9k_htc_send_beacon()
259 spin_unlock_bh(&priv->beacon_lock); in ath9k_htc_send_beacon()
261 ath9k_htc_csa_is_finished(priv); in ath9k_htc_send_beacon()
264 static int ath9k_htc_choose_bslot(struct ath9k_htc_priv *priv, in ath9k_htc_choose_bslot() argument
267 struct ath_common *common = ath9k_hw_common(priv->ah); in ath9k_htc_choose_bslot()
273 intval = priv->cur_beacon_conf.beacon_interval; in ath9k_htc_choose_bslot()
287 void ath9k_htc_swba(struct ath9k_htc_priv *priv, in ath9k_htc_swba() argument
290 struct ath_common *common = ath9k_hw_common(priv->ah); in ath9k_htc_swba()
294 priv->beacon.bmisscnt++; in ath9k_htc_swba()
295 if (priv->beacon.bmisscnt > BSTUCK_THRESHOLD) { in ath9k_htc_swba()
297 ieee80211_queue_work(priv->hw, in ath9k_htc_swba()
298 &priv->fatal_work); in ath9k_htc_swba()
303 if (priv->beacon.bmisscnt) { in ath9k_htc_swba()
306 priv->beacon.bmisscnt); in ath9k_htc_swba()
307 priv->beacon.bmisscnt = 0; in ath9k_htc_swba()
310 slot = ath9k_htc_choose_bslot(priv, swba); in ath9k_htc_swba()
311 spin_lock_bh(&priv->beacon_lock); in ath9k_htc_swba()
312 if (priv->beacon.bslot[slot] == NULL) { in ath9k_htc_swba()
313 spin_unlock_bh(&priv->beacon_lock); in ath9k_htc_swba()
316 spin_unlock_bh(&priv->beacon_lock); in ath9k_htc_swba()
318 ath9k_htc_send_buffered(priv, slot); in ath9k_htc_swba()
319 ath9k_htc_send_beacon(priv, slot); in ath9k_htc_swba()
322 void ath9k_htc_assign_bslot(struct ath9k_htc_priv *priv, in ath9k_htc_assign_bslot() argument
325 struct ath_common *common = ath9k_hw_common(priv->ah); in ath9k_htc_assign_bslot()
329 spin_lock_bh(&priv->beacon_lock); in ath9k_htc_assign_bslot()
331 if (priv->beacon.bslot[i] == NULL) { in ath9k_htc_assign_bslot()
337 priv->beacon.bslot[avp->bslot] = vif; in ath9k_htc_assign_bslot()
338 spin_unlock_bh(&priv->beacon_lock); in ath9k_htc_assign_bslot()
344 void ath9k_htc_remove_bslot(struct ath9k_htc_priv *priv, in ath9k_htc_remove_bslot() argument
347 struct ath_common *common = ath9k_hw_common(priv->ah); in ath9k_htc_remove_bslot()
350 spin_lock_bh(&priv->beacon_lock); in ath9k_htc_remove_bslot()
351 priv->beacon.bslot[avp->bslot] = NULL; in ath9k_htc_remove_bslot()
352 spin_unlock_bh(&priv->beacon_lock); in ath9k_htc_remove_bslot()
362 void ath9k_htc_set_tsfadjust(struct ath9k_htc_priv *priv, in ath9k_htc_set_tsfadjust() argument
365 struct ath_common *common = ath9k_hw_common(priv->ah); in ath9k_htc_set_tsfadjust()
367 struct ath_beacon_config *cur_conf = &priv->cur_beacon_conf; in ath9k_htc_set_tsfadjust()
395 static bool ath9k_htc_check_beacon_config(struct ath9k_htc_priv *priv, in ath9k_htc_check_beacon_config() argument
398 struct ath_common *common = ath9k_hw_common(priv->ah); in ath9k_htc_check_beacon_config()
399 struct ath_beacon_config *cur_conf = &priv->cur_beacon_conf; in ath9k_htc_check_beacon_config()
408 if ((priv->ah->opmode == NL80211_IFTYPE_AP) && in ath9k_htc_check_beacon_config()
409 (priv->num_ap_vif > 1) && in ath9k_htc_check_beacon_config()
421 if (priv->num_ap_vif && in ath9k_htc_check_beacon_config()
432 if ((priv->ah->opmode == NL80211_IFTYPE_STATION) && in ath9k_htc_check_beacon_config()
433 (priv->num_sta_vif > 1) && in ath9k_htc_check_beacon_config()
437 priv->hw, IEEE80211_IFACE_ITER_RESUME_ALL, in ath9k_htc_check_beacon_config()
450 void ath9k_htc_beacon_config(struct ath9k_htc_priv *priv, in ath9k_htc_beacon_config() argument
453 struct ath_common *common = ath9k_hw_common(priv->ah); in ath9k_htc_beacon_config()
454 struct ath_beacon_config *cur_conf = &priv->cur_beacon_conf; in ath9k_htc_beacon_config()
458 if (!ath9k_htc_check_beacon_config(priv, vif)) in ath9k_htc_beacon_config()
471 ath9k_htc_beacon_config_sta(priv, cur_conf); in ath9k_htc_beacon_config()
475 ath9k_htc_beacon_config_adhoc(priv, cur_conf); in ath9k_htc_beacon_config()
479 ath9k_htc_beacon_config_ap(priv, cur_conf); in ath9k_htc_beacon_config()
487 void ath9k_htc_beacon_reconfig(struct ath9k_htc_priv *priv) in ath9k_htc_beacon_reconfig() argument
489 struct ath_common *common = ath9k_hw_common(priv->ah); in ath9k_htc_beacon_reconfig()
490 struct ath_beacon_config *cur_conf = &priv->cur_beacon_conf; in ath9k_htc_beacon_reconfig()
492 switch (priv->ah->opmode) { in ath9k_htc_beacon_reconfig()
494 ath9k_htc_beacon_config_sta(priv, cur_conf); in ath9k_htc_beacon_reconfig()
497 ath9k_htc_beacon_config_adhoc(priv, cur_conf); in ath9k_htc_beacon_reconfig()
501 ath9k_htc_beacon_config_ap(priv, cur_conf); in ath9k_htc_beacon_reconfig()
509 bool ath9k_htc_csa_is_finished(struct ath9k_htc_priv *priv) in ath9k_htc_csa_is_finished() argument
513 vif = priv->csa_vif; in ath9k_htc_csa_is_finished()
522 priv->csa_vif = NULL; in ath9k_htc_csa_is_finished()