diff options
Diffstat (limited to 'net/sctp/outqueue.c')
-rw-r--r-- | net/sctp/outqueue.c | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/net/sctp/outqueue.c b/net/sctp/outqueue.c index fba567a7cb64..5c2ddd10db06 100644 --- a/net/sctp/outqueue.c +++ b/net/sctp/outqueue.c | |||
@@ -376,7 +376,7 @@ static void sctp_insert_list(struct list_head *head, struct list_head *new) | |||
376 | } | 376 | } |
377 | } | 377 | } |
378 | if (!done) | 378 | if (!done) |
379 | list_add_tail(new, head); | 379 | list_add_tail(new, head); |
380 | } | 380 | } |
381 | 381 | ||
382 | /* Mark all the eligible packets on a transport for retransmission. */ | 382 | /* Mark all the eligible packets on a transport for retransmission. */ |
@@ -578,7 +578,7 @@ static int sctp_outq_flush_rtx(struct sctp_outq *q, struct sctp_packet *pkt, | |||
578 | break; | 578 | break; |
579 | 579 | ||
580 | case SCTP_XMIT_RWND_FULL: | 580 | case SCTP_XMIT_RWND_FULL: |
581 | /* Send this packet. */ | 581 | /* Send this packet. */ |
582 | if ((error = sctp_packet_transmit(pkt)) == 0) | 582 | if ((error = sctp_packet_transmit(pkt)) == 0) |
583 | *start_timer = 1; | 583 | *start_timer = 1; |
584 | 584 | ||
@@ -590,7 +590,7 @@ static int sctp_outq_flush_rtx(struct sctp_outq *q, struct sctp_packet *pkt, | |||
590 | break; | 590 | break; |
591 | 591 | ||
592 | case SCTP_XMIT_NAGLE_DELAY: | 592 | case SCTP_XMIT_NAGLE_DELAY: |
593 | /* Send this packet. */ | 593 | /* Send this packet. */ |
594 | if ((error = sctp_packet_transmit(pkt)) == 0) | 594 | if ((error = sctp_packet_transmit(pkt)) == 0) |
595 | *start_timer = 1; | 595 | *start_timer = 1; |
596 | 596 | ||
@@ -605,7 +605,7 @@ static int sctp_outq_flush_rtx(struct sctp_outq *q, struct sctp_packet *pkt, | |||
605 | */ | 605 | */ |
606 | list_add_tail(lchunk, &transport->transmitted); | 606 | list_add_tail(lchunk, &transport->transmitted); |
607 | 607 | ||
608 | /* Mark the chunk as ineligible for fast retransmit | 608 | /* Mark the chunk as ineligible for fast retransmit |
609 | * after it is retransmitted. | 609 | * after it is retransmitted. |
610 | */ | 610 | */ |
611 | if (chunk->fast_retransmit > 0) | 611 | if (chunk->fast_retransmit > 0) |
@@ -703,11 +703,11 @@ int sctp_outq_flush(struct sctp_outq *q, int rtx_timeout) | |||
703 | * inactive. | 703 | * inactive. |
704 | * | 704 | * |
705 | * 3.3.6 Heartbeat Acknowledgement: | 705 | * 3.3.6 Heartbeat Acknowledgement: |
706 | * ... | 706 | * ... |
707 | * A HEARTBEAT ACK is always sent to the source IP | 707 | * A HEARTBEAT ACK is always sent to the source IP |
708 | * address of the IP datagram containing the | 708 | * address of the IP datagram containing the |
709 | * HEARTBEAT chunk to which this ack is responding. | 709 | * HEARTBEAT chunk to which this ack is responding. |
710 | * ... | 710 | * ... |
711 | */ | 711 | */ |
712 | if (chunk->chunk_hdr->type != SCTP_CID_HEARTBEAT && | 712 | if (chunk->chunk_hdr->type != SCTP_CID_HEARTBEAT && |
713 | chunk->chunk_hdr->type != SCTP_CID_HEARTBEAT_ACK) | 713 | chunk->chunk_hdr->type != SCTP_CID_HEARTBEAT_ACK) |
@@ -914,7 +914,7 @@ int sctp_outq_flush(struct sctp_outq *q, int rtx_timeout) | |||
914 | BUG(); | 914 | BUG(); |
915 | } | 915 | } |
916 | 916 | ||
917 | /* BUG: We assume that the sctp_packet_transmit() | 917 | /* BUG: We assume that the sctp_packet_transmit() |
918 | * call below will succeed all the time and add the | 918 | * call below will succeed all the time and add the |
919 | * chunk to the transmitted list and restart the | 919 | * chunk to the transmitted list and restart the |
920 | * timers. | 920 | * timers. |
@@ -1266,7 +1266,7 @@ static void sctp_check_transmitted(struct sctp_outq *q, | |||
1266 | * first instance of the packet or a later | 1266 | * first instance of the packet or a later |
1267 | * instance). | 1267 | * instance). |
1268 | */ | 1268 | */ |
1269 | if (!tchunk->tsn_gap_acked && | 1269 | if (!tchunk->tsn_gap_acked && |
1270 | !tchunk->resent && | 1270 | !tchunk->resent && |
1271 | tchunk->rtt_in_progress) { | 1271 | tchunk->rtt_in_progress) { |
1272 | tchunk->rtt_in_progress = 0; | 1272 | tchunk->rtt_in_progress = 0; |
@@ -1275,7 +1275,7 @@ static void sctp_check_transmitted(struct sctp_outq *q, | |||
1275 | rtt); | 1275 | rtt); |
1276 | } | 1276 | } |
1277 | } | 1277 | } |
1278 | if (TSN_lte(tsn, sack_ctsn)) { | 1278 | if (TSN_lte(tsn, sack_ctsn)) { |
1279 | /* RFC 2960 6.3.2 Retransmission Timer Rules | 1279 | /* RFC 2960 6.3.2 Retransmission Timer Rules |
1280 | * | 1280 | * |
1281 | * R3) Whenever a SACK is received | 1281 | * R3) Whenever a SACK is received |
@@ -1590,7 +1590,7 @@ static void sctp_mark_missing(struct sctp_outq *q, | |||
1590 | SCTP_DEBUG_PRINTK("%s: transport: %p, cwnd: %d, " | 1590 | SCTP_DEBUG_PRINTK("%s: transport: %p, cwnd: %d, " |
1591 | "ssthresh: %d, flight_size: %d, pba: %d\n", | 1591 | "ssthresh: %d, flight_size: %d, pba: %d\n", |
1592 | __FUNCTION__, transport, transport->cwnd, | 1592 | __FUNCTION__, transport, transport->cwnd, |
1593 | transport->ssthresh, transport->flight_size, | 1593 | transport->ssthresh, transport->flight_size, |
1594 | transport->partial_bytes_acked); | 1594 | transport->partial_bytes_acked); |
1595 | } | 1595 | } |
1596 | } | 1596 | } |
@@ -1603,7 +1603,7 @@ static int sctp_acked(struct sctp_sackhdr *sack, __u32 tsn) | |||
1603 | __u16 gap; | 1603 | __u16 gap; |
1604 | __u32 ctsn = ntohl(sack->cum_tsn_ack); | 1604 | __u32 ctsn = ntohl(sack->cum_tsn_ack); |
1605 | 1605 | ||
1606 | if (TSN_lte(tsn, ctsn)) | 1606 | if (TSN_lte(tsn, ctsn)) |
1607 | goto pass; | 1607 | goto pass; |
1608 | 1608 | ||
1609 | /* 3.3.4 Selective Acknowledgement (SACK) (3): | 1609 | /* 3.3.4 Selective Acknowledgement (SACK) (3): |
@@ -1657,7 +1657,7 @@ static void sctp_generate_fwdtsn(struct sctp_outq *q, __u32 ctsn) | |||
1657 | 1657 | ||
1658 | /* PR-SCTP C1) Let SackCumAck be the Cumulative TSN ACK carried in the | 1658 | /* PR-SCTP C1) Let SackCumAck be the Cumulative TSN ACK carried in the |
1659 | * received SACK. | 1659 | * received SACK. |
1660 | * | 1660 | * |
1661 | * If (Advanced.Peer.Ack.Point < SackCumAck), then update | 1661 | * If (Advanced.Peer.Ack.Point < SackCumAck), then update |
1662 | * Advanced.Peer.Ack.Point to be equal to SackCumAck. | 1662 | * Advanced.Peer.Ack.Point to be equal to SackCumAck. |
1663 | */ | 1663 | */ |
@@ -1671,7 +1671,7 @@ static void sctp_generate_fwdtsn(struct sctp_outq *q, __u32 ctsn) | |||
1671 | * | 1671 | * |
1672 | * Assuming that a SACK arrived with the Cumulative TSN ACK 102 | 1672 | * Assuming that a SACK arrived with the Cumulative TSN ACK 102 |
1673 | * and the Advanced.Peer.Ack.Point is updated to this value: | 1673 | * and the Advanced.Peer.Ack.Point is updated to this value: |
1674 | * | 1674 | * |
1675 | * out-queue at the end of ==> out-queue after Adv.Ack.Point | 1675 | * out-queue at the end of ==> out-queue after Adv.Ack.Point |
1676 | * normal SACK processing local advancement | 1676 | * normal SACK processing local advancement |
1677 | * ... ... | 1677 | * ... ... |
@@ -1692,7 +1692,7 @@ static void sctp_generate_fwdtsn(struct sctp_outq *q, __u32 ctsn) | |||
1692 | 1692 | ||
1693 | /* Remove any chunks in the abandoned queue that are acked by | 1693 | /* Remove any chunks in the abandoned queue that are acked by |
1694 | * the ctsn. | 1694 | * the ctsn. |
1695 | */ | 1695 | */ |
1696 | if (TSN_lte(tsn, ctsn)) { | 1696 | if (TSN_lte(tsn, ctsn)) { |
1697 | list_del_init(lchunk); | 1697 | list_del_init(lchunk); |
1698 | if (!chunk->tsn_gap_acked) { | 1698 | if (!chunk->tsn_gap_acked) { |
@@ -1743,7 +1743,7 @@ static void sctp_generate_fwdtsn(struct sctp_outq *q, __u32 ctsn) | |||
1743 | */ | 1743 | */ |
1744 | if (asoc->adv_peer_ack_point > ctsn) | 1744 | if (asoc->adv_peer_ack_point > ctsn) |
1745 | ftsn_chunk = sctp_make_fwdtsn(asoc, asoc->adv_peer_ack_point, | 1745 | ftsn_chunk = sctp_make_fwdtsn(asoc, asoc->adv_peer_ack_point, |
1746 | nskips, &ftsn_skip_arr[0]); | 1746 | nskips, &ftsn_skip_arr[0]); |
1747 | 1747 | ||
1748 | if (ftsn_chunk) { | 1748 | if (ftsn_chunk) { |
1749 | list_add_tail(&ftsn_chunk->list, &q->control_chunk_list); | 1749 | list_add_tail(&ftsn_chunk->list, &q->control_chunk_list); |