@@ -503,7 +503,8 @@ enum quic_tx_err qc_send_mux(struct quic_conn *qc, struct list *frms,
503503 struct quic_cc * cc = & qc -> path -> cc ;
504504
505505 ns_pkts = cc -> algo -> pacing_delay_ns (cc );
506- max_dgram = global .tune .quic_frontend_max_tx_burst * 1000000 / (ns_pkts + 1 ) + 1 ;
506+ //max_dgram = global.tune.quic_frontend_max_tx_burst * 1000000 / (ns_pkts + 1) + 1;
507+ max_dgram = qc -> path -> send_quantum / qc -> path -> mtu ;
507508 }
508509
509510 TRACE_STATE ("preparing data (from MUX)" , QUIC_EV_CONN_TXPKT , qc );
@@ -513,9 +514,9 @@ enum quic_tx_err qc_send_mux(struct quic_conn *qc, struct list *frms,
513514 ret = QUIC_TX_ERR_FATAL ;
514515 }
515516 else if (pacer ) {
516- if (max_dgram && max_dgram = = sent && !LIST_ISEMPTY (frms ))
517+ if (max_dgram && max_dgram < = sent && !LIST_ISEMPTY (frms ))
517518 ret = QUIC_TX_ERR_AGAIN ;
518- quic_pacing_sent_done (pacer , sent , ns_pkts );
519+ quic_pacing_sent_done (pacer , sent > 2 ? sent - 1 : sent , ns_pkts );
519520 }
520521
521522 TRACE_LEAVE (QUIC_EV_CONN_TXPKT , qc );
@@ -881,7 +882,7 @@ int qc_send(struct quic_conn *qc, int old_data, struct list *send_list,
881882 }
882883
883884 ret += prep_pkts ;
884- if (max_dgrams && ret == max_dgrams && !LIST_ISEMPTY (send_list )) {
885+ if (max_dgrams && ret >= max_dgrams ) { // && !LIST_ISEMPTY(send_list)) {
885886 TRACE_DEVEL ("stopping for artificial pacing" , QUIC_EV_CONN_TXPKT , qc );
886887 break ;
887888 }
0 commit comments