On 12/30/2021 2:21 PM, Gromadzki, Tomasz wrote:
1)
rdma_post_atomic_writev(struct rdma_cm_id *id, void *context, struct ibv_sge *sgl,
int nsge, int flags, uint64_t remote_addr, uint32_t rkey)
Do we need this API at all?
Other atomic operations (compare_swap/add) do not use struct ibv_sge at all but have a dedicated place in
struct ib_send_wr {
...
struct {
uint64_t remote_addr;
uint64_t compare_add;
uint64_t swap;
uint32_t rkey;
} atomic;
...
}
Would it be better to reuse (extend) any existing field?
i.e.
struct {
uint64_t remote_addr;
uint64_t compare_add;
uint64_t swap_write;
uint32_t rkey;
} atomic;
Agreed. Passing the data to be written as an SGE is unnatural
since it is always exactly 64 bits. Tweaking the existing atomic
parameter block as Tomasz suggests is the best approach.
Tom.
Thanks
Tomasz
-----Original Message-----
From: Xiao Yang <yangx.jy@xxxxxxxxxxx>
Sent: Thursday, December 30, 2021 1:14 PM
To: linux-rdma@xxxxxxxxxxxxxxx
Cc: yanjun.zhu@xxxxxxxxx; rpearsonhpe@xxxxxxxxx; jgg@xxxxxxxxxx; y-
goto@xxxxxxxxxxx; lizhijian@xxxxxxxxxxx; Gromadzki, Tomasz
<tomasz.gromadzki@xxxxxxxxx>; Xiao Yang <yangx.jy@xxxxxxxxxxx>
Subject: [RFC PATCH 0/2] RDMA/rxe: Add RDMA Atomic Write operation
The IB SPEC v1.5[1][2] added new RDMA operations (Atomic Write and
Flush).
This patchset makes SoftRoCE support new RDMA Atomic Write on RC
service.
I added RDMA Atomic Write API and a rdma_atomic_write example on my
rdma-core repository[3]. You can verify the patchset by building and running
the rdma_atomic_write example.
server:
$ ./rdma_atomic_write_server -s [server_address] -p [port_number]
client:
$ ./rdma_atomic_write_client -s [server_address] -p [port_number]
[1]: https://www.infinibandta.org/ibta-specification/ # login required
[2]: https://www.infinibandta.org/wp-content/uploads/2021/08/IBTA-
Overview-of-IBTA-Volume-1-Release-1.5-and-MPE-2021-08-17-Secure.pptx
[3]: https://github.com/yangx-jy/rdma-core
BTW: This patchset also needs the following fix.
https://www.spinics.net/lists/linux-rdma/msg107838.html
Xiao Yang (2):
RDMA/rxe: Rename send_atomic_ack() and atomic member of struct
resp_res
RDMA/rxe: Add RDMA Atomic Write operation
drivers/infiniband/sw/rxe/rxe_comp.c | 4 ++
drivers/infiniband/sw/rxe/rxe_opcode.c | 18 ++++++++
drivers/infiniband/sw/rxe/rxe_opcode.h | 3 ++
drivers/infiniband/sw/rxe/rxe_qp.c | 5 ++-
drivers/infiniband/sw/rxe/rxe_req.c | 10 +++--
drivers/infiniband/sw/rxe/rxe_resp.c | 59 ++++++++++++++++++++------
drivers/infiniband/sw/rxe/rxe_verbs.h | 2 +-
include/rdma/ib_pack.h | 2 +
include/rdma/ib_verbs.h | 2 +
include/uapi/rdma/ib_user_verbs.h | 2 +
10 files changed, 88 insertions(+), 19 deletions(-)
--
2.23.0
---------------------------------------------------------------------
Intel Technology Poland sp. z o.o.
ul. Slowackiego 173 | 80-298 Gdansk | Sad Rejonowy Gdansk Polnoc | VII Wydzial Gospodarczy Krajowego Rejestru Sadowego - KRS 101882 | NIP 957-07-52-316 | Kapital zakladowy 200.000 PLN.
Ta wiadomosc wraz z zalacznikami jest przeznaczona dla okreslonego adresata i moze zawierac informacje poufne. W razie przypadkowego otrzymania tej wiadomosci, prosimy o powiadomienie nadawcy oraz trwale jej usuniecie; jakiekolwiek przegladanie lub rozpowszechnianie jest zabronione.
This e-mail and any attachments may contain confidential material for the sole use of the intended recipient(s). If you are not the intended recipient, please contact the sender and delete all copies; any review or distribution by others is strictly prohibited.