Lines Matching refs:peer

8 #include "peer.h"
14 struct ath11k_peer *peer;
18 list_for_each_entry(peer, &ab->peers, list) {
19 if (peer->peer_id != peer_id)
22 return peer;
31 struct ath11k_peer *peer;
35 list_for_each_entry(peer, &ab->peers, list) {
36 if (peer->vdev_id != vdev_id)
38 if (!ether_addr_equal(peer->addr, addr))
41 return peer;
50 struct ath11k_peer *peer;
57 peer = rhashtable_lookup_fast(ab->rhead_peer_addr, addr,
60 return peer;
66 struct ath11k_peer *peer;
73 peer = rhashtable_lookup_fast(ab->rhead_peer_id, &peer_id,
76 return peer;
82 struct ath11k_peer *peer;
86 list_for_each_entry(peer, &ab->peers, list) {
87 if (vdev_id == peer->vdev_id) {
89 return peer;
98 struct ath11k_peer *peer;
102 peer = ath11k_peer_find_list_by_id(ab, peer_id);
103 if (!peer) {
104 ath11k_warn(ab, "peer-unmap-event: unknown peer id %d\n",
109 ath11k_dbg(ab, ATH11K_DBG_DP_HTT, "peer unmap vdev %d peer %pM id %d\n",
110 peer->vdev_id, peer->addr, peer_id);
112 list_del(&peer->list);
113 kfree(peer);
123 struct ath11k_peer *peer;
126 peer = ath11k_peer_find(ab, vdev_id, mac_addr);
127 if (!peer) {
128 peer = kzalloc(sizeof(*peer), GFP_ATOMIC);
129 if (!peer)
132 peer->vdev_id = vdev_id;
133 peer->peer_id = peer_id;
134 peer->ast_hash = ast_hash;
135 peer->hw_peer_id = hw_peer_id;
136 ether_addr_copy(peer->addr, mac_addr);
137 list_add(&peer->list, &ab->peers);
141 ath11k_dbg(ab, ATH11K_DBG_DP_HTT, "peer map vdev %d peer %pM id %d\n",
206 static int ath11k_peer_rhash_add(struct ath11k_base *ab, struct ath11k_peer *peer)
216 ret = ath11k_peer_rhash_insert(ab, ab->rhead_peer_id, &peer->rhash_id,
217 &ab->rhash_peer_id_param, &peer->peer_id);
219 ath11k_warn(ab, "failed to add peer %pM with id %d in rhash_id ret %d\n",
220 peer->addr, peer->peer_id, ret);
224 ret = ath11k_peer_rhash_insert(ab, ab->rhead_peer_addr, &peer->rhash_addr,
225 &ab->rhash_peer_addr_param, &peer->addr);
227 ath11k_warn(ab, "failed to add peer %pM with id %d in rhash_addr ret %d\n",
228 peer->addr, peer->peer_id, ret);
235 ath11k_peer_rhash_remove(ab, ab->rhead_peer_id, &peer->rhash_id,
242 struct ath11k_peer *peer, *tmp;
249 list_for_each_entry_safe(peer, tmp, &ab->peers, list) {
250 if (peer->vdev_id != vdev_id)
253 ath11k_warn(ab, "removing stale peer %pM from vdev_id %d\n",
254 peer->addr, vdev_id);
256 ath11k_peer_rhash_delete(ab, peer);
257 list_del(&peer->list);
258 kfree(peer);
279 ath11k_warn(ar->ab, "failed wait for peer deleted");
286 ath11k_warn(ar->ab, "Timeout in receiving peer delete response\n");
296 struct ath11k_peer *peer;
304 peer = ath11k_peer_find_by_addr(ab, addr);
305 /* Check if the found peer is what we want to remove.
307 * have 2 peer with the same addr assigned to different
308 * vdev_id. Make sure we are deleting the correct peer.
310 if (peer && peer->vdev_id == vdev_id)
311 ath11k_peer_rhash_delete(ab, peer);
313 /* Fallback to peer list search if the correct peer can't be found.
314 * Skip the deletion of the peer from the rhash since it has already
315 * been deleted in peer add.
317 if (!peer)
318 peer = ath11k_peer_find(ab, vdev_id, addr);
320 if (!peer) {
325 "failed to find peer vdev_id %d addr %pM in delete\n",
338 "failed to delete peer vdev_id %d addr %pM ret %d\n",
373 struct ath11k_peer *peer;
381 "failed to create peer due to insufficient peer entry resource in firmware\n");
387 peer = ath11k_peer_find_by_addr(ar->ab, param->peer_addr);
388 if (peer) {
389 if (peer->vdev_id == param->vdev_id) {
396 * Remove here the peer from rhash.
398 ath11k_peer_rhash_delete(ar->ab, peer);
406 "failed to send peer create vdev_id %d ret %d\n",
419 peer = ath11k_peer_find(ar->ab, param->vdev_id, param->peer_addr);
420 if (!peer) {
423 ath11k_warn(ar->ab, "failed to find peer %pM on vdev %i after creation\n",
430 ret = ath11k_peer_rhash_add(ar->ab, peer);
437 peer->pdev_idx = ar->pdev_idx;
438 peer->sta = sta;
441 arvif->ast_hash = peer->ast_hash;
442 arvif->ast_idx = peer->hw_peer_id;
445 peer->sec_type = HAL_ENCRYPT_TYPE_OPEN;
446 peer->sec_type_grp = HAL_ENCRYPT_TYPE_OPEN;
452 peer->peer_id);
468 ath11k_warn(ar->ab, "failed peer %pM delete vdev_id %d fallback ret %d\n",
474 int ath11k_peer_rhash_delete(struct ath11k_base *ab, struct ath11k_peer *peer)
484 ret = ath11k_peer_rhash_remove(ab, ab->rhead_peer_addr, &peer->rhash_addr,
487 ath11k_warn(ab, "failed to remove peer %pM id %d in rhash_addr ret %d\n",
488 peer->addr, peer->peer_id, ret);
492 ret = ath11k_peer_rhash_remove(ab, ab->rhead_peer_id, &peer->rhash_id,
495 ath11k_warn(ab, "failed to remove peer %pM id %d in rhash_id ret %d\n",
496 peer->addr, peer->peer_id, ret);
533 ath11k_warn(ab, "failed to init peer id rhash table %d\n", ret);
588 ath11k_warn(ab, "failed to init peer addr rhash table %d\n", ret);