ib.h (664b0bae0b87f69bc9deb098f5e0158b9cf18e04) | ib.h (eee2fa6ab3225192d6d894c54a6fb02ac9efdff6) |
---|---|
1/* SPDX-License-Identifier: GPL-2.0 */ 2#ifndef _RDS_IB_H 3#define _RDS_IB_H 4 5#include <rdma/ib_verbs.h> 6#include <rdma/rdma_cm.h> 7#include <linux/interrupt.h> 8#include <linux/pci.h> --- 43 unchanged lines hidden (view full) --- 52}; 53 54struct rds_ib_refill_cache { 55 struct rds_ib_cache_head __percpu *percpu; 56 struct list_head *xfer; 57 struct list_head *ready; 58}; 59 | 1/* SPDX-License-Identifier: GPL-2.0 */ 2#ifndef _RDS_IB_H 3#define _RDS_IB_H 4 5#include <rdma/ib_verbs.h> 6#include <rdma/rdma_cm.h> 7#include <linux/interrupt.h> 8#include <linux/pci.h> --- 43 unchanged lines hidden (view full) --- 52}; 53 54struct rds_ib_refill_cache { 55 struct rds_ib_cache_head __percpu *percpu; 56 struct list_head *xfer; 57 struct list_head *ready; 58}; 59 |
60/* This is the common structure for the IB private data exchange in setting up 61 * an RDS connection. The exchange is different for IPv4 and IPv6 connections. 62 * The reason is that the address size is different and the addresses 63 * exchanged are in the beginning of the structure. Hence it is not possible 64 * for interoperability if same structure is used. 65 */ 66struct rds_ib_conn_priv_cmn { 67 u8 ricpc_protocol_major; 68 u8 ricpc_protocol_minor; 69 __be16 ricpc_protocol_minor_mask; /* bitmask */ 70 __be32 ricpc_reserved1; 71 __be64 ricpc_ack_seq; 72 __be32 ricpc_credit; /* non-zero enables flow ctl */ 73}; 74 |
|
60struct rds_ib_connect_private { 61 /* Add new fields at the end, and don't permute existing fields. */ | 75struct rds_ib_connect_private { 76 /* Add new fields at the end, and don't permute existing fields. */ |
62 __be32 dp_saddr; 63 __be32 dp_daddr; 64 u8 dp_protocol_major; 65 u8 dp_protocol_minor; 66 __be16 dp_protocol_minor_mask; /* bitmask */ 67 __be32 dp_reserved1; 68 __be64 dp_ack_seq; 69 __be32 dp_credit; /* non-zero enables flow ctl */ | 77 __be32 dp_saddr; 78 __be32 dp_daddr; 79 struct rds_ib_conn_priv_cmn dp_cmn; |
70}; 71 | 80}; 81 |
82struct rds6_ib_connect_private { 83 /* Add new fields at the end, and don't permute existing fields. */ 84 struct in6_addr dp_saddr; 85 struct in6_addr dp_daddr; 86 struct rds_ib_conn_priv_cmn dp_cmn; 87}; 88 89#define dp_protocol_major dp_cmn.ricpc_protocol_major 90#define dp_protocol_minor dp_cmn.ricpc_protocol_minor 91#define dp_protocol_minor_mask dp_cmn.ricpc_protocol_minor_mask 92#define dp_ack_seq dp_cmn.ricpc_ack_seq 93#define dp_credit dp_cmn.ricpc_credit 94 95union rds_ib_conn_priv { 96 struct rds_ib_connect_private ricp_v4; 97 struct rds6_ib_connect_private ricp_v6; 98}; 99 |
|
72struct rds_ib_send_work { 73 void *s_op; 74 union { 75 struct ib_send_wr s_wr; 76 struct ib_rdma_wr s_rdma_wr; 77 struct ib_atomic_wr s_atomic_wr; 78 }; 79 struct ib_sge s_sge[RDS_IB_MAX_SGE]; --- 266 unchanged lines hidden (view full) --- 346int rds_ib_conn_path_connect(struct rds_conn_path *cp); 347void rds_ib_conn_path_shutdown(struct rds_conn_path *cp); 348void rds_ib_state_change(struct sock *sk); 349int rds_ib_listen_init(void); 350void rds_ib_listen_stop(void); 351__printf(2, 3) 352void __rds_ib_conn_error(struct rds_connection *conn, const char *, ...); 353int rds_ib_cm_handle_connect(struct rdma_cm_id *cm_id, | 100struct rds_ib_send_work { 101 void *s_op; 102 union { 103 struct ib_send_wr s_wr; 104 struct ib_rdma_wr s_rdma_wr; 105 struct ib_atomic_wr s_atomic_wr; 106 }; 107 struct ib_sge s_sge[RDS_IB_MAX_SGE]; --- 266 unchanged lines hidden (view full) --- 374int rds_ib_conn_path_connect(struct rds_conn_path *cp); 375void rds_ib_conn_path_shutdown(struct rds_conn_path *cp); 376void rds_ib_state_change(struct sock *sk); 377int rds_ib_listen_init(void); 378void rds_ib_listen_stop(void); 379__printf(2, 3) 380void __rds_ib_conn_error(struct rds_connection *conn, const char *, ...); 381int rds_ib_cm_handle_connect(struct rdma_cm_id *cm_id, |
354 struct rdma_cm_event *event); 355int rds_ib_cm_initiate_connect(struct rdma_cm_id *cm_id); | 382 struct rdma_cm_event *event, bool isv6); 383int rds_ib_cm_initiate_connect(struct rdma_cm_id *cm_id, bool isv6); |
356void rds_ib_cm_connect_complete(struct rds_connection *conn, 357 struct rdma_cm_event *event); 358 359 360#define rds_ib_conn_error(conn, fmt...) \ 361 __rds_ib_conn_error(conn, KERN_WARNING "RDS/IB: " fmt) 362 363/* ib_rdma.c */ | 384void rds_ib_cm_connect_complete(struct rds_connection *conn, 385 struct rdma_cm_event *event); 386 387 388#define rds_ib_conn_error(conn, fmt...) \ 389 __rds_ib_conn_error(conn, KERN_WARNING "RDS/IB: " fmt) 390 391/* ib_rdma.c */ |
364int rds_ib_update_ipaddr(struct rds_ib_device *rds_ibdev, __be32 ipaddr); | 392int rds_ib_update_ipaddr(struct rds_ib_device *rds_ibdev, 393 struct in6_addr *ipaddr); |
365void rds_ib_add_conn(struct rds_ib_device *rds_ibdev, struct rds_connection *conn); 366void rds_ib_remove_conn(struct rds_ib_device *rds_ibdev, struct rds_connection *conn); 367void rds_ib_destroy_nodev_conns(void); 368void rds_ib_mr_cqe_handler(struct rds_ib_connection *ic, struct ib_wc *wc); 369 370/* ib_recv.c */ 371int rds_ib_recv_init(void); 372void rds_ib_recv_exit(void); --- 62 unchanged lines hidden --- | 394void rds_ib_add_conn(struct rds_ib_device *rds_ibdev, struct rds_connection *conn); 395void rds_ib_remove_conn(struct rds_ib_device *rds_ibdev, struct rds_connection *conn); 396void rds_ib_destroy_nodev_conns(void); 397void rds_ib_mr_cqe_handler(struct rds_ib_connection *ic, struct ib_wc *wc); 398 399/* ib_recv.c */ 400int rds_ib_recv_init(void); 401void rds_ib_recv_exit(void); --- 62 unchanged lines hidden --- |