Date: Sun, 16 May 2010 16:51:44 +0000 (UTC) From: Randall Stewart <rrs@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r208157 - stable/8/sys/netinet Message-ID: <201005161651.o4GGpiaL058895@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: rrs Date: Sun May 16 16:51:44 2010 New Revision: 208157 URL: http://svn.freebsd.org/changeset/base/208157 Log: MFC 207983 More PR-SCTP bugs: - Make sure that when you kick the streams you add correctly using a 16 bit unsigned. - Make sure when sending out you allow FWD-TSN to skip over and list the ACKED chunks in the stream/seq list (so the rcv will kick the stream) Modified: stable/8/sys/netinet/sctp_indata.c stable/8/sys/netinet/sctp_output.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/xen/xenpci/ (props changed) stable/8/sys/geom/sched/ (props changed) Modified: stable/8/sys/netinet/sctp_indata.c ============================================================================== --- stable/8/sys/netinet/sctp_indata.c Sun May 16 16:50:33 2010 (r208156) +++ stable/8/sys/netinet/sctp_indata.c Sun May 16 16:51:44 2010 (r208157) @@ -3750,7 +3750,8 @@ sctp_try_advance_peer_ack_point(struct s * the chunk, advance our peer ack point and we can check * the next chunk. */ - if (tp1->sent == SCTP_FORWARD_TSN_SKIP) { + if ((tp1->sent == SCTP_FORWARD_TSN_SKIP) || + (tp1->sent == SCTP_DATAGRAM_ACKED)) { /* advance PeerAckPoint goes forward */ if (compare_with_wrap(tp1->rec.data.TSN_seq, asoc->advanced_peer_ack_point, @@ -5351,7 +5352,7 @@ sctp_kick_prsctp_reorder_queue(struct sc { struct sctp_queued_to_read *ctl, *nctl; struct sctp_association *asoc; - int tt; + uint16_t tt; asoc = &stcb->asoc; tt = strmin->last_sequence_delivered; Modified: stable/8/sys/netinet/sctp_output.c ============================================================================== --- stable/8/sys/netinet/sctp_output.c Sun May 16 16:50:33 2010 (r208156) +++ stable/8/sys/netinet/sctp_output.c Sun May 16 16:51:44 2010 (r208157) @@ -9707,7 +9707,6 @@ send_forward_tsn(struct sctp_tcb *stcb, chk->rec.chunk_id.can_take_data = 0; chk->asoc = asoc; chk->whoTo = NULL; - chk->data = sctp_get_mbuf_for_msg(MCLBYTES, 0, M_DONTWAIT, 1, MT_DATA); if (chk->data == NULL) { sctp_free_a_chunk(stcb, chk); @@ -9734,7 +9733,8 @@ sctp_fill_in_rest: unsigned int cnt_of_skipped = 0; TAILQ_FOREACH(at, &asoc->sent_queue, sctp_next) { - if (at->sent != SCTP_FORWARD_TSN_SKIP) { + if ((at->sent != SCTP_FORWARD_TSN_SKIP) && + (at->sent != SCTP_DATAGRAM_ACKED)) { /* no more to look at */ break; }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201005161651.o4GGpiaL058895>