All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH mptcp-next] mptcp: use fast lock for subflows when possible.
@ 2021-05-26 16:07 Paolo Abeni
  2021-05-27  4:19 ` Mat Martineau
  0 siblings, 1 reply; 3+ messages in thread
From: Paolo Abeni @ 2021-05-26 16:07 UTC (permalink / raw)
  To: mptcp

There are a bunch of callsite where the ssk socket
lock is acquired using the full-blown version eligible for
the fast variant. Let's move to the latter.

Signed-off-by: Paolo Abeni <pabeni@redhat.com>
---
The previous patch demonstrated that using lock_sock()
were the fast version is available can have worse side-effect
than slower performances.

This tries to address the topic.
---
 net/mptcp/pm_netlink.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c
index 09722598994d..d4732a4f223e 100644
--- a/net/mptcp/pm_netlink.c
+++ b/net/mptcp/pm_netlink.c
@@ -540,6 +540,7 @@ void mptcp_pm_nl_addr_send_ack(struct mptcp_sock *msk)
 	subflow = list_first_entry_or_null(&msk->conn_list, typeof(*subflow), node);
 	if (subflow) {
 		struct sock *ssk = mptcp_subflow_tcp_sock(subflow);
+		bool slow;
 
 		spin_unlock_bh(&msk->pm.lock);
 		pr_debug("send ack for %s%s%s",
@@ -547,9 +548,9 @@ void mptcp_pm_nl_addr_send_ack(struct mptcp_sock *msk)
 			 mptcp_pm_should_add_signal_ipv6(msk) ? " [ipv6]" : "",
 			 mptcp_pm_should_add_signal_port(msk) ? " [port]" : "");
 
-		lock_sock(ssk);
+		slow = lock_sock_fast(ssk);
 		tcp_send_ack(ssk);
-		release_sock(ssk);
+		unlock_sock_fast(ssk, slow);
 		spin_lock_bh(&msk->pm.lock);
 	}
 }
@@ -566,6 +567,7 @@ int mptcp_pm_nl_mp_prio_send_ack(struct mptcp_sock *msk,
 		struct sock *ssk = mptcp_subflow_tcp_sock(subflow);
 		struct sock *sk = (struct sock *)msk;
 		struct mptcp_addr_info local;
+		bool slow;
 
 		local_address((struct sock_common *)ssk, &local);
 		if (!addresses_equal(&local, addr, addr->port))
@@ -578,9 +580,9 @@ int mptcp_pm_nl_mp_prio_send_ack(struct mptcp_sock *msk,
 
 		spin_unlock_bh(&msk->pm.lock);
 		pr_debug("send ack for mp_prio");
-		lock_sock(ssk);
+		slow = lock_sock_fast(ssk);
 		tcp_send_ack(ssk);
-		release_sock(ssk);
+		unlock_sock_fast(ssk, slow);
 		spin_lock_bh(&msk->pm.lock);
 
 		return 0;
-- 
2.26.3


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH mptcp-next] mptcp: use fast lock for subflows when possible.
  2021-05-26 16:07 [PATCH mptcp-next] mptcp: use fast lock for subflows when possible Paolo Abeni
@ 2021-05-27  4:19 ` Mat Martineau
  2021-05-27 10:21   ` Paolo Abeni
  0 siblings, 1 reply; 3+ messages in thread
From: Mat Martineau @ 2021-05-27  4:19 UTC (permalink / raw)
  To: Paolo Abeni; +Cc: mptcp

On Wed, 26 May 2021, Paolo Abeni wrote:

> There are a bunch of callsite where the ssk socket
> lock is acquired using the full-blown version eligible for
> the fast variant. Let's move to the latter.
>
> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
> ---
> The previous patch demonstrated that using lock_sock()
> were the fast version is available can have worse side-effect
> than slower performances.
>
> This tries to address the topic.
> ---
> net/mptcp/pm_netlink.c | 10 ++++++----
> 1 file changed, 6 insertions(+), 4 deletions(-)

Looks good to me, thanks Paolo.

Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>

-Mat


>
> diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c
> index 09722598994d..d4732a4f223e 100644
> --- a/net/mptcp/pm_netlink.c
> +++ b/net/mptcp/pm_netlink.c
> @@ -540,6 +540,7 @@ void mptcp_pm_nl_addr_send_ack(struct mptcp_sock *msk)
> 	subflow = list_first_entry_or_null(&msk->conn_list, typeof(*subflow), node);
> 	if (subflow) {
> 		struct sock *ssk = mptcp_subflow_tcp_sock(subflow);
> +		bool slow;
>
> 		spin_unlock_bh(&msk->pm.lock);
> 		pr_debug("send ack for %s%s%s",
> @@ -547,9 +548,9 @@ void mptcp_pm_nl_addr_send_ack(struct mptcp_sock *msk)
> 			 mptcp_pm_should_add_signal_ipv6(msk) ? " [ipv6]" : "",
> 			 mptcp_pm_should_add_signal_port(msk) ? " [port]" : "");
>
> -		lock_sock(ssk);
> +		slow = lock_sock_fast(ssk);
> 		tcp_send_ack(ssk);
> -		release_sock(ssk);
> +		unlock_sock_fast(ssk, slow);
> 		spin_lock_bh(&msk->pm.lock);
> 	}
> }
> @@ -566,6 +567,7 @@ int mptcp_pm_nl_mp_prio_send_ack(struct mptcp_sock *msk,
> 		struct sock *ssk = mptcp_subflow_tcp_sock(subflow);
> 		struct sock *sk = (struct sock *)msk;
> 		struct mptcp_addr_info local;
> +		bool slow;
>
> 		local_address((struct sock_common *)ssk, &local);
> 		if (!addresses_equal(&local, addr, addr->port))
> @@ -578,9 +580,9 @@ int mptcp_pm_nl_mp_prio_send_ack(struct mptcp_sock *msk,
>
> 		spin_unlock_bh(&msk->pm.lock);
> 		pr_debug("send ack for mp_prio");
> -		lock_sock(ssk);
> +		slow = lock_sock_fast(ssk);
> 		tcp_send_ack(ssk);
> -		release_sock(ssk);
> +		unlock_sock_fast(ssk, slow);
> 		spin_lock_bh(&msk->pm.lock);
>
> 		return 0;
> -- 
> 2.26.3
>
>
>

--
Mat Martineau
Intel

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH mptcp-next] mptcp: use fast lock for subflows when possible.
  2021-05-27  4:19 ` Mat Martineau
@ 2021-05-27 10:21   ` Paolo Abeni
  0 siblings, 0 replies; 3+ messages in thread
From: Paolo Abeni @ 2021-05-27 10:21 UTC (permalink / raw)
  To: Mat Martineau; +Cc: mptcp

On Wed, 2021-05-26 at 21:19 -0700, Mat Martineau wrote:
> On Wed, 26 May 2021, Paolo Abeni wrote:
> 
> > There are a bunch of callsite where the ssk socket
> > lock is acquired using the full-blown version eligible for
> > the fast variant. Let's move to the latter.
> > 
> > Signed-off-by: Paolo Abeni <pabeni@redhat.com>
> > ---
> > The previous patch demonstrated that using lock_sock()
> > were the fast version is available can have worse side-effect
> > than slower performances.
> > 
> > This tries to address the topic.
> > ---
> > net/mptcp/pm_netlink.c | 10 ++++++----
> > 1 file changed, 6 insertions(+), 4 deletions(-)
> 
> Looks good to me, thanks Paolo.
> 
> Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>

I'm sorry, this get mangled, some more needed chunk slipped in another
local patch. I'll send a v2 with more fast_lock()

/P


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2021-05-27 10:21 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-26 16:07 [PATCH mptcp-next] mptcp: use fast lock for subflows when possible Paolo Abeni
2021-05-27  4:19 ` Mat Martineau
2021-05-27 10:21   ` Paolo Abeni

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.