diff options
| author | Sridhar Samudrala <sri@us.ibm.com> | 2003-02-17 18:09:28 -0800 |
|---|---|---|
| committer | Sridhar Samudrala <sri@us.ibm.com> | 2003-02-17 18:09:28 -0800 |
| commit | 9967b51fc01aae6d822ad62ff031ff2d656d5b10 (patch) | |
| tree | e956f79d598e25a7a42faab23d0794ec992c20fa /net/sctp/outqueue.c | |
| parent | 611f4c044cbd8595d40d09a34981e57aa8aa5f30 (diff) | |
| parent | 13970d8e1ff3451967050309ce14ae2b6160bfd5 (diff) | |
Merge us.ibm.com:/home/sridhar/BK/linux-2.5.62
into us.ibm.com:/home/sridhar/BK/lksctp-2.5.62
Diffstat (limited to 'net/sctp/outqueue.c')
| -rw-r--r-- | net/sctp/outqueue.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/net/sctp/outqueue.c b/net/sctp/outqueue.c index b1bfe69e61ed..1171984c3e20 100644 --- a/net/sctp/outqueue.c +++ b/net/sctp/outqueue.c @@ -193,11 +193,17 @@ int sctp_outq_tail(struct sctp_outq *q, sctp_chunk_t *chunk) : "Illegal Chunk"); skb_queue_tail(&q->out, (struct sk_buff *) chunk); + if (chunk->chunk_hdr->flags & SCTP_DATA_UNORDERED) + SCTP_INC_STATS(SctpOutUnorderChunks); + else + SCTP_INC_STATS(SctpOutOrderChunks); q->empty = 0; break; }; - } else + } else { skb_queue_tail(&q->control, (struct sk_buff *) chunk); + SCTP_INC_STATS(SctpOutCtrlChunks); + } if (error < 0) return error; @@ -315,6 +321,11 @@ void sctp_retransmit(struct sctp_outq *q, struct sctp_transport *transport, switch(reason) { case SCTP_RETRANSMIT_T3_RTX: sctp_transport_lower_cwnd(transport, SCTP_LOWER_CWND_T3_RTX); + /* Update the retran path if the T3-rtx timer has expired for + * the current retran path. + */ + if (transport == transport->asoc->peer.retran_path) + sctp_assoc_update_retran_path(transport->asoc); break; case SCTP_RETRANSMIT_FAST_RTX: sctp_transport_lower_cwnd(transport, SCTP_LOWER_CWND_FAST_RTX); |
