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()
58 ath10k_dbg(ar, ATH10K_DBG_HTT, "htt tx completion msdu_id %u discard %d no_ack %d\n", in ath10k_txrx_tx_unref()
62 ath10k_warn(ar, "warning: msdu_id %d too big, ignoring\n", in ath10k_txrx_tx_unref()
69 ath10k_warn(ar, "received tx completion for invalid msdu_id: %d\n", in ath10k_txrx_tx_unref()
83 ath10k_report_offchan_tx(htt->ar, msdu); in ath10k_txrx_tx_unref()
87 trace_ath10k_txrx_tx_unref(ar, tx_done->msdu_id); in ath10k_txrx_tx_unref()
90 ieee80211_free_txskb(htt->ar->hw, msdu); in ath10k_txrx_tx_unref()
100 ieee80211_tx_status(htt->ar->hw, msdu); in ath10k_txrx_tx_unref()
110 struct ath10k_peer *ath10k_peer_find(struct ath10k *ar, int vdev_id, in ath10k_peer_find() argument
115 lockdep_assert_held(&ar->data_lock); in ath10k_peer_find()
117 list_for_each_entry(peer, &ar->peers, list) { in ath10k_peer_find()
129 struct ath10k_peer *ath10k_peer_find_by_id(struct ath10k *ar, int peer_id) in ath10k_peer_find_by_id() argument
133 lockdep_assert_held(&ar->data_lock); in ath10k_peer_find_by_id()
135 list_for_each_entry(peer, &ar->peers, list) in ath10k_peer_find_by_id()
142 static int ath10k_wait_for_peer_common(struct ath10k *ar, int vdev_id, in ath10k_wait_for_peer_common() argument
147 ret = wait_event_timeout(ar->peer_mapping_wq, ({ in ath10k_wait_for_peer_common()
150 spin_lock_bh(&ar->data_lock); in ath10k_wait_for_peer_common()
151 mapped = !!ath10k_peer_find(ar, vdev_id, addr); in ath10k_wait_for_peer_common()
152 spin_unlock_bh(&ar->data_lock); in ath10k_wait_for_peer_common()
155 test_bit(ATH10K_FLAG_CRASH_FLUSH, &ar->dev_flags)); in ath10k_wait_for_peer_common()
164 int ath10k_wait_for_peer_created(struct ath10k *ar, int vdev_id, const u8 *addr) in ath10k_wait_for_peer_created() argument
166 return ath10k_wait_for_peer_common(ar, vdev_id, addr, true); in ath10k_wait_for_peer_created()
169 int ath10k_wait_for_peer_deleted(struct ath10k *ar, int vdev_id, const u8 *addr) in ath10k_wait_for_peer_deleted() argument
171 return ath10k_wait_for_peer_common(ar, vdev_id, addr, false); in ath10k_wait_for_peer_deleted()
177 struct ath10k *ar = htt->ar; in ath10k_peer_map_event() local
180 spin_lock_bh(&ar->data_lock); in ath10k_peer_map_event()
181 peer = ath10k_peer_find(ar, ev->vdev_id, ev->addr); in ath10k_peer_map_event()
189 list_add(&peer->list, &ar->peers); in ath10k_peer_map_event()
190 wake_up(&ar->peer_mapping_wq); in ath10k_peer_map_event()
193 ath10k_dbg(ar, ATH10K_DBG_HTT, "htt peer map vdev %d peer %pM id %d\n", in ath10k_peer_map_event()
198 spin_unlock_bh(&ar->data_lock); in ath10k_peer_map_event()
204 struct ath10k *ar = htt->ar; in ath10k_peer_unmap_event() local
207 spin_lock_bh(&ar->data_lock); in ath10k_peer_unmap_event()
208 peer = ath10k_peer_find_by_id(ar, ev->peer_id); in ath10k_peer_unmap_event()
210 ath10k_warn(ar, "peer-unmap-event: unknown peer id %d\n", in ath10k_peer_unmap_event()
215 ath10k_dbg(ar, ATH10K_DBG_HTT, "htt peer unmap vdev %d peer %pM id %d\n", in ath10k_peer_unmap_event()
223 wake_up(&ar->peer_mapping_wq); in ath10k_peer_unmap_event()
227 spin_unlock_bh(&ar->data_lock); in ath10k_peer_unmap_event()