ib_create_qp(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… ib_create_qp(9) β€” from the Kernel API Manual, bestie ✨

Okay so picture this: you're deep in kernel-land, you've got your RDMA situation going on, and you need an actual queue pair. Like, a real one. That's what this page is for, and yes, it's kind of a big deal 🫢


✨ NAME ✨

ib_create_qp β€” creates a kernel QP that's associated with the specific protection domain. That's the whole vibe. πŸ’…


πŸ¦‹ SYNOPSIS πŸ¦‹

struct ib_qp * ib_create_qp (struct ib_pd *pd , struct ib_qp_init_attr
*init_attr );

Look at that signature. It's giving "you pass me two things and I hand you back a QP or nothing." No cap.


πŸŽ€ ARGUMENTS πŸŽ€

  • pd β€” the protection domain that's associated with the QP. Yeah, that one. The one you already set up. πŸ’–
  • init_attr β€” a list of the initial attributes you need in order to create the QP. Now here's the important bit, so pay attention bestie: if QP creation succeeds, these attributes get updated to the actual capabilities of the created QP. So the struct you hand in doesn't stay the way you left it β€” it comes back telling you what you actually got. Lowkey iconic of it honestly. 😭

🌈 SEE ALSO 🌈

Everything's connected, iykyk. Also there's a kernel file you should peek at: ./include/rdma/ib_verbs.h.

Then the extended fam, all of these, exactly, no skipping: struct rdma_stat_desc(9), struct rdma_hw_stats(9), ib_rate_to_mult(9), ib_rate_to_mbps(9), ib_port_attr_to_speed_info(9), enum ib_mr_type(9), struct ib_mr_status(9), mult_to_ib_rate(9), struct ib_udata(9), struct rdma_netdev(9), struct ib_device_ops(9), ib_get_client_data(9), ib_modify_qp_is_ok(9), rdma_cap_ib_switch(9), rdma_start_port(9), rdma_for_each_port(9), rdma_end_port(9), rdma_cap_ib_mad(9), rdma_cap_opa_mad(9), rdma_cap_ib_smi(9), rdma_cap_ib_cm(9), rdma_cap_iw_cm(9), rdma_cap_ib_sa(9), rdma_cap_ib_mcast(9), rdma_cap_af_ib(9), rdma_cap_eth_ah(9), rdma_cap_opa_ah(9), rdma_max_mad_size(9), rdma_cap_roce_gid_table(9), rdma_core_cap_opa_port(9), rdma_mtu_enum_to_int(9), rdma_mtu_from_attr(9), ib_alloc_pd(9), ib_dealloc_pd(9), rdma_create_ah(9), rdma_create_user_ah(9), ib_get_gids_from_rdma_hdr(9), ib_get_rdma_header_version(9), ib_init_ah_attr_from_wc(9), ib_create_ah_from_wc(9), rdma_modify_ah(9), rdma_query_ah(9), rdma_destroy_ah_user(9), rdma_destroy_ah(9), ib_modify_srq(9), ib_query_srq(9), ib_destroy_srq_user(9), ib_destroy_srq(9), ib_post_srq_recv(9), ib_modify_qp_with_udata(9), ib_modify_qp(9), ib_query_qp(9), ib_destroy_qp(9), ib_open_qp(9), ib_close_qp(9), ib_post_send(9), ib_post_recv(9), ib_alloc_cq_any(9), rdma_set_cq_moderation(9), ib_destroy_cq_user(9), ib_destroy_cq(9), ib_poll_cq(9), ib_req_notify_cq(9), ib_virt_dma_to_ptr(9), ib_virt_dma_to_page(9), ib_dma_mapping_error(9), ib_dma_map_single(9), ib_dma_unmap_single(9), ib_dma_map_page(9), ib_dma_unmap_page(9), ib_dma_map_bvec(9), ib_dma_unmap_bvec(9), ib_dma_map_sgtable_attrs(9), ib_dma_map_sg(9), ib_dma_unmap_sg(9), ib_dma_max_seg_size(9), ib_dma_sync_single_for_cpu(9), ib_dma_sync_single_for_device(9), ib_dereg_mr_user(9), ib_dereg_mr(9), ib_update_fast_reg_key(9), ib_inc_rkey(9), ib_attach_mcast(9), ib_detach_mcast(9), ib_check_mr_status(9), ib_device_try_get(9), rdma_ah_find_type(9), ib_lid_cpu16(9), ib_lid_be16(9), rdma_roce_rescan_device(9), rdma_device_to_ibdev(9), ibdev_to_node(9), rdma_device_to_drv_device(9), rdma_flow_label_to_udp_sport(9), rdma_calc_flow_label(9), rdma_get_udp_sport(9).

That's the whole group chat, no one left on read. πŸ‘‘


Ok that's the page!! 🌸 This one lives in ./include/rdma (the source/version situation), dated October 2026, and it's ib_create_qp(9) if you ever need to find it again. Go build something slay, bestie. πŸ§šπŸ’œ
πŸ“¦ where this page comes from