From: Jon Maloy <jon.ma...@ericsson.com> Date: Tue, 30 Jul 2019 16:23:18 +0200
> In commit 365ad353c256 ("tipc: reduce risk of user starvation during > link congestion") we allowed senders to add exactly one list of extra > buffers to the link backlog queues during link congestion (aka > "oversubscription"). However, the criteria for when to stop adding > wakeup messages to the input queue when the overload abates is > inaccurate, and may cause starvation problems during very high load. > > Currently, we stop adding wakeup messages after 10 total failed attempts > where we find that there is no space left in the backlog queue for a > certain importance level. The counter for this is accumulated across all > levels, which may lead the algorithm to leave the loop prematurely, > although there may still be plenty of space available at some levels. > The result is sometimes that messages near the wakeup queue tail are not > added to the input queue as they should be. > > We now introduce a more exact algorithm, where we keep adding wakeup > messages to a level as long as the backlog queue has free slots for > the corresponding level, and stop at the moment there are no more such > slots or when there are no more wakeup messages to dequeue. > > Fixes: 365ad35 ("tipc: reduce risk of user starvation during link congestion") > Reported-by: Tung Nguyen <tung.q.ngu...@dektech.com.au> > Acked-by: Ying Xue <ying....@windriver.com> > Signed-off-by: Jon Maloy <jon.ma...@ericsson.com> Applied, thank you.