xref: /linux/drivers/net/wireless/ath/ath11k/peer.h (revision ead5d1f4d877e92c051e1a1ade623d0d30e71619)
1d5c65159SKalle Valo /* SPDX-License-Identifier: BSD-3-Clause-Clear */
2d5c65159SKalle Valo /*
3d5c65159SKalle Valo  * Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
4d5c65159SKalle Valo  */
5d5c65159SKalle Valo 
6d5c65159SKalle Valo #ifndef ATH11K_PEER_H
7d5c65159SKalle Valo #define ATH11K_PEER_H
8d5c65159SKalle Valo 
9d5c65159SKalle Valo struct ath11k_peer {
10d5c65159SKalle Valo 	struct list_head list;
11d5c65159SKalle Valo 	struct ieee80211_sta *sta;
12d5c65159SKalle Valo 	int vdev_id;
13d5c65159SKalle Valo 	u8 addr[ETH_ALEN];
14d5c65159SKalle Valo 	int peer_id;
15d5c65159SKalle Valo 	u16 ast_hash;
16*1e744bf2SKarthikeyan Periyasamy 	u8 pdev_idx;
17d5c65159SKalle Valo 
18d5c65159SKalle Valo 	/* protected by ab->data_lock */
19d5c65159SKalle Valo 	struct ieee80211_key_conf *keys[WMI_MAX_KEY_INDEX + 1];
20d5c65159SKalle Valo 	struct dp_rx_tid rx_tid[IEEE80211_NUM_TIDS + 1];
21243874c6SManikanta Pubbisetty 
22243874c6SManikanta Pubbisetty 	/* Info used in MMIC verification of
23243874c6SManikanta Pubbisetty 	 * RX fragments
24243874c6SManikanta Pubbisetty 	 */
25243874c6SManikanta Pubbisetty 	struct crypto_shash *tfm_mmic;
26243874c6SManikanta Pubbisetty 	u8 mcast_keyidx;
27243874c6SManikanta Pubbisetty 	u8 ucast_keyidx;
28acc79d98SSriram R 	u16 sec_type;
29acc79d98SSriram R 	u16 sec_type_grp;
30d5c65159SKalle Valo };
31d5c65159SKalle Valo 
32d5c65159SKalle Valo void ath11k_peer_unmap_event(struct ath11k_base *ab, u16 peer_id);
33d5c65159SKalle Valo void ath11k_peer_map_event(struct ath11k_base *ab, u8 vdev_id, u16 peer_id,
34d5c65159SKalle Valo 			   u8 *mac_addr, u16 ast_hash);
35d5c65159SKalle Valo struct ath11k_peer *ath11k_peer_find(struct ath11k_base *ab, int vdev_id,
36d5c65159SKalle Valo 				     const u8 *addr);
37d5c65159SKalle Valo struct ath11k_peer *ath11k_peer_find_by_addr(struct ath11k_base *ab,
38d5c65159SKalle Valo 					     const u8 *addr);
39d5c65159SKalle Valo struct ath11k_peer *ath11k_peer_find_by_id(struct ath11k_base *ab, int peer_id);
40d5c65159SKalle Valo void ath11k_peer_cleanup(struct ath11k *ar, u32 vdev_id);
41d5c65159SKalle Valo int ath11k_peer_delete(struct ath11k *ar, u32 vdev_id, u8 *addr);
42d5c65159SKalle Valo int ath11k_peer_create(struct ath11k *ar, struct ath11k_vif *arvif,
43d5c65159SKalle Valo 		       struct ieee80211_sta *sta, struct peer_create_params *param);
44d5c65159SKalle Valo 
45d5c65159SKalle Valo #endif /* _PEER_H_ */
46