xref: /linux/drivers/net/wireless/intel/iwlwifi/mld/key.h (revision 4f9786035f9e519db41375818e1d0b5f20da2f10)
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_mld_key_h__
6*d1e879ecSMiri Korenblit #define __iwl_mld_key_h__
7*d1e879ecSMiri Korenblit 
8*d1e879ecSMiri Korenblit #include "mld.h"
9*d1e879ecSMiri Korenblit #include <net/mac80211.h>
10*d1e879ecSMiri Korenblit #include "fw/api/sta.h"
11*d1e879ecSMiri Korenblit 
12*d1e879ecSMiri Korenblit void iwl_mld_remove_key(struct iwl_mld *mld,
13*d1e879ecSMiri Korenblit 			struct ieee80211_vif *vif,
14*d1e879ecSMiri Korenblit 			struct ieee80211_sta *sta,
15*d1e879ecSMiri Korenblit 			struct ieee80211_key_conf *key);
16*d1e879ecSMiri Korenblit int iwl_mld_add_key(struct iwl_mld *mld,
17*d1e879ecSMiri Korenblit 		    struct ieee80211_vif *vif,
18*d1e879ecSMiri Korenblit 		    struct ieee80211_sta *sta,
19*d1e879ecSMiri Korenblit 		    struct ieee80211_key_conf *key);
20*d1e879ecSMiri Korenblit void iwl_mld_remove_ap_keys(struct iwl_mld *mld,
21*d1e879ecSMiri Korenblit 			    struct ieee80211_vif *vif,
22*d1e879ecSMiri Korenblit 			    struct ieee80211_sta *sta,
23*d1e879ecSMiri Korenblit 			    unsigned int link_id);
24*d1e879ecSMiri Korenblit 
25*d1e879ecSMiri Korenblit int iwl_mld_update_sta_keys(struct iwl_mld *mld,
26*d1e879ecSMiri Korenblit 			    struct ieee80211_vif *vif,
27*d1e879ecSMiri Korenblit 			    struct ieee80211_sta *sta,
28*d1e879ecSMiri Korenblit 			    u32 old_sta_mask,
29*d1e879ecSMiri Korenblit 			    u32 new_sta_mask);
30*d1e879ecSMiri Korenblit 
31*d1e879ecSMiri Korenblit static inline void
iwl_mld_cleanup_keys_iter(struct ieee80211_hw * hw,struct ieee80211_vif * vif,struct ieee80211_sta * sta,struct ieee80211_key_conf * key,void * data)32*d1e879ecSMiri Korenblit iwl_mld_cleanup_keys_iter(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
33*d1e879ecSMiri Korenblit 			  struct ieee80211_sta *sta,
34*d1e879ecSMiri Korenblit 			  struct ieee80211_key_conf *key, void *data)
35*d1e879ecSMiri Korenblit {
36*d1e879ecSMiri Korenblit 	key->hw_key_idx = STA_KEY_IDX_INVALID;
37*d1e879ecSMiri Korenblit }
38*d1e879ecSMiri Korenblit 
39*d1e879ecSMiri Korenblit #endif /* __iwl_mld_key_h__ */
40