STRUCT IWL_PCIE_TXQS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

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

okay so bestie, welcome to the little kernel-API corner of the manual pages β€” this one's all about struct iwl_pcie_txqs, aka the TX queues data. it's giving "the vibes of your packets' travel itinerary" ✨ and ngl it's kind of iconic.


🌸 NAME 🌸

struct iwl_pcie_txqs β€” TX queues data. that's it, that's the whole vibe. πŸ’…


πŸ¦‹ SYNOPSIS πŸ¦‹

here's the whole structure, literally exactly like this, no cap:

struct iwl_pcie_txqs {
    unsigned long queue_used[BITS_TO_LONGS(IWL_MAX_TVQM_QUEUES)];
    unsigned long queue_stopped[BITS_TO_LONGS(IWL_MAX_TVQM_QUEUES)];
    struct iwl_txq *txq[IWL_MAX_TVQM_QUEUES];
    struct dma_pool *bc_pool;
    size_t bc_tbl_size;
    struct iwl_tso_hdr_page __percpu *tso_hdr_page;
    struct {
      u8 max_tbs;
      u16 size;
      u8 addr_size;
    } tfd;
    struct iwl_dma_ptr scd_bc_tbls;
 };

πŸŽ€ Members πŸŽ€

okay so let's go member by member, bestie β€” each one gets its moment:

  • queue_used β€” bit mask of used queues. like a little attendance sheet but make it bits πŸ’–
  • queue_stopped β€” bit mask of stopped queues. same energy, but these ones are on pause ⏸️
  • txq β€” array of TXQ data structures representing the TXQs. yes, the TXQs are represented by TXQ data structures, we love a self-explanatory queen πŸ‘‘
  • bc_pool β€” bytecount DMA allocations pool. it's the pool where the bytecount DMA allocations hang out 🏊
  • bc_tbl_size β€” bytecount table size. literally the size. of the bytecount table. πŸ“
  • tso_hdr_page β€” page allocated (per CPU) for A-MSDU headers when doing TSO (and similar usage). per-CPU, so everyone gets their own lil page, very main character energy ✨
  • tfd β€” TFD data. we'll get into it below πŸ‘‡
  • tfd.max_tbs β€” max number of buffers per TFD. the ceiling, the limit, the cap 🧒
  • tfd.size β€” TFD size. iconic, self-describing, no notes πŸ’…
  • tfd.addr_size β€” TFD/TB address size. yes both TFD and TB, don't make me say it twice 😭
  • scd_bc_tbls β€” gen1 pointer to the byte count table of the scheduler. gen1 specifically, bestie, don't get it twisted 🫢

πŸ‘‘ SEE ALSO πŸ‘‘

go read these next, i'm obsessed:

  • Kernel file ./drivers/net/wireless/intel/iwlwifi/pcie/gen1_2/internal.h
  • struct iwl_rx_mem_buffer(9)
  • struct iwl_rx_transfer_desc(9)
  • struct iwl_rx_completion_desc(9)
  • struct iwl_rx_completion_desc_bz(9)
  • struct iwl_rxq(9)
  • struct iwl_rb_allocator(9)
  • iwl_get_closed_rb_stts(9)
  • enum iwl_fw_mon_dbgfs_state(9)
  • enum iwl_shared_irq_flags(9)
  • enum iwl_image_response_code(9)
  • struct cont_rec(9)
  • enum iwl_pcie_imr_status(9)
  • struct iwl_txq(9)
  • struct iwl_trans_pcie(9)
  • iwl_txq_inc_wrap(9)
  • iwl_txq_dec_wrap(9)

that's the whole page, bestie β€” go forth and slay your TX queues πŸŒˆπŸ’œ

source/version + date, coming at you from ./drivers/net/wireless/intel/i..., October 2026 β€” and the page itself, obviously, is struct iwl_pcie_txqs(9). mwah πŸ’‹

πŸ“¦ where this page comes from