diff options
author | Roi Dayan <roid@mellanox.com> | 2014-07-31 06:27:44 -0400 |
---|---|---|
committer | Roland Dreier <roland@purestorage.com> | 2014-08-01 18:10:04 -0400 |
commit | 96ed02d4be3c68527130decd3a7d18240da4bee5 (patch) | |
tree | 9939dc49cbc6717297bf70771f39d65040b0c587 | |
parent | 64aa90f26c06e1cb2aacfb98a7d0eccfbd6c1a91 (diff) |
IB/iser: Support IPv6 address family
Replace struct sockaddr_in with struct sockaddr which supports both
IPv4 and IPv6, and print using the %pIS format directive.
Signed-off-by: Roi Dayan <roid@mellanox.com>
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
-rw-r--r-- | drivers/infiniband/ulp/iser/iscsi_iser.c | 3 | ||||
-rw-r--r-- | drivers/infiniband/ulp/iser/iscsi_iser.h | 4 | ||||
-rw-r--r-- | drivers/infiniband/ulp/iser/iser_verbs.c | 17 |
3 files changed, 9 insertions, 15 deletions
diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.c b/drivers/infiniband/ulp/iser/iscsi_iser.c index eb7973957a6e..1a53fd22aedf 100644 --- a/drivers/infiniband/ulp/iser/iscsi_iser.c +++ b/drivers/infiniband/ulp/iser/iscsi_iser.c | |||
@@ -604,8 +604,7 @@ iscsi_iser_ep_connect(struct Scsi_Host *shost, struct sockaddr *dst_addr, | |||
604 | ib_conn->ep = ep; | 604 | ib_conn->ep = ep; |
605 | iser_conn_init(ib_conn); | 605 | iser_conn_init(ib_conn); |
606 | 606 | ||
607 | err = iser_connect(ib_conn, NULL, (struct sockaddr_in *)dst_addr, | 607 | err = iser_connect(ib_conn, NULL, dst_addr, non_blocking); |
608 | non_blocking); | ||
609 | if (err) | 608 | if (err) |
610 | return ERR_PTR(err); | 609 | return ERR_PTR(err); |
611 | 610 | ||
diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.h b/drivers/infiniband/ulp/iser/iscsi_iser.h index 97cd385bf7f7..37e928477b08 100644 --- a/drivers/infiniband/ulp/iser/iscsi_iser.h +++ b/drivers/infiniband/ulp/iser/iscsi_iser.h | |||
@@ -448,8 +448,8 @@ int iser_reg_rdma_mem_fastreg(struct iscsi_iser_task *task, | |||
448 | enum iser_data_dir cmd_dir); | 448 | enum iser_data_dir cmd_dir); |
449 | 449 | ||
450 | int iser_connect(struct iser_conn *ib_conn, | 450 | int iser_connect(struct iser_conn *ib_conn, |
451 | struct sockaddr_in *src_addr, | 451 | struct sockaddr *src_addr, |
452 | struct sockaddr_in *dst_addr, | 452 | struct sockaddr *dst_addr, |
453 | int non_blocking); | 453 | int non_blocking); |
454 | 454 | ||
455 | int iser_reg_page_vec(struct iser_conn *ib_conn, | 455 | int iser_reg_page_vec(struct iser_conn *ib_conn, |
diff --git a/drivers/infiniband/ulp/iser/iser_verbs.c b/drivers/infiniband/ulp/iser/iser_verbs.c index ea01075f9f9b..dc0c90f4c312 100644 --- a/drivers/infiniband/ulp/iser/iser_verbs.c +++ b/drivers/infiniband/ulp/iser/iser_verbs.c | |||
@@ -810,22 +810,19 @@ void iser_conn_init(struct iser_conn *ib_conn) | |||
810 | * sleeps until the connection is established or rejected | 810 | * sleeps until the connection is established or rejected |
811 | */ | 811 | */ |
812 | int iser_connect(struct iser_conn *ib_conn, | 812 | int iser_connect(struct iser_conn *ib_conn, |
813 | struct sockaddr_in *src_addr, | 813 | struct sockaddr *src_addr, |
814 | struct sockaddr_in *dst_addr, | 814 | struct sockaddr *dst_addr, |
815 | int non_blocking) | 815 | int non_blocking) |
816 | { | 816 | { |
817 | struct sockaddr *src, *dst; | ||
818 | int err = 0; | 817 | int err = 0; |
819 | 818 | ||
820 | sprintf(ib_conn->name, "%pI4:%d", | 819 | sprintf(ib_conn->name, "%pISp", dst_addr); |
821 | &dst_addr->sin_addr.s_addr, dst_addr->sin_port); | 820 | |
821 | iser_info("connecting to: %s\n", ib_conn->name); | ||
822 | 822 | ||
823 | /* the device is known only --after-- address resolution */ | 823 | /* the device is known only --after-- address resolution */ |
824 | ib_conn->device = NULL; | 824 | ib_conn->device = NULL; |
825 | 825 | ||
826 | iser_info("connecting to: %pI4, port 0x%x\n", | ||
827 | &dst_addr->sin_addr, dst_addr->sin_port); | ||
828 | |||
829 | ib_conn->state = ISER_CONN_PENDING; | 826 | ib_conn->state = ISER_CONN_PENDING; |
830 | 827 | ||
831 | ib_conn->cma_id = rdma_create_id(iser_cma_handler, | 828 | ib_conn->cma_id = rdma_create_id(iser_cma_handler, |
@@ -837,9 +834,7 @@ int iser_connect(struct iser_conn *ib_conn, | |||
837 | goto id_failure; | 834 | goto id_failure; |
838 | } | 835 | } |
839 | 836 | ||
840 | src = (struct sockaddr *)src_addr; | 837 | err = rdma_resolve_addr(ib_conn->cma_id, src_addr, dst_addr, 1000); |
841 | dst = (struct sockaddr *)dst_addr; | ||
842 | err = rdma_resolve_addr(ib_conn->cma_id, src, dst, 1000); | ||
843 | if (err) { | 838 | if (err) { |
844 | iser_err("rdma_resolve_addr failed: %d\n", err); | 839 | iser_err("rdma_resolve_addr failed: %d\n", err); |
845 | goto addr_failure; | 840 | goto addr_failure; |