aboutsummaryrefslogtreecommitdiffstats
path: root/include/rdma/ib_addr.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/rdma/ib_addr.h')
-rw-r--r--include/rdma/ib_addr.h27
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
73void rdma_addr_cancel(struct rdma_dev_addr *addr); 73void rdma_addr_cancel(struct rdma_dev_addr *addr);
74 74
75int rdma_copy_addr(struct rdma_dev_addr *dev_addr, struct net_device *dev,
76 const unsigned char *dst_dev_addr);
77
75static inline int ip_addr_size(struct sockaddr *addr) 78static 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
92static inline union ib_gid *ib_addr_get_sgid(struct rdma_dev_addr *dev_addr) 95static 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
97static inline void ib_addr_set_sgid(struct rdma_dev_addr *dev_addr, 101static 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
103static inline union ib_gid *ib_addr_get_dgid(struct rdma_dev_addr *dev_addr) 107static 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
108static inline void ib_addr_set_dgid(struct rdma_dev_addr *dev_addr, 113static 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
119static 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
125static 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 */