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;
553 if (transport->pl.state == SCTP_PL_COMPLETE &&
554 transport->asoc->unack_data)
555 sctp_transport_reset_probe_timer(transport);
559 sctp_transport_lower_cwnd(transport, SCTP_LOWER_CWND_FAST_RTX);
567 transport->asoc->init_retries++;
573 sctp_retransmit_mark(q, transport, reason);
594 * We assume that pkt->transport has already been set.
601 struct sctp_transport *transport = pkt->transport;
622 * destination transport address to which the retransmission
652 &transport->transmitted);
717 &transport->transmitted);
767 static int sctp_packet_singleton(struct sctp_transport *transport,
770 const struct sctp_association *asoc = transport->asoc;
776 sctp_packet_init(&singleton, transport, sport, dport);
789 /* Current transport being used. It's NOT the same as curr active one */
790 struct sctp_transport *transport;
794 /* Packet on the current transport above */
799 /* transport: current transport */
803 struct sctp_transport *new_transport = chunk->transport;
807 /* If we have a prior transport pointer, see if
810 * current transport. If not a match, then
811 * try to look up the transport with a given
816 if (ctx->transport && sctp_cmp_addr_exact(&chunk->dest,
817 &ctx->transport->ipaddr))
818 new_transport = ctx->transport;
824 /* if we still don't have a new transport, then
837 * send it to chunk->transport, even if it's
860 /* Are we switching transports? Take care of transport locks. */
861 if (new_transport != ctx->transport) {
862 ctx->transport = new_transport;
863 ctx->packet = &ctx->transport->packet;
865 if (list_empty(&ctx->transport->send_ready))
866 list_add_tail(&ctx->transport->send_ready,
873 * Burst limit to the new transport.
875 sctp_transport_burst_limited(ctx->transport);
900 /* Pick the right transport to use. Should always be true for
901 * the first chunk as we don't have a transport by then.
914 error = sctp_packet_singleton(ctx->transport, chunk,
945 error = sctp_packet_singleton(ctx->transport,
974 sctp_transport_reset_t3_rtx(ctx->transport);
975 ctx->transport->last_time_sent = jiffies;
979 sctp_transport_reset_reconf_timer(ctx->transport);
999 if (ctx->transport != ctx->asoc->peer.retran_path) {
1001 ctx->transport = ctx->asoc->peer.retran_path;
1002 ctx->packet = &ctx->transport->packet;
1004 if (list_empty(&ctx->transport->send_ready))
1005 list_add_tail(&ctx->transport->send_ready,
1018 sctp_transport_reset_t3_rtx(ctx->transport);
1019 ctx->transport->last_time_sent = jiffies;
1075 /* Apply Max.Burst limitation to the current transport in
1080 if (ctx->transport)
1081 sctp_transport_burst_limited(ctx->transport);
1142 &ctx->transport->transmitted);
1144 sctp_transport_reset_t3_rtx(ctx->transport);
1145 ctx->transport->last_time_sent = jiffies;
1196 .transport = NULL,
1252 struct sctp_transport *transport;
1269 list_for_each_entry(transport, transport_list, transports)
1270 trace_sctp_probe_path(transport, asoc);
1303 list_for_each_entry(transport, transport_list,
1306 transport->cacc.cycling_changeover = 0;
1308 transport->cacc.cacc_saw_newack = 0;
1337 list_for_each_entry(transport, transport_list, transports) {
1338 sctp_check_transmitted(q, &transport->transmitted,
1339 transport, &chunk->source, sack,
1346 if (transport->cacc.cacc_saw_newack)
1361 list_for_each_entry(transport, transport_list, transports)
1362 sctp_mark_missing(q, &transport->transmitted, transport,
1425 /* Go through a transport's transmitted list or the association's retransmit
1427 * The retransmit list will not have an associated transport.
1437 struct sctp_transport *transport,
1471 if (tchunk->transport)
1472 tchunk->transport->flight_size -=
1484 * count bytes associated with a transport.
1486 if (transport && !tchunk->tsn_gap_acked) {
1502 sctp_transport_update_rto(transport,
1523 transport->cacc.cacc_saw_newack
1530 * chunk had a valid transport (it will not
1531 * have a transport if ASCONF had deleted it
1539 if (!tchunk->transport)
1584 if (tchunk->transport)
1603 if (transport) {
1605 struct sctp_association *asoc = transport->asoc;
1608 * to this transport due to DEL-IP operation.
1610 * send on this transport and shouldn't be
1611 * credited to this transport.
1617 * the destination transport address to which the
1622 transport->error_count = 0;
1623 transport->asoc->overall_error_count = 0;
1637 /* Mark the destination transport address as
1640 if ((transport->state == SCTP_INACTIVE ||
1641 transport->state == SCTP_UNCONFIRMED) &&
1642 sctp_cmp_addr_exact(&transport->ipaddr, saddr)) {
1644 transport->asoc,
1645 transport,
1650 sctp_transport_raise_cwnd(transport, sack_ctsn,
1653 transport->flight_size -= bytes_acked;
1654 if (transport->flight_size == 0)
1655 transport->partial_bytes_acked = 0;
1680 transport->error_count = 0;
1690 if (!transport->flight_size) {
1691 if (del_timer(&transport->T3_rtx_timer))
1692 sctp_transport_put(transport);
1694 if (!mod_timer(&transport->T3_rtx_timer,
1695 jiffies + transport->rto))
1696 sctp_transport_hold(transport);
1700 if (transport->dst)
1701 sctp_transport_dst_confirm(transport);
1711 struct sctp_transport *transport,
1739 if (!transport || !sctp_cacc_skip(primary,
1740 chunk->transport,
1761 if (transport) {
1763 sctp_retransmit(q, transport, SCTP_RTXR_FAST_RTX);
1765 pr_debug("%s: transport:%p, cwnd:%d, ssthresh:%d, "
1766 "flight_size:%d, pba:%d\n", __func__, transport,
1767 transport->cwnd, transport->ssthresh,
1768 transport->flight_size, transport->partial_bytes_acked);