Skip to content

Remove av from user-shared buffer #2

@planetA

Description

@planetA

When posting a UD WQE, the user-level buffer code provides the full address (destination GID), instead of AH handle. This seems to be unnecessary because it increases the message size and happens in the kernel anyway. Why do the same work twice?

To solve the issue, the following structure must be unshared from the user code (similar changes to be done in rdma-core repo)

struct rxe_av {
__u8 port_num;
__u8 network_type;
__u8 dmac[6];
struct rxe_global_route grh;
union {
struct sockaddr_in _sockaddr_in;
struct sockaddr_in6 _sockaddr_in6;
} sgid_addr, dgid_addr;
};

The API must be restructured to pass AH handle instead of AV.

The corresponding snippets in the rdma-core are following:

https://github.com/planetA/rdma-core/blob/54c238172ce90ee3513c946eeaa25965f88e7620/providers/rxe/rxe.c#L605-L607

https://github.com/planetA/rdma-core/blob/54c238172ce90ee3513c946eeaa25965f88e7620/kernel-headers/rdma/rdma_user_rxe.h#L58-L67

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions