Author: tuexen
Date: Sat Apr  7 18:02:17 2018
New Revision: 332190
URL: https://svnweb.freebsd.org/changeset/base/332190

Log:
  MFC r323670:
  
  Fix an accounting bug and use sctp_timer_start to start a timer.

Modified:
  stable/11/sys/netinet/sctp_indata.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/netinet/sctp_indata.c
==============================================================================
--- stable/11/sys/netinet/sctp_indata.c Sat Apr  7 17:59:08 2018        
(r332189)
+++ stable/11/sys/netinet/sctp_indata.c Sat Apr  7 18:02:17 2018        
(r332190)
@@ -1594,9 +1594,17 @@ sctp_queue_data_for_reasm(struct sctp_tcb *stcb, struc
                                    next_fsn, control->fsn_included);
                                TAILQ_REMOVE(&control->reasm, at, sctp_next);
                                lenadded = sctp_add_chk_to_control(control, 
strm, stcb, asoc, at, SCTP_READ_LOCK_NOT_HELD);
-                               asoc->size_on_all_streams += lenadded;
                                if (control->on_read_q) {
                                        do_wakeup = 1;
+                               } else {
+                                       /*
+                                        * We only add to the
+                                        * size-on-all-streams if its not on
+                                        * the read q. The read q flag will
+                                        * cause a sballoc so its accounted
+                                        * for there.
+                                        */
+                                       asoc->size_on_all_streams += lenadded;
                                }
                                next_fsn++;
                                if (control->end_added && 
control->pdapi_started) {
@@ -4229,8 +4237,7 @@ again:
                }
                if (net->flight_size) {
                        j++;
-                       (void)SCTP_OS_TIMER_START(&net->rxt_timer.timer, 
to_ticks,
-                           sctp_timeout_handler, &net->rxt_timer);
+                       sctp_timer_start(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, 
stcb, net);
                        if (net->window_probe) {
                                net->window_probe = 0;
                        }
@@ -4242,8 +4249,7 @@ again:
                                 */
                                net->window_probe = 0;
                                if 
(!SCTP_OS_TIMER_PENDING(&net->rxt_timer.timer)) {
-                                       
SCTP_OS_TIMER_START(&net->rxt_timer.timer, to_ticks,
-                                           sctp_timeout_handler, 
&net->rxt_timer);
+                                       sctp_timer_start(SCTP_TIMER_TYPE_SEND, 
stcb->sctp_ep, stcb, net);
                                }
                        } else if 
(SCTP_OS_TIMER_PENDING(&net->rxt_timer.timer)) {
                                sctp_timer_stop(SCTP_TIMER_TYPE_SEND, 
stcb->sctp_ep,
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to