> -----Original Message-----
> From: Parthasarathy Bhuvaragan
> Sent: Monday, March 20, 2017 05:10 AM
> To: [email protected]; Jon Maloy
> <[email protected]>; Ying Xue <[email protected]>
> Subject: [PATCH net v1 3/7] tipc: fix flow control accounting for implicit
> connect
>
> In the case of implicit connect message with data > 1K, the flow control
> accounting is incorrect. At this state, the socket does not know the peer
> nodes capability and falls back to legacy flow control by return 1, however
> the receiver of this message will perform the new block accounting. This
> leads to an accounting error and eventually traffic disturbance.
>
> In this commit, we perform tipc_node_get_capabilities() at implicit connect
> and perform accounting based on the peer's capability.
>
> Fixes: 10724cc7bb78 ("tipc: redesign connection-level flow control")
> Signed-off-by: Parthasarathy Bhuvaragan
> <[email protected]>
> ---
> net/tipc/socket.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/net/tipc/socket.c b/net/tipc/socket.c index
> 566906795c8c..2c2ea2e15c45 100644
> --- a/net/tipc/socket.c
> +++ b/net/tipc/socket.c
> @@ -1054,8 +1054,11 @@ static int __tipc_sendstream(struct socket *sock,
> struct msghdr *m, size_t dlen)
> /* Handle implicit connection setup */
> if (unlikely(dest)) {
> rc = __tipc_sendmsg(sock, m, dlen);
> - if (dlen && (dlen == rc))
> + if (dlen && (dlen == rc)) {
> + dnode = dest->addr.id.node;
This is not correct. 'dest' may quite well be a struct tipc_portname, which
will be translated during the _tipc_sendmsg() call, and set the socket's peer
node field.
So, the right thing to do here is:
dnode = tsk_peer_node(tsk);
This works even if 'dest'is a struct tipc_portid.
///jon
> + tsk->peer_caps = tipc_node_get_capabilities(net,
> dnode);
> tsk->snt_unacked = tsk_inc(tsk, dlen +
> msg_hdr_sz(hdr));
> + }
> return rc;
> }
>
> --
> 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