This patch series is a preparation and actual session queue support. >From now, we are able to use full available wmem of the socket and queue all requests if it is needed. The stack will process all queued requests in the FIFO order and notify user space application about error or completion over the errqueue interface. As usual, reviews and tests are welcome. Oleksij Rempel (17): j1939: store session type in to session and start to use it j1939: transport: do not send packets from j1939_tp_send j1939: transport: seed retry timeout for (E)TP sessions j1939: pack simple messages in to a session j1939: socket: use min_t where possible j1939: transport: fix broken refcounting on j1939_xtp_rx_rts_current error j1939: move struct j1939_sock to the header file j1939: transport: return proper error on skb underrun. j1939: split j1939_tp_send j1939: transport: cancel session on j1939_tp_txnext error j1939: transport: abort not started session if requested j1939: add session state j1939: transport: better protect j1939_session_insert with lock j1939: implement session queue j1939: rename j1939_sk_send_multi to j1939_sk_send_loop j1939: rename tp_sessionq to active_session_list j1939: rename jsk_fifo to sk_session_queue_entry net/can/j1939/j1939-priv.h | 78 +++++++- net/can/j1939/main.c | 2 + net/can/j1939/socket.c | 238 +++++++++++++---------- net/can/j1939/transport.c | 384 ++++++++++++++++++------------------- 4 files changed, 388 insertions(+), 314 deletions(-) -- 2.20.1