How to implement CAS with mask through RDMA-core after the Infiniband driver is upgraded from 4 to 5

struct ibv_send_wr {
uint64_t wr_id;
struct ibv_send_wr *next;
struct ibv_sge sg_list;
int num_sge;
enum ibv_wr_opcode opcode;
unsigned int send_flags;
/
When opcode is *_WITH_IMM: Immediate data in network byte order.
* When opcode is *_INV: Stores the rkey to invalidate
*/
union {
__be32 imm_data;
uint32_t invalidate_rkey;
};
union {
struct {
uint64_t remote_addr;
uint32_t rkey;
} rdma;
struct {
uint64_t remote_addr;
uint64_t compare_add;
uint64_t swap;
uint32_t rkey;
} atomic;
struct {
struct ibv_ah *ah;
uint32_t remote_qpn;
uint32_t remote_qkey;
} ud;
} wr;
union {
struct {
uint32_t remote_srqn;
} xrc;
} qp_type;
union {
struct {
struct ibv_mw *mw;
uint32_t rkey;
struct ibv_mw_bind_info bind_info;
} bind_mw;
struct {
void *hdr;
uint16_t hdr_sz;
uint16_t mss;
} tso;
};
};

not mask params in atomic

There is no support for any of the extended atomic operations available in the current rdma-core library.

The extended atomic operations were previously maintained as experimental verbs in older MOFED releases where Nvidia maintained the userspace libraries. The MOFED releases now use the upstream rdma-core libraries and these APIs were never pushed into the upstream.

There are currently no plans to incorporate these APIs back into rdma-core.

thank you.

Migration to RDMA-Core - NVIDIA Docs. “Application owners can still choose to install the experimental verbs API and use the verbs (using a special installation flag).” in this document. How to use a special installation flag?