Is Atomic Fetch-and-Add on DPA expected to return fetched value?

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:

  1. 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?

  1. 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!