IB/core: Add flow control to the portmapper netlink calls
authorMustafa Ismail <mustafa.ismail@intel.com>
Thu, 28 Jul 2016 20:02:26 +0000 (15:02 -0500)
committerDoug Ledford <dledford@redhat.com>
Tue, 2 Aug 2016 17:14:27 +0000 (13:14 -0400)
During connection establishment with a large number of
connections, it is possible that the connection requests
might fail. Adding flow control prevents this failure.
Change ibnl_unicast to use blocking to enable flow control.

Signed-off-by: Mustafa Ismail <mustafa.ismail@intel.com>
Signed-off-by: Faisal Latif <faisal.latif@intel.com>
Signed-off-by: Shiraz Saleem <shiraz.saleem@intel.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/core/netlink.c

index 9b8c20c8209bcfa6deb62a20a1f598592e4b7f9b..10469b0088b500fbe2012bc4bd43d249dad3b705 100644 (file)
@@ -229,7 +229,10 @@ static void ibnl_rcv(struct sk_buff *skb)
 int ibnl_unicast(struct sk_buff *skb, struct nlmsghdr *nlh,
                        __u32 pid)
 {
-       return nlmsg_unicast(nls, skb, pid);
+       int err;
+
+       err = netlink_unicast(nls, skb, pid, 0);
+       return (err < 0) ? err : 0;
 }
 EXPORT_SYMBOL(ibnl_unicast);
 
@@ -252,6 +255,7 @@ int __init ibnl_init(void)
                return -ENOMEM;
        }
 
+       nls->sk_sndtimeo = 10 * HZ;
        return 0;
 }