From: Jon M. <jm...@re...> - 2021-09-10 15:45:22
|
On 10/09/2021 01:38, Hoang Le wrote: > In tipc_sk_enqueue() we use hardcoded 2 jiffies to extract > socket buffer from generic queue to particular socket. > The 2 jiffies is too short in case there are other high priority > tasks get CPU cycles for multiple jiffies update. As result, no > buffer could be enqueued to particular socket. > > To solve this, we switch to use to constant timeout 20msecs. > Then, the function will be expired between 2 jiffies (CONFIG_100HZ) > and 20 jiffies (CONFIG_1000HZ). > > Signed-off-by: Hoang Le <hoa...@de...> > --- > net/tipc/socket.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/net/tipc/socket.c b/net/tipc/socket.c > index a0a27d87f631..ad570c2450be 100644 > --- a/net/tipc/socket.c > +++ b/net/tipc/socket.c > @@ -2423,7 +2423,7 @@ static int tipc_sk_backlog_rcv(struct sock *sk, struct sk_buff *skb) > static void tipc_sk_enqueue(struct sk_buff_head *inputq, struct sock *sk, > u32 dport, struct sk_buff_head *xmitq) > { > - unsigned long time_limit = jiffies + 2; > + unsigned long time_limit = jiffies + usecs_to_jiffies(20000); > struct sk_buff *skb; > unsigned int lim; > atomic_t *dcnt; > Acked-by: Jon Maloy <jm...@re...> |