> -----Original Message-----
> From: Parthasarathy Bhuvaragan
> Sent: Tuesday, 04 October, 2016 08:29
> To: tipc-discussion@lists.sourceforge.net; Jon Maloy <jon.ma...@ericsson.com>;
> ma...@donjonn.com; Ying Xue <ying....@windriver.com>
> Subject: [PATCH net v1 2/3] tipc: return early for non-blocking sockets at 
> link
> congestion
> 
> Until now, in stream/mcast send() we pass the message to the link
> layer even when the link is congested and add the socket to the
> link's wakeup queue. This is unnecessary for non-blocking sockets.
> If a socket is set to non-blocking and sends multicast with zero
> back off time while receiving EAGAIN, we exhaust the memory.
> 
> In this commit, we return immediately at stream/mcast send() for
> non-blocking sockets.
> 
> Signed-off-by: Parthasarathy Bhuvaragan
> <parthasarathy.bhuvara...@ericsson.com>
> ---
>  net/tipc/socket.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/net/tipc/socket.c b/net/tipc/socket.c
> index f9f5f3c3dab5..adf3e6ecf61e 100644
> --- a/net/tipc/socket.c
> +++ b/net/tipc/socket.c
> @@ -697,6 +697,9 @@ static int tipc_sendmcast(struct  socket *sock, struct
> tipc_name_seq *seq,
>       uint mtu;
>       int rc;
> 
> +     if (!timeo && tsk->link_cong)
> +             return -ELINKCONG;

Why is the !timeo test needed ?

///jon

> +
>       msg_set_type(mhdr, TIPC_MCAST_MSG);
>       msg_set_lookup_scope(mhdr, TIPC_CLUSTER_SCOPE);
>       msg_set_destport(mhdr, 0);
> @@ -1072,6 +1075,9 @@ static int __tipc_send_stream(struct socket *sock,
> struct msghdr *m, size_t dsz)
>       }
> 
>       timeo = sock_sndtimeo(sk, m->msg_flags & MSG_DONTWAIT);
> +     if (!timeo && tsk->link_cong)
> +             return -ELINKCONG;
> +
>       dnode = tsk_peer_node(tsk);
>       skb_queue_head_init(&pktchain);
> 
> --
> 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
tipc-discussion@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tipc-discussion

Reply via email to