Commit 6094c85a935f7eadb4c607c6dc6d86c0a9f09a4b

Authored by Linus Torvalds

Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband:
  IB/mlx4: Fix reading SL field out of cqe->sl_vid
  RDMA/addr: Fix build breakage when IPv6 is disabled

Showing 3 changed files Side-by-side Diff

drivers/infiniband/Kconfig
... ... @@ -37,6 +37,7 @@
37 37 config INFINIBAND_ADDR_TRANS
38 38 bool
39 39 depends on INET
  40 + depends on !(INFINIBAND = y && IPV6 = m)
40 41 default y
41 42  
42 43 source "drivers/infiniband/hw/mthca/Kconfig"
drivers/infiniband/core/addr.c
... ... @@ -128,6 +128,8 @@
128 128 ret = rdma_copy_addr(dev_addr, dev, NULL);
129 129 dev_put(dev);
130 130 break;
  131 +
  132 +#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
131 133 case AF_INET6:
132 134 for_each_netdev(&init_net, dev) {
133 135 if (ipv6_chk_addr(&init_net,
... ... @@ -138,8 +140,7 @@
138 140 }
139 141 }
140 142 break;
141   - default:
142   - break;
  143 +#endif
143 144 }
144 145 return ret;
145 146 }
146 147  
... ... @@ -179,10 +180,11 @@
179 180 {
180 181 struct rtable *rt;
181 182 struct flowi fl;
182   - struct dst_entry *dst;
183 183  
184 184 memset(&fl, 0, sizeof fl);
185   - if (dst_in->sa_family == AF_INET) {
  185 +
  186 + switch (dst_in->sa_family) {
  187 + case AF_INET:
186 188 fl.nl_u.ip4_u.daddr =
187 189 ((struct sockaddr_in *) dst_in)->sin_addr.s_addr;
188 190  
189 191  
... ... @@ -191,8 +193,13 @@
191 193  
192 194 neigh_event_send(rt->u.dst.neighbour, NULL);
193 195 ip_rt_put(rt);
  196 + break;
194 197  
195   - } else {
  198 +#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
  199 + case AF_INET6:
  200 + {
  201 + struct dst_entry *dst;
  202 +
196 203 fl.nl_u.ip6_u.daddr =
197 204 ((struct sockaddr_in6 *) dst_in)->sin6_addr;
198 205  
199 206  
... ... @@ -202,7 +209,10 @@
202 209  
203 210 neigh_event_send(dst->neighbour, NULL);
204 211 dst_release(dst);
  212 + break;
205 213 }
  214 +#endif
  215 + }
206 216 }
207 217  
208 218 static int addr4_resolve_remote(struct sockaddr_in *src_in,
... ... @@ -254,6 +264,7 @@
254 264 return ret;
255 265 }
256 266  
  267 +#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
257 268 static int addr6_resolve_remote(struct sockaddr_in6 *src_in,
258 269 struct sockaddr_in6 *dst_in,
259 270 struct rdma_dev_addr *addr)
... ... @@ -282,6 +293,14 @@
282 293 dst_release(dst);
283 294 return ret;
284 295 }
  296 +#else
  297 +static int addr6_resolve_remote(struct sockaddr_in6 *src_in,
  298 + struct sockaddr_in6 *dst_in,
  299 + struct rdma_dev_addr *addr)
  300 +{
  301 + return -EADDRNOTAVAIL;
  302 +}
  303 +#endif
285 304  
286 305 static int addr_resolve_remote(struct sockaddr *src_in,
287 306 struct sockaddr *dst_in,
... ... @@ -340,7 +359,9 @@
340 359 struct net_device *dev;
341 360 int ret;
342 361  
343   - if (dst_in->sa_family == AF_INET) {
  362 + switch (dst_in->sa_family) {
  363 + case AF_INET:
  364 + {
344 365 __be32 src_ip = ((struct sockaddr_in *) src_in)->sin_addr.s_addr;
345 366 __be32 dst_ip = ((struct sockaddr_in *) dst_in)->sin_addr.s_addr;
346 367  
... ... @@ -362,7 +383,12 @@
362 383 memcpy(addr->dst_dev_addr, dev->dev_addr, MAX_ADDR_LEN);
363 384 }
364 385 dev_put(dev);
365   - } else {
  386 + break;
  387 + }
  388 +
  389 +#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
  390 + case AF_INET6:
  391 + {
366 392 struct in6_addr *a;
367 393  
368 394 for_each_netdev(&init_net, dev)
... ... @@ -390,6 +416,13 @@
390 416 if (!ret)
391 417 memcpy(addr->dst_dev_addr, dev->dev_addr, MAX_ADDR_LEN);
392 418 }
  419 + break;
  420 + }
  421 +#endif
  422 +
  423 + default:
  424 + ret = -EADDRNOTAVAIL;
  425 + break;
393 426 }
394 427  
395 428 return ret;
drivers/infiniband/hw/mlx4/cq.c
... ... @@ -699,7 +699,7 @@
699 699 }
700 700  
701 701 wc->slid = be16_to_cpu(cqe->rlid);
702   - wc->sl = be16_to_cpu(cqe->sl_vid >> 12);
  702 + wc->sl = be16_to_cpu(cqe->sl_vid) >> 12;
703 703 g_mlpath_rqpn = be32_to_cpu(cqe->g_mlpath_rqpn);
704 704 wc->src_qp = g_mlpath_rqpn & 0xffffff;
705 705 wc->dlid_path_bits = (g_mlpath_rqpn >> 24) & 0x7f;