STRUCT IOSM_MUX(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– struct iosm_mux(9) πŸ’–

okay so we're in the Kernel API Manual bestie, and today's main character is struct iosm_mux β€” literally the structure that handles data multiplexing over an IP channel. no cap, that's the whole vibe. let's get into it πŸŽ€


✨ SYNOPSIS ✨

struct iosm_mux {
    struct device *dev;
    struct mux_session session[IPC_MEM_MUX_IP_SESSION_ENTRIES];
    struct ipc_mem_channel *channel;
    struct iosm_pcie *pcie;
    struct iosm_imem *imem;
    struct iosm_wwan *wwan;
    struct iosm_protocol *ipc_protocol;
    int channel_id;
    enum ipc_mux_protocol protocol;
    enum ipc_mux_ul_flow ul_flow;
    int nr_sessions;
    int instance_id;
    enum mux_state state;
    enum mux_event event;
    u32 tx_transaction_id;
    int rr_next_session;
    struct mux_adb ul_adb;
    int size_needed;
    long long ul_data_pend_bytes;
    struct mux_acb acb;
    int wwan_q_offset;
    u16 acb_tx_sequence_nr;
    u16 adb_tx_sequence_nr;
    unsigned long long acc_adb_size;
    unsigned long long acc_payload_size;
    u8 initialized:1, ev_mux_net_transmit_pending:1, adb_prep_ongoing;
};

like, look at her. so many fields. she's booked and busy 🌸


πŸ¦‹ Members πŸ¦‹

  • dev β€” pointer to the device structure 🫢
  • session β€” the array of the MUX sessions, bestie. plural. many queens πŸ‘‘
  • channel β€” reference to the IP MUX channel
  • pcie β€” pointer to the iosm_pcie struct
  • imem β€” pointer to iosm_imem
  • wwan β€” pointer to iosm_wwan (the original literally spells it "Poinetr" and honestly? iconic typo, we stan, moving on πŸ’…)
  • ipc_protocol β€” pointer to iosm_protocol
  • channel_id β€” the channel ID for MUX
  • protocol β€” type of the MUX protocol
  • ul_flow β€” UL Flow type
  • nr_sessions β€” number of sessions
  • instance_id β€” the instance ID
  • state β€” states of the MUX object
  • event β€” initiated actions to change the state of the MUX object
  • tx_transaction_id β€” transaction id for the ACB command ✨
  • rr_next_session β€” next session number for round robin
  • ul_adb β€” state of the UL ADB/ADGH
  • size_needed β€” variable to store the size needed during ADB preparation
  • ul_data_pend_bytes β€” pending UL data to be processed, in bytes πŸ“
  • acb β€” temporary ACB state
  • wwan_q_offset β€” this will hold the offset of the given instance. useful while passing or receiving packets from the wwan/imem layer 🧚
  • acb_tx_sequence_nr β€” sequence number for the ACB header
  • adb_tx_sequence_nr β€” sequence number for the ADB header
  • acc_adb_size β€” statistic data for logging
  • acc_payload_size β€” statistic data for logging
  • initialized β€” MUX object is initialized βœ…
  • ev_mux_net_transmit_pending β€” 0 means inform the IPC tasklet to pass the accumulated uplink ADB to CP
  • adb_prep_ongoing β€” flag for ADB preparation status

🌈 SEE ALSO 🌈

the whole friend group fr fr β€” kernel file ./drivers/net/wwan/iosm/iosm_ipc_mux.h union mux_cmd_param(9), struct mux_adth_dg(9), struct mux_qlth_ql(9), struct mux_qlth(9), struct mux_adb(9), struct mux_acb(9), ipc_mux_init(9), ipc_mux_deinit(9), ipc_mux_check_n_restart_tx(9), ipc_mux_get_active_protocol(9), ipc_mux_open_session(9), ipc_mux_close_session(9), ipc_mux_get_max_sessions(9)

go read them too, i'm not kidding, they're all linked for a reason 🫢

mwah πŸ’‹ that's the whole page. this one lives in ./drivers/net/wwan/iosm and it's dated October 2026 β€” so like, future-core of you to be reading it. bye bestie, drink water, close your sessions πŸŒΈπŸ’–βœ¨

πŸ“¦ where this page comes from