STRUCT IWL_MLD_EMLSR(9)
π struct iwl_mld_emlsr(9) β like, the whole kernel API manual but make it make sense
okay so bestie, we're in the Kernel API Manual and today's main character is struct iwl_mld_emlsr(9) β yes that's the whole title, and yes you're gonna understand every single field by the end of this. pinky promise π«Ά
β¨ NAME β¨
struct iwl_mld_emlsr β per-VIF data about EMLSR operation π«
πΈ SYNOPSIS πΈ
here's the whole glow-up, laid out exactly as the kernel gods wrote it:
struct iwl_mld_emlsr {
struct {
u8 primary;
u8 selected_primary;
u16 selected_links;
enum iwl_mld_emlsr_blocked blocked_reasons;
enum iwl_mld_emlsr_exit last_exit_reason;
unsigned long last_exit_ts;
u8 exit_repeat_count;
unsigned long last_entry_ts;
};
struct wiphy_work unblock_tpt_wk;
struct wiphy_delayed_work check_tpt_wk;
struct wiphy_delayed_work prevent_done_wk;
struct wiphy_delayed_work tmp_non_bss_done_wk;
};
likeβ¦ it's giving nested anonymous struct, and honestly? we stan π
π¦ Members π¦
okay now the part you actually came for, no skimming allowed, every field is getting its moment:
{unnamed_struct}β anonymous. that's it, that's the whole vibe. it has no name, it simply is πprimaryβ the current primary link. the it-girl link, the one holding the crown πselected_primaryβ primary link as selected during the last link selection. like, the receipts from last time we picked π§Ύselected_linksβ links as selected during the last link selection. same receipts, but for all the links together πblocked_reasonsβ reasons preventing EMLSR from being enabled. the "not today, bestie" list πlast_exit_reasonβ reason for the last EMLSR exit. why it had to leave the party πlast_exit_tsβ time of the last EMLSR exit (iflast_exit_reasonis non-zero). timestamped drama, love that for us β°exit_repeat_countβ number of times EMLSR was exited for the same reason. like, the same reason?? multiple times?? iconic but concerning π₯last_entry_tsβ the time of the last EMLSR entry (ifiwl_mld_emlsr_activeis true). the comeback timestamp β¨unblock_tpt_wkβ unblock EMLSR because the throughput limit was reached. throughput said "enough", worker said "heard" πΆcheck_tpt_wkβ a worker to check ifIWL_MLD_EMLSR_BLOCKED_TPTshould be added, for example if there is no longer enough traffic. lowkey the vibe-checker of workers πprevent_done_wkβ worker to removeIWL_MLD_EMLSR_BLOCKED_PREVENTION. cleanup crew, very demure πtmp_non_bss_done_wkβ worker to removeIWL_MLD_EMLSR_BLOCKED_TMP_NON_BSS. another cleanup crew, this one's temporary so don't get attached π«Ά
π SEE ALSO π
go touch some other docs, bestie, they're all connected:
- Kernel file
./drivers/net/wireless/intel/iwlwifi/mld/iface.h enum iwl_mld_emlsr_blocked(9)enum iwl_mld_emlsr_exit(9)struct iwl_mld_vif(9)
iykyk π
ngl the headers ate and the workers understood the assignment β pls don't go poking at this struct without reading the SEE ALSOs first, fr fr π
β and that's a wrap! this page came to you straight from ./drivers/net/wireless/intel/i... β yes the source path is literally truncated like that in the footer, we don't gatekeep β dated October 2026, and it's all struct iwl_mld_emlsr(9) energy, periodt. πππ¦πΈπ
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms