diff options
author | Tom Tucker <tom@opengridcomputing.com> | 2006-08-03 17:02:42 -0400 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2006-09-22 18:22:47 -0400 |
commit | 07ebafbaaa72aa6a35472879008f5a1d1d469a0c (patch) | |
tree | c42ed5c70e5bea1382f1cbde3f4a70d172e2f650 /drivers/infiniband/core/addr.c | |
parent | 922a8e9fb2e0711212badce47a41137e2ca04cb3 (diff) |
RDMA: iWARP Core Changes.
Modifications to the existing rdma header files, core files, drivers,
and ulp files to support iWARP, including:
- Hook iWARP CM into the build system and use it in rdma_cm.
- Convert enum ib_node_type to enum rdma_node_type, which includes
the possibility of RDMA_NODE_RNIC, and update everything for this.
Signed-off-by: Tom Tucker <tom@opengridcomputing.com>
Signed-off-by: Steve Wise <swise@opengridcomputing.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'drivers/infiniband/core/addr.c')
-rw-r--r-- | drivers/infiniband/core/addr.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/drivers/infiniband/core/addr.c b/drivers/infiniband/core/addr.c index d8e54e002ce3..9cbf09e2052f 100644 --- a/drivers/infiniband/core/addr.c +++ b/drivers/infiniband/core/addr.c | |||
@@ -61,12 +61,15 @@ static LIST_HEAD(req_list); | |||
61 | static DECLARE_WORK(work, process_req, NULL); | 61 | static DECLARE_WORK(work, process_req, NULL); |
62 | static struct workqueue_struct *addr_wq; | 62 | static struct workqueue_struct *addr_wq; |
63 | 63 | ||
64 | static int copy_addr(struct rdma_dev_addr *dev_addr, struct net_device *dev, | 64 | int rdma_copy_addr(struct rdma_dev_addr *dev_addr, struct net_device *dev, |
65 | unsigned char *dst_dev_addr) | 65 | const unsigned char *dst_dev_addr) |
66 | { | 66 | { |
67 | switch (dev->type) { | 67 | switch (dev->type) { |
68 | case ARPHRD_INFINIBAND: | 68 | case ARPHRD_INFINIBAND: |
69 | dev_addr->dev_type = IB_NODE_CA; | 69 | dev_addr->dev_type = RDMA_NODE_IB_CA; |
70 | break; | ||
71 | case ARPHRD_ETHER: | ||
72 | dev_addr->dev_type = RDMA_NODE_RNIC; | ||
70 | break; | 73 | break; |
71 | default: | 74 | default: |
72 | return -EADDRNOTAVAIL; | 75 | return -EADDRNOTAVAIL; |
@@ -78,6 +81,7 @@ static int copy_addr(struct rdma_dev_addr *dev_addr, struct net_device *dev, | |||
78 | memcpy(dev_addr->dst_dev_addr, dst_dev_addr, MAX_ADDR_LEN); | 81 | memcpy(dev_addr->dst_dev_addr, dst_dev_addr, MAX_ADDR_LEN); |
79 | return 0; | 82 | return 0; |
80 | } | 83 | } |
84 | EXPORT_SYMBOL(rdma_copy_addr); | ||
81 | 85 | ||
82 | int rdma_translate_ip(struct sockaddr *addr, struct rdma_dev_addr *dev_addr) | 86 | int rdma_translate_ip(struct sockaddr *addr, struct rdma_dev_addr *dev_addr) |
83 | { | 87 | { |
@@ -89,7 +93,7 @@ int rdma_translate_ip(struct sockaddr *addr, struct rdma_dev_addr *dev_addr) | |||
89 | if (!dev) | 93 | if (!dev) |
90 | return -EADDRNOTAVAIL; | 94 | return -EADDRNOTAVAIL; |
91 | 95 | ||
92 | ret = copy_addr(dev_addr, dev, NULL); | 96 | ret = rdma_copy_addr(dev_addr, dev, NULL); |
93 | dev_put(dev); | 97 | dev_put(dev); |
94 | return ret; | 98 | return ret; |
95 | } | 99 | } |
@@ -161,7 +165,7 @@ static int addr_resolve_remote(struct sockaddr_in *src_in, | |||
161 | 165 | ||
162 | /* If the device does ARP internally, return 'done' */ | 166 | /* If the device does ARP internally, return 'done' */ |
163 | if (rt->idev->dev->flags & IFF_NOARP) { | 167 | if (rt->idev->dev->flags & IFF_NOARP) { |
164 | copy_addr(addr, rt->idev->dev, NULL); | 168 | rdma_copy_addr(addr, rt->idev->dev, NULL); |
165 | goto put; | 169 | goto put; |
166 | } | 170 | } |
167 | 171 | ||
@@ -181,7 +185,7 @@ static int addr_resolve_remote(struct sockaddr_in *src_in, | |||
181 | src_in->sin_addr.s_addr = rt->rt_src; | 185 | src_in->sin_addr.s_addr = rt->rt_src; |
182 | } | 186 | } |
183 | 187 | ||
184 | ret = copy_addr(addr, neigh->dev, neigh->ha); | 188 | ret = rdma_copy_addr(addr, neigh->dev, neigh->ha); |
185 | release: | 189 | release: |
186 | neigh_release(neigh); | 190 | neigh_release(neigh); |
187 | put: | 191 | put: |
@@ -245,7 +249,7 @@ static int addr_resolve_local(struct sockaddr_in *src_in, | |||
245 | if (ZERONET(src_ip)) { | 249 | if (ZERONET(src_ip)) { |
246 | src_in->sin_family = dst_in->sin_family; | 250 | src_in->sin_family = dst_in->sin_family; |
247 | src_in->sin_addr.s_addr = dst_ip; | 251 | src_in->sin_addr.s_addr = dst_ip; |
248 | ret = copy_addr(addr, dev, dev->dev_addr); | 252 | ret = rdma_copy_addr(addr, dev, dev->dev_addr); |
249 | } else if (LOOPBACK(src_ip)) { | 253 | } else if (LOOPBACK(src_ip)) { |
250 | ret = rdma_translate_ip((struct sockaddr *)dst_in, addr); | 254 | ret = rdma_translate_ip((struct sockaddr *)dst_in, addr); |
251 | if (!ret) | 255 | if (!ret) |