diff options
author | Andy Grover | 2010-01-12 23:33:38 +0100 |
---|---|---|
committer | Andy Grover | 2010-09-09 03:11:41 +0200 |
commit | 15133f6e67d8d646d0744336b4daa3135452cb0d (patch) | |
tree | e5675d5a3ab240edc9a66af6b891dd75fa9eabae /include/linux/rds.h | |
parent | RDS: Clear up some confusing code in send_remove_from_sock (diff) | |
download | kernel-qcow2-linux-15133f6e67d8d646d0744336b4daa3135452cb0d.tar.gz kernel-qcow2-linux-15133f6e67d8d646d0744336b4daa3135452cb0d.tar.xz kernel-qcow2-linux-15133f6e67d8d646d0744336b4daa3135452cb0d.zip |
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>
Diffstat (limited to 'include/linux/rds.h')
-rw-r--r-- | include/linux/rds.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/include/linux/rds.h b/include/linux/rds.h index 7f3971d9fc5c..9239152abf7a 100644 --- a/include/linux/rds.h +++ b/include/linux/rds.h @@ -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; |