RDS: Implement atomic operations
Implement a CMSG-based interface to do FADD and CSWP ops. Alter send routines to handle atomic ops. Add atomic counters to stats. Add xmit_atomic() to struct rds_transport Inline rds_ib_send_unmap_rdma into unmap_rm Signed-off-by: Andy Grover <andy.grover@oracle.com>
This commit is contained in:
@@ -73,6 +73,8 @@
|
||||
#define RDS_CMSG_RDMA_MAP 3
|
||||
#define RDS_CMSG_RDMA_STATUS 4
|
||||
#define RDS_CMSG_CONG_UPDATE 5
|
||||
#define RDS_CMSG_ATOMIC_FADD 6
|
||||
#define RDS_CMSG_ATOMIC_CSWP 7
|
||||
|
||||
#define RDS_INFO_FIRST 10000
|
||||
#define RDS_INFO_COUNTERS 10000
|
||||
@@ -237,6 +239,23 @@ struct rds_rdma_args {
|
||||
u_int64_t user_token;
|
||||
};
|
||||
|
||||
struct rds_atomic_args {
|
||||
rds_rdma_cookie_t cookie;
|
||||
uint64_t local_addr;
|
||||
uint64_t remote_addr;
|
||||
union {
|
||||
struct {
|
||||
uint64_t compare;
|
||||
uint64_t swap;
|
||||
} cswp;
|
||||
struct {
|
||||
uint64_t add;
|
||||
} fadd;
|
||||
};
|
||||
uint64_t flags;
|
||||
uint64_t user_token;
|
||||
};
|
||||
|
||||
struct rds_rdma_notify {
|
||||
u_int64_t user_token;
|
||||
int32_t status;
|
||||
|
Reference in New Issue
Block a user