Lines Matching defs:ar

240 void ath11k_peer_cleanup(struct ath11k *ar, u32 vdev_id)
243 struct ath11k_base *ab = ar->ab;
245 lockdep_assert_held(&ar->conf_mutex);
259 ar->num_peers--;
266 static int ath11k_wait_for_peer_deleted(struct ath11k *ar, int vdev_id, const u8 *addr)
268 return ath11k_wait_for_peer_common(ar->ab, vdev_id, addr, false);
271 int ath11k_wait_for_peer_delete_done(struct ath11k *ar, u32 vdev_id,
277 ret = ath11k_wait_for_peer_deleted(ar, vdev_id, addr);
279 ath11k_warn(ar->ab, "failed wait for peer deleted");
283 time_left = wait_for_completion_timeout(&ar->peer_delete_done,
286 ath11k_warn(ar->ab, "Timeout in receiving peer delete response\n");
293 static int __ath11k_peer_delete(struct ath11k *ar, u32 vdev_id, const u8 *addr)
297 struct ath11k_base *ab = ar->ab;
299 lockdep_assert_held(&ar->conf_mutex);
333 reinit_completion(&ar->peer_delete_done);
335 ret = ath11k_wmi_send_peer_delete_cmd(ar, addr, vdev_id);
343 ret = ath11k_wait_for_peer_delete_done(ar, vdev_id, addr);
350 int ath11k_peer_delete(struct ath11k *ar, u32 vdev_id, u8 *addr)
354 lockdep_assert_held(&ar->conf_mutex);
356 ret = __ath11k_peer_delete(ar, vdev_id, addr);
360 ar->num_peers--;
365 static int ath11k_wait_for_peer_created(struct ath11k *ar, int vdev_id, const u8 *addr)
367 return ath11k_wait_for_peer_common(ar->ab, vdev_id, addr, true);
370 int ath11k_peer_create(struct ath11k *ar, struct ath11k_vif *arvif,
377 lockdep_assert_held(&ar->conf_mutex);
379 if (ar->num_peers > (ar->max_num_peers - 1)) {
380 ath11k_warn(ar->ab,
385 mutex_lock(&ar->ab->tbl_mtx_lock);
386 spin_lock_bh(&ar->ab->base_lock);
387 peer = ath11k_peer_find_by_addr(ar->ab, param->peer_addr);
390 spin_unlock_bh(&ar->ab->base_lock);
391 mutex_unlock(&ar->ab->tbl_mtx_lock);
398 ath11k_peer_rhash_delete(ar->ab, peer);
400 spin_unlock_bh(&ar->ab->base_lock);
401 mutex_unlock(&ar->ab->tbl_mtx_lock);
403 ret = ath11k_wmi_send_peer_create_cmd(ar, param);
405 ath11k_warn(ar->ab,
411 ret = ath11k_wait_for_peer_created(ar, param->vdev_id,
416 mutex_lock(&ar->ab->tbl_mtx_lock);
417 spin_lock_bh(&ar->ab->base_lock);
419 peer = ath11k_peer_find(ar->ab, param->vdev_id, param->peer_addr);
421 spin_unlock_bh(&ar->ab->base_lock);
422 mutex_unlock(&ar->ab->tbl_mtx_lock);
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);
432 spin_unlock_bh(&ar->ab->base_lock);
433 mutex_unlock(&ar->ab->tbl_mtx_lock);
437 peer->pdev_idx = ar->pdev_idx;
458 ar->num_peers++;
460 spin_unlock_bh(&ar->ab->base_lock);
461 mutex_unlock(&ar->ab->tbl_mtx_lock);
466 fbret = __ath11k_peer_delete(ar, param->vdev_id, param->peer_addr);
468 ath11k_warn(ar->ab, "failed peer %pM delete vdev_id %d fallback ret %d\n",