xref: /linux/drivers/net/wireless/intel/iwlwifi/mld/time_sync.h (revision 1a9239bb4253f9076b5b4b2a1a4e8d7defd77a95)
1*d1e879ecSMiri Korenblit /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
2*d1e879ecSMiri Korenblit /*
3*d1e879ecSMiri Korenblit  * Copyright (C) 2025 Intel Corporation
4*d1e879ecSMiri Korenblit  */
5*d1e879ecSMiri Korenblit #ifndef __iwl_mld_time_sync_h__
6*d1e879ecSMiri Korenblit #define __iwl_mld_time_sync_h__
7*d1e879ecSMiri Korenblit 
8*d1e879ecSMiri Korenblit struct iwl_mld_time_sync_data {
9*d1e879ecSMiri Korenblit 	struct rcu_head rcu_head;
10*d1e879ecSMiri Korenblit 	u8 peer_addr[ETH_ALEN];
11*d1e879ecSMiri Korenblit 	u32 active_protocols;
12*d1e879ecSMiri Korenblit 	struct sk_buff_head frame_list;
13*d1e879ecSMiri Korenblit };
14*d1e879ecSMiri Korenblit 
15*d1e879ecSMiri Korenblit int iwl_mld_time_sync_config(struct iwl_mld *mld, const u8 *addr,
16*d1e879ecSMiri Korenblit 			     u32 protocols);
17*d1e879ecSMiri Korenblit int iwl_mld_time_sync_fw_config(struct iwl_mld *mld);
18*d1e879ecSMiri Korenblit void iwl_mld_deinit_time_sync(struct iwl_mld *mld);
19*d1e879ecSMiri Korenblit void iwl_mld_handle_time_msmt_notif(struct iwl_mld *mld,
20*d1e879ecSMiri Korenblit 				    struct iwl_rx_packet *pkt);
21*d1e879ecSMiri Korenblit bool iwl_mld_time_sync_frame(struct iwl_mld *mld, struct sk_buff *skb,
22*d1e879ecSMiri Korenblit 			     u8 *addr);
23*d1e879ecSMiri Korenblit void iwl_mld_handle_time_sync_confirm_notif(struct iwl_mld *mld,
24*d1e879ecSMiri Korenblit 					    struct iwl_rx_packet *pkt);
25*d1e879ecSMiri Korenblit 
26*d1e879ecSMiri Korenblit #endif /* __iwl_mld_time_sync_h__ */
27