Lines Matching refs:pkt_space

972     void (*ack_deadline_cb)(OSSL_TIME deadline, int pkt_space, void *arg);
985 static struct tx_pkt_history_st *get_tx_history(OSSL_ACKM *ackm, int pkt_space) in get_tx_history() argument
987 assert(!ackm->discarded[pkt_space]); in get_tx_history()
989 return &ackm->tx_history[pkt_space]; in get_tx_history()
996 static struct rx_pkt_history_st *get_rx_history(OSSL_ACKM *ackm, int pkt_space) in get_rx_history() argument
998 assert(!ackm->discarded[pkt_space]); in get_rx_history()
1000 return &ackm->rx_history[pkt_space]; in get_rx_history()
1040 int pkt_space) in ackm_detect_and_remove_newly_acked_pkts() argument
1059 h = get_tx_history(ackm, pkt_space); in ackm_detect_and_remove_newly_acked_pkts()
1116 int pkt_space) in ackm_detect_and_remove_lost_pkts() argument
1123 assert(ackm->largest_acked_pkt[pkt_space] != QUIC_PN_INVALID); in ackm_detect_and_remove_lost_pkts()
1127 ackm->loss_time[pkt_space] = ossl_time_zero(); in ackm_detect_and_remove_lost_pkts()
1141 h = get_tx_history(ackm, pkt_space); in ackm_detect_and_remove_lost_pkts()
1145 assert(pkt_space == pkt->pkt_space); in ackm_detect_and_remove_lost_pkts()
1153 if (pkt->pkt_num > ackm->largest_acked_pkt[pkt_space]) in ackm_detect_and_remove_lost_pkts()
1160 || ackm->largest_acked_pkt[pkt_space] in ackm_detect_and_remove_lost_pkts()
1168 if (ossl_time_is_zero(ackm->loss_time[pkt_space])) in ackm_detect_and_remove_lost_pkts()
1169 ackm->loss_time[pkt_space] = in ackm_detect_and_remove_lost_pkts()
1172 ackm->loss_time[pkt_space] = in ackm_detect_and_remove_lost_pkts()
1173 ossl_time_min(ackm->loss_time[pkt_space], in ackm_detect_and_remove_lost_pkts()
1299 static void ackm_on_pkts_lost(OSSL_ACKM *ackm, int pkt_space, in ackm_on_pkts_lost() argument
1313 ackm->ack_eliciting_bytes_in_flight[p->pkt_space] in ackm_on_pkts_lost()
1336 ackm->tx_history[pkt_space].highest_sent, in ackm_on_pkts_lost()
1354 ackm->ack_eliciting_bytes_in_flight[apkt->pkt_space] in ackm_on_pkts_acked()
1367 apkt->pkt_space), in ackm_on_pkts_acked()
1435 struct tx_pkt_history_st *h = get_tx_history(ackm, pkt->pkt_space); in ossl_ackm_on_tx_packet()
1439 || ossl_time_compare(ackm->time_of_last_ack_eliciting_pkt[pkt->pkt_space], in ossl_ackm_on_tx_packet()
1452 ackm->time_of_last_ack_eliciting_pkt[pkt->pkt_space] = pkt->time; in ossl_ackm_on_tx_packet()
1453 ackm->ack_eliciting_bytes_in_flight[pkt->pkt_space] in ossl_ackm_on_tx_packet()
1478 int pkt_space) in ackm_process_ecn() argument
1487 if (ack->ecnce > ackm->peer_ecnce[pkt_space]) { in ackm_process_ecn()
1488 ackm->peer_ecnce[pkt_space] = ack->ecnce; in ackm_process_ecn()
1490 h = get_tx_history(ackm, pkt_space); in ackm_process_ecn()
1500 int pkt_space, OSSL_TIME rx_time) in ossl_ackm_on_rx_ack_frame() argument
1505 if (ackm->largest_acked_pkt[pkt_space] == QUIC_PN_INVALID) in ossl_ackm_on_rx_ack_frame()
1506 ackm->largest_acked_pkt[pkt_space] = ack->ack_ranges[0].end; in ossl_ackm_on_rx_ack_frame()
1508 ackm->largest_acked_pkt[pkt_space] in ossl_ackm_on_rx_ack_frame()
1509 = ossl_quic_pn_max(ackm->largest_acked_pkt[pkt_space], in ossl_ackm_on_rx_ack_frame()
1517 && pkt_space == QUIC_PN_SPACE_HANDSHAKE) { in ossl_ackm_on_rx_ack_frame()
1525 na_pkts = ackm_detect_and_remove_newly_acked_pkts(ackm, ack, pkt_space); in ossl_ackm_on_rx_ack_frame()
1560 ackm_process_ecn(ackm, ack, pkt_space); in ossl_ackm_on_rx_ack_frame()
1563 lost_pkts = ackm_detect_and_remove_lost_pkts(ackm, pkt_space); in ossl_ackm_on_rx_ack_frame()
1565 ackm_on_pkts_lost(ackm, pkt_space, lost_pkts); in ossl_ackm_on_rx_ack_frame()
1580 int ossl_ackm_on_pkt_space_discarded(OSSL_ACKM *ackm, int pkt_space) in ossl_ackm_on_pkt_space_discarded() argument
1585 assert(pkt_space < QUIC_PN_SPACE_APP); in ossl_ackm_on_pkt_space_discarded()
1587 if (ackm->discarded[pkt_space]) in ossl_ackm_on_pkt_space_discarded()
1590 if (pkt_space == QUIC_PN_SPACE_HANDSHAKE) in ossl_ackm_on_pkt_space_discarded()
1593 for (pkt = get_tx_history(ackm, pkt_space)->head; pkt != NULL; pkt = pnext) { in ossl_ackm_on_pkt_space_discarded()
1603 tx_pkt_history_destroy(&ackm->tx_history[pkt_space]); in ossl_ackm_on_pkt_space_discarded()
1604 rx_pkt_history_destroy(&ackm->rx_history[pkt_space]); in ossl_ackm_on_pkt_space_discarded()
1610 ackm->time_of_last_ack_eliciting_pkt[pkt_space] = ossl_time_zero(); in ossl_ackm_on_pkt_space_discarded()
1611 ackm->loss_time[pkt_space] = ossl_time_zero(); in ossl_ackm_on_pkt_space_discarded()
1613 ackm->discarded[pkt_space] = 1; in ossl_ackm_on_pkt_space_discarded()
1614 ackm->ack_eliciting_bytes_in_flight[pkt_space] = 0; in ossl_ackm_on_pkt_space_discarded()
1637 static void ackm_queue_probe(OSSL_ACKM *ackm, int pkt_space) in ackm_queue_probe() argument
1639 ++ackm->pending_probe.pto[pkt_space]; in ackm_queue_probe()
1644 int pkt_space; in ossl_ackm_on_timeout() local
1648 earliest_loss_time = ackm_get_loss_time_and_space(ackm, &pkt_space); in ossl_ackm_on_timeout()
1651 lost_pkts = ackm_detect_and_remove_lost_pkts(ackm, pkt_space); in ossl_ackm_on_timeout()
1653 ackm_on_pkts_lost(ackm, pkt_space, lost_pkts); in ossl_ackm_on_timeout()
1675 ackm_get_pto_time_and_space(ackm, &pkt_space); in ossl_ackm_on_timeout()
1676 ackm_queue_probe(ackm, pkt_space); in ossl_ackm_on_timeout()
1700 int ossl_ackm_get_largest_unacked(OSSL_ACKM *ackm, int pkt_space, QUIC_PN *pn) in ossl_ackm_get_largest_unacked() argument
1704 h = get_tx_history(ackm, pkt_space); in ossl_ackm_get_largest_unacked()
1733 int ossl_ackm_is_ack_desired(OSSL_ACKM *ackm, int pkt_space) in ossl_ackm_is_ack_desired() argument
1735 return ackm->rx_ack_desired[pkt_space] in ossl_ackm_is_ack_desired()
1736 || (!ossl_time_is_infinite(ackm->rx_ack_flush_deadline[pkt_space]) in ossl_ackm_is_ack_desired()
1738 ackm->rx_ack_flush_deadline[pkt_space]) >= 0); in ossl_ackm_is_ack_desired()
1759 static int ackm_is_missing(OSSL_ACKM *ackm, int pkt_space, QUIC_PN pkt_num) in ackm_is_missing() argument
1765 return ackm->ack[pkt_space].num_ack_ranges > 0 in ackm_is_missing()
1766 && pkt_num <= ackm->ack[pkt_space].ack_ranges[0].end in ackm_is_missing()
1767 && !ack_contains(&ackm->ack[pkt_space], pkt_num); in ackm_is_missing()
1774 static int ackm_has_newly_missing(OSSL_ACKM *ackm, int pkt_space) in ackm_has_newly_missing() argument
1778 h = get_rx_history(ackm, pkt_space); in ackm_has_newly_missing()
1795 return ackm->ack[pkt_space].num_ack_ranges > 0 in ackm_has_newly_missing()
1798 > ackm->ack[pkt_space].ack_ranges[0].end + 1; in ackm_has_newly_missing()
1801 static void ackm_set_flush_deadline(OSSL_ACKM *ackm, int pkt_space, in ackm_set_flush_deadline() argument
1804 ackm->rx_ack_flush_deadline[pkt_space] = deadline; in ackm_set_flush_deadline()
1807 ackm->ack_deadline_cb(ossl_ackm_get_ack_deadline(ackm, pkt_space), in ackm_set_flush_deadline()
1808 pkt_space, ackm->ack_deadline_cb_arg); in ackm_set_flush_deadline()
1812 static void ackm_queue_ack(OSSL_ACKM *ackm, int pkt_space) in ackm_queue_ack() argument
1814 ackm->rx_ack_desired[pkt_space] = 1; in ackm_queue_ack()
1817 ackm_set_flush_deadline(ackm, pkt_space, ossl_time_infinite()); in ackm_queue_ack()
1821 OSSL_TIME rx_time, int pkt_space, in ackm_on_rx_ack_eliciting() argument
1824 if (ackm->rx_ack_desired[pkt_space]) in ackm_on_rx_ack_eliciting()
1828 ++ackm->rx_ack_eliciting_pkts_since_last_ack[pkt_space]; in ackm_on_rx_ack_eliciting()
1830 if (!ackm->rx_ack_generated[pkt_space] in ackm_on_rx_ack_eliciting()
1832 || ackm->rx_ack_eliciting_pkts_since_last_ack[pkt_space] in ackm_on_rx_ack_eliciting()
1834 || ackm_has_newly_missing(ackm, pkt_space)) { in ackm_on_rx_ack_eliciting()
1857 ackm_queue_ack(ackm, pkt_space); in ackm_on_rx_ack_eliciting()
1866 if (ossl_time_is_infinite(ackm->rx_ack_flush_deadline[pkt_space])) in ackm_on_rx_ack_eliciting()
1867 ackm_set_flush_deadline(ackm, pkt_space, in ackm_on_rx_ack_eliciting()
1871 ackm_set_flush_deadline(ackm, pkt_space, in ackm_on_rx_ack_eliciting()
1872 ossl_time_min(ackm->rx_ack_flush_deadline[pkt_space], in ackm_on_rx_ack_eliciting()
1879 struct rx_pkt_history_st *h = get_rx_history(ackm, pkt->pkt_space); in ossl_ackm_on_rx_packet()
1882 if (ossl_ackm_is_rx_pn_processable(ackm, pkt->pkt_num, pkt->pkt_space) != 1) in ossl_ackm_on_rx_packet()
1890 if (pkt->pkt_num > ackm->rx_largest_pn[pkt->pkt_space]) { in ossl_ackm_on_rx_packet()
1891 ackm->rx_largest_pn[pkt->pkt_space] = pkt->pkt_num; in ossl_ackm_on_rx_packet()
1892 ackm->rx_largest_time[pkt->pkt_space] = pkt->time; in ossl_ackm_on_rx_packet()
1901 was_missing = ackm_is_missing(ackm, pkt->pkt_space, pkt->pkt_num); in ossl_ackm_on_rx_packet()
1916 ackm_on_rx_ack_eliciting(ackm, pkt->time, pkt->pkt_space, was_missing); in ossl_ackm_on_rx_packet()
1921 ++ackm->rx_ect0[pkt->pkt_space]; in ossl_ackm_on_rx_packet()
1924 ++ackm->rx_ect1[pkt->pkt_space]; in ossl_ackm_on_rx_packet()
1927 ++ackm->rx_ecnce[pkt->pkt_space]; in ossl_ackm_on_rx_packet()
1936 static void ackm_fill_rx_ack_ranges(OSSL_ACKM *ackm, int pkt_space, in ackm_fill_rx_ack_ranges() argument
1939 struct rx_pkt_history_st *h = get_rx_history(ackm, pkt_space); in ackm_fill_rx_ack_ranges()
1950 ackm->ack_ranges[pkt_space][i] = x->range; in ackm_fill_rx_ack_ranges()
1952 ack->ack_ranges = ackm->ack_ranges[pkt_space]; in ackm_fill_rx_ack_ranges()
1957 int pkt_space) in ossl_ackm_get_ack_frame() argument
1959 OSSL_QUIC_FRAME_ACK *ack = &ackm->ack[pkt_space]; in ossl_ackm_get_ack_frame()
1962 ackm_fill_rx_ack_ranges(ackm, pkt_space, ack); in ossl_ackm_get_ack_frame()
1964 if (!ossl_time_is_zero(ackm->rx_largest_time[pkt_space]) in ossl_ackm_get_ack_frame()
1965 && ossl_time_compare(now, ackm->rx_largest_time[pkt_space]) > 0 in ossl_ackm_get_ack_frame()
1966 && pkt_space == QUIC_PN_SPACE_APP) in ossl_ackm_get_ack_frame()
1968 ossl_time_subtract(now, ackm->rx_largest_time[pkt_space]); in ossl_ackm_get_ack_frame()
1972 ack->ect0 = ackm->rx_ect0[pkt_space]; in ossl_ackm_get_ack_frame()
1973 ack->ect1 = ackm->rx_ect1[pkt_space]; in ossl_ackm_get_ack_frame()
1974 ack->ecnce = ackm->rx_ecnce[pkt_space]; in ossl_ackm_get_ack_frame()
1977 ackm->rx_ack_eliciting_pkts_since_last_ack[pkt_space] = 0; in ossl_ackm_get_ack_frame()
1979 ackm->rx_ack_generated[pkt_space] = 1; in ossl_ackm_get_ack_frame()
1980 ackm->rx_ack_desired[pkt_space] = 0; in ossl_ackm_get_ack_frame()
1981 ackm_set_flush_deadline(ackm, pkt_space, ossl_time_infinite()); in ossl_ackm_get_ack_frame()
1986 OSSL_TIME ossl_ackm_get_ack_deadline(OSSL_ACKM *ackm, int pkt_space) in ossl_ackm_get_ack_deadline() argument
1988 if (ackm->rx_ack_desired[pkt_space]) in ossl_ackm_get_ack_deadline()
1992 return ackm->rx_ack_flush_deadline[pkt_space]; in ossl_ackm_get_ack_deadline()
1995 int ossl_ackm_is_rx_pn_processable(OSSL_ACKM *ackm, QUIC_PN pn, int pkt_space) in ossl_ackm_is_rx_pn_processable() argument
1997 struct rx_pkt_history_st *h = get_rx_history(ackm, pkt_space); in ossl_ackm_is_rx_pn_processable()
2013 int pkt_space, in ossl_ackm_set_ack_deadline_callback() argument