Please ignore this patch and 'tipc: Fix missing connection request handling'.
They dont belong to this series and they are not the right version. /Partha On 03/13/2017 06:57 PM, Parthasarathy Bhuvaragan wrote: > In this commit, we fix the following two errors: > 1. In tipc_send_stream(), fix the return value during congestion > when the send is partially successful. Until now, we return -1 > instead of returning the partial sent bytes. > 2. In tipc_recv_stream(), we update the rcv_unack not based on the > message size, but on sz. Usually they are the same, but in cases > where the socket receivers buffer is smaller than the incoming > message, these two parameters differ greatly. This introduces a > slack in accounting leading to permanent congestion. In this > commit, we perform accounting always based on the incoming message. > > Signed-off-by: Parthasarathy Bhuvaragan > <parthasarathy.bhuvara...@ericsson.com> > --- > net/tipc/socket.c | 9 ++++----- > 1 file changed, 4 insertions(+), 5 deletions(-) > > diff --git a/net/tipc/socket.c b/net/tipc/socket.c > index 6b09a778cc71..79e628cd08a9 100644 > --- a/net/tipc/socket.c > +++ b/net/tipc/socket.c > @@ -1080,7 +1080,7 @@ static int __tipc_sendstream(struct socket *sock, > struct msghdr *m, size_t dlen) > } > } while (sent < dlen && !rc); > > - return rc ? rc : sent; > + return sent ? sent : rc; > } > > /** > @@ -1481,16 +1481,15 @@ static int tipc_recv_stream(struct socket *sock, > struct msghdr *m, > if (unlikely(flags & MSG_PEEK)) > goto exit; > > - tsk->rcv_unacked += tsk_inc(tsk, hlen + sz); > + tsk->rcv_unacked += tsk_inc(tsk, hlen + msg_data_sz(msg)); > if (unlikely(tsk->rcv_unacked >= (tsk->rcv_win / 4))) > tipc_sk_send_ack(tsk); > tsk_advance_rx_queue(sk); > > /* Loop around if more data is required */ > - if ((sz_copied < buf_len) && /* didn't get all requested data */ > + if ((!err) && (sz_copied < buf_len) && > (!skb_queue_empty(&sk->sk_receive_queue) || > - (sz_copied < target)) && /* and more is ready or required */ > - (!err)) /* and haven't reached a FIN */ > + (sz_copied < target))) > goto restart; > > exit: > ------------------------------------------------------------------------------ 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 tipc-discussion@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/tipc-discussion