From: Steve Wise Date: Thu, 7 May 2015 14:56:38 +0000 (-0500) Subject: iw_cxgb4: use wildcard mapping for getting remote addr info X-Git-Tag: vofed-3.18~15 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=d2cc69c2ce19a484bf139784a6df1436596835b6;p=~emulex%2Ftmp%2Fcompat-rdma%2F.git iw_cxgb4: use wildcard mapping for getting remote addr info For listening endpoints bound to the wildcard address, we need to pass the wildcard address mapping to iwpm_get_remote_info() instead of the mapped address of the new child connection. Without this fix, and with iwarp port mapping enabled, each iw_cxgb4 connection that is spawned from a listening endpoint bound to the wildcard address, will generate an annoying dmesg entry about failing to find the remote address mapping info, and the connection state displayed in debugfs under /sys/kernel/debug/iw_cxgb4//eps will not have the peer's address/port mapping info. The connection still works though. Fixes: 5b6b8fe ("RDMA/cxgb4: Report the actual address of the remote connecting peer") Signed-off-by: Steve Wise --- diff --git a/linux-next-pending/0008-iw_cxgb4-use-wildcard-mapping-for-getting-remote-info.patch b/linux-next-pending/0008-iw_cxgb4-use-wildcard-mapping-for-getting-remote-info.patch new file mode 100644 index 0000000..fadd55d --- /dev/null +++ b/linux-next-pending/0008-iw_cxgb4-use-wildcard-mapping-for-getting-remote-info.patch @@ -0,0 +1,61 @@ +iw_cxgb4: use wildcard mapping for getting remote addr info + +From: Steve Wise + +For listening endpoints bound to the wildcard address, we need to pass +the wildcard address mapping to iwpm_get_remote_info() instead of the +mapped address of the new child connection. + +Without this fix, and with iwarp port mapping enabled, each iw_cxgb4 +connection that is spawned from a listening endpoint bound to the wildcard +address, will generate an annoying dmesg entry about failing to find +the remote address mapping info, and the connection state displayed in +debugfs under /sys/kernel/debug/iw_cxgb4//eps will not have +the peer's address/port mapping info. The connection still works though. + +Fixes: 5b6b8fe ("RDMA/cxgb4: Report the actual address of the remote connecting peer") + +Signed-off-by: Steve Wise +--- + drivers/infiniband/hw/cxgb4/cm.c | 16 ++++++++-------- + 1 files changed, 8 insertions(+), 8 deletions(-) + +diff --git a/drivers/infiniband/hw/cxgb4/cm.c b/drivers/infiniband/hw/cxgb4/cm.c +index bb95a6c..3ad8dc7 100644 +--- a/drivers/infiniband/hw/cxgb4/cm.c ++++ b/drivers/infiniband/hw/cxgb4/cm.c +@@ -583,18 +583,18 @@ static void c4iw_record_pm_msg(struct c4iw_ep *ep, + sizeof(ep->com.mapped_remote_addr)); + } + +-static int get_remote_addr(struct c4iw_ep *ep) ++static int get_remote_addr(struct c4iw_ep *parent_ep, struct c4iw_ep *child_ep) + { + int ret; + +- print_addr(&ep->com, __func__, "get_remote_addr"); ++ print_addr(&parent_ep->com, __func__, "get_remote_addr parent_ep "); ++ print_addr(&child_ep->com, __func__, "get_remote_addr child_ep "); + +- ret = iwpm_get_remote_info(&ep->com.mapped_local_addr, +- &ep->com.mapped_remote_addr, +- &ep->com.remote_addr, RDMA_NL_C4IW); ++ ret = iwpm_get_remote_info(&parent_ep->com.mapped_local_addr, ++ &child_ep->com.mapped_remote_addr, ++ &child_ep->com.remote_addr, RDMA_NL_C4IW); + if (ret) +- pr_info(MOD "Unable to find remote peer addr info - err %d\n", +- ret); ++ PDBG("Unable to find remote peer addr info - err %d\n", ret); + + return ret; + } +@@ -2420,7 +2420,7 @@ static int pass_accept_req(struct c4iw_dev *dev, struct sk_buff *skb) + } + memcpy(&child_ep->com.remote_addr, &child_ep->com.mapped_remote_addr, + sizeof(child_ep->com.remote_addr)); +- get_remote_addr(child_ep); ++ get_remote_addr(parent_ep, child_ep); + + c4iw_get_ep(&parent_ep->com); + child_ep->parent_ep = parent_ep;