• Paolo Abeni's avatar
    mptcp: cleanup MPJ subflow list handling · 3e501490
    Paolo Abeni authored
    We can simplify the join list handling leveraging the
    mptcp_release_cb(): if we can acquire the msk socket
    lock at mptcp_finish_join time, move the new subflow
    directly into the conn_list, otherwise place it on join_list and
    let the release_cb process such list.
    
    Since pending MPJ connection are now always processed
    in a timely way, we can avoid flushing the join list
    every time we have to process all the current subflows.
    
    Additionally we can now use the mptcp data lock to protect
    the join_list, removing the additional spin lock.
    
    Finally, the MPJ handshake is now always finalized under the
    msk socket lock, we can drop the additional synchronization
    between mptcp_finish_join() and mptcp_close().
    Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
    Signed-off-by: default avatarMat Martineau <mathew.j.martineau@linux.intel.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    3e501490
subflow.c 49.7 KB