diff options
author | Steve Wise <swise@opengridcomputing.com> | 2016-02-26 10:18:03 -0500 |
---|---|---|
committer | Doug Ledford <dledford@redhat.com> | 2016-03-16 13:48:21 -0400 |
commit | 170003c894d93332e1b4162aa06864ad83eb302d (patch) | |
tree | 1dfa0ba42af2d815ff8b28848aff15ae50c0a293 | |
parent | 6a0dde89cc346588f7f610dbc0d75e100f9cb568 (diff) |
iw_cxgb4: remove port mapper related code
Now that most of the port mapper code been moved to iwcm, we can remove
it from iw_cxgb4.
Signed-off-by: Steve Wise <swise@opengridcomputing.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
-rw-r--r-- | drivers/infiniband/hw/cxgb4/cm.c | 220 | ||||
-rw-r--r-- | drivers/infiniband/hw/cxgb4/device.c | 67 | ||||
-rw-r--r-- | drivers/infiniband/hw/cxgb4/iw_cxgb4.h | 42 |
3 files changed, 65 insertions, 264 deletions
diff --git a/drivers/infiniband/hw/cxgb4/cm.c b/drivers/infiniband/hw/cxgb4/cm.c index cd2ff5f9518a..61518830ba11 100644 --- a/drivers/infiniband/hw/cxgb4/cm.c +++ b/drivers/infiniband/hw/cxgb4/cm.c | |||
@@ -302,7 +302,7 @@ void _c4iw_free_ep(struct kref *kref) | |||
302 | if (ep->com.remote_addr.ss_family == AF_INET6) { | 302 | if (ep->com.remote_addr.ss_family == AF_INET6) { |
303 | struct sockaddr_in6 *sin6 = | 303 | struct sockaddr_in6 *sin6 = |
304 | (struct sockaddr_in6 *) | 304 | (struct sockaddr_in6 *) |
305 | &ep->com.mapped_local_addr; | 305 | &ep->com.local_addr; |
306 | 306 | ||
307 | cxgb4_clip_release( | 307 | cxgb4_clip_release( |
308 | ep->com.dev->rdev.lldi.ports[0], | 308 | ep->com.dev->rdev.lldi.ports[0], |
@@ -314,12 +314,6 @@ void _c4iw_free_ep(struct kref *kref) | |||
314 | dst_release(ep->dst); | 314 | dst_release(ep->dst); |
315 | cxgb4_l2t_release(ep->l2t); | 315 | cxgb4_l2t_release(ep->l2t); |
316 | } | 316 | } |
317 | if (test_bit(RELEASE_MAPINFO, &ep->com.flags)) { | ||
318 | print_addr(&ep->com, __func__, "remove_mapinfo/mapping"); | ||
319 | iwpm_remove_mapinfo(&ep->com.local_addr, | ||
320 | &ep->com.mapped_local_addr); | ||
321 | iwpm_remove_mapping(&ep->com.local_addr, RDMA_NL_C4IW); | ||
322 | } | ||
323 | kfree(ep); | 317 | kfree(ep); |
324 | } | 318 | } |
325 | 319 | ||
@@ -455,7 +449,7 @@ static void act_open_req_arp_failure(void *handle, struct sk_buff *skb) | |||
455 | state_set(&ep->com, DEAD); | 449 | state_set(&ep->com, DEAD); |
456 | if (ep->com.remote_addr.ss_family == AF_INET6) { | 450 | if (ep->com.remote_addr.ss_family == AF_INET6) { |
457 | struct sockaddr_in6 *sin6 = | 451 | struct sockaddr_in6 *sin6 = |
458 | (struct sockaddr_in6 *)&ep->com.mapped_local_addr; | 452 | (struct sockaddr_in6 *)&ep->com.local_addr; |
459 | cxgb4_clip_release(ep->com.dev->rdev.lldi.ports[0], | 453 | cxgb4_clip_release(ep->com.dev->rdev.lldi.ports[0], |
460 | (const u32 *)&sin6->sin6_addr.s6_addr, 1); | 454 | (const u32 *)&sin6->sin6_addr.s6_addr, 1); |
461 | } | 455 | } |
@@ -568,54 +562,6 @@ static int send_abort(struct c4iw_ep *ep, struct sk_buff *skb, gfp_t gfp) | |||
568 | return c4iw_l2t_send(&ep->com.dev->rdev, skb, ep->l2t); | 562 | return c4iw_l2t_send(&ep->com.dev->rdev, skb, ep->l2t); |
569 | } | 563 | } |
570 | 564 | ||
571 | /* | ||
572 | * c4iw_form_pm_msg - Form a port mapper message with mapping info | ||
573 | */ | ||
574 | static void c4iw_form_pm_msg(struct c4iw_ep *ep, | ||
575 | struct iwpm_sa_data *pm_msg) | ||
576 | { | ||
577 | memcpy(&pm_msg->loc_addr, &ep->com.local_addr, | ||
578 | sizeof(ep->com.local_addr)); | ||
579 | memcpy(&pm_msg->rem_addr, &ep->com.remote_addr, | ||
580 | sizeof(ep->com.remote_addr)); | ||
581 | } | ||
582 | |||
583 | /* | ||
584 | * c4iw_form_reg_msg - Form a port mapper message with dev info | ||
585 | */ | ||
586 | static void c4iw_form_reg_msg(struct c4iw_dev *dev, | ||
587 | struct iwpm_dev_data *pm_msg) | ||
588 | { | ||
589 | memcpy(pm_msg->dev_name, dev->ibdev.name, IWPM_DEVNAME_SIZE); | ||
590 | memcpy(pm_msg->if_name, dev->rdev.lldi.ports[0]->name, | ||
591 | IWPM_IFNAME_SIZE); | ||
592 | } | ||
593 | |||
594 | static void c4iw_record_pm_msg(struct c4iw_ep *ep, | ||
595 | struct iwpm_sa_data *pm_msg) | ||
596 | { | ||
597 | memcpy(&ep->com.mapped_local_addr, &pm_msg->mapped_loc_addr, | ||
598 | sizeof(ep->com.mapped_local_addr)); | ||
599 | memcpy(&ep->com.mapped_remote_addr, &pm_msg->mapped_rem_addr, | ||
600 | sizeof(ep->com.mapped_remote_addr)); | ||
601 | } | ||
602 | |||
603 | static int get_remote_addr(struct c4iw_ep *parent_ep, struct c4iw_ep *child_ep) | ||
604 | { | ||
605 | int ret; | ||
606 | |||
607 | print_addr(&parent_ep->com, __func__, "get_remote_addr parent_ep "); | ||
608 | print_addr(&child_ep->com, __func__, "get_remote_addr child_ep "); | ||
609 | |||
610 | ret = iwpm_get_remote_info(&parent_ep->com.mapped_local_addr, | ||
611 | &child_ep->com.mapped_remote_addr, | ||
612 | &child_ep->com.remote_addr, RDMA_NL_C4IW); | ||
613 | if (ret) | ||
614 | PDBG("Unable to find remote peer addr info - err %d\n", ret); | ||
615 | |||
616 | return ret; | ||
617 | } | ||
618 | |||
619 | static void best_mtu(const unsigned short *mtus, unsigned short mtu, | 565 | static void best_mtu(const unsigned short *mtus, unsigned short mtu, |
620 | unsigned int *idx, int use_ts, int ipv6) | 566 | unsigned int *idx, int use_ts, int ipv6) |
621 | { | 567 | { |
@@ -645,13 +591,13 @@ static int send_connect(struct c4iw_ep *ep) | |||
645 | int wscale; | 591 | int wscale; |
646 | int win, sizev4, sizev6, wrlen; | 592 | int win, sizev4, sizev6, wrlen; |
647 | struct sockaddr_in *la = (struct sockaddr_in *) | 593 | struct sockaddr_in *la = (struct sockaddr_in *) |
648 | &ep->com.mapped_local_addr; | 594 | &ep->com.local_addr; |
649 | struct sockaddr_in *ra = (struct sockaddr_in *) | 595 | struct sockaddr_in *ra = (struct sockaddr_in *) |
650 | &ep->com.mapped_remote_addr; | 596 | &ep->com.remote_addr; |
651 | struct sockaddr_in6 *la6 = (struct sockaddr_in6 *) | 597 | struct sockaddr_in6 *la6 = (struct sockaddr_in6 *) |
652 | &ep->com.mapped_local_addr; | 598 | &ep->com.local_addr; |
653 | struct sockaddr_in6 *ra6 = (struct sockaddr_in6 *) | 599 | struct sockaddr_in6 *ra6 = (struct sockaddr_in6 *) |
654 | &ep->com.mapped_remote_addr; | 600 | &ep->com.remote_addr; |
655 | int ret; | 601 | int ret; |
656 | enum chip_type adapter_type = ep->com.dev->rdev.lldi.adapter_type; | 602 | enum chip_type adapter_type = ep->com.dev->rdev.lldi.adapter_type; |
657 | u32 isn = (prandom_u32() & ~7UL) - 1; | 603 | u32 isn = (prandom_u32() & ~7UL) - 1; |
@@ -1829,10 +1775,10 @@ static void send_fw_act_open_req(struct c4iw_ep *ep, unsigned int atid) | |||
1829 | req->le.filter = cpu_to_be32(cxgb4_select_ntuple( | 1775 | req->le.filter = cpu_to_be32(cxgb4_select_ntuple( |
1830 | ep->com.dev->rdev.lldi.ports[0], | 1776 | ep->com.dev->rdev.lldi.ports[0], |
1831 | ep->l2t)); | 1777 | ep->l2t)); |
1832 | sin = (struct sockaddr_in *)&ep->com.mapped_local_addr; | 1778 | sin = (struct sockaddr_in *)&ep->com.local_addr; |
1833 | req->le.lport = sin->sin_port; | 1779 | req->le.lport = sin->sin_port; |
1834 | req->le.u.ipv4.lip = sin->sin_addr.s_addr; | 1780 | req->le.u.ipv4.lip = sin->sin_addr.s_addr; |
1835 | sin = (struct sockaddr_in *)&ep->com.mapped_remote_addr; | 1781 | sin = (struct sockaddr_in *)&ep->com.remote_addr; |
1836 | req->le.pport = sin->sin_port; | 1782 | req->le.pport = sin->sin_port; |
1837 | req->le.u.ipv4.pip = sin->sin_addr.s_addr; | 1783 | req->le.u.ipv4.pip = sin->sin_addr.s_addr; |
1838 | req->tcb.t_state_to_astid = | 1784 | req->tcb.t_state_to_astid = |
@@ -2013,13 +1959,13 @@ static int c4iw_reconnect(struct c4iw_ep *ep) | |||
2013 | { | 1959 | { |
2014 | int err = 0; | 1960 | int err = 0; |
2015 | struct sockaddr_in *laddr = (struct sockaddr_in *) | 1961 | struct sockaddr_in *laddr = (struct sockaddr_in *) |
2016 | &ep->com.cm_id->local_addr; | 1962 | &ep->com.cm_id->m_local_addr; |
2017 | struct sockaddr_in *raddr = (struct sockaddr_in *) | 1963 | struct sockaddr_in *raddr = (struct sockaddr_in *) |
2018 | &ep->com.cm_id->remote_addr; | 1964 | &ep->com.cm_id->m_remote_addr; |
2019 | struct sockaddr_in6 *laddr6 = (struct sockaddr_in6 *) | 1965 | struct sockaddr_in6 *laddr6 = (struct sockaddr_in6 *) |
2020 | &ep->com.cm_id->local_addr; | 1966 | &ep->com.cm_id->m_local_addr; |
2021 | struct sockaddr_in6 *raddr6 = (struct sockaddr_in6 *) | 1967 | struct sockaddr_in6 *raddr6 = (struct sockaddr_in6 *) |
2022 | &ep->com.cm_id->remote_addr; | 1968 | &ep->com.cm_id->m_remote_addr; |
2023 | int iptype; | 1969 | int iptype; |
2024 | __u8 *ra; | 1970 | __u8 *ra; |
2025 | 1971 | ||
@@ -2038,7 +1984,7 @@ static int c4iw_reconnect(struct c4iw_ep *ep) | |||
2038 | insert_handle(ep->com.dev, &ep->com.dev->atid_idr, ep, ep->atid); | 1984 | insert_handle(ep->com.dev, &ep->com.dev->atid_idr, ep, ep->atid); |
2039 | 1985 | ||
2040 | /* find a route */ | 1986 | /* find a route */ |
2041 | if (ep->com.cm_id->local_addr.ss_family == AF_INET) { | 1987 | if (ep->com.cm_id->m_local_addr.ss_family == AF_INET) { |
2042 | ep->dst = find_route(ep->com.dev, laddr->sin_addr.s_addr, | 1988 | ep->dst = find_route(ep->com.dev, laddr->sin_addr.s_addr, |
2043 | raddr->sin_addr.s_addr, laddr->sin_port, | 1989 | raddr->sin_addr.s_addr, laddr->sin_port, |
2044 | raddr->sin_port, 0); | 1990 | raddr->sin_port, 0); |
@@ -2109,10 +2055,10 @@ static int act_open_rpl(struct c4iw_dev *dev, struct sk_buff *skb) | |||
2109 | struct sockaddr_in6 *ra6; | 2055 | struct sockaddr_in6 *ra6; |
2110 | 2056 | ||
2111 | ep = lookup_atid(t, atid); | 2057 | ep = lookup_atid(t, atid); |
2112 | la = (struct sockaddr_in *)&ep->com.mapped_local_addr; | 2058 | la = (struct sockaddr_in *)&ep->com.local_addr; |
2113 | ra = (struct sockaddr_in *)&ep->com.mapped_remote_addr; | 2059 | ra = (struct sockaddr_in *)&ep->com.remote_addr; |
2114 | la6 = (struct sockaddr_in6 *)&ep->com.mapped_local_addr; | 2060 | la6 = (struct sockaddr_in6 *)&ep->com.local_addr; |
2115 | ra6 = (struct sockaddr_in6 *)&ep->com.mapped_remote_addr; | 2061 | ra6 = (struct sockaddr_in6 *)&ep->com.remote_addr; |
2116 | 2062 | ||
2117 | PDBG("%s ep %p atid %u status %u errno %d\n", __func__, ep, atid, | 2063 | PDBG("%s ep %p atid %u status %u errno %d\n", __func__, ep, atid, |
2118 | status, status2errno(status)); | 2064 | status, status2errno(status)); |
@@ -2154,7 +2100,7 @@ static int act_open_rpl(struct c4iw_dev *dev, struct sk_buff *skb) | |||
2154 | if (ep->com.remote_addr.ss_family == AF_INET6) { | 2100 | if (ep->com.remote_addr.ss_family == AF_INET6) { |
2155 | struct sockaddr_in6 *sin6 = | 2101 | struct sockaddr_in6 *sin6 = |
2156 | (struct sockaddr_in6 *) | 2102 | (struct sockaddr_in6 *) |
2157 | &ep->com.mapped_local_addr; | 2103 | &ep->com.local_addr; |
2158 | cxgb4_clip_release( | 2104 | cxgb4_clip_release( |
2159 | ep->com.dev->rdev.lldi.ports[0], | 2105 | ep->com.dev->rdev.lldi.ports[0], |
2160 | (const u32 *) | 2106 | (const u32 *) |
@@ -2189,7 +2135,7 @@ static int act_open_rpl(struct c4iw_dev *dev, struct sk_buff *skb) | |||
2189 | 2135 | ||
2190 | if (ep->com.remote_addr.ss_family == AF_INET6) { | 2136 | if (ep->com.remote_addr.ss_family == AF_INET6) { |
2191 | struct sockaddr_in6 *sin6 = | 2137 | struct sockaddr_in6 *sin6 = |
2192 | (struct sockaddr_in6 *)&ep->com.mapped_local_addr; | 2138 | (struct sockaddr_in6 *)&ep->com.local_addr; |
2193 | cxgb4_clip_release(ep->com.dev->rdev.lldi.ports[0], | 2139 | cxgb4_clip_release(ep->com.dev->rdev.lldi.ports[0], |
2194 | (const u32 *)&sin6->sin6_addr.s6_addr, 1); | 2140 | (const u32 *)&sin6->sin6_addr.s6_addr, 1); |
2195 | } | 2141 | } |
@@ -2459,18 +2405,9 @@ static int pass_accept_req(struct c4iw_dev *dev, struct sk_buff *skb) | |||
2459 | child_ep->com.dev = dev; | 2405 | child_ep->com.dev = dev; |
2460 | child_ep->com.cm_id = NULL; | 2406 | child_ep->com.cm_id = NULL; |
2461 | 2407 | ||
2462 | /* | ||
2463 | * The mapped_local and mapped_remote addresses get setup with | ||
2464 | * the actual 4-tuple. The local address will be based on the | ||
2465 | * actual local address of the connection, but on the port number | ||
2466 | * of the parent listening endpoint. The remote address is | ||
2467 | * setup based on a query to the IWPM since we don't know what it | ||
2468 | * originally was before mapping. If no mapping was done, then | ||
2469 | * mapped_remote == remote, and mapped_local == local. | ||
2470 | */ | ||
2471 | if (iptype == 4) { | 2408 | if (iptype == 4) { |
2472 | struct sockaddr_in *sin = (struct sockaddr_in *) | 2409 | struct sockaddr_in *sin = (struct sockaddr_in *) |
2473 | &child_ep->com.mapped_local_addr; | 2410 | &child_ep->com.local_addr; |
2474 | 2411 | ||
2475 | sin->sin_family = PF_INET; | 2412 | sin->sin_family = PF_INET; |
2476 | sin->sin_port = local_port; | 2413 | sin->sin_port = local_port; |
@@ -2482,12 +2419,12 @@ static int pass_accept_req(struct c4iw_dev *dev, struct sk_buff *skb) | |||
2482 | &parent_ep->com.local_addr)->sin_port; | 2419 | &parent_ep->com.local_addr)->sin_port; |
2483 | sin->sin_addr.s_addr = *(__be32 *)local_ip; | 2420 | sin->sin_addr.s_addr = *(__be32 *)local_ip; |
2484 | 2421 | ||
2485 | sin = (struct sockaddr_in *)&child_ep->com.mapped_remote_addr; | 2422 | sin = (struct sockaddr_in *)&child_ep->com.remote_addr; |
2486 | sin->sin_family = PF_INET; | 2423 | sin->sin_family = PF_INET; |
2487 | sin->sin_port = peer_port; | 2424 | sin->sin_port = peer_port; |
2488 | sin->sin_addr.s_addr = *(__be32 *)peer_ip; | 2425 | sin->sin_addr.s_addr = *(__be32 *)peer_ip; |
2489 | } else { | 2426 | } else { |
2490 | sin6 = (struct sockaddr_in6 *)&child_ep->com.mapped_local_addr; | 2427 | sin6 = (struct sockaddr_in6 *)&child_ep->com.local_addr; |
2491 | sin6->sin6_family = PF_INET6; | 2428 | sin6->sin6_family = PF_INET6; |
2492 | sin6->sin6_port = local_port; | 2429 | sin6->sin6_port = local_port; |
2493 | memcpy(sin6->sin6_addr.s6_addr, local_ip, 16); | 2430 | memcpy(sin6->sin6_addr.s6_addr, local_ip, 16); |
@@ -2498,14 +2435,11 @@ static int pass_accept_req(struct c4iw_dev *dev, struct sk_buff *skb) | |||
2498 | &parent_ep->com.local_addr)->sin6_port; | 2435 | &parent_ep->com.local_addr)->sin6_port; |
2499 | memcpy(sin6->sin6_addr.s6_addr, local_ip, 16); | 2436 | memcpy(sin6->sin6_addr.s6_addr, local_ip, 16); |
2500 | 2437 | ||
2501 | sin6 = (struct sockaddr_in6 *)&child_ep->com.mapped_remote_addr; | 2438 | sin6 = (struct sockaddr_in6 *)&child_ep->com.remote_addr; |
2502 | sin6->sin6_family = PF_INET6; | 2439 | sin6->sin6_family = PF_INET6; |
2503 | sin6->sin6_port = peer_port; | 2440 | sin6->sin6_port = peer_port; |
2504 | memcpy(sin6->sin6_addr.s6_addr, peer_ip, 16); | 2441 | memcpy(sin6->sin6_addr.s6_addr, peer_ip, 16); |
2505 | } | 2442 | } |
2506 | memcpy(&child_ep->com.remote_addr, &child_ep->com.mapped_remote_addr, | ||
2507 | sizeof(child_ep->com.remote_addr)); | ||
2508 | get_remote_addr(parent_ep, child_ep); | ||
2509 | 2443 | ||
2510 | c4iw_get_ep(&parent_ep->com); | 2444 | c4iw_get_ep(&parent_ep->com); |
2511 | child_ep->parent_ep = parent_ep; | 2445 | child_ep->parent_ep = parent_ep; |
@@ -2522,7 +2456,7 @@ static int pass_accept_req(struct c4iw_dev *dev, struct sk_buff *skb) | |||
2522 | accept_cr(child_ep, skb, req); | 2456 | accept_cr(child_ep, skb, req); |
2523 | set_bit(PASS_ACCEPT_REQ, &child_ep->com.history); | 2457 | set_bit(PASS_ACCEPT_REQ, &child_ep->com.history); |
2524 | if (iptype == 6) { | 2458 | if (iptype == 6) { |
2525 | sin6 = (struct sockaddr_in6 *)&child_ep->com.mapped_local_addr; | 2459 | sin6 = (struct sockaddr_in6 *)&child_ep->com.local_addr; |
2526 | cxgb4_clip_get(child_ep->com.dev->rdev.lldi.ports[0], | 2460 | cxgb4_clip_get(child_ep->com.dev->rdev.lldi.ports[0], |
2527 | (const u32 *)&sin6->sin6_addr.s6_addr, 1); | 2461 | (const u32 *)&sin6->sin6_addr.s6_addr, 1); |
2528 | } | 2462 | } |
@@ -2765,7 +2699,7 @@ out: | |||
2765 | if (ep->com.remote_addr.ss_family == AF_INET6) { | 2699 | if (ep->com.remote_addr.ss_family == AF_INET6) { |
2766 | struct sockaddr_in6 *sin6 = | 2700 | struct sockaddr_in6 *sin6 = |
2767 | (struct sockaddr_in6 *) | 2701 | (struct sockaddr_in6 *) |
2768 | &ep->com.mapped_local_addr; | 2702 | &ep->com.local_addr; |
2769 | cxgb4_clip_release( | 2703 | cxgb4_clip_release( |
2770 | ep->com.dev->rdev.lldi.ports[0], | 2704 | ep->com.dev->rdev.lldi.ports[0], |
2771 | (const u32 *)&sin6->sin6_addr.s6_addr, | 2705 | (const u32 *)&sin6->sin6_addr.s6_addr, |
@@ -3026,8 +2960,8 @@ static int pick_local_ipaddrs(struct c4iw_dev *dev, struct iw_cm_id *cm_id) | |||
3026 | { | 2960 | { |
3027 | struct in_device *ind; | 2961 | struct in_device *ind; |
3028 | int found = 0; | 2962 | int found = 0; |
3029 | struct sockaddr_in *laddr = (struct sockaddr_in *)&cm_id->local_addr; | 2963 | struct sockaddr_in *laddr = (struct sockaddr_in *)&cm_id->m_local_addr; |
3030 | struct sockaddr_in *raddr = (struct sockaddr_in *)&cm_id->remote_addr; | 2964 | struct sockaddr_in *raddr = (struct sockaddr_in *)&cm_id->m_remote_addr; |
3031 | 2965 | ||
3032 | ind = in_dev_get(dev->rdev.lldi.ports[0]); | 2966 | ind = in_dev_get(dev->rdev.lldi.ports[0]); |
3033 | if (!ind) | 2967 | if (!ind) |
@@ -3072,8 +3006,8 @@ static int get_lladdr(struct net_device *dev, struct in6_addr *addr, | |||
3072 | static int pick_local_ip6addrs(struct c4iw_dev *dev, struct iw_cm_id *cm_id) | 3006 | static int pick_local_ip6addrs(struct c4iw_dev *dev, struct iw_cm_id *cm_id) |
3073 | { | 3007 | { |
3074 | struct in6_addr uninitialized_var(addr); | 3008 | struct in6_addr uninitialized_var(addr); |
3075 | struct sockaddr_in6 *la6 = (struct sockaddr_in6 *)&cm_id->local_addr; | 3009 | struct sockaddr_in6 *la6 = (struct sockaddr_in6 *)&cm_id->m_local_addr; |
3076 | struct sockaddr_in6 *ra6 = (struct sockaddr_in6 *)&cm_id->remote_addr; | 3010 | struct sockaddr_in6 *ra6 = (struct sockaddr_in6 *)&cm_id->m_remote_addr; |
3077 | 3011 | ||
3078 | if (!get_lladdr(dev->rdev.lldi.ports[0], &addr, IFA_F_TENTATIVE)) { | 3012 | if (!get_lladdr(dev->rdev.lldi.ports[0], &addr, IFA_F_TENTATIVE)) { |
3079 | memcpy(la6->sin6_addr.s6_addr, &addr, 16); | 3013 | memcpy(la6->sin6_addr.s6_addr, &addr, 16); |
@@ -3092,11 +3026,8 @@ int c4iw_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param) | |||
3092 | struct sockaddr_in *raddr; | 3026 | struct sockaddr_in *raddr; |
3093 | struct sockaddr_in6 *laddr6; | 3027 | struct sockaddr_in6 *laddr6; |
3094 | struct sockaddr_in6 *raddr6; | 3028 | struct sockaddr_in6 *raddr6; |
3095 | struct iwpm_dev_data pm_reg_msg; | ||
3096 | struct iwpm_sa_data pm_msg; | ||
3097 | __u8 *ra; | 3029 | __u8 *ra; |
3098 | int iptype; | 3030 | int iptype; |
3099 | int iwpm_err = 0; | ||
3100 | 3031 | ||
3101 | if ((conn_param->ord > cur_max_read_depth(dev)) || | 3032 | if ((conn_param->ord > cur_max_read_depth(dev)) || |
3102 | (conn_param->ird > cur_max_read_depth(dev))) { | 3033 | (conn_param->ird > cur_max_read_depth(dev))) { |
@@ -3144,47 +3075,17 @@ int c4iw_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param) | |||
3144 | } | 3075 | } |
3145 | insert_handle(dev, &dev->atid_idr, ep, ep->atid); | 3076 | insert_handle(dev, &dev->atid_idr, ep, ep->atid); |
3146 | 3077 | ||
3147 | memcpy(&ep->com.local_addr, &cm_id->local_addr, | 3078 | memcpy(&ep->com.local_addr, &cm_id->m_local_addr, |
3148 | sizeof(ep->com.local_addr)); | 3079 | sizeof(ep->com.local_addr)); |
3149 | memcpy(&ep->com.remote_addr, &cm_id->remote_addr, | 3080 | memcpy(&ep->com.remote_addr, &cm_id->m_remote_addr, |
3150 | sizeof(ep->com.remote_addr)); | 3081 | sizeof(ep->com.remote_addr)); |
3151 | 3082 | ||
3152 | /* No port mapper available, go with the specified peer information */ | 3083 | laddr = (struct sockaddr_in *)&ep->com.local_addr; |
3153 | memcpy(&ep->com.mapped_local_addr, &cm_id->local_addr, | 3084 | raddr = (struct sockaddr_in *)&ep->com.remote_addr; |
3154 | sizeof(ep->com.mapped_local_addr)); | 3085 | laddr6 = (struct sockaddr_in6 *)&ep->com.local_addr; |
3155 | memcpy(&ep->com.mapped_remote_addr, &cm_id->remote_addr, | 3086 | raddr6 = (struct sockaddr_in6 *) &ep->com.remote_addr; |
3156 | sizeof(ep->com.mapped_remote_addr)); | ||
3157 | |||
3158 | c4iw_form_reg_msg(dev, &pm_reg_msg); | ||
3159 | iwpm_err = iwpm_register_pid(&pm_reg_msg, RDMA_NL_C4IW); | ||
3160 | if (iwpm_err) { | ||
3161 | PDBG("%s: Port Mapper reg pid fail (err = %d).\n", | ||
3162 | __func__, iwpm_err); | ||
3163 | } | ||
3164 | if (iwpm_valid_pid() && !iwpm_err) { | ||
3165 | c4iw_form_pm_msg(ep, &pm_msg); | ||
3166 | iwpm_err = iwpm_add_and_query_mapping(&pm_msg, RDMA_NL_C4IW); | ||
3167 | if (iwpm_err) | ||
3168 | PDBG("%s: Port Mapper query fail (err = %d).\n", | ||
3169 | __func__, iwpm_err); | ||
3170 | else | ||
3171 | c4iw_record_pm_msg(ep, &pm_msg); | ||
3172 | } | ||
3173 | if (iwpm_create_mapinfo(&ep->com.local_addr, | ||
3174 | &ep->com.mapped_local_addr, RDMA_NL_C4IW)) { | ||
3175 | iwpm_remove_mapping(&ep->com.local_addr, RDMA_NL_C4IW); | ||
3176 | err = -ENOMEM; | ||
3177 | goto fail1; | ||
3178 | } | ||
3179 | print_addr(&ep->com, __func__, "add_query/create_mapinfo"); | ||
3180 | set_bit(RELEASE_MAPINFO, &ep->com.flags); | ||
3181 | 3087 | ||
3182 | laddr = (struct sockaddr_in *)&ep->com.mapped_local_addr; | 3088 | if (cm_id->m_remote_addr.ss_family == AF_INET) { |
3183 | raddr = (struct sockaddr_in *)&ep->com.mapped_remote_addr; | ||
3184 | laddr6 = (struct sockaddr_in6 *)&ep->com.mapped_local_addr; | ||
3185 | raddr6 = (struct sockaddr_in6 *) &ep->com.mapped_remote_addr; | ||
3186 | |||
3187 | if (cm_id->remote_addr.ss_family == AF_INET) { | ||
3188 | iptype = 4; | 3089 | iptype = 4; |
3189 | ra = (__u8 *)&raddr->sin_addr; | 3090 | ra = (__u8 *)&raddr->sin_addr; |
3190 | 3091 | ||
@@ -3269,7 +3170,7 @@ static int create_server6(struct c4iw_dev *dev, struct c4iw_listen_ep *ep) | |||
3269 | { | 3170 | { |
3270 | int err; | 3171 | int err; |
3271 | struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *) | 3172 | struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *) |
3272 | &ep->com.mapped_local_addr; | 3173 | &ep->com.local_addr; |
3273 | 3174 | ||
3274 | if (ipv6_addr_type(&sin6->sin6_addr) != IPV6_ADDR_ANY) { | 3175 | if (ipv6_addr_type(&sin6->sin6_addr) != IPV6_ADDR_ANY) { |
3275 | err = cxgb4_clip_get(ep->com.dev->rdev.lldi.ports[0], | 3176 | err = cxgb4_clip_get(ep->com.dev->rdev.lldi.ports[0], |
@@ -3302,7 +3203,7 @@ static int create_server4(struct c4iw_dev *dev, struct c4iw_listen_ep *ep) | |||
3302 | { | 3203 | { |
3303 | int err; | 3204 | int err; |
3304 | struct sockaddr_in *sin = (struct sockaddr_in *) | 3205 | struct sockaddr_in *sin = (struct sockaddr_in *) |
3305 | &ep->com.mapped_local_addr; | 3206 | &ep->com.local_addr; |
3306 | 3207 | ||
3307 | if (dev->rdev.lldi.enable_fw_ofld_conn) { | 3208 | if (dev->rdev.lldi.enable_fw_ofld_conn) { |
3308 | do { | 3209 | do { |
@@ -3343,9 +3244,6 @@ int c4iw_create_listen(struct iw_cm_id *cm_id, int backlog) | |||
3343 | int err = 0; | 3244 | int err = 0; |
3344 | struct c4iw_dev *dev = to_c4iw_dev(cm_id->device); | 3245 | struct c4iw_dev *dev = to_c4iw_dev(cm_id->device); |
3345 | struct c4iw_listen_ep *ep; | 3246 | struct c4iw_listen_ep *ep; |
3346 | struct iwpm_dev_data pm_reg_msg; | ||
3347 | struct iwpm_sa_data pm_msg; | ||
3348 | int iwpm_err = 0; | ||
3349 | 3247 | ||
3350 | might_sleep(); | 3248 | might_sleep(); |
3351 | 3249 | ||
@@ -3360,7 +3258,7 @@ int c4iw_create_listen(struct iw_cm_id *cm_id, int backlog) | |||
3360 | ep->com.cm_id = cm_id; | 3258 | ep->com.cm_id = cm_id; |
3361 | ep->com.dev = dev; | 3259 | ep->com.dev = dev; |
3362 | ep->backlog = backlog; | 3260 | ep->backlog = backlog; |
3363 | memcpy(&ep->com.local_addr, &cm_id->local_addr, | 3261 | memcpy(&ep->com.local_addr, &cm_id->m_local_addr, |
3364 | sizeof(ep->com.local_addr)); | 3262 | sizeof(ep->com.local_addr)); |
3365 | 3263 | ||
3366 | /* | 3264 | /* |
@@ -3369,10 +3267,10 @@ int c4iw_create_listen(struct iw_cm_id *cm_id, int backlog) | |||
3369 | if (dev->rdev.lldi.enable_fw_ofld_conn && | 3267 | if (dev->rdev.lldi.enable_fw_ofld_conn && |
3370 | ep->com.local_addr.ss_family == AF_INET) | 3268 | ep->com.local_addr.ss_family == AF_INET) |
3371 | ep->stid = cxgb4_alloc_sftid(dev->rdev.lldi.tids, | 3269 | ep->stid = cxgb4_alloc_sftid(dev->rdev.lldi.tids, |
3372 | cm_id->local_addr.ss_family, ep); | 3270 | cm_id->m_local_addr.ss_family, ep); |
3373 | else | 3271 | else |
3374 | ep->stid = cxgb4_alloc_stid(dev->rdev.lldi.tids, | 3272 | ep->stid = cxgb4_alloc_stid(dev->rdev.lldi.tids, |
3375 | cm_id->local_addr.ss_family, ep); | 3273 | cm_id->m_local_addr.ss_family, ep); |
3376 | 3274 | ||
3377 | if (ep->stid == -1) { | 3275 | if (ep->stid == -1) { |
3378 | printk(KERN_ERR MOD "%s - cannot alloc stid.\n", __func__); | 3276 | printk(KERN_ERR MOD "%s - cannot alloc stid.\n", __func__); |
@@ -3381,36 +3279,9 @@ int c4iw_create_listen(struct iw_cm_id *cm_id, int backlog) | |||
3381 | } | 3279 | } |
3382 | insert_handle(dev, &dev->stid_idr, ep, ep->stid); | 3280 | insert_handle(dev, &dev->stid_idr, ep, ep->stid); |
3383 | 3281 | ||
3384 | /* No port mapper available, go with the specified info */ | 3282 | memcpy(&ep->com.local_addr, &cm_id->m_local_addr, |
3385 | memcpy(&ep->com.mapped_local_addr, &cm_id->local_addr, | 3283 | sizeof(ep->com.local_addr)); |
3386 | sizeof(ep->com.mapped_local_addr)); | ||
3387 | |||
3388 | c4iw_form_reg_msg(dev, &pm_reg_msg); | ||
3389 | iwpm_err = iwpm_register_pid(&pm_reg_msg, RDMA_NL_C4IW); | ||
3390 | if (iwpm_err) { | ||
3391 | PDBG("%s: Port Mapper reg pid fail (err = %d).\n", | ||
3392 | __func__, iwpm_err); | ||
3393 | } | ||
3394 | if (iwpm_valid_pid() && !iwpm_err) { | ||
3395 | memcpy(&pm_msg.loc_addr, &ep->com.local_addr, | ||
3396 | sizeof(ep->com.local_addr)); | ||
3397 | iwpm_err = iwpm_add_mapping(&pm_msg, RDMA_NL_C4IW); | ||
3398 | if (iwpm_err) | ||
3399 | PDBG("%s: Port Mapper query fail (err = %d).\n", | ||
3400 | __func__, iwpm_err); | ||
3401 | else | ||
3402 | memcpy(&ep->com.mapped_local_addr, | ||
3403 | &pm_msg.mapped_loc_addr, | ||
3404 | sizeof(ep->com.mapped_local_addr)); | ||
3405 | } | ||
3406 | if (iwpm_create_mapinfo(&ep->com.local_addr, | ||
3407 | &ep->com.mapped_local_addr, RDMA_NL_C4IW)) { | ||
3408 | err = -ENOMEM; | ||
3409 | goto fail3; | ||
3410 | } | ||
3411 | print_addr(&ep->com, __func__, "add_mapping/create_mapinfo"); | ||
3412 | 3284 | ||
3413 | set_bit(RELEASE_MAPINFO, &ep->com.flags); | ||
3414 | state_set(&ep->com, LISTEN); | 3285 | state_set(&ep->com, LISTEN); |
3415 | if (ep->com.local_addr.ss_family == AF_INET) | 3286 | if (ep->com.local_addr.ss_family == AF_INET) |
3416 | err = create_server4(dev, ep); | 3287 | err = create_server4(dev, ep); |
@@ -3421,7 +3292,6 @@ int c4iw_create_listen(struct iw_cm_id *cm_id, int backlog) | |||
3421 | goto out; | 3292 | goto out; |
3422 | } | 3293 | } |
3423 | 3294 | ||
3424 | fail3: | ||
3425 | cxgb4_free_stid(ep->com.dev->rdev.lldi.tids, ep->stid, | 3295 | cxgb4_free_stid(ep->com.dev->rdev.lldi.tids, ep->stid, |
3426 | ep->com.local_addr.ss_family); | 3296 | ep->com.local_addr.ss_family); |
3427 | fail2: | 3297 | fail2: |
@@ -3456,7 +3326,7 @@ int c4iw_destroy_listen(struct iw_cm_id *cm_id) | |||
3456 | goto done; | 3326 | goto done; |
3457 | err = c4iw_wait_for_reply(&ep->com.dev->rdev, &ep->com.wr_wait, | 3327 | err = c4iw_wait_for_reply(&ep->com.dev->rdev, &ep->com.wr_wait, |
3458 | 0, 0, __func__); | 3328 | 0, 0, __func__); |
3459 | sin6 = (struct sockaddr_in6 *)&ep->com.mapped_local_addr; | 3329 | sin6 = (struct sockaddr_in6 *)&ep->com.local_addr; |
3460 | cxgb4_clip_release(ep->com.dev->rdev.lldi.ports[0], | 3330 | cxgb4_clip_release(ep->com.dev->rdev.lldi.ports[0], |
3461 | (const u32 *)&sin6->sin6_addr.s6_addr, 1); | 3331 | (const u32 *)&sin6->sin6_addr.s6_addr, 1); |
3462 | } | 3332 | } |
@@ -3580,7 +3450,7 @@ static void active_ofld_conn_reply(struct c4iw_dev *dev, struct sk_buff *skb, | |||
3580 | state_set(&ep->com, DEAD); | 3450 | state_set(&ep->com, DEAD); |
3581 | if (ep->com.remote_addr.ss_family == AF_INET6) { | 3451 | if (ep->com.remote_addr.ss_family == AF_INET6) { |
3582 | struct sockaddr_in6 *sin6 = | 3452 | struct sockaddr_in6 *sin6 = |
3583 | (struct sockaddr_in6 *)&ep->com.mapped_local_addr; | 3453 | (struct sockaddr_in6 *)&ep->com.local_addr; |
3584 | cxgb4_clip_release(ep->com.dev->rdev.lldi.ports[0], | 3454 | cxgb4_clip_release(ep->com.dev->rdev.lldi.ports[0], |
3585 | (const u32 *)&sin6->sin6_addr.s6_addr, 1); | 3455 | (const u32 *)&sin6->sin6_addr.s6_addr, 1); |
3586 | } | 3456 | } |
diff --git a/drivers/infiniband/hw/cxgb4/device.c b/drivers/infiniband/hw/cxgb4/device.c index 8024ea4417b8..2f884ca85eea 100644 --- a/drivers/infiniband/hw/cxgb4/device.c +++ b/drivers/infiniband/hw/cxgb4/device.c | |||
@@ -87,17 +87,6 @@ struct c4iw_debugfs_data { | |||
87 | int pos; | 87 | int pos; |
88 | }; | 88 | }; |
89 | 89 | ||
90 | /* registered cxgb4 netlink callbacks */ | ||
91 | static struct ibnl_client_cbs c4iw_nl_cb_table[] = { | ||
92 | [RDMA_NL_IWPM_REG_PID] = {.dump = iwpm_register_pid_cb}, | ||
93 | [RDMA_NL_IWPM_ADD_MAPPING] = {.dump = iwpm_add_mapping_cb}, | ||
94 | [RDMA_NL_IWPM_QUERY_MAPPING] = {.dump = iwpm_add_and_query_mapping_cb}, | ||
95 | [RDMA_NL_IWPM_HANDLE_ERR] = {.dump = iwpm_mapping_error_cb}, | ||
96 | [RDMA_NL_IWPM_REMOTE_INFO] = {.dump = iwpm_remote_info_cb}, | ||
97 | [RDMA_NL_IWPM_MAPINFO] = {.dump = iwpm_mapping_info_cb}, | ||
98 | [RDMA_NL_IWPM_MAPINFO_NUM] = {.dump = iwpm_ack_mapping_info_cb} | ||
99 | }; | ||
100 | |||
101 | static int count_idrs(int id, void *p, void *data) | 90 | static int count_idrs(int id, void *p, void *data) |
102 | { | 91 | { |
103 | int *countp = data; | 92 | int *countp = data; |
@@ -242,13 +231,13 @@ static int dump_qp(int id, void *p, void *data) | |||
242 | if (qp->ep) { | 231 | if (qp->ep) { |
243 | if (qp->ep->com.local_addr.ss_family == AF_INET) { | 232 | if (qp->ep->com.local_addr.ss_family == AF_INET) { |
244 | struct sockaddr_in *lsin = (struct sockaddr_in *) | 233 | struct sockaddr_in *lsin = (struct sockaddr_in *) |
245 | &qp->ep->com.local_addr; | 234 | &qp->ep->com.cm_id->local_addr; |
246 | struct sockaddr_in *rsin = (struct sockaddr_in *) | 235 | struct sockaddr_in *rsin = (struct sockaddr_in *) |
247 | &qp->ep->com.remote_addr; | 236 | &qp->ep->com.cm_id->remote_addr; |
248 | struct sockaddr_in *mapped_lsin = (struct sockaddr_in *) | 237 | struct sockaddr_in *mapped_lsin = (struct sockaddr_in *) |
249 | &qp->ep->com.mapped_local_addr; | 238 | &qp->ep->com.cm_id->m_local_addr; |
250 | struct sockaddr_in *mapped_rsin = (struct sockaddr_in *) | 239 | struct sockaddr_in *mapped_rsin = (struct sockaddr_in *) |
251 | &qp->ep->com.mapped_remote_addr; | 240 | &qp->ep->com.cm_id->m_remote_addr; |
252 | 241 | ||
253 | cc = snprintf(qpd->buf + qpd->pos, space, | 242 | cc = snprintf(qpd->buf + qpd->pos, space, |
254 | "rc qp sq id %u rq id %u state %u " | 243 | "rc qp sq id %u rq id %u state %u " |
@@ -264,15 +253,15 @@ static int dump_qp(int id, void *p, void *data) | |||
264 | ntohs(mapped_rsin->sin_port)); | 253 | ntohs(mapped_rsin->sin_port)); |
265 | } else { | 254 | } else { |
266 | struct sockaddr_in6 *lsin6 = (struct sockaddr_in6 *) | 255 | struct sockaddr_in6 *lsin6 = (struct sockaddr_in6 *) |
267 | &qp->ep->com.local_addr; | 256 | &qp->ep->com.cm_id->local_addr; |
268 | struct sockaddr_in6 *rsin6 = (struct sockaddr_in6 *) | 257 | struct sockaddr_in6 *rsin6 = (struct sockaddr_in6 *) |
269 | &qp->ep->com.remote_addr; | 258 | &qp->ep->com.cm_id->remote_addr; |
270 | struct sockaddr_in6 *mapped_lsin6 = | 259 | struct sockaddr_in6 *mapped_lsin6 = |
271 | (struct sockaddr_in6 *) | 260 | (struct sockaddr_in6 *) |
272 | &qp->ep->com.mapped_local_addr; | 261 | &qp->ep->com.cm_id->m_local_addr; |
273 | struct sockaddr_in6 *mapped_rsin6 = | 262 | struct sockaddr_in6 *mapped_rsin6 = |
274 | (struct sockaddr_in6 *) | 263 | (struct sockaddr_in6 *) |
275 | &qp->ep->com.mapped_remote_addr; | 264 | &qp->ep->com.cm_id->m_remote_addr; |
276 | 265 | ||
277 | cc = snprintf(qpd->buf + qpd->pos, space, | 266 | cc = snprintf(qpd->buf + qpd->pos, space, |
278 | "rc qp sq id %u rq id %u state %u " | 267 | "rc qp sq id %u rq id %u state %u " |
@@ -545,13 +534,13 @@ static int dump_ep(int id, void *p, void *data) | |||
545 | 534 | ||
546 | if (ep->com.local_addr.ss_family == AF_INET) { | 535 | if (ep->com.local_addr.ss_family == AF_INET) { |
547 | struct sockaddr_in *lsin = (struct sockaddr_in *) | 536 | struct sockaddr_in *lsin = (struct sockaddr_in *) |
548 | &ep->com.local_addr; | 537 | &ep->com.cm_id->local_addr; |
549 | struct sockaddr_in *rsin = (struct sockaddr_in *) | 538 | struct sockaddr_in *rsin = (struct sockaddr_in *) |
550 | &ep->com.remote_addr; | 539 | &ep->com.cm_id->remote_addr; |
551 | struct sockaddr_in *mapped_lsin = (struct sockaddr_in *) | 540 | struct sockaddr_in *mapped_lsin = (struct sockaddr_in *) |
552 | &ep->com.mapped_local_addr; | 541 | &ep->com.cm_id->m_local_addr; |
553 | struct sockaddr_in *mapped_rsin = (struct sockaddr_in *) | 542 | struct sockaddr_in *mapped_rsin = (struct sockaddr_in *) |
554 | &ep->com.mapped_remote_addr; | 543 | &ep->com.cm_id->m_remote_addr; |
555 | 544 | ||
556 | cc = snprintf(epd->buf + epd->pos, space, | 545 | cc = snprintf(epd->buf + epd->pos, space, |
557 | "ep %p cm_id %p qp %p state %d flags 0x%lx " | 546 | "ep %p cm_id %p qp %p state %d flags 0x%lx " |
@@ -569,13 +558,13 @@ static int dump_ep(int id, void *p, void *data) | |||
569 | ntohs(mapped_rsin->sin_port)); | 558 | ntohs(mapped_rsin->sin_port)); |
570 | } else { | 559 | } else { |
571 | struct sockaddr_in6 *lsin6 = (struct sockaddr_in6 *) | 560 | struct sockaddr_in6 *lsin6 = (struct sockaddr_in6 *) |
572 | &ep->com.local_addr; | 561 | &ep->com.cm_id->local_addr; |
573 | struct sockaddr_in6 *rsin6 = (struct sockaddr_in6 *) | 562 | struct sockaddr_in6 *rsin6 = (struct sockaddr_in6 *) |
574 | &ep->com.remote_addr; | 563 | &ep->com.cm_id->remote_addr; |
575 | struct sockaddr_in6 *mapped_lsin6 = (struct sockaddr_in6 *) | 564 | struct sockaddr_in6 *mapped_lsin6 = (struct sockaddr_in6 *) |
576 | &ep->com.mapped_local_addr; | 565 | &ep->com.cm_id->m_local_addr; |
577 | struct sockaddr_in6 *mapped_rsin6 = (struct sockaddr_in6 *) | 566 | struct sockaddr_in6 *mapped_rsin6 = (struct sockaddr_in6 *) |
578 | &ep->com.mapped_remote_addr; | 567 | &ep->com.cm_id->m_remote_addr; |
579 | 568 | ||
580 | cc = snprintf(epd->buf + epd->pos, space, | 569 | cc = snprintf(epd->buf + epd->pos, space, |
581 | "ep %p cm_id %p qp %p state %d flags 0x%lx " | 570 | "ep %p cm_id %p qp %p state %d flags 0x%lx " |
@@ -610,9 +599,9 @@ static int dump_listen_ep(int id, void *p, void *data) | |||
610 | 599 | ||
611 | if (ep->com.local_addr.ss_family == AF_INET) { | 600 | if (ep->com.local_addr.ss_family == AF_INET) { |
612 | struct sockaddr_in *lsin = (struct sockaddr_in *) | 601 | struct sockaddr_in *lsin = (struct sockaddr_in *) |
613 | &ep->com.local_addr; | 602 | &ep->com.cm_id->local_addr; |
614 | struct sockaddr_in *mapped_lsin = (struct sockaddr_in *) | 603 | struct sockaddr_in *mapped_lsin = (struct sockaddr_in *) |
615 | &ep->com.mapped_local_addr; | 604 | &ep->com.cm_id->m_local_addr; |
616 | 605 | ||
617 | cc = snprintf(epd->buf + epd->pos, space, | 606 | cc = snprintf(epd->buf + epd->pos, space, |
618 | "ep %p cm_id %p state %d flags 0x%lx stid %d " | 607 | "ep %p cm_id %p state %d flags 0x%lx stid %d " |
@@ -623,9 +612,9 @@ static int dump_listen_ep(int id, void *p, void *data) | |||
623 | ntohs(mapped_lsin->sin_port)); | 612 | ntohs(mapped_lsin->sin_port)); |
624 | } else { | 613 | } else { |
625 | struct sockaddr_in6 *lsin6 = (struct sockaddr_in6 *) | 614 | struct sockaddr_in6 *lsin6 = (struct sockaddr_in6 *) |
626 | &ep->com.local_addr; | 615 | &ep->com.cm_id->local_addr; |
627 | struct sockaddr_in6 *mapped_lsin6 = (struct sockaddr_in6 *) | 616 | struct sockaddr_in6 *mapped_lsin6 = (struct sockaddr_in6 *) |
628 | &ep->com.mapped_local_addr; | 617 | &ep->com.cm_id->m_local_addr; |
629 | 618 | ||
630 | cc = snprintf(epd->buf + epd->pos, space, | 619 | cc = snprintf(epd->buf + epd->pos, space, |
631 | "ep %p cm_id %p state %d flags 0x%lx stid %d " | 620 | "ep %p cm_id %p state %d flags 0x%lx stid %d " |
@@ -1506,20 +1495,6 @@ static int __init c4iw_init_module(void) | |||
1506 | printk(KERN_WARNING MOD | 1495 | printk(KERN_WARNING MOD |
1507 | "could not create debugfs entry, continuing\n"); | 1496 | "could not create debugfs entry, continuing\n"); |
1508 | 1497 | ||
1509 | if (ibnl_add_client(RDMA_NL_C4IW, RDMA_NL_IWPM_NUM_OPS, | ||
1510 | c4iw_nl_cb_table)) | ||
1511 | pr_err("%s[%u]: Failed to add netlink callback\n" | ||
1512 | , __func__, __LINE__); | ||
1513 | |||
1514 | err = iwpm_init(RDMA_NL_C4IW); | ||
1515 | if (err) { | ||
1516 | pr_err("port mapper initialization failed with %d\n", err); | ||
1517 | ibnl_remove_client(RDMA_NL_C4IW); | ||
1518 | c4iw_cm_term(); | ||
1519 | debugfs_remove_recursive(c4iw_debugfs_root); | ||
1520 | return err; | ||
1521 | } | ||
1522 | |||
1523 | cxgb4_register_uld(CXGB4_ULD_RDMA, &c4iw_uld_info); | 1498 | cxgb4_register_uld(CXGB4_ULD_RDMA, &c4iw_uld_info); |
1524 | 1499 | ||
1525 | return 0; | 1500 | return 0; |
@@ -1537,8 +1512,6 @@ static void __exit c4iw_exit_module(void) | |||
1537 | } | 1512 | } |
1538 | mutex_unlock(&dev_mutex); | 1513 | mutex_unlock(&dev_mutex); |
1539 | cxgb4_unregister_uld(CXGB4_ULD_RDMA); | 1514 | cxgb4_unregister_uld(CXGB4_ULD_RDMA); |
1540 | iwpm_exit(RDMA_NL_C4IW); | ||
1541 | ibnl_remove_client(RDMA_NL_C4IW); | ||
1542 | c4iw_cm_term(); | 1515 | c4iw_cm_term(); |
1543 | debugfs_remove_recursive(c4iw_debugfs_root); | 1516 | debugfs_remove_recursive(c4iw_debugfs_root); |
1544 | } | 1517 | } |
diff --git a/drivers/infiniband/hw/cxgb4/iw_cxgb4.h b/drivers/infiniband/hw/cxgb4/iw_cxgb4.h index fb2de75a0392..efb1d783f0cf 100644 --- a/drivers/infiniband/hw/cxgb4/iw_cxgb4.h +++ b/drivers/infiniband/hw/cxgb4/iw_cxgb4.h | |||
@@ -753,7 +753,6 @@ enum c4iw_ep_flags { | |||
753 | CLOSE_SENT = 3, | 753 | CLOSE_SENT = 3, |
754 | TIMEOUT = 4, | 754 | TIMEOUT = 4, |
755 | QP_REFERENCED = 5, | 755 | QP_REFERENCED = 5, |
756 | RELEASE_MAPINFO = 6, | ||
757 | }; | 756 | }; |
758 | 757 | ||
759 | enum c4iw_ep_history { | 758 | enum c4iw_ep_history { |
@@ -790,8 +789,6 @@ struct c4iw_ep_common { | |||
790 | struct mutex mutex; | 789 | struct mutex mutex; |
791 | struct sockaddr_storage local_addr; | 790 | struct sockaddr_storage local_addr; |
792 | struct sockaddr_storage remote_addr; | 791 | struct sockaddr_storage remote_addr; |
793 | struct sockaddr_storage mapped_local_addr; | ||
794 | struct sockaddr_storage mapped_remote_addr; | ||
795 | struct c4iw_wr_wait wr_wait; | 792 | struct c4iw_wr_wait wr_wait; |
796 | unsigned long flags; | 793 | unsigned long flags; |
797 | unsigned long history; | 794 | unsigned long history; |
@@ -843,45 +840,6 @@ struct c4iw_ep { | |||
843 | struct c4iw_ep_stats stats; | 840 | struct c4iw_ep_stats stats; |
844 | }; | 841 | }; |
845 | 842 | ||
846 | static inline void print_addr(struct c4iw_ep_common *epc, const char *func, | ||
847 | const char *msg) | ||
848 | { | ||
849 | |||
850 | #define SINA(a) (&(((struct sockaddr_in *)(a))->sin_addr.s_addr)) | ||
851 | #define SINP(a) ntohs(((struct sockaddr_in *)(a))->sin_port) | ||
852 | #define SIN6A(a) (&(((struct sockaddr_in6 *)(a))->sin6_addr)) | ||
853 | #define SIN6P(a) ntohs(((struct sockaddr_in6 *)(a))->sin6_port) | ||
854 | |||
855 | if (c4iw_debug) { | ||
856 | switch (epc->local_addr.ss_family) { | ||
857 | case AF_INET: | ||
858 | PDBG("%s %s %pI4:%u/%u <-> %pI4:%u/%u\n", | ||
859 | func, msg, SINA(&epc->local_addr), | ||
860 | SINP(&epc->local_addr), | ||
861 | SINP(&epc->mapped_local_addr), | ||
862 | SINA(&epc->remote_addr), | ||
863 | SINP(&epc->remote_addr), | ||
864 | SINP(&epc->mapped_remote_addr)); | ||
865 | break; | ||
866 | case AF_INET6: | ||
867 | PDBG("%s %s %pI6:%u/%u <-> %pI6:%u/%u\n", | ||
868 | func, msg, SIN6A(&epc->local_addr), | ||
869 | SIN6P(&epc->local_addr), | ||
870 | SIN6P(&epc->mapped_local_addr), | ||
871 | SIN6A(&epc->remote_addr), | ||
872 | SIN6P(&epc->remote_addr), | ||
873 | SIN6P(&epc->mapped_remote_addr)); | ||
874 | break; | ||
875 | default: | ||
876 | break; | ||
877 | } | ||
878 | } | ||
879 | #undef SINA | ||
880 | #undef SINP | ||
881 | #undef SIN6A | ||
882 | #undef SIN6P | ||
883 | } | ||
884 | |||
885 | static inline struct c4iw_ep *to_ep(struct iw_cm_id *cm_id) | 843 | static inline struct c4iw_ep *to_ep(struct iw_cm_id *cm_id) |
886 | { | 844 | { |
887 | return cm_id->provider_data; | 845 | return cm_id->provider_data; |