sctp: apply rhashtable api to send/recv path
[linux-2.6-microblaze.git] / net / sctp / associola.c
index 559afd0..2bf8ec9 100644 (file)
@@ -383,6 +383,7 @@ void sctp_association_free(struct sctp_association *asoc)
        list_for_each_safe(pos, temp, &asoc->peer.transport_addr_list) {
                transport = list_entry(pos, struct sctp_transport, transports);
                list_del_rcu(pos);
+               sctp_unhash_transport(transport);
                sctp_transport_free(transport);
        }
 
@@ -500,6 +501,8 @@ void sctp_assoc_rm_peer(struct sctp_association *asoc,
 
        /* Remove this peer from the list. */
        list_del_rcu(&peer->transports);
+       /* Remove this peer from the transport hashtable */
+       sctp_unhash_transport(peer);
 
        /* Get the first transport of asoc. */
        pos = asoc->peer.transport_addr_list.next;
@@ -699,6 +702,8 @@ struct sctp_transport *sctp_assoc_add_peer(struct sctp_association *asoc,
        /* Attach the remote transport to our asoc.  */
        list_add_tail_rcu(&peer->transports, &asoc->peer.transport_addr_list);
        asoc->peer.transport_count++;
+       /* Add this peer into the transport hashtable */
+       sctp_hash_transport(peer);
 
        /* If we do not yet have a primary path, set one.  */
        if (!asoc->peer.primary_path) {