STRUCT P9_TRANS_RDMA(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct p9_trans_rdma β€” the RDMA transport instance bestie ✨

okay so this page lives in the Kernel API Manual (that's section 9 of the manual, iykyk) and it's literally all about struct p9_trans_rdma πŸŽ€ β€” the RDMA transport instance. yes, that one. the whole page is one struct and its little family of members, and honestly? she ate. 🫢


✨ NAME ✨

struct p9_trans_rdma β€” RDMA transport instance, no cap πŸ’–


🌸 SYNOPSIS 🌸

here's the whole vibe, membrane by membrane, exactly as written β€” do not come for me if you think a field is missing, this is the full list fr fr:

struct p9_trans_rdma {
    enum {
      P9_RDMA_INIT,
      P9_RDMA_ADDR_RESOLVED,
      P9_RDMA_ROUTE_RESOLVED,
      P9_RDMA_CONNECTED,
      P9_RDMA_FLUSHING,
      P9_RDMA_CLOSING,
      P9_RDMA_CLOSED,
    } state;
    struct rdma_cm_id *cm_id;
    struct ib_pd *pd;
    struct ib_qp *qp;
    struct ib_cq *cq;
    long timeout;
    bool privport;
    u16 port;
    int sq_depth;
    struct semaphore sq_sem;
    int rq_depth;
    struct semaphore rq_sem;
    atomic_t excess_rc;
    struct sockaddr_in addr;
    spinlock_t req_lock;
    struct completion cm_done;
 };

like, look at that enum. seven little states, living their best lives. πŸ‘‘


πŸ¦‹ Members πŸ¦‹

so here's the cast, one iconic member at a time β€” bestie, take notes:

  • state β€” tracks the transport state machine for connection setup and tear down. it's giving main character energy, honestly, because she's the one holding the whole lifecycle together πŸ’…
  • cm_id β€” The RDMA CM ID πŸ”₯
  • pd β€” Protection Domain pointer ✨
  • qp β€” Queue Pair pointer πŸŽ€
  • cq β€” Completion Queue pointer 🌸
  • timeout β€” Number of uSecs to wait for connection management events. yes, uSecs. microseconds. she's impatient, respect it 😭
  • privport β€” Whether a privileged port may be used πŸ‘‘
  • port β€” The port to use πŸ”Œ
  • sq_depth β€” The depth of the Send Queue πŸ“€
  • sq_sem β€” Semaphore for the SQ πŸ”
  • rq_depth β€” The depth of the Receive Queue. πŸ“₯
  • rq_sem β€” Semaphore for the RQ πŸ”
  • excess_rc β€” Amount of posted Receive Contexts without a pending request. basically the leftovers pile πŸ“ β€” and note it says See rdma_request, so like, go look at rdma_request if you want the full lore, i don't make the rules πŸ’€
  • addr β€” The remote peer's address 🌈
  • req_lock β€” Protects the active request list πŸ›‘οΈ like a bouncer for the req list, periodt
  • cm_done β€” Completion event for connection management tracking βœ…

🫢 quick vibe check: excess_rc is literally defined by pointing you at rdma_request, so that's not me being vague, that's the manual being mysterious. iconic of it.

🧚 SEE ALSO 🧚

go read these next, they're the rest of the friend group πŸ’œ β€” and they all live in the Kernel file ./net/9p/trans_rdma.c:


and that's the page!! mwah πŸ’‹ this lil fandom lives at ./net/9p and the version stamp says October 2026 β€” so like, slightly future-dated, very mysterious, very slay. see you in the next man page, bestie πŸŒŸπŸ’–

πŸ“¦ where this page comes from