Lines Matching refs:transport
45 struct sctp_transport *transport,
52 struct sctp_transport *transport,
101 struct sctp_transport *transport,
104 if (count_of_newacks >= 2 && transport != primary)
116 static inline int sctp_cacc_skip_3_1_f(struct sctp_transport *transport,
120 (transport && !transport->cacc.cacc_saw_newack))
133 struct sctp_transport *transport,
137 if (sctp_cacc_skip_3_1_d(primary, transport, count_of_newacks))
139 if (sctp_cacc_skip_3_1_f(transport, count_of_newacks))
176 struct sctp_transport *transport,
181 (sctp_cacc_skip_3_1(primary, transport, count_of_newacks) ||
208 struct sctp_transport *transport;
213 list_for_each_entry(transport, &q->asoc->peer.transport_addr_list,
215 while ((lchunk = sctp_list_dequeue(&transport->transmitted)) != NULL) {
368 if (chk->transport)
369 chk->transport->flight_size -=
426 struct sctp_transport *transport;
437 list_for_each_entry(transport, &asoc->peer.transport_addr_list,
440 &transport->transmitted,
449 /* Mark all the eligible packets on a transport for retransmission. */
451 struct sctp_transport *transport,
458 list_for_each_safe(lchunk, ltemp, &transport->transmitted) {
473 if (chunk->transport)
474 chunk->transport->flight_size -=
499 if (chunk->transport)
500 transport->flight_size -= sctp_data_size(chunk);
517 transport->rto_pending = 0;
528 pr_debug("%s: transport:%p, reason:%d, cwnd:%d, ssthresh:%d, "
529 "flight_size:%d, pba:%d\n", __func__, transport, reason,
530 transport->cwnd, transport->ssthresh, transport->flight_size,
531 transport->partial_bytes_acked);
534 /* Mark all the eligible packets on a transport for retransmission and force
537 void sctp_retransmit(struct sctp_outq *q, struct sctp_transport *transport,
545 sctp_transport_lower_cwnd(transport, SCTP_LOWER_CWND_T3_RTX);
549 if (transport == transport->asoc->peer.retran_path)
550 sctp_assoc_update_retran_path(transport->asoc);
551 transport->asoc->rtx_data_chunks +=
552 transport->asoc->unack_data;
556 sctp_transport_lower_cwnd(transport, SCTP_LOWER_CWND_FAST_RTX);
564 transport->asoc->init_retries++;
570 sctp_retransmit_mark(q, transport, reason);
591 * We assume that pkt->transport has already been set.
598 struct sctp_transport *transport = pkt->transport;
619 * destination transport address to which the retransmission
649 &transport->transmitted);
714 &transport->transmitted);
764 static int sctp_packet_singleton(struct sctp_transport *transport,
767 const struct sctp_association *asoc = transport->asoc;
773 sctp_packet_init(&singleton, transport, sport, dport);
782 /* Current transport being used. It's NOT the same as curr active one */
783 struct sctp_transport *transport;
787 /* Packet on the current transport above */
792 /* transport: current transport */
796 struct sctp_transport *new_transport = chunk->transport;
800 /* If we have a prior transport pointer, see if
803 * current transport. If not a match, then
804 * try to look up the transport with a given
809 if (ctx->transport && sctp_cmp_addr_exact(&chunk->dest,
810 &ctx->transport->ipaddr))
811 new_transport = ctx->transport;
817 /* if we still don't have a new transport, then
830 * send it to chunk->transport, even if it's
853 /* Are we switching transports? Take care of transport locks. */
854 if (new_transport != ctx->transport) {
855 ctx->transport = new_transport;
856 ctx->packet = &ctx->transport->packet;
858 if (list_empty(&ctx->transport->send_ready))
859 list_add_tail(&ctx->transport->send_ready,
866 * Burst limit to the new transport.
868 sctp_transport_burst_limited(ctx->transport);
893 /* Pick the right transport to use. Should always be true for
894 * the first chunk as we don't have a transport by then.
907 error = sctp_packet_singleton(ctx->transport, chunk,
958 sctp_transport_reset_t3_rtx(ctx->transport);
959 ctx->transport->last_time_sent = jiffies;
963 sctp_transport_reset_reconf_timer(ctx->transport);
983 if (ctx->transport != ctx->asoc->peer.retran_path) {
985 ctx->transport = ctx->asoc->peer.retran_path;
986 ctx->packet = &ctx->transport->packet;
988 if (list_empty(&ctx->transport->send_ready))
989 list_add_tail(&ctx->transport->send_ready,
1002 sctp_transport_reset_t3_rtx(ctx->transport);
1003 ctx->transport->last_time_sent = jiffies;
1059 /* Apply Max.Burst limitation to the current transport in
1064 if (ctx->transport)
1065 sctp_transport_burst_limited(ctx->transport);
1126 &ctx->transport->transmitted);
1128 sctp_transport_reset_t3_rtx(ctx->transport);
1129 ctx->transport->last_time_sent = jiffies;
1173 .transport = NULL,
1229 struct sctp_transport *transport;
1247 list_for_each_entry(transport, transport_list, transports)
1248 trace_sctp_probe_path(transport, asoc);
1281 list_for_each_entry(transport, transport_list,
1284 transport->cacc.cycling_changeover = 0;
1286 transport->cacc.cacc_saw_newack = 0;
1311 list_for_each_entry(transport, transport_list, transports) {
1312 sctp_check_transmitted(q, &transport->transmitted,
1313 transport, &chunk->source, sack,
1320 if (transport->cacc.cacc_saw_newack)
1335 list_for_each_entry(transport, transport_list, transports)
1336 sctp_mark_missing(q, &transport->transmitted, transport,
1399 /* Go through a transport's transmitted list or the association's retransmit
1401 * The retransmit list will not have an associated transport.
1411 struct sctp_transport *transport,
1445 if (tchunk->transport)
1446 tchunk->transport->flight_size -=
1458 * count bytes associated with a transport.
1460 if (transport && !tchunk->tsn_gap_acked) {
1476 sctp_transport_update_rto(transport,
1497 transport->cacc.cacc_saw_newack
1504 * chunk had a valid transport (it will not
1505 * have a transport if ASCONF had deleted it
1513 if (!tchunk->transport)
1558 if (tchunk->transport)
1577 if (transport) {
1579 struct sctp_association *asoc = transport->asoc;
1582 * to this transport due to DEL-IP operation.
1584 * send on this transport and shouldn't be
1585 * credited to this transport.
1591 * the destination transport address to which the
1596 transport->error_count = 0;
1597 transport->asoc->overall_error_count = 0;
1611 /* Mark the destination transport address as
1614 if ((transport->state == SCTP_INACTIVE ||
1615 transport->state == SCTP_UNCONFIRMED) &&
1616 sctp_cmp_addr_exact(&transport->ipaddr, saddr)) {
1618 transport->asoc,
1619 transport,
1624 sctp_transport_raise_cwnd(transport, sack_ctsn,
1627 transport->flight_size -= bytes_acked;
1628 if (transport->flight_size == 0)
1629 transport->partial_bytes_acked = 0;
1654 transport->error_count = 0;
1664 if (!transport->flight_size) {
1665 if (del_timer(&transport->T3_rtx_timer))
1666 sctp_transport_put(transport);
1668 if (!mod_timer(&transport->T3_rtx_timer,
1669 jiffies + transport->rto))
1670 sctp_transport_hold(transport);
1674 if (transport->dst)
1675 sctp_transport_dst_confirm(transport);
1685 struct sctp_transport *transport,
1713 if (!transport || !sctp_cacc_skip(primary,
1714 chunk->transport,
1735 if (transport) {
1737 sctp_retransmit(q, transport, SCTP_RTXR_FAST_RTX);
1739 pr_debug("%s: transport:%p, cwnd:%d, ssthresh:%d, "
1740 "flight_size:%d, pba:%d\n", __func__, transport,
1741 transport->cwnd, transport->ssthresh,
1742 transport->flight_size, transport->partial_bytes_acked);