xref: /linux/drivers/net/wireless/intel/iwlwifi/mld/ap.h (revision 1a9239bb4253f9076b5b4b2a1a4e8d7defd77a95)
1*d1e879ecSMiri Korenblit /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
2*d1e879ecSMiri Korenblit /*
3*d1e879ecSMiri Korenblit  * Copyright (C) 2024 Intel Corporation
4*d1e879ecSMiri Korenblit  */
5*d1e879ecSMiri Korenblit #ifndef __iwl_ap_h__
6*d1e879ecSMiri Korenblit #define __iwl_ap_h__
7*d1e879ecSMiri Korenblit 
8*d1e879ecSMiri Korenblit #include "mld.h"
9*d1e879ecSMiri Korenblit #include "iface.h"
10*d1e879ecSMiri Korenblit 
11*d1e879ecSMiri Korenblit #include "fw/api/tx.h"
12*d1e879ecSMiri Korenblit 
13*d1e879ecSMiri Korenblit int iwl_mld_update_beacon_template(struct iwl_mld *mld,
14*d1e879ecSMiri Korenblit 				   struct ieee80211_vif *vif,
15*d1e879ecSMiri Korenblit 				   struct ieee80211_bss_conf *link_conf);
16*d1e879ecSMiri Korenblit 
17*d1e879ecSMiri Korenblit int iwl_mld_start_ap_ibss(struct ieee80211_hw *hw,
18*d1e879ecSMiri Korenblit 			  struct ieee80211_vif *vif,
19*d1e879ecSMiri Korenblit 			  struct ieee80211_bss_conf *link);
20*d1e879ecSMiri Korenblit 
21*d1e879ecSMiri Korenblit void iwl_mld_stop_ap_ibss(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
22*d1e879ecSMiri Korenblit 			  struct ieee80211_bss_conf *link);
23*d1e879ecSMiri Korenblit 
24*d1e879ecSMiri Korenblit int iwl_mld_store_ap_early_key(struct iwl_mld *mld,
25*d1e879ecSMiri Korenblit 			       struct ieee80211_key_conf *key,
26*d1e879ecSMiri Korenblit 			       struct iwl_mld_vif *mld_vif);
27*d1e879ecSMiri Korenblit 
28*d1e879ecSMiri Korenblit void iwl_mld_free_ap_early_key(struct iwl_mld *mld,
29*d1e879ecSMiri Korenblit 			       struct ieee80211_key_conf *key,
30*d1e879ecSMiri Korenblit 			       struct iwl_mld_vif *mld_vif);
31*d1e879ecSMiri Korenblit 
32*d1e879ecSMiri Korenblit u8 iwl_mld_get_rate_flags(struct iwl_mld *mld,
33*d1e879ecSMiri Korenblit 			  struct ieee80211_tx_info *info,
34*d1e879ecSMiri Korenblit 			  struct ieee80211_vif *vif,
35*d1e879ecSMiri Korenblit 			  struct ieee80211_bss_conf *link,
36*d1e879ecSMiri Korenblit 			  enum nl80211_band band);
37*d1e879ecSMiri Korenblit 
38*d1e879ecSMiri Korenblit void iwl_mld_set_tim_idx(struct iwl_mld *mld, __le32 *tim_index,
39*d1e879ecSMiri Korenblit 			 u8 *beacon, u32 frame_size);
40*d1e879ecSMiri Korenblit 
41*d1e879ecSMiri Korenblit int iwl_mld_send_beacon_template_cmd(struct iwl_mld *mld,
42*d1e879ecSMiri Korenblit 				     struct sk_buff *beacon,
43*d1e879ecSMiri Korenblit 				     struct iwl_mac_beacon_cmd *cmd);
44*d1e879ecSMiri Korenblit 
45*d1e879ecSMiri Korenblit #endif /* __iwl_ap_h__ */
46