Re: [PATCH] sctp: Try to encourage SACK bundling with DATA.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Vlad Yasevich wrote:
> If the association has a SACK timer pending and now DATA queued
> to be send, we'll try to bundle the SACK with the next application send.
> As such, try encourage bundling by accounting for SACK in the size
> of the first chunk fragment.
>
> Signed-off-by: Vlad Yasevich <vladislav.yasevich@xxxxxx>
> ---
>  net/sctp/chunk.c |    9 +++++++++
>  1 files changed, 9 insertions(+), 0 deletions(-)
>
> diff --git a/net/sctp/chunk.c b/net/sctp/chunk.c
> index 1748ef9..05b532e 100644
> --- a/net/sctp/chunk.c
> +++ b/net/sctp/chunk.c
> @@ -196,6 +196,15 @@ struct sctp_datamsg *sctp_datamsg_from_user(struct sctp_association *asoc,
>  	whole = 0;
>  	first_len = max;
>  
> +	/* Check to see if we have a pending SACK and try to let it be bundled
> +	 * with this message.  Do this if we don't have any data queued already.
> +	 * To check that, look at out_qlen and retransmit list.
> +	 */
> +	if (timer_pending(&asoc->timers[SCTP_EVENT_TIMEOUT_SACK]) &&
> +	    asoc->outqueue.out_qlen == 0 &&
> +	    list_empty(&asoc->outqueue.retransmit))
> +		first_len -= WORD_ROUND(sizeof(sctp_sack_chunk_t));
> +
>   

Maybe we should check the first_len < WORD_ROUND(sizeof(sctp_sack_chunk_t)).
Some time when first_len = asoc->frag_point - AUTH_CHUNK - SACK_CHUNK, if
the user set the frag_point to a low value such as 40, the first_len will
be negative value.
The same problem exists when we hold the room for AUTH chunk.

I have checked that asoc->frag_point can be set between 8 and
SCTP_MAX_CHUNK_LEN.



>  	/* Encourage Cookie-ECHO bundling. */
>  	if (asoc->state < SCTP_STATE_COOKIE_ECHOED) {
>  		whole = msg_len / (max - SCTP_ARBITRARY_COOKIE_ECHO_LEN);
>   


--
To unsubscribe from this list: send the line "unsubscribe linux-sctp" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Networking Development]     [Linux OMAP]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux