netlink: wake up netlink listeners sooner (v2)
authorstephen hemminger <shemminger@vyatta.com>
Thu, 22 Dec 2011 08:52:03 +0000 (08:52 +0000)
committerDavid S. Miller <davem@davemloft.net>
Fri, 23 Dec 2011 03:37:19 +0000 (22:37 -0500)
This patch changes it to yield sooner at halfway instead. Still not a cure-all
for listener overrun if listner is slow, but works much reliably.

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/netlink/af_netlink.c

index a0abfe0..86a258d 100644 (file)
@@ -959,7 +959,7 @@ static int netlink_broadcast_deliver(struct sock *sk, struct sk_buff *skb)
                skb_set_owner_r(skb, sk);
                skb_queue_tail(&sk->sk_receive_queue, skb);
                sk->sk_data_ready(sk, skb->len);
-               return atomic_read(&sk->sk_rmem_alloc) > sk->sk_rcvbuf;
+               return atomic_read(&sk->sk_rmem_alloc) > (sk->sk_rcvbuf >> 1);
        }
        return -1;
 }