Lines Matching full:tsn

42 static int sctp_acked(struct sctp_sackhdr *sack, __u32 tsn);
153 static inline int sctp_cacc_skip_3_2(struct sctp_transport *primary, __u32 tsn) in sctp_cacc_skip_3_2() argument
156 TSN_lt(tsn, primary->cacc.next_tsn_at_change)) in sctp_cacc_skip_3_2()
163 * 3) If the missing report count for TSN t is to be
168 * TSN t SHOULD NOT be incremented.
178 __u32 tsn) in sctp_cacc_skip() argument
182 sctp_cacc_skip_3_2(primary, tsn))) in sctp_cacc_skip()
327 ntsn = ntohl(nchunk->subh.data_hdr->tsn); in sctp_insert_list()
331 ltsn = ntohl(lchunk->subh.data_hdr->tsn); in sctp_insert_list()
501 * 'TSN.Missing.Report' of all affected TSNs is set in sctp_retransmit_mark()
612 * E3) Determine how many of the earliest (i.e., lowest TSN) in __sctp_outq_flush_rtx()
958 /* PR-SCTP C5) If a FORWARD TSN is sent, the in sctp_outq_flush_ctrl()
1093 pr_debug("%s: outq:%p, chunk:%p[%s], tx-tsn:0x%x skb->head:%p skb->users:%d\n", in sctp_outq_flush_data()
1096 "illegal chunk", ntohl(chunk->subh.data_hdr->tsn), in sctp_outq_flush_data()
1107 pr_debug("%s: could not transmit tsn:0x%x, status:%d\n", in sctp_outq_flush_data()
1108 __func__, ntohl(chunk->subh.data_hdr->tsn), in sctp_outq_flush_data()
1198 * within a SCTP packet in increasing order of TSN. in sctp_outq_flush()
1246 __u32 sack_ctsn, ctsn, tsn; in sctp_outq_sack() local
1304 /* Get the highest TSN in the sack. */ in sctp_outq_sack()
1337 /* Move the Cumulative TSN Ack Point if appropriate. */ in sctp_outq_sack()
1362 tsn = ntohl(tchunk->subh.data_hdr->tsn); in sctp_outq_sack()
1363 if (TSN_lte(tsn, ctsn)) { in sctp_outq_sack()
1374 * Cumulative TSN Ack and the Gap Ack Blocks. in sctp_outq_sack()
1390 pr_debug("%s: sack cumulative tsn ack:0x%x\n", __func__, sack_ctsn); in sctp_outq_sack()
1391 pr_debug("%s: cumulative tsn ack of assoc:%p is 0x%x, " in sctp_outq_sack()
1413 * list and move chunks that are acked by the Cumulative TSN Ack to q->sacked.
1418 * Instead of printing 'sacked' or 'kept' for each TSN on the
1432 __u32 tsn; in sctp_check_transmitted() local
1466 tsn = ntohl(tchunk->subh.data_hdr->tsn); in sctp_check_transmitted()
1467 if (sctp_acked(sack, tsn)) { in sctp_check_transmitted()
1493 if (TSN_lte(tsn, sack_ctsn)) { in sctp_check_transmitted()
1501 * B) For each TSN t being acked that in sctp_check_transmitted()
1504 * the destination that the TSN was in sctp_check_transmitted()
1523 if (TSN_lt(*highest_new_tsn_in_sack, tsn)) in sctp_check_transmitted()
1524 *highest_new_tsn_in_sack = tsn; in sctp_check_transmitted()
1531 if (TSN_lte(tsn, sack_ctsn)) { in sctp_check_transmitted()
1536 * with the earliest outstanding TSN in sctp_check_transmitted()
1549 * 'Stray DATA chunk(s)' record the highest TSN in sctp_check_transmitted()
1558 * unacknowledged DATA chunks whose TSN is in sctp_check_transmitted()
1566 pr_debug("%s: receiver reneged on data TSN:0x%x\n", in sctp_check_transmitted()
1567 __func__, tsn); in sctp_check_transmitted()
1577 * TSN that was previously acknowledged via a in sctp_check_transmitted()
1602 /* 8.2. When an outstanding TSN is acknowledged, in sctp_check_transmitted()
1703 __u32 tsn; in sctp_mark_missing() local
1710 tsn = ntohl(chunk->subh.data_hdr->tsn); in sctp_mark_missing()
1713 * 'Unacknowledged TSN's', if the TSN number of an in sctp_mark_missing()
1714 * 'Unacknowledged TSN' is smaller than the 'HighestTSNinSack' in sctp_mark_missing()
1715 * value, increment the 'TSN.Missing.Report' count on that in sctp_mark_missing()
1721 TSN_lt(tsn, highest_new_tsn_in_sack)) { in sctp_mark_missing()
1728 count_of_newacks, tsn)) { in sctp_mark_missing()
1731 pr_debug("%s: tsn:0x%x missing counter:%d\n", in sctp_mark_missing()
1732 __func__, tsn, chunk->tsn_missing_report); in sctp_mark_missing()
1737 * 'TSN.Missing.Report' in sctp_mark_missing()
1759 /* Is the given TSN acked by this packet? */
1760 static int sctp_acked(struct sctp_sackhdr *sack, __u32 tsn) in sctp_acked() argument
1767 if (TSN_lte(tsn, ctsn)) in sctp_acked()
1776 * chunks with TSNs greater than or equal to (Cumulative TSN in sctp_acked()
1778 * (Cumulative TSN Ack + Gap Ack Block End) of each Gap Ack in sctp_acked()
1784 tsn_offset = tsn - ctsn; in sctp_acked()
1816 __u32 tsn; in sctp_generate_fwdtsn() local
1823 /* PR-SCTP C1) Let SackCumAck be the Cumulative TSN ACK carried in the in sctp_generate_fwdtsn()
1837 * Assuming that a SACK arrived with the Cumulative TSN ACK 102 in sctp_generate_fwdtsn()
1856 tsn = ntohl(chunk->subh.data_hdr->tsn); in sctp_generate_fwdtsn()
1861 if (TSN_lte(tsn, ctsn)) { in sctp_generate_fwdtsn()
1865 if (TSN_lte(tsn, asoc->adv_peer_ack_point+1)) { in sctp_generate_fwdtsn()
1866 asoc->adv_peer_ack_point = tsn; in sctp_generate_fwdtsn()
1887 * is greater than the Cumulative TSN ACK carried in the received in sctp_generate_fwdtsn()
1888 * SACK, the data sender MUST send the data receiver a FORWARD TSN in sctp_generate_fwdtsn()
1892 * C4) For each "abandoned" TSN the sender of the FORWARD TSN SHOULD in sctp_generate_fwdtsn()
1893 * list each stream and sequence number in the forwarded TSN. This in sctp_generate_fwdtsn()
1895 * stranded TSN's waiting on stream reorder queues. Each stream in sctp_generate_fwdtsn()
1899 * total size of the FORWARD TSN does NOT fit in a single MTU then in sctp_generate_fwdtsn()
1900 * the sender of the FORWARD TSN SHOULD lower the in sctp_generate_fwdtsn()
1901 * Advanced.Peer.Ack.Point to the last TSN that will fit in a in sctp_generate_fwdtsn()