drivers/net/wireless/intel/iwlwifi/mld/d3.c
Source file repositories/reference/linux-study-clean/drivers/net/wireless/intel/iwlwifi/mld/d3.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/net/wireless/intel/iwlwifi/mld/d3.c- Extension
.c- Size
- 63094 bytes
- Lines
- 2191
- Domain
- Driver Families
- Bucket
- drivers/net
- Inferred role
- Driver Families: implementation source
- Status
- source implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Allocates kernel memory; connect allocation flags and lifetime to context constraints.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
mld.hd3.hpower.hhcmd.hiface.hmcc.hsta.hmlo.hkey.hfw/api/d3.hfw/api/offload.hfw/api/sta.hfw/dbg.hnet/ipv6.hnet/addrconf.hlinux/bitops.h
Detected Declarations
struct iwl_mld_resume_key_iter_datastruct iwl_mld_rsc_resume_iter_datastruct iwl_mld_suspend_key_iter_datastruct iwl_mld_mcast_key_datastruct iwl_mld_wowlan_mlo_keystruct iwl_mld_wowlan_statusstruct iwl_mld_netdetect_resstruct iwl_mld_resume_dataenum iwl_mld_d3_notiffunction iwl_mld_set_rekey_datafunction iwl_mld_ipv6_addr_changefunction iwl_mld_netdetect_configfunction iwl_mld_le64_to_tkip_seqfunction iwl_mld_le64_to_aes_seqfunction iwl_mld_convert_gtk_resume_seqfunction iwl_mld_convert_gtk_resume_datafunction iwl_mld_convert_ptk_resume_seqfunction iwl_mld_convert_mcast_ipnfunction iwl_mld_convert_igtk_resume_datafunction iwl_mld_convert_bigtk_resume_datafunction iwl_mld_convert_mlo_keysfunction iwl_mld_convert_wowlan_notif_v5function iwl_mld_validate_wowlan_notif_sizefunction iwl_mld_handle_wowlan_info_notiffunction iwl_mld_handle_wake_pkt_notiffunction iwl_mld_set_wake_packetfunction iwl_mld_report_wowlan_wakeupfunction iwl_mld_set_key_rx_seq_tidsfunction iwl_mld_update_mcast_rx_seqfunction iwl_mld_update_ptk_rx_seqfunction iwl_mld_resume_keys_iterfunction iwl_mld_rsc_update_key_iterfunction iwl_mld_process_rsc_notificationfunction iwl_mld_add_mcast_rekeyfunction iwl_mld_add_all_rekeysfunction iwl_mld_mlo_rekeyfunction iwl_mld_update_sec_keysfunction iwl_mld_process_wowlan_statusfunction iwl_mld_netdetect_match_info_handlerfunction iwl_mld_set_netdetect_infofunction for_each_set_bitfunction for_each_set_bitfunction iwl_mld_process_netdetect_resfunction iwl_mld_handle_d3_notiffunction WIDE_IDfunction WIDE_IDfunction iwl_mld_wait_d3_notiffunction iwl_mld_no_wowlan_suspend
Annotated Snippet
struct iwl_mld_resume_key_iter_data {
struct iwl_mld *mld;
struct iwl_mld_wowlan_status *wowlan_status;
};
struct iwl_mld_rsc_resume_iter_data {
struct iwl_mld *mld;
const struct iwl_wowlan_all_rsc_tsc_v5 *notif;
int queue;
};
struct iwl_mld_suspend_key_iter_data {
struct iwl_wowlan_rsc_tsc_params_cmd *rsc;
bool have_rsc;
int gtks;
int found_gtk_idx[4];
__le32 gtk_cipher;
__le32 igtk_cipher;
__le32 bigtk_cipher;
};
struct iwl_mld_mcast_key_data {
u8 key[WOWLAN_KEY_MAX_SIZE];
u8 len;
u8 flags;
u8 id;
union {
struct {
struct ieee80211_key_seq aes_seq[IWL_MAX_TID_COUNT];
struct ieee80211_key_seq tkip_seq[IWL_MAX_TID_COUNT];
} gtk;
struct {
struct ieee80211_key_seq cmac_gmac_seq;
} igtk_bigtk;
};
};
struct iwl_mld_wowlan_mlo_key {
u8 key[WOWLAN_KEY_MAX_SIZE];
u8 idx, type, link_id;
u8 pn[6];
};
/**
* struct iwl_mld_wowlan_status - contains wowlan status data from
* all wowlan notifications
* @wakeup_reasons: wakeup reasons, see &enum iwl_wowlan_wakeup_reason
* @replay_ctr: GTK rekey replay counter
* @pattern_number: number of the matched patterns on packets
* @last_qos_seq: QoS sequence counter of offloaded tid
* @num_of_gtk_rekeys: number of GTK rekeys during D3
* @tid_offloaded_tx: tid used by the firmware to transmit data packets
* while in wowlan
* @wake_packet: wakeup packet received
* @wake_packet_length: wake packet length
* @wake_packet_bufsize: wake packet bufsize
* @gtk: data of the last two used gtk's by the FW upon resume
* @igtk: data of the last used igtk by the FW upon resume
* @bigtk: data of the last two used gtk's by the FW upon resume
* @ptk: last seq numbers per tid passed by the FW,
* holds both in tkip and aes formats
* @num_mlo_keys: number of &struct iwl_mld_wowlan_mlo_key structs
* @mlo_keys: array of MLO keys
*/
struct iwl_mld_wowlan_status {
u32 wakeup_reasons;
u64 replay_ctr;
u16 pattern_number;
u16 last_qos_seq;
u32 num_of_gtk_rekeys;
u8 tid_offloaded_tx;
u8 *wake_packet;
u32 wake_packet_length;
u32 wake_packet_bufsize;
struct iwl_mld_mcast_key_data gtk[WOWLAN_GTK_KEYS_NUM];
struct iwl_mld_mcast_key_data igtk;
struct iwl_mld_mcast_key_data bigtk[WOWLAN_BIGTK_KEYS_NUM];
struct {
struct ieee80211_key_seq aes_seq[IWL_MAX_TID_COUNT];
struct ieee80211_key_seq tkip_seq[IWL_MAX_TID_COUNT];
} ptk;
int num_mlo_keys;
struct iwl_mld_wowlan_mlo_key mlo_keys[WOWLAN_MAX_MLO_KEYS];
};
#define NETDETECT_QUERY_BUF_LEN \
(sizeof(struct iwl_scan_offload_profile_match) * \
Annotation
- Immediate include surface: `mld.h`, `d3.h`, `power.h`, `hcmd.h`, `iface.h`, `mcc.h`, `sta.h`, `mlo.h`.
- Detected declarations: `struct iwl_mld_resume_key_iter_data`, `struct iwl_mld_rsc_resume_iter_data`, `struct iwl_mld_suspend_key_iter_data`, `struct iwl_mld_mcast_key_data`, `struct iwl_mld_wowlan_mlo_key`, `struct iwl_mld_wowlan_status`, `struct iwl_mld_netdetect_res`, `struct iwl_mld_resume_data`, `enum iwl_mld_d3_notif`, `function iwl_mld_set_rekey_data`.
- Atlas domain: Driver Families / drivers/net.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.