STRUCT IWL_TX_RESP_V3(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct iwl_tx_resp_v3(9) β€” a Kernel API Manual moment

okay so bestie, welcome to the Kernel API Manual, and buckle up because we're about to vibe-check a struct that literally just tells you "hey, firmware is TXing a packet rn." That's it. That's the whole personality. It's REPLY_TX = 0x1c, and it ate. πŸ¦‹


✨ NAME ✨

struct iwl_tx_resp_v3 β€” notifies that fw is TXing a packet ( REPLY_TX = 0x1c ) πŸ’Œ


πŸŽ€ SYNOPSIS πŸŽ€

no cap, here's the whole glow-up, copied verbatim because we do not mess with the source:

struct iwl_tx_resp_v3 {
    u8 frame_count;
    u8 bt_kill_count;
    u8 failure_rts;
    u8 failure_frame;
    __le32 initial_rate;
    __le16 wireless_media_time;
    u8 pa_status;
    u8 pa_integ_res_a[3];
    u8 pa_integ_res_b[3];
    u8 pa_integ_res_c[3];
    __le16 measurement_req_id;
    u8 reduced_tpc;
    u8 reserved;
    __le32 tfd_info;
    __le16 seq_ctl;
    __le16 byte_cnt;
    u8 tlc_info;
    u8 ra_tid;
    __le16 frame_ctrl;
    struct agg_tx_status status[];
};

look at her. main character struct energy, honestly. πŸ‘‘


🌸 Members 🌸 (the whole friend group)

  • frame_count β€” 1 means no aggregation, >1 means aggregation. she's doing a headcount bestie πŸ’€
  • bt_kill_count β€” num of times blocked by bluetooth (unused for agg). bluetooth really said "not today" πŸ™ˆ
  • failure_rts β€” num of failures due to unsuccessful RTS
  • failure_frame β€” num failures due to no ACK (unused for agg). ghosted by the ACK, tragic 😭
  • initial_rate β€” for non-agg: rate of the successful Tx. For agg: rate of the Tx of all the batch. RATE_MCS_*
  • wireless_media_time β€” for non-agg: RTS + CTS + frame tx attempts time + ACK. for agg: RTS + CTS + aggregation tx time + block-ack time. in usec. it's giving stopwatch energy ⏱️
  • pa_status β€” tx power info
  • pa_integ_res_a β€” tx power info
  • pa_integ_res_b β€” tx power info
  • pa_integ_res_c β€” tx power info
the way pa_integ_res_a, pa_integ_res_b, and pa_integ_res_c are all just "tx power info"… triplets. iconic. they're a matched set πŸŽ€
  • measurement_req_id β€” tx power info
  • reduced_tpc β€” transmit power reduction used
  • reserved β€” reserved. she's reserved. literally in her reserved era πŸ’…
  • tfd_info β€” TFD information set by the FH
  • seq_ctl β€” sequence control from the Tx cmd
  • byte_cnt β€” byte count from the Tx cmd
  • tlc_info β€” TLC rate info
  • ra_tid β€” bits [3:0] = ra, bits [7:4] = tid. bit-packing queen fr fr ⭐
  • frame_ctrl β€” frame control
  • status β€” for non-agg: frame status TX_STATUS_* for agg: status of 1st frame, AGG_TX_STATE_*; other frame status fields follow this one, up to frame_count. Length in frame_count. she's flexible, she's a whole array, she contains multitudes 🫢

πŸ’– Description πŸ’–

After the array of statuses comes the SSN of the SCD. Look at iwl_mvm_get_scd_ssn for more details. that's the plot twist bestie, there's more data hiding after the status array πŸ‘€


🌈 SEE ALSO 🌈

Kernel file ./drivers/net/wireless/intel/iwlwifi/fw/api/tx.h β€” and the entire extended universe, alphabetically unhinged, all here:

  • enum iwl_tx_flags(9)
  • enum iwl_tx_cmd_flags(9)
  • enum iwl_tx_pm_timeouts(9)
  • enum iwl_tx_cmd_sec_ctrl(9)
  • enum iwl_tx_offload_assist_flags_pos(9)
  • struct iwl_tx_cmd_v6_params(9)
  • struct iwl_tx_cmd_v6(9)
  • struct iwl_tx_cmd_v9(9)
  • struct iwl_tx_cmd(9)
  • struct agg_tx_status(9)
  • struct iwl_tx_resp(9)
  • struct iwl_mvm_ba_notif(9)
  • struct iwl_compressed_ba_tfd(9)
  • struct iwl_compressed_ba_ratid(9)
  • struct iwl_compressed_ba_notif(9)
  • struct iwl_mac_beacon_cmd_v6(9)
  • struct iwl_mac_beacon_cmd_v7(9)
  • struct iwl_mac_beacon_cmd(9)
  • struct iwl_extended_beacon_notif_v5(9)
  • struct iwl_extended_beacon_notif(9)
  • enum iwl_dump_control(9)
  • struct iwl_tx_path_flush_cmd_v1(9)
  • struct iwl_tx_path_flush_cmd(9)
  • struct iwl_flush_queue_info(9)
  • struct iwl_tx_path_flush_cmd_rsp(9)
  • struct iwl_scd_txq_cfg_cmd(9)
  • struct iwl_scd_txq_cfg_rsp(9)

okay that's the whole page bestie, you're officially fluent in iwl_tx_resp_v3 πŸ§šπŸ’œ

and for the cute sign-off: this absolute baddie of a reference lives at ./drivers/net/wireless/intel/i... and it's dated October 2026, filed under struct iwl_tx_resp_v3(9) β€” slay, go read it, periodt. πŸ”₯πŸ‘‘

πŸ“¦ where this page comes from