Lines Matching full:summary
33 struct rxrpc_ack_summary *summary) in rxrpc_congestion_management() argument
35 summary->change = rxrpc_cong_no_change; in rxrpc_congestion_management()
36 summary->in_flight = rxrpc_tx_in_flight(call); in rxrpc_congestion_management()
39 summary->retrans_timeo = true; in rxrpc_congestion_management()
40 call->cong_ssthresh = umax(summary->in_flight / 2, 2); in rxrpc_congestion_management()
50 call->cong_cumul_acks += summary->nr_new_sacks; in rxrpc_congestion_management()
51 call->cong_cumul_acks += summary->nr_new_hacks; in rxrpc_congestion_management()
80 summary->change = rxrpc_cong_rtt_window_end; in rxrpc_congestion_management()
90 if (summary->new_low_snack) { in rxrpc_congestion_management()
91 summary->change = rxrpc_cong_new_low_nack; in rxrpc_congestion_management()
102 summary->change = rxrpc_cong_begin_retransmission; in rxrpc_congestion_management()
104 call->cong_ssthresh = umax(summary->in_flight / 2, 2); in rxrpc_congestion_management()
108 summary->need_retransmit = true; in rxrpc_congestion_management()
109 summary->in_fast_or_rto_recovery = true; in rxrpc_congestion_management()
114 summary->in_fast_or_rto_recovery = true; in rxrpc_congestion_management()
115 if (!summary->new_low_snack) { in rxrpc_congestion_management()
116 if (summary->nr_new_sacks == 0) in rxrpc_congestion_management()
120 summary->change = rxrpc_cong_retransmit_again; in rxrpc_congestion_management()
122 summary->need_retransmit = true; in rxrpc_congestion_management()
125 summary->change = rxrpc_cong_progress; in rxrpc_congestion_management()
128 summary->exiting_fast_or_rto_recovery = true; in rxrpc_congestion_management()
140 summary->change = rxrpc_cong_cleared_nacks; in rxrpc_congestion_management()
153 trace_rxrpc_congest(call, summary); in rxrpc_congestion_management()
157 summary->change = rxrpc_cong_saw_nack; in rxrpc_congestion_management()
205 struct rxrpc_ack_summary *summary, in rxrpc_add_data_rtt_sample() argument
212 summary->acked_serial, summary->ack_serial, in rxrpc_add_data_rtt_sample()
221 struct rxrpc_ack_summary *summary) in rxrpc_rotate_tx_window() argument
235 summary->new_low_snack = true; in rxrpc_rotate_tx_window()
259 if (summary->acked_serial == tq->segment_serial[ix] && in rxrpc_rotate_tx_window()
261 rxrpc_add_data_rtt_sample(call, summary, tq, ix); in rxrpc_rotate_tx_window()
266 rxrpc_input_rack_one(call, summary, tq, ix); in rxrpc_rotate_tx_window()
268 summary->tlp_probe_acked = true; in rxrpc_rotate_tx_window()
269 summary->nr_new_hacks++; in rxrpc_rotate_tx_window()
271 trace_rxrpc_rotate(call, tq, summary, seq, rxrpc_rotate_trace_hack); in rxrpc_rotate_tx_window()
275 trace_rxrpc_rotate(call, tq, summary, seq, rxrpc_rotate_trace_sack); in rxrpc_rotate_tx_window()
279 rxrpc_input_rack_one(call, summary, tq, ix); in rxrpc_rotate_tx_window()
281 summary->tlp_probe_acked = true; in rxrpc_rotate_tx_window()
282 summary->nr_new_hacks++; in rxrpc_rotate_tx_window()
284 trace_rxrpc_rotate(call, tq, summary, seq, rxrpc_rotate_trace_snak); in rxrpc_rotate_tx_window()
305 trace_rxrpc_rack_update(call, summary); in rxrpc_rotate_tx_window()
324 trace_rxrpc_rack_update(call, summary); in rxrpc_rotate_tx_window()
387 struct rxrpc_ack_summary summary = { 0 }; in rxrpc_receiving_reply() local
396 if (!rxrpc_rotate_tx_window(call, top, &summary)) { in rxrpc_receiving_reply()
858 struct rxrpc_ack_summary *summary, in rxrpc_input_soft_rtt() argument
862 if (summary->acked_serial == tq->segment_serial[ix]) in rxrpc_input_soft_rtt()
863 return rxrpc_add_data_rtt_sample(call, summary, tq, ix); in rxrpc_input_soft_rtt()
870 struct rxrpc_ack_summary *summary, in rxrpc_input_soft_ack_tq() argument
904 summary->nr_new_sacks += a; in rxrpc_input_soft_ack_tq()
905 summary->nr_new_snacks += n; in rxrpc_input_soft_ack_tq()
918 summary->nr_new_sacks += a; in rxrpc_input_soft_ack_tq()
919 summary->nr_new_snacks += n; in rxrpc_input_soft_ack_tq()
922 summary->nr_new_snacks += new; in rxrpc_input_soft_ack_tq()
937 if (summary->acked_serial) in rxrpc_input_soft_ack_tq()
938 rxrpc_input_soft_rtt(call, summary, tq); in rxrpc_input_soft_ack_tq()
942 rxrpc_input_rack(call, summary, tq, new_acks); in rxrpc_input_soft_ack_tq()
947 summary->tlp_probe_acked = true; in rxrpc_input_soft_ack_tq()
960 struct rxrpc_ack_summary *summary, in rxrpc_input_soft_acks() argument
990 rxrpc_input_soft_ack_tq(call, summary, tq, extracted, RXRPC_NR_TXQUEUE, in rxrpc_input_soft_acks()
1003 rxrpc_input_soft_ack_tq(call, summary, tq, extracted, nr_reported, in rxrpc_input_soft_acks()
1014 summary->new_low_snack = true; in rxrpc_input_soft_acks()
1017 _debug("summary A=%d+%d N=%d+%d", in rxrpc_input_soft_acks()
1018 call->acks_nr_sacks, summary->nr_new_sacks, in rxrpc_input_soft_acks()
1019 call->acks_nr_snacks, summary->nr_new_snacks); in rxrpc_input_soft_acks()
1058 struct rxrpc_ack_summary summary = { 0 }; in rxrpc_input_ack() local
1068 summary.ack_serial = sp->hdr.serial; in rxrpc_input_ack()
1073 summary.acked_serial = sp->ack.acked_serial; in rxrpc_input_ack()
1074 summary.ack_reason = (sp->ack.reason < RXRPC_ACK__INVALID ? in rxrpc_input_ack()
1078 rxrpc_inc_stat(call->rxnet, stat_rx_acks[summary.ack_reason]); in rxrpc_input_ack()
1085 if (unlikely(summary.ack_reason == RXRPC_ACK_EXCEEDS_WINDOW) && in rxrpc_input_ack()
1098 if (unlikely(summary.ack_reason == RXRPC_ACK_OUT_OF_SEQUENCE) && in rxrpc_input_ack()
1110 trace_rxrpc_rx_discard_ack(call, summary.ack_serial, hard_ack, prev_pkt); in rxrpc_input_ack()
1127 if (summary.acked_serial) { in rxrpc_input_ack()
1128 switch (summary.ack_reason) { in rxrpc_input_ack()
1131 summary.acked_serial, summary.ack_serial, in rxrpc_input_ack()
1135 if (after(summary.acked_serial, call->acks_highest_serial)) in rxrpc_input_ack()
1136 call->acks_highest_serial = summary.acked_serial; in rxrpc_input_ack()
1137 summary.rtt_sample_avail = true; in rxrpc_input_ack()
1167 if (rxrpc_rotate_tx_window(call, hard_ack, &summary)) { in rxrpc_input_ack()
1176 rxrpc_input_soft_acks(call, &summary, skb); in rxrpc_input_ack()
1182 rxrpc_propose_ping(call, summary.ack_serial, in rxrpc_input_ack()
1188 rxrpc_congestion_management(call, &summary); in rxrpc_input_ack()
1189 rxrpc_rack_detect_loss_and_arm_timer(call, &summary); in rxrpc_input_ack()
1190 rxrpc_tlp_process_ack(call, &summary); in rxrpc_input_ack()
1191 if (call->tlp_serial && after_eq(summary.acked_serial, call->tlp_serial)) in rxrpc_input_ack()
1195 if (summary.ack_reason == RXRPC_ACK_PING) in rxrpc_input_ack()
1196 rxrpc_send_ACK(call, RXRPC_ACK_PING_RESPONSE, summary.ack_serial, in rxrpc_input_ack()
1199 rxrpc_send_ACK(call, RXRPC_ACK_REQUESTED, summary.ack_serial, in rxrpc_input_ack()
1208 struct rxrpc_ack_summary summary = { 0 }; in rxrpc_input_ackall() local
1210 if (rxrpc_rotate_tx_window(call, call->tx_top, &summary)) in rxrpc_input_ackall()