diff options
Diffstat (limited to 'include/rdma/ib_addr.h')
| -rw-r--r-- | include/rdma/ib_addr.h | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/include/rdma/ib_addr.h b/include/rdma/ib_addr.h index fcb5ba87dcc5..81b62307621d 100644 --- a/include/rdma/ib_addr.h +++ b/include/rdma/ib_addr.h | |||
| @@ -40,7 +40,7 @@ struct rdma_dev_addr { | |||
| 40 | unsigned char src_dev_addr[MAX_ADDR_LEN]; | 40 | unsigned char src_dev_addr[MAX_ADDR_LEN]; |
| 41 | unsigned char dst_dev_addr[MAX_ADDR_LEN]; | 41 | unsigned char dst_dev_addr[MAX_ADDR_LEN]; |
| 42 | unsigned char broadcast[MAX_ADDR_LEN]; | 42 | unsigned char broadcast[MAX_ADDR_LEN]; |
| 43 | enum ib_node_type dev_type; | 43 | enum rdma_node_type dev_type; |
| 44 | }; | 44 | }; |
| 45 | 45 | ||
| 46 | /** | 46 | /** |
| @@ -72,6 +72,9 @@ int rdma_resolve_ip(struct sockaddr *src_addr, struct sockaddr *dst_addr, | |||
| 72 | 72 | ||
| 73 | void rdma_addr_cancel(struct rdma_dev_addr *addr); | 73 | void rdma_addr_cancel(struct rdma_dev_addr *addr); |
| 74 | 74 | ||
| 75 | int rdma_copy_addr(struct rdma_dev_addr *dev_addr, struct net_device *dev, | ||
| 76 | const unsigned char *dst_dev_addr); | ||
| 77 | |||
| 75 | static inline int ip_addr_size(struct sockaddr *addr) | 78 | static inline int ip_addr_size(struct sockaddr *addr) |
| 76 | { | 79 | { |
| 77 | return addr->sa_family == AF_INET6 ? | 80 | return addr->sa_family == AF_INET6 ? |
| @@ -89,9 +92,10 @@ static inline void ib_addr_set_pkey(struct rdma_dev_addr *dev_addr, u16 pkey) | |||
| 89 | dev_addr->broadcast[9] = (unsigned char) pkey; | 92 | dev_addr->broadcast[9] = (unsigned char) pkey; |
| 90 | } | 93 | } |
| 91 | 94 | ||
| 92 | static inline union ib_gid *ib_addr_get_sgid(struct rdma_dev_addr *dev_addr) | 95 | static inline void ib_addr_get_sgid(struct rdma_dev_addr *dev_addr, |
| 96 | union ib_gid *gid) | ||
| 93 | { | 97 | { |
| 94 | return (union ib_gid *) (dev_addr->src_dev_addr + 4); | 98 | memcpy(gid, dev_addr->src_dev_addr + 4, sizeof *gid); |
| 95 | } | 99 | } |
| 96 | 100 | ||
| 97 | static inline void ib_addr_set_sgid(struct rdma_dev_addr *dev_addr, | 101 | static inline void ib_addr_set_sgid(struct rdma_dev_addr *dev_addr, |
| @@ -100,9 +104,10 @@ static inline void ib_addr_set_sgid(struct rdma_dev_addr *dev_addr, | |||
| 100 | memcpy(dev_addr->src_dev_addr + 4, gid, sizeof *gid); | 104 | memcpy(dev_addr->src_dev_addr + 4, gid, sizeof *gid); |
| 101 | } | 105 | } |
| 102 | 106 | ||
| 103 | static inline union ib_gid *ib_addr_get_dgid(struct rdma_dev_addr *dev_addr) | 107 | static inline void ib_addr_get_dgid(struct rdma_dev_addr *dev_addr, |
| 108 | union ib_gid *gid) | ||
| 104 | { | 109 | { |
| 105 | return (union ib_gid *) (dev_addr->dst_dev_addr + 4); | 110 | memcpy(gid, dev_addr->dst_dev_addr + 4, sizeof *gid); |
| 106 | } | 111 | } |
| 107 | 112 | ||
| 108 | static inline void ib_addr_set_dgid(struct rdma_dev_addr *dev_addr, | 113 | static inline void ib_addr_set_dgid(struct rdma_dev_addr *dev_addr, |
| @@ -111,4 +116,16 @@ static inline void ib_addr_set_dgid(struct rdma_dev_addr *dev_addr, | |||
| 111 | memcpy(dev_addr->dst_dev_addr + 4, gid, sizeof *gid); | 116 | memcpy(dev_addr->dst_dev_addr + 4, gid, sizeof *gid); |
| 112 | } | 117 | } |
| 113 | 118 | ||
| 119 | static inline void iw_addr_get_sgid(struct rdma_dev_addr *dev_addr, | ||
| 120 | union ib_gid *gid) | ||
| 121 | { | ||
| 122 | memcpy(gid, dev_addr->src_dev_addr, sizeof *gid); | ||
| 123 | } | ||
| 124 | |||
| 125 | static inline void iw_addr_get_dgid(struct rdma_dev_addr *dev_addr, | ||
| 126 | union ib_gid *gid) | ||
| 127 | { | ||
| 128 | memcpy(gid, dev_addr->dst_dev_addr, sizeof *gid); | ||
| 129 | } | ||
| 130 | |||
| 114 | #endif /* IB_ADDR_H */ | 131 | #endif /* IB_ADDR_H */ |
