diff options
Diffstat (limited to 'include/rdma/ib_addr.h')
| -rw-r--r-- | include/rdma/ib_addr.h | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/include/rdma/ib_addr.h b/include/rdma/ib_addr.h index 81b62307621d..c094e5012862 100644 --- a/include/rdma/ib_addr.h +++ b/include/rdma/ib_addr.h | |||
| @@ -36,6 +36,22 @@ | |||
| 36 | #include <linux/socket.h> | 36 | #include <linux/socket.h> |
| 37 | #include <rdma/ib_verbs.h> | 37 | #include <rdma/ib_verbs.h> |
| 38 | 38 | ||
| 39 | struct rdma_addr_client { | ||
| 40 | atomic_t refcount; | ||
| 41 | struct completion comp; | ||
| 42 | }; | ||
| 43 | |||
| 44 | /** | ||
| 45 | * rdma_addr_register_client - Register an address client. | ||
| 46 | */ | ||
| 47 | void rdma_addr_register_client(struct rdma_addr_client *client); | ||
| 48 | |||
| 49 | /** | ||
| 50 | * rdma_addr_unregister_client - Deregister an address client. | ||
| 51 | * @client: Client object to deregister. | ||
| 52 | */ | ||
| 53 | void rdma_addr_unregister_client(struct rdma_addr_client *client); | ||
| 54 | |||
| 39 | struct rdma_dev_addr { | 55 | struct rdma_dev_addr { |
| 40 | unsigned char src_dev_addr[MAX_ADDR_LEN]; | 56 | unsigned char src_dev_addr[MAX_ADDR_LEN]; |
| 41 | unsigned char dst_dev_addr[MAX_ADDR_LEN]; | 57 | unsigned char dst_dev_addr[MAX_ADDR_LEN]; |
| @@ -52,6 +68,7 @@ int rdma_translate_ip(struct sockaddr *addr, struct rdma_dev_addr *dev_addr); | |||
| 52 | /** | 68 | /** |
| 53 | * rdma_resolve_ip - Resolve source and destination IP addresses to | 69 | * rdma_resolve_ip - Resolve source and destination IP addresses to |
| 54 | * RDMA hardware addresses. | 70 | * RDMA hardware addresses. |
| 71 | * @client: Address client associated with request. | ||
| 55 | * @src_addr: An optional source address to use in the resolution. If a | 72 | * @src_addr: An optional source address to use in the resolution. If a |
| 56 | * source address is not provided, a usable address will be returned via | 73 | * source address is not provided, a usable address will be returned via |
| 57 | * the callback. | 74 | * the callback. |
| @@ -64,7 +81,8 @@ int rdma_translate_ip(struct sockaddr *addr, struct rdma_dev_addr *dev_addr); | |||
| 64 | * or been canceled. A status of 0 indicates success. | 81 | * or been canceled. A status of 0 indicates success. |
| 65 | * @context: User-specified context associated with the call. | 82 | * @context: User-specified context associated with the call. |
| 66 | */ | 83 | */ |
| 67 | int rdma_resolve_ip(struct sockaddr *src_addr, struct sockaddr *dst_addr, | 84 | int rdma_resolve_ip(struct rdma_addr_client *client, |
| 85 | struct sockaddr *src_addr, struct sockaddr *dst_addr, | ||
| 68 | struct rdma_dev_addr *addr, int timeout_ms, | 86 | struct rdma_dev_addr *addr, int timeout_ms, |
| 69 | void (*callback)(int status, struct sockaddr *src_addr, | 87 | void (*callback)(int status, struct sockaddr *src_addr, |
| 70 | struct rdma_dev_addr *addr, void *context), | 88 | struct rdma_dev_addr *addr, void *context), |
