> -----Original Message-----
> From: Parthasarathy Bhuvaragan
> Sent: Tuesday, 04 October, 2016 08:29
> To: [email protected]; Jon Maloy <[email protected]>;
> [email protected]; Ying Xue <[email protected]>
> Subject: [PATCH net v1 1/3] tipc: fix socket wakeup when the transmit queue is
> empty
>
> Until now, in tipc_link_rcv() the sockets are woken only when we were
> able to release a frame from the link's transmit queue.
> However link_prepare_wakeup(), wakes only as many users as permitted
> by the current link window and the rest of the users are woken the
> next time a frame is released. In case of the released frame being
> the last frame in the transmit queue i.e the queue becomes empty, we
> miss to wake the users and they experience permanent congestion.
>
> In this commit, we wakeup the users if link's transmit queue is empty.
>
> Signed-off-by: Parthasarathy Bhuvaragan
> <[email protected]>
> ---
> net/tipc/link.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/net/tipc/link.c b/net/tipc/link.c
> index b36e16cdc945..28f9376ce6d7 100644
> --- a/net/tipc/link.c
> +++ b/net/tipc/link.c
> @@ -1251,6 +1251,10 @@ int tipc_link_rcv(struct tipc_link *l, struct sk_buff
> *skb,
> link_prepare_wakeup(l);
> }
>
> + if (skb_queue_empty(&l->transmq) &&
> + !skb_queue_empty(&l->wakeupq))
> + link_prepare_wakeup(l);
I don't think this one is needed. If you look at the last lines of
tipc_link_proto_rcv() the wakeups are attempted unconditionally on an idle
link, and it is anyway at STATE messages that this property is important.
///jon
> +
> /* Defer delivery if sequence gap */
> if (unlikely(seqno != rcv_nxt)) {
> __tipc_skb_queue_sorted(defq, seqno, skb);
> --
> 2.1.4
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
tipc-discussion mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tipc-discussion