STRUCT SSI_PROTOCOL(9)

๐Ÿ“ฆ version 7.3.1, in nixpkgs unstable

โœจ struct ssi_protocol(9) โœจ

okay bestie, welcome to the struct ssi_protocol glow-up ๐Ÿ’… this is a page from the Kernel API Manual, and we're about to go through the SSI protocol (McSAAB) data struct together like it's a group project we're actually going to slay ๐Ÿซถ


๐ŸŒธ NAME ๐ŸŒธ

struct ssi_protocol โ€” the SSI protocol (McSAAB) data. that's it, that's the vibe โœจ


๐ŸŽ€ SYNOPSIS ๐ŸŽ€

struct ssi_protocol {
    unsigned int            main_state;
    unsigned int            send_state;
    unsigned int            recv_state;
    unsigned long           flags;
    u8 rxid;
    u8 txid;
    unsigned int            txqueue_len;
    struct timer_list       tx_wd;
    struct timer_list       rx_wd;
    struct timer_list       keep_alive;
    spinlock_t lock;
    struct net_device       *netdev;
    struct list_head        txqueue;
    struct list_head        cmdqueue;
    struct work_struct      work;
    struct hsi_client       *cl;
    struct list_head        link;
    atomic_t tx_usecnt;
    int channel_id_cmd;
    int channel_id_data;
 };

like yes, she's got range ๐Ÿ’– twenty members and not one of them is filler.


๐Ÿ‘‘ MEMBERS ๐Ÿ‘‘

every single one of these is a main character, so let's give them their moment ๐ŸŒŸ

  • main_state โ€” the main state machine. she runs the whole show, no cap.
  • send_state โ€” the TX state machine. the sending side of things ๐Ÿ“ค
  • recv_state โ€” the RX state machine. the receiving side ๐Ÿ›ฌ
  • flags โ€” flags! rn they're only used to follow the wake line test, that's her whole job rn and she's doing it.
  • rxid โ€” the RX data id.
  • txid โ€” the TX data id.
  • txqueue_len โ€” how long the TX queue is. literally the TX queue length ๐Ÿ“
  • tx_wd โ€” the TX watchdog. she's watching ๐Ÿ‘€
  • rx_wd โ€” the RX watchdog. also watching ๐Ÿ•
  • keep_alive โ€” a workaround for an SSI HW bug. iconic of her to say it like that, honestly.
  • lock โ€” exists to serialize access to this struct ๐Ÿ”’ so everybody takes turns, periodt.
  • netdev โ€” the Phonet network device.
  • txqueue โ€” the TX data queue.
  • cmdqueue โ€” the queue of free commands.
  • work โ€” a struct work_struct for scheduled work ๐Ÿ› ๏ธ
  • cl โ€” the HSI client own reference.
  • link โ€” the link for ssip_list.
  • tx_usecnt โ€” a refcount to keep track of the slaves that use the wake line. she's counting, bestie ๐Ÿงฎ
  • channel_id_cmd โ€” the HSI channel id for the command stream.
  • channel_id_data โ€” the HSI channel id for the data stream.

๐Ÿฆ‹ SEE ALSO ๐Ÿฆ‹

the kernel file ./drivers/hsi/clients/ssi_protocol.c โ€” go read the source, iykyk ๐Ÿ’œ


and that's the whole page, bestie ๐ŸŒˆ this cutie lives in ./drivers/hsi/clients, dated October 2026, and she answers to struct ssi_protocol(9) whenever you call her name ๐Ÿ’–โœจ๐ŸŽ€

๐Ÿ“ฆ where this page comes from