drivers/infiniband/ulp/rtrs/rtrs.h
Source file repositories/reference/linux-study-clean/drivers/infiniband/ulp/rtrs/rtrs.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/infiniband/ulp/rtrs/rtrs.h- Extension
.h- Size
- 5719 bytes
- Lines
- 195
- Domain
- Driver Families
- Bucket
- drivers/infiniband
- Inferred role
- Driver Families: implementation source
- Status
- source implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/socket.hlinux/scatterlist.h
Detected Declarations
struct rtrs_permitstruct rtrs_clt_sessstruct rtrs_srv_ctxstruct rtrs_srv_sessstruct rtrs_srv_opstruct rtrs_addrstruct rtrs_clt_opsstruct rtrs_clt_req_opsstruct rtrs_attrsstruct rtrs_srv_opsenum rtrs_clt_link_evenum wait_typeenum rtrs_clt_con_typeenum rtrs_srv_link_ev
Annotated Snippet
struct rtrs_addr {
struct sockaddr_storage *src;
struct sockaddr_storage *dst;
};
/**
* struct rtrs_clt_ops - it holds the link event callback and private pointer.
* @priv: User supplied private data.
* @link_ev: Event notification callback function for connection state changes
* @priv: User supplied data that was passed to rtrs_clt_open()
* @ev: Occurred event
*/
struct rtrs_clt_ops {
void *priv;
void (*link_ev)(void *priv, enum rtrs_clt_link_ev ev);
};
struct rtrs_clt_sess *rtrs_clt_open(struct rtrs_clt_ops *ops,
const char *pathname,
const struct rtrs_addr *paths,
size_t path_cnt, u16 port,
size_t pdu_sz, u8 reconnect_delay_sec,
s16 max_reconnect_attempts, u32 nr_poll_queues);
void rtrs_clt_close(struct rtrs_clt_sess *clt);
enum wait_type {
RTRS_PERMIT_NOWAIT = 0,
RTRS_PERMIT_WAIT = 1
};
/**
* enum rtrs_clt_con_type - type of ib connection to use with a given
* rtrs_permit
* @RTRS_ADMIN_CON: use connection reserved for "service" messages
* @RTRS_IO_CON: use a connection reserved for IO
*/
enum rtrs_clt_con_type {
RTRS_ADMIN_CON,
RTRS_IO_CON
};
struct rtrs_permit *rtrs_clt_get_permit(struct rtrs_clt_sess *sess,
enum rtrs_clt_con_type con_type,
enum wait_type wait);
void rtrs_clt_put_permit(struct rtrs_clt_sess *sess,
struct rtrs_permit *permit);
/**
* struct rtrs_clt_req_ops - it holds the request confirmation callback
* and a private pointer.
* @priv: User supplied private data.
* @conf_fn: callback function to be called as confirmation
* @priv: User provided data, passed back with corresponding
* @(conf) confirmation.
* @errno: error number.
*/
struct rtrs_clt_req_ops {
void *priv;
void (*conf_fn)(void *priv, int errno);
};
int rtrs_clt_request(int dir, struct rtrs_clt_req_ops *ops,
struct rtrs_clt_sess *sess, struct rtrs_permit *permit,
const struct kvec *vec, size_t nr, size_t len,
struct scatterlist *sg, unsigned int sg_cnt);
int rtrs_clt_rdma_cq_direct(struct rtrs_clt_sess *clt, unsigned int index);
/**
* struct rtrs_attrs - RTRS session attributes
* @queue_depth: queue_depth saved from rtrs_clt_sess message
* @max_io_size: max_io_size from rtrs_clt_sess message, capped to
* @max_segments * %SZ_4K
* @max_segments: max_segments saved from rtrs_clt_sess message
*/
struct rtrs_attrs {
u32 queue_depth;
u32 max_io_size;
u32 max_segments;
};
int rtrs_clt_query(struct rtrs_clt_sess *sess, struct rtrs_attrs *attr);
/*
* Here goes RTRS server API
*/
/**
* enum rtrs_srv_link_ev - Server link events
Annotation
- Immediate include surface: `linux/socket.h`, `linux/scatterlist.h`.
- Detected declarations: `struct rtrs_permit`, `struct rtrs_clt_sess`, `struct rtrs_srv_ctx`, `struct rtrs_srv_sess`, `struct rtrs_srv_op`, `struct rtrs_addr`, `struct rtrs_clt_ops`, `struct rtrs_clt_req_ops`, `struct rtrs_attrs`, `struct rtrs_srv_ops`.
- Atlas domain: Driver Families / drivers/infiniband.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.