Lines Matching full:transport

206 	/* Make an empty list of remote transport addresses.  */  in sctp_association_init()
317 struct sctp_transport *transport; in sctp_association_free() local
375 /* Release the transport structures. */ in sctp_association_free()
377 transport = list_entry(pos, struct sctp_transport, transports); in sctp_association_free()
379 sctp_unhash_transport(transport); in sctp_association_free()
380 sctp_transport_free(transport); in sctp_association_free()
424 struct sctp_transport *transport) in sctp_assoc_set_primary() argument
432 asoc->peer.primary_path != transport) in sctp_assoc_set_primary()
435 asoc->peer.primary_path = transport; in sctp_assoc_set_primary()
436 sctp_ulpevent_notify_peer_addr_change(transport, in sctp_assoc_set_primary()
440 memcpy(&asoc->peer.primary_addr, &transport->ipaddr, in sctp_assoc_set_primary()
446 if ((transport->state == SCTP_ACTIVE) || in sctp_assoc_set_primary()
447 (transport->state == SCTP_UNKNOWN)) in sctp_assoc_set_primary()
448 asoc->peer.active_path = transport; in sctp_assoc_set_primary()
467 if (transport->cacc.changeover_active) in sctp_assoc_set_primary()
468 transport->cacc.cycling_changeover = changeover; in sctp_assoc_set_primary()
473 transport->cacc.changeover_active = changeover; in sctp_assoc_set_primary()
478 transport->cacc.next_tsn_at_change = asoc->next_tsn; in sctp_assoc_set_primary()
481 /* Remove a transport from an association. */
485 struct sctp_transport *transport; in sctp_assoc_rm_peer() local
500 /* Remove this peer from the transport hashtable */ in sctp_assoc_rm_peer()
503 /* Get the first transport of asoc. */ in sctp_assoc_rm_peer()
505 transport = list_entry(pos, struct sctp_transport, transports); in sctp_assoc_rm_peer()
509 sctp_assoc_set_primary(asoc, transport); in sctp_assoc_rm_peer()
511 asoc->peer.active_path = transport; in sctp_assoc_rm_peer()
513 asoc->peer.retran_path = transport; in sctp_assoc_rm_peer()
515 asoc->peer.last_data_from = transport; in sctp_assoc_rm_peer()
518 asoc->strreset_chunk->transport == peer) { in sctp_assoc_rm_peer()
519 asoc->strreset_chunk->transport = transport; in sctp_assoc_rm_peer()
520 sctp_transport_reset_reconf_timer(transport); in sctp_assoc_rm_peer()
523 /* If we remove the transport an INIT was last sent to, set it to in sctp_assoc_rm_peer()
526 * transport, maintaining the cycle. in sctp_assoc_rm_peer()
531 /* If we remove the transport an SHUTDOWN was last sent to, set it in sctp_assoc_rm_peer()
534 * transport, maintaining the cycle. in sctp_assoc_rm_peer()
539 /* If we remove the transport an ASCONF was last sent to, set it to in sctp_assoc_rm_peer()
543 asoc->addip_last_asconf->transport == peer) in sctp_assoc_rm_peer()
544 asoc->addip_last_asconf->transport = NULL; in sctp_assoc_rm_peer()
552 /* Reset the transport of each chunk on this list */ in sctp_assoc_rm_peer()
555 ch->transport = NULL; in sctp_assoc_rm_peer()
573 if (ch->transport == peer) in sctp_assoc_rm_peer()
574 ch->transport = NULL; in sctp_assoc_rm_peer()
582 /* Add a transport address to an association. */
662 /* Initialize the pmtu of the transport. */ in sctp_assoc_add_peer()
665 /* If this is the first transport addr on this association, in sctp_assoc_add_peer()
704 /* Set the transport's RTO.initial value */ in sctp_assoc_add_peer()
711 /* Add this peer into the transport hashtable */ in sctp_assoc_add_peer()
719 /* Attach the remote transport to our asoc. */ in sctp_assoc_add_peer()
739 /* Delete a transport address from an association. */
745 struct sctp_transport *transport; in sctp_assoc_del_peer() local
748 transport = list_entry(pos, struct sctp_transport, transports); in sctp_assoc_del_peer()
749 if (sctp_cmp_addr_exact(addr, &transport->ipaddr)) { in sctp_assoc_del_peer()
751 sctp_assoc_rm_peer(asoc, transport); in sctp_assoc_del_peer()
757 /* Lookup a transport by address. */
784 /* if the current transport is not the primary one, delete it */ in sctp_assoc_del_nonprimary_peers()
790 /* Engage in transport control operations.
791 * Mark the transport up or down and send a notification to the user.
795 struct sctp_transport *transport, in sctp_assoc_control_transport() argument
802 /* Record the transition on the transport. */ in sctp_assoc_control_transport()
809 if (transport->state == SCTP_PF && in sctp_assoc_control_transport()
812 else if (transport->state == SCTP_UNCONFIRMED && in sctp_assoc_control_transport()
816 transport->state = SCTP_ACTIVE; in sctp_assoc_control_transport()
817 sctp_transport_pl_reset(transport); in sctp_assoc_control_transport()
821 /* If the transport was never confirmed, do not transition it in sctp_assoc_control_transport()
825 if (transport->state != SCTP_UNCONFIRMED) { in sctp_assoc_control_transport()
826 transport->state = SCTP_INACTIVE; in sctp_assoc_control_transport()
827 sctp_transport_pl_reset(transport); in sctp_assoc_control_transport()
830 sctp_transport_dst_release(transport); in sctp_assoc_control_transport()
836 transport->state = SCTP_PF; in sctp_assoc_control_transport()
851 sctp_ulpevent_notify_peer_addr_change(transport, in sctp_assoc_control_transport()
921 * Find which transport this TSN was sent on.
928 struct sctp_transport *transport; in sctp_assoc_lookup_tsn() local
940 * The general strategy is to search each transport's transmitted in sctp_assoc_lookup_tsn()
941 * list. Return which transport this TSN lives on. in sctp_assoc_lookup_tsn()
961 list_for_each_entry(transport, &asoc->peer.transport_addr_list, in sctp_assoc_lookup_tsn()
964 if (transport == active) in sctp_assoc_lookup_tsn()
966 list_for_each_entry(chunk, &transport->transmitted, in sctp_assoc_lookup_tsn()
969 match = transport; in sctp_assoc_lookup_tsn()
1040 asoc->peer.last_data_from = chunk->transport; in sctp_assoc_bh_rcv()
1048 if (chunk->transport) in sctp_assoc_bh_rcv()
1049 chunk->transport->last_time_heard = ktime_get(); in sctp_assoc_bh_rcv()
1202 * inactive destination transport address, before reporting
1204 * the data to an alternate active destination transport
1221 * transport with state SCTP_ACTIVE exists, round-robin through
1263 /* First, try a score-based selection if both transport states in sctp_trans_elect_best()
1325 /* Keep track of the best PF transport from our in sctp_select_active_and_retran_path()
1349 * destination transport address (and possibly source transport in sctp_select_active_and_retran_path()
1351 * bump the most recently used transport.] in sctp_select_active_and_retran_path()
1367 /* If we failed to find a usable transport, just camp on the in sctp_select_active_and_retran_path()
1424 * transports. This routine is called when a transport's PMTU has changed.