Hi,
I am testing RDMA atomic fetch-and-add on BlueField-3 DPA and would like to confirm whether this feature is expected to be fully supported on DPA side (including the fetch result), or if my implementation is incorrect.
Environment
-
Hardware: BlueField-3
-
DOCA version: 3.2.1025
-
Scenario: two-node RDMA communication (initiator/target), operations are posted from DPA kernels (not host)
-
Base sample: modified from DOCA verbs initiator/target sample
My questions
I have two main confusions:
- API difference between host RDMA and DPA RDMA
-
In doca_rdma.h, atomic fetch-and-add task API has result_buf (to store fetched old value).
-
In doca_dpa_dev_rdma.h, doca_dpa_dev_rdma_post_atomic_fetch_add(…) has no result buffer argument.
-
Does this mean DPA-side API is only guaranteed to perform atomic add, but not expose fetch result?
- Observed behavior with doca_dpa_dev_verbs.h
-
I used DOCA_DPA_DEV_VERBS_SEND_WR_OPCODE_ATOMIC_FETCH_ADD in DPA kernel.
-
Remote value is updated correctly.
-
Completion reports send success and opcode is atomic fetch-add.
-
But local buffer is not updated with fetched old value after atomic completion.
-
If I then issue an explicit RDMA READ, I can read the updated remote value correctly.
So I want to confirm:
Is “fetch result returned to local buffer” expected for DPA verbs atomic fetch-and-add, or currently unsupported / not guaranteed?
Thanks!