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()
504 * 'TSN.Missing.Report' of all affected TSNs is set in sctp_retransmit_mark()
618 * E3) Determine how many of the earliest (i.e., lowest TSN) in __sctp_outq_flush_rtx()
968 /* PR-SCTP C5) If a FORWARD TSN is sent, the in sctp_outq_flush_ctrl()
1103 pr_debug("%s: outq:%p, chunk:%p[%s], tx-tsn:0x%x skb->head:%p skb->users:%d\n", in sctp_outq_flush_data()
1106 "illegal chunk", ntohl(chunk->subh.data_hdr->tsn), in sctp_outq_flush_data()
1117 pr_debug("%s: could not transmit tsn:0x%x, status:%d\n", in sctp_outq_flush_data()
1118 __func__, ntohl(chunk->subh.data_hdr->tsn), in sctp_outq_flush_data()
1208 * within a SCTP packet in increasing order of TSN. in sctp_outq_flush()
1255 __u32 sack_ctsn, ctsn, tsn; in sctp_outq_sack() local
1313 /* Get the highest TSN in the sack. */ in sctp_outq_sack()
1350 /* Move the Cumulative TSN Ack Point if appropriate. */ in sctp_outq_sack()
1375 tsn = ntohl(tchunk->subh.data_hdr->tsn); in sctp_outq_sack()
1376 if (TSN_lte(tsn, ctsn)) { in sctp_outq_sack()
1387 * Cumulative TSN Ack and the Gap Ack Blocks. in sctp_outq_sack()
1403 pr_debug("%s: sack cumulative tsn ack:0x%x\n", __func__, sack_ctsn); in sctp_outq_sack()
1404 pr_debug("%s: cumulative tsn ack of assoc:%p is 0x%x, " in sctp_outq_sack()
1426 * list and move chunks that are acked by the Cumulative TSN Ack to q->sacked.
1431 * Instead of printing 'sacked' or 'kept' for each TSN on the
1445 __u32 tsn; in sctp_check_transmitted() local
1479 tsn = ntohl(tchunk->subh.data_hdr->tsn); in sctp_check_transmitted()
1480 if (sctp_acked(sack, tsn)) { in sctp_check_transmitted()
1506 if (TSN_lte(tsn, sack_ctsn)) { in sctp_check_transmitted()
1514 * B) For each TSN t being acked that in sctp_check_transmitted()
1517 * the destination that the TSN was in sctp_check_transmitted()
1536 if (TSN_lt(*highest_new_tsn_in_sack, tsn)) in sctp_check_transmitted()
1537 *highest_new_tsn_in_sack = tsn; in sctp_check_transmitted()
1544 if (TSN_lte(tsn, sack_ctsn)) { in sctp_check_transmitted()
1549 * with the earliest outstanding TSN in sctp_check_transmitted()
1562 * 'Stray DATA chunk(s)' record the highest TSN in sctp_check_transmitted()
1571 * unacknowledged DATA chunks whose TSN is in sctp_check_transmitted()
1579 pr_debug("%s: receiver reneged on data TSN:0x%x\n", in sctp_check_transmitted()
1580 __func__, tsn); in sctp_check_transmitted()
1590 * TSN that was previously acknowledged via a in sctp_check_transmitted()
1615 /* 8.2. When an outstanding TSN is acknowledged, in sctp_check_transmitted()
1716 __u32 tsn; in sctp_mark_missing() local
1723 tsn = ntohl(chunk->subh.data_hdr->tsn); in sctp_mark_missing()
1726 * 'Unacknowledged TSN's', if the TSN number of an in sctp_mark_missing()
1727 * 'Unacknowledged TSN' is smaller than the 'HighestTSNinSack' in sctp_mark_missing()
1728 * value, increment the 'TSN.Missing.Report' count on that in sctp_mark_missing()
1734 TSN_lt(tsn, highest_new_tsn_in_sack)) { in sctp_mark_missing()
1741 count_of_newacks, tsn)) { in sctp_mark_missing()
1744 pr_debug("%s: tsn:0x%x missing counter:%d\n", in sctp_mark_missing()
1745 __func__, tsn, chunk->tsn_missing_report); in sctp_mark_missing()
1750 * 'TSN.Missing.Report' in sctp_mark_missing()
1772 /* Is the given TSN acked by this packet? */
1773 static int sctp_acked(struct sctp_sackhdr *sack, __u32 tsn) in sctp_acked() argument
1780 if (TSN_lte(tsn, ctsn)) in sctp_acked()
1789 * chunks with TSNs greater than or equal to (Cumulative TSN in sctp_acked()
1791 * (Cumulative TSN Ack + Gap Ack Block End) of each Gap Ack in sctp_acked()
1797 tsn_offset = tsn - ctsn; in sctp_acked()
1829 __u32 tsn; in sctp_generate_fwdtsn() local
1836 /* PR-SCTP C1) Let SackCumAck be the Cumulative TSN ACK carried in the in sctp_generate_fwdtsn()
1850 * Assuming that a SACK arrived with the Cumulative TSN ACK 102 in sctp_generate_fwdtsn()
1869 tsn = ntohl(chunk->subh.data_hdr->tsn); in sctp_generate_fwdtsn()
1874 if (TSN_lte(tsn, ctsn)) { in sctp_generate_fwdtsn()
1878 if (TSN_lte(tsn, asoc->adv_peer_ack_point+1)) { in sctp_generate_fwdtsn()
1879 asoc->adv_peer_ack_point = tsn; in sctp_generate_fwdtsn()
1900 * is greater than the Cumulative TSN ACK carried in the received in sctp_generate_fwdtsn()
1901 * SACK, the data sender MUST send the data receiver a FORWARD TSN in sctp_generate_fwdtsn()
1905 * C4) For each "abandoned" TSN the sender of the FORWARD TSN SHOULD in sctp_generate_fwdtsn()
1906 * list each stream and sequence number in the forwarded TSN. This in sctp_generate_fwdtsn()
1908 * stranded TSN's waiting on stream reorder queues. Each stream in sctp_generate_fwdtsn()
1912 * total size of the FORWARD TSN does NOT fit in a single MTU then in sctp_generate_fwdtsn()
1913 * the sender of the FORWARD TSN SHOULD lower the in sctp_generate_fwdtsn()
1914 * Advanced.Peer.Ack.Point to the last TSN that will fit in a in sctp_generate_fwdtsn()