In order to prevent overconsumption of resources on the remote side QRTR implements a flow control mechanism. Move the handling of the incoming confirm_rx to the receiving process to ensure incoming flow is controlled. Then implement outgoing flow control, using the recommended algorithm of counting outstanding non-confirmed messages and blocking when hitting a limit. The last three patches refactors the node assignment and port lookup, in order to remove the worker in the receive path. Bjorn Andersson (5): net: qrtr: Move resume-tx transmission to recvmsg net: qrtr: Implement outgoing flow control net: qrtr: Migrate node lookup tree to spinlock net: qrtr: Make qrtr_port_lookup() use RCU net: qrtr: Remove receive worker net/qrtr/qrtr.c | 314 +++++++++++++++++++++++++++++++++++++----------- 1 file changed, 242 insertions(+), 72 deletions(-) -- 2.24.0