Lines Matching refs:ar
24 static void ath10k_report_offchan_tx(struct ath10k *ar, struct sk_buff *skb) in ath10k_report_offchan_tx() argument
33 spin_lock_bh(&ar->data_lock); in ath10k_report_offchan_tx()
34 if (ar->offchan_tx_skb != skb) { in ath10k_report_offchan_tx()
35 ath10k_warn(ar, "completed old offchannel frame\n"); in ath10k_report_offchan_tx()
39 complete(&ar->offchan_tx_completed); in ath10k_report_offchan_tx()
40 ar->offchan_tx_skb = NULL; /* just for sanity */ in ath10k_report_offchan_tx()
42 ath10k_dbg(ar, ATH10K_DBG_HTT, "completed offchannel skb %p\n", skb); in ath10k_report_offchan_tx()
44 spin_unlock_bh(&ar->data_lock); in ath10k_report_offchan_tx()
50 struct ath10k *ar = htt->ar; in ath10k_txrx_tx_unref() local
51 struct device *dev = ar->dev; in ath10k_txrx_tx_unref()
59 ath10k_dbg(ar, ATH10K_DBG_HTT, in ath10k_txrx_tx_unref()
65 ath10k_warn(ar, "warning: msdu_id %d too big, ignoring\n", in ath10k_txrx_tx_unref()
73 ath10k_warn(ar, "received tx completion for invalid msdu_id: %d\n", in ath10k_txrx_tx_unref()
83 ar->hw_params.max_probe_resp_desc_thres) in ath10k_txrx_tx_unref()
95 ath10k_report_offchan_tx(htt->ar, msdu); in ath10k_txrx_tx_unref()
99 trace_ath10k_txrx_tx_unref(ar, tx_done->msdu_id); in ath10k_txrx_tx_unref()
102 ieee80211_free_txskb(htt->ar->hw, msdu); in ath10k_txrx_tx_unref()
115 ieee80211_tx_status(htt->ar->hw, msdu); in ath10k_txrx_tx_unref()
119 struct ath10k_peer *ath10k_peer_find(struct ath10k *ar, int vdev_id, in ath10k_peer_find() argument
124 lockdep_assert_held(&ar->data_lock); in ath10k_peer_find()
126 list_for_each_entry(peer, &ar->peers, list) { in ath10k_peer_find()
138 struct ath10k_peer *ath10k_peer_find_by_id(struct ath10k *ar, int peer_id) in ath10k_peer_find_by_id() argument
142 lockdep_assert_held(&ar->data_lock); in ath10k_peer_find_by_id()
144 list_for_each_entry(peer, &ar->peers, list) in ath10k_peer_find_by_id()
151 static int ath10k_wait_for_peer_common(struct ath10k *ar, int vdev_id, in ath10k_wait_for_peer_common() argument
156 time_left = wait_event_timeout(ar->peer_mapping_wq, ({ in ath10k_wait_for_peer_common()
159 spin_lock_bh(&ar->data_lock); in ath10k_wait_for_peer_common()
160 mapped = !!ath10k_peer_find(ar, vdev_id, addr); in ath10k_wait_for_peer_common()
161 spin_unlock_bh(&ar->data_lock); in ath10k_wait_for_peer_common()
164 test_bit(ATH10K_FLAG_CRASH_FLUSH, &ar->dev_flags)); in ath10k_wait_for_peer_common()
173 int ath10k_wait_for_peer_created(struct ath10k *ar, int vdev_id, const u8 *addr) in ath10k_wait_for_peer_created() argument
175 return ath10k_wait_for_peer_common(ar, vdev_id, addr, true); in ath10k_wait_for_peer_created()
178 int ath10k_wait_for_peer_deleted(struct ath10k *ar, int vdev_id, const u8 *addr) in ath10k_wait_for_peer_deleted() argument
180 return ath10k_wait_for_peer_common(ar, vdev_id, addr, false); in ath10k_wait_for_peer_deleted()
186 struct ath10k *ar = htt->ar; in ath10k_peer_map_event() local
189 spin_lock_bh(&ar->data_lock); in ath10k_peer_map_event()
190 peer = ath10k_peer_find(ar, ev->vdev_id, ev->addr); in ath10k_peer_map_event()
198 list_add(&peer->list, &ar->peers); in ath10k_peer_map_event()
199 wake_up(&ar->peer_mapping_wq); in ath10k_peer_map_event()
202 ath10k_dbg(ar, ATH10K_DBG_HTT, "htt peer map vdev %d peer %pM id %d\n", in ath10k_peer_map_event()
207 spin_unlock_bh(&ar->data_lock); in ath10k_peer_map_event()
213 struct ath10k *ar = htt->ar; in ath10k_peer_unmap_event() local
216 spin_lock_bh(&ar->data_lock); in ath10k_peer_unmap_event()
217 peer = ath10k_peer_find_by_id(ar, ev->peer_id); in ath10k_peer_unmap_event()
219 ath10k_warn(ar, "peer-unmap-event: unknown peer id %d\n", in ath10k_peer_unmap_event()
224 ath10k_dbg(ar, ATH10K_DBG_HTT, "htt peer unmap vdev %d peer %pM id %d\n", in ath10k_peer_unmap_event()
232 wake_up(&ar->peer_mapping_wq); in ath10k_peer_unmap_event()
236 spin_unlock_bh(&ar->data_lock); in ath10k_peer_unmap_event()