lkml.org 
[lkml]   [2022]   [Jun]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.18 297/879] mptcp: optimize release_cb for the common case
    Date
    From: Paolo Abeni <pabeni@redhat.com>

    [ Upstream commit 65a569b03ca832ebc93ce45a7466137e2bb62254 ]

    The mptcp release callback checks several flags in atomic
    context, but only MPTCP_CLEAN_UNA can be up frequently.

    Reorganize the code to avoid multiple conditionals in the
    most common scenarios.

    Additional clarify a related comment.

    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    net/mptcp/protocol.c | 16 +++++++++-------
    1 file changed, 9 insertions(+), 7 deletions(-)

    diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c
    index 0cbea3b6d0a4..2a9335ce5df1 100644
    --- a/net/mptcp/protocol.c
    +++ b/net/mptcp/protocol.c
    @@ -3092,15 +3092,17 @@ static void mptcp_release_cb(struct sock *sk)
    spin_lock_bh(&sk->sk_lock.slock);
    }

    - /* be sure to set the current sk state before tacking actions
    - * depending on sk_state
    - */
    - if (__test_and_clear_bit(MPTCP_CONNECTED, &msk->cb_flags))
    - __mptcp_set_connected(sk);
    if (__test_and_clear_bit(MPTCP_CLEAN_UNA, &msk->cb_flags))
    __mptcp_clean_una_wakeup(sk);
    - if (__test_and_clear_bit(MPTCP_ERROR_REPORT, &msk->cb_flags))
    - __mptcp_error_report(sk);
    + if (unlikely(&msk->cb_flags)) {
    + /* be sure to set the current sk state before tacking actions
    + * depending on sk_state, that is processing MPTCP_ERROR_REPORT
    + */
    + if (__test_and_clear_bit(MPTCP_CONNECTED, &msk->cb_flags))
    + __mptcp_set_connected(sk);
    + if (__test_and_clear_bit(MPTCP_ERROR_REPORT, &msk->cb_flags))
    + __mptcp_error_report(sk);
    + }

    __mptcp_update_rmem(sk);
    }
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-06-08 00:27    [W:4.030 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site