All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH mptcp-next 0/5] mptcp: fixes and enhancements related to path management
@ 2022-03-16 19:07 Kishen Maloor
  2022-03-16 19:07 ` [PATCH mptcp-next 1/5] mptcp: bypass in-kernel PM restrictions for non-kernel PMs Kishen Maloor
                   ` (5 more replies)
  0 siblings, 6 replies; 10+ messages in thread
From: Kishen Maloor @ 2022-03-16 19:07 UTC (permalink / raw)
  To: kishen.maloor, mptcp

This patch series incorporates fixes and enhancements related to
path management over MPTCP connections, particularly in support of
userspace PMs. The changes ensure that the required bits of
information are conveyed through MPTCP netlink events which
would be consumed by the path manager in making its decisions.
Further it adds flexibility in establishing paths and from
both ends of MPTCP connections.

Kishen Maloor (5):
  mptcp: bypass in-kernel PM restrictions for non-kernel PMs
  mptcp: store remote id from MP_JOIN SYN/ACK in local ctx
  mptcp: reflect remote port (not 0) in ANNOUNCED events
  mptcp: establish subflows from either end of connection
  mptcp: expose server_side attribute in MPTCP netlink events

 include/uapi/linux/mptcp.h |  1 +
 net/mptcp/options.c        |  4 ++--
 net/mptcp/pm.c             | 21 ++++++++++++++++-----
 net/mptcp/pm_netlink.c     | 22 +++++++++++++++++++---
 net/mptcp/protocol.c       |  5 +----
 net/mptcp/protocol.h       | 22 ++++++++++++++++------
 net/mptcp/subflow.c        |  5 ++++-
 7 files changed, 59 insertions(+), 21 deletions(-)


base-commit: 2a9f09777d24fc18cc62762b398054d3961ad8bf
--
2.31.1

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

* [PATCH mptcp-next 1/5] mptcp: bypass in-kernel PM restrictions for non-kernel PMs
  2022-03-16 19:07 [PATCH mptcp-next 0/5] mptcp: fixes and enhancements related to path management Kishen Maloor
@ 2022-03-16 19:07 ` Kishen Maloor
  2022-03-16 19:07 ` [PATCH mptcp-next 2/5] mptcp: store remote id from MP_JOIN SYN/ACK in local ctx Kishen Maloor
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 10+ messages in thread
From: Kishen Maloor @ 2022-03-16 19:07 UTC (permalink / raw)
  To: kishen.maloor, mptcp

Current limits on the # of addresses/subflows must apply only to
in-kernel PM managed sockets. Thus this change removes such
restrictions on connections overseen by non-kernel (e.g. userspace)
PMs. This change also ensures that the kernel does not record stats
inside struct mptcp_pm_data updated along kernel code paths when exercised
via non-kernel PMs.

Additionally, address announcements are acknolwedged and subflow
requests are honored only when it's deemed that	a userspace path
manager	is active at the time.

Signed-off-by: Kishen Maloor <kishen.maloor@intel.com>
---
 net/mptcp/pm.c         | 15 ++++++++++++---
 net/mptcp/pm_netlink.c |  8 ++++++++
 net/mptcp/protocol.h   | 10 ++++++++--
 net/mptcp/subflow.c    |  4 +++-
 4 files changed, 31 insertions(+), 6 deletions(-)

diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c
index d0d31d5c198a..32a9bcc4b9be 100644
--- a/net/mptcp/pm.c
+++ b/net/mptcp/pm.c
@@ -87,6 +87,12 @@ bool mptcp_pm_allow_new_subflow(struct mptcp_sock *msk)
 	unsigned int subflows_max;
 	int ret = 0;
 
+	if (mptcp_pm_is_userspace(msk)) {
+		if (mptcp_userspace_pm_active(sock_net((struct sock *)msk)))
+			return true;
+		return false;
+	}
+
 	subflows_max = mptcp_pm_get_subflows_max(msk);
 
 	pr_debug("msk=%p subflows=%d max=%d allow=%d", msk, pm->subflows,
@@ -179,7 +185,8 @@ void mptcp_pm_subflow_check_next(struct mptcp_sock *msk, const struct sock *ssk,
 	bool update_subflows;
 
 	update_subflows = (ssk->sk_state == TCP_CLOSE) &&
-			  (subflow->request_join || subflow->mp_join);
+			  (subflow->request_join || subflow->mp_join) &&
+			  mptcp_pm_is_kernel(msk);
 	if (!READ_ONCE(pm->work_pending) && !update_subflows)
 		return;
 
@@ -209,8 +216,10 @@ void mptcp_pm_add_addr_received(struct mptcp_sock *msk,
 	spin_lock_bh(&pm->lock);
 
 	if (!READ_ONCE(pm->accept_addr) || mptcp_pm_is_userspace(msk)) {
-		mptcp_pm_announce_addr(msk, addr, true);
-		mptcp_pm_add_addr_send_ack(msk);
+		if (mptcp_userspace_pm_active(sock_net((struct sock *)msk))) {
+			mptcp_pm_announce_addr(msk, addr, true);
+			mptcp_pm_add_addr_send_ack(msk);
+		}
 	} else if (mptcp_pm_schedule_work(msk, MPTCP_PM_ADD_ADDR_RECEIVED)) {
 		pm->remote = *addr;
 	} else {
diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c
index c1f4befb1e45..4f09eb97faff 100644
--- a/net/mptcp/pm_netlink.c
+++ b/net/mptcp/pm_netlink.c
@@ -796,6 +796,9 @@ static void mptcp_pm_nl_rm_addr_or_subflow(struct mptcp_sock *msk,
 		if (!removed)
 			continue;
 
+		if (!mptcp_pm_is_kernel(msk))
+			continue;
+
 		if (rm_type == MPTCP_MIB_RMADDR) {
 			msk->pm.add_addr_accepted--;
 			WRITE_ONCE(msk->pm.accept_addr, true);
@@ -1846,6 +1849,11 @@ static void mptcp_nl_mcast_send(struct net *net, struct sk_buff *nlskb, gfp_t gf
 				nlskb, 0, MPTCP_PM_EV_GRP_OFFSET, gfp);
 }
 
+bool mptcp_userspace_pm_active(struct net *net)
+{
+	return genl_has_listeners(&mptcp_genl_family, net, MPTCP_PM_EV_GRP_OFFSET);
+}
+
 static int mptcp_event_add_subflow(struct sk_buff *skb, const struct sock *ssk)
 {
 	const struct inet_sock *issk = inet_sk(ssk);
diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h
index c8bada4537e2..1d8c58fb8cdc 100644
--- a/net/mptcp/protocol.h
+++ b/net/mptcp/protocol.h
@@ -781,6 +781,7 @@ void mptcp_event(enum mptcp_event_type type, const struct mptcp_sock *msk,
 		 const struct sock *ssk, gfp_t gfp);
 void mptcp_event_addr_announced(const struct mptcp_sock *msk, const struct mptcp_addr_info *info);
 void mptcp_event_addr_removed(const struct mptcp_sock *msk, u8 id);
+bool mptcp_userspace_pm_active(struct net *net);
 
 static inline bool mptcp_pm_should_add_signal(struct mptcp_sock *msk)
 {
@@ -803,9 +804,14 @@ static inline bool mptcp_pm_should_rm_signal(struct mptcp_sock *msk)
 	return READ_ONCE(msk->pm.addr_signal) & BIT(MPTCP_RM_ADDR_SIGNAL);
 }
 
-static inline bool mptcp_pm_is_userspace(struct mptcp_sock *msk)
+static inline bool mptcp_pm_is_userspace(const struct mptcp_sock *msk)
 {
-	return READ_ONCE(msk->pm.pm_type) != MPTCP_PM_TYPE_KERNEL;
+	return READ_ONCE(msk->pm.pm_type) == MPTCP_PM_TYPE_USERSPACE;
+}
+
+static inline bool mptcp_pm_is_kernel(const struct mptcp_sock *msk)
+{
+	return READ_ONCE(msk->pm.pm_type) == MPTCP_PM_TYPE_KERNEL;
 }
 
 static inline unsigned int mptcp_add_addr_len(int family, bool echo, bool port)
diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c
index 30ffb00661bb..2fb78b4b3ca6 100644
--- a/net/mptcp/subflow.c
+++ b/net/mptcp/subflow.c
@@ -62,7 +62,9 @@ static void subflow_generate_hmac(u64 key1, u64 key2, u32 nonce1, u32 nonce2,
 static bool mptcp_can_accept_new_subflow(const struct mptcp_sock *msk)
 {
 	return mptcp_is_fully_established((void *)msk) &&
-	       READ_ONCE(msk->pm.accept_subflow);
+		((mptcp_pm_is_userspace(msk) &&
+		  mptcp_userspace_pm_active(sock_net((struct sock *)msk))) ||
+		 READ_ONCE(msk->pm.accept_subflow));
 }
 
 /* validate received token and create truncated hmac and nonce for SYN-ACK */
-- 
2.31.1


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

* [PATCH mptcp-next 2/5] mptcp: store remote id from MP_JOIN SYN/ACK in local ctx
  2022-03-16 19:07 [PATCH mptcp-next 0/5] mptcp: fixes and enhancements related to path management Kishen Maloor
  2022-03-16 19:07 ` [PATCH mptcp-next 1/5] mptcp: bypass in-kernel PM restrictions for non-kernel PMs Kishen Maloor
@ 2022-03-16 19:07 ` Kishen Maloor
  2022-03-16 19:07 ` [PATCH mptcp-next 3/5] mptcp: reflect remote port (not 0) in ANNOUNCED events Kishen Maloor
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 10+ messages in thread
From: Kishen Maloor @ 2022-03-16 19:07 UTC (permalink / raw)
  To: kishen.maloor, mptcp

This change reads the addr id assigned to the remote endpoint
of a subflow from the MP_JOIN SYN/ACK message and stores it
in the related subflow context. The remote id was not being
captured prior to this change, and will now provide a consistent
view of remote endpoints and their ids as seen through netlink
events.

Signed-off-by: Kishen Maloor <kishen.maloor@intel.com>
---
 net/mptcp/subflow.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c
index 2fb78b4b3ca6..59657b7e4788 100644
--- a/net/mptcp/subflow.c
+++ b/net/mptcp/subflow.c
@@ -443,6 +443,7 @@ static void subflow_finish_connect(struct sock *sk, const struct sk_buff *skb)
 		subflow->backup = mp_opt.backup;
 		subflow->thmac = mp_opt.thmac;
 		subflow->remote_nonce = mp_opt.nonce;
+		subflow->remote_id = mp_opt.join_id;
 		pr_debug("subflow=%p, thmac=%llu, remote_nonce=%u backup=%d",
 			 subflow, subflow->thmac, subflow->remote_nonce,
 			 subflow->backup);
-- 
2.31.1


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

* [PATCH mptcp-next 3/5] mptcp: reflect remote port (not 0) in ANNOUNCED events
  2022-03-16 19:07 [PATCH mptcp-next 0/5] mptcp: fixes and enhancements related to path management Kishen Maloor
  2022-03-16 19:07 ` [PATCH mptcp-next 1/5] mptcp: bypass in-kernel PM restrictions for non-kernel PMs Kishen Maloor
  2022-03-16 19:07 ` [PATCH mptcp-next 2/5] mptcp: store remote id from MP_JOIN SYN/ACK in local ctx Kishen Maloor
@ 2022-03-16 19:07 ` Kishen Maloor
  2022-03-16 19:07 ` [PATCH mptcp-next 4/5] mptcp: establish subflows from either end of connection Kishen Maloor
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 10+ messages in thread
From: Kishen Maloor @ 2022-03-16 19:07 UTC (permalink / raw)
  To: kishen.maloor, mptcp

Per RFC 8684, if no port is specified in an ADD_ADDR message, MPTCP
SHOULD attempt to connect to the specified address on the same port
as the port that is already in use by the subflow on which the
ADD_ADDR signal was sent.

To facilitate that, this change reflects the specific remote port in
use by that subflow in MPTCP_EVENT_ANNOUNCED events.

Signed-off-by: Kishen Maloor <kishen.maloor@intel.com>
---
 net/mptcp/options.c    |  2 +-
 net/mptcp/pm.c         |  6 ++++--
 net/mptcp/pm_netlink.c | 11 ++++++++---
 net/mptcp/protocol.h   |  4 ++--
 4 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/net/mptcp/options.c b/net/mptcp/options.c
index 88f4ebbd6515..c9625fea3ef9 100644
--- a/net/mptcp/options.c
+++ b/net/mptcp/options.c
@@ -1133,7 +1133,7 @@ bool mptcp_incoming_options(struct sock *sk, struct sk_buff *skb)
 		if ((mp_opt.suboptions & OPTION_MPTCP_ADD_ADDR) &&
 		    add_addr_hmac_valid(msk, &mp_opt)) {
 			if (!mp_opt.echo) {
-				mptcp_pm_add_addr_received(msk, &mp_opt.addr);
+				mptcp_pm_add_addr_received(sk, &mp_opt.addr);
 				MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_ADDADDR);
 			} else {
 				mptcp_pm_add_addr_echoed(msk, &mp_opt.addr);
diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c
index 32a9bcc4b9be..4573dab87c9e 100644
--- a/net/mptcp/pm.c
+++ b/net/mptcp/pm.c
@@ -203,15 +203,17 @@ void mptcp_pm_subflow_check_next(struct mptcp_sock *msk, const struct sock *ssk,
 	spin_unlock_bh(&pm->lock);
 }
 
-void mptcp_pm_add_addr_received(struct mptcp_sock *msk,
+void mptcp_pm_add_addr_received(const struct sock *ssk,
 				const struct mptcp_addr_info *addr)
 {
+	struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk);
+	struct mptcp_sock *msk = mptcp_sk(subflow->conn);
 	struct mptcp_pm_data *pm = &msk->pm;
 
 	pr_debug("msk=%p remote_id=%d accept=%d", msk, addr->id,
 		 READ_ONCE(pm->accept_addr));
 
-	mptcp_event_addr_announced(msk, addr);
+	mptcp_event_addr_announced(ssk, addr);
 
 	spin_lock_bh(&pm->lock);
 
diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c
index 4f09eb97faff..905f451ff0f9 100644
--- a/net/mptcp/pm_netlink.c
+++ b/net/mptcp/pm_netlink.c
@@ -2008,10 +2008,12 @@ void mptcp_event_addr_removed(const struct mptcp_sock *msk, uint8_t id)
 	kfree_skb(skb);
 }
 
-void mptcp_event_addr_announced(const struct mptcp_sock *msk,
+void mptcp_event_addr_announced(const struct sock *ssk,
 				const struct mptcp_addr_info *info)
 {
-	struct net *net = sock_net((const struct sock *)msk);
+	struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk);
+	struct mptcp_sock *msk = mptcp_sk(subflow->conn);
+	struct net *net = sock_net(ssk);
 	struct nlmsghdr *nlh;
 	struct sk_buff *skb;
 
@@ -2033,7 +2035,10 @@ void mptcp_event_addr_announced(const struct mptcp_sock *msk,
 	if (nla_put_u8(skb, MPTCP_ATTR_REM_ID, info->id))
 		goto nla_put_failure;
 
-	if (nla_put_be16(skb, MPTCP_ATTR_DPORT, info->port))
+	if (nla_put_be16(skb, MPTCP_ATTR_DPORT,
+			 info->port == 0 ?
+			 ((struct inet_sock *)inet_sk(ssk))->inet_dport :
+			 info->port))
 		goto nla_put_failure;
 
 	switch (info->family) {
diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h
index 1d8c58fb8cdc..3e5c8d5273a9 100644
--- a/net/mptcp/protocol.h
+++ b/net/mptcp/protocol.h
@@ -750,7 +750,7 @@ void mptcp_pm_subflow_established(struct mptcp_sock *msk);
 bool mptcp_pm_nl_check_work_pending(struct mptcp_sock *msk);
 void mptcp_pm_subflow_check_next(struct mptcp_sock *msk, const struct sock *ssk,
 				 const struct mptcp_subflow_context *subflow);
-void mptcp_pm_add_addr_received(struct mptcp_sock *msk,
+void mptcp_pm_add_addr_received(const struct sock *ssk,
 				const struct mptcp_addr_info *addr);
 void mptcp_pm_add_addr_echoed(struct mptcp_sock *msk,
 			      const struct mptcp_addr_info *addr);
@@ -779,7 +779,7 @@ int mptcp_pm_remove_subflow(struct mptcp_sock *msk, const struct mptcp_rm_list *
 
 void mptcp_event(enum mptcp_event_type type, const struct mptcp_sock *msk,
 		 const struct sock *ssk, gfp_t gfp);
-void mptcp_event_addr_announced(const struct mptcp_sock *msk, const struct mptcp_addr_info *info);
+void mptcp_event_addr_announced(const struct sock *ssk, const struct mptcp_addr_info *info);
 void mptcp_event_addr_removed(const struct mptcp_sock *msk, u8 id);
 bool mptcp_userspace_pm_active(struct net *net);
 
-- 
2.31.1


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

* [PATCH mptcp-next 4/5] mptcp: establish subflows from either end of connection
  2022-03-16 19:07 [PATCH mptcp-next 0/5] mptcp: fixes and enhancements related to path management Kishen Maloor
                   ` (2 preceding siblings ...)
  2022-03-16 19:07 ` [PATCH mptcp-next 3/5] mptcp: reflect remote port (not 0) in ANNOUNCED events Kishen Maloor
@ 2022-03-16 19:07 ` Kishen Maloor
  2022-03-16 19:07 ` [PATCH mptcp-next 5/5] mptcp: expose server_side attribute in MPTCP netlink events Kishen Maloor
  2022-03-16 23:23 ` [PATCH mptcp-next 0/5] mptcp: fixes and enhancements related to path management Kishen Maloor
  5 siblings, 0 replies; 10+ messages in thread
From: Kishen Maloor @ 2022-03-16 19:07 UTC (permalink / raw)
  To: kishen.maloor, mptcp

This change updates internal logic to permit subflows to be
established from either the client or server ends of MPTCP
connections. This symmetry and added flexibility may be
harnessed by PM implementations running on either end in
creating new subflows.

The essence of this change lies in not relying on the
"server_side" flag (which continues to be available if needed).

Signed-off-by: Kishen Maloor <kishen.maloor@intel.com>
---
 net/mptcp/options.c  | 2 +-
 net/mptcp/protocol.c | 5 +----
 net/mptcp/protocol.h | 8 ++++++--
 3 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/net/mptcp/options.c b/net/mptcp/options.c
index c9625fea3ef9..e05d9458a025 100644
--- a/net/mptcp/options.c
+++ b/net/mptcp/options.c
@@ -931,7 +931,7 @@ static bool check_fully_established(struct mptcp_sock *msk, struct sock *ssk,
 		if (TCP_SKB_CB(skb)->seq == subflow->ssn_offset + 1 &&
 		    TCP_SKB_CB(skb)->end_seq == TCP_SKB_CB(skb)->seq &&
 		    subflow->mp_join && (mp_opt->suboptions & OPTIONS_MPTCP_MPJ) &&
-		    READ_ONCE(msk->pm.server_side))
+		    !subflow->request_join)
 			tcp_send_ack(ssk);
 		goto fully_established;
 	}
diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c
index fbb14dfe62b3..97b0338fe96f 100644
--- a/net/mptcp/protocol.c
+++ b/net/mptcp/protocol.c
@@ -3263,15 +3263,12 @@ bool mptcp_finish_join(struct sock *ssk)
 		return false;
 	}
 
-	if (!msk->pm.server_side)
+	if (!list_empty(&subflow->node))
 		goto out;
 
 	if (!mptcp_pm_allow_new_subflow(msk))
 		goto err_prohibited;
 
-	if (WARN_ON_ONCE(!list_empty(&subflow->node)))
-		goto err_prohibited;
-
 	/* active connections are already on conn_list.
 	 * If we can't acquire msk socket lock here, let the release callback
 	 * handle it
diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h
index 3e5c8d5273a9..9b655d049b94 100644
--- a/net/mptcp/protocol.h
+++ b/net/mptcp/protocol.h
@@ -908,13 +908,17 @@ static inline bool mptcp_check_infinite_map(struct sk_buff *skb)
 	return false;
 }
 
+static inline bool is_active_ssk(struct mptcp_subflow_context *subflow)
+{
+	return (subflow->request_mptcp || subflow->request_join);
+}
+
 static inline bool subflow_simultaneous_connect(struct sock *sk)
 {
 	struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk);
-	struct sock *parent = subflow->conn;
 
 	return sk->sk_state == TCP_ESTABLISHED &&
-	       !mptcp_sk(parent)->pm.server_side &&
+	       is_active_ssk(subflow) &&
 	       !subflow->conn_finished;
 }
 
-- 
2.31.1


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

* [PATCH mptcp-next 5/5] mptcp: expose server_side attribute in MPTCP netlink events
  2022-03-16 19:07 [PATCH mptcp-next 0/5] mptcp: fixes and enhancements related to path management Kishen Maloor
                   ` (3 preceding siblings ...)
  2022-03-16 19:07 ` [PATCH mptcp-next 4/5] mptcp: establish subflows from either end of connection Kishen Maloor
@ 2022-03-16 19:07 ` Kishen Maloor
  2022-03-16 20:55   ` mptcp: expose server_side attribute in MPTCP netlink events: Tests Results MPTCP CI
  2022-03-16 23:23 ` [PATCH mptcp-next 0/5] mptcp: fixes and enhancements related to path management Kishen Maloor
  5 siblings, 1 reply; 10+ messages in thread
From: Kishen Maloor @ 2022-03-16 19:07 UTC (permalink / raw)
  To: kishen.maloor, mptcp

This change records the 'server_side' attribute of MPTCP_EVENT_CREATED
and MPTCP_EVENT_ESTABLISHED events to inform their recipient about the
Client/Server role of the running MPTCP application.

Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/246
Signed-off-by: Kishen Maloor <kishen.maloor@intel.com>
---
 include/uapi/linux/mptcp.h | 1 +
 net/mptcp/pm_netlink.c     | 3 +++
 2 files changed, 4 insertions(+)

diff --git a/include/uapi/linux/mptcp.h b/include/uapi/linux/mptcp.h
index 9690efedb5fa..e41ea01a94bb 100644
--- a/include/uapi/linux/mptcp.h
+++ b/include/uapi/linux/mptcp.h
@@ -188,6 +188,7 @@ enum mptcp_event_attr {
 	MPTCP_ATTR_IF_IDX,	/* s32 */
 	MPTCP_ATTR_RESET_REASON,/* u32 */
 	MPTCP_ATTR_RESET_FLAGS, /* u32 */
+	MPTCP_ATTR_SERVER_SIDE,	/* u8 */
 
 	__MPTCP_ATTR_AFTER_LAST
 };
diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c
index 905f451ff0f9..6fb84f9c377f 100644
--- a/net/mptcp/pm_netlink.c
+++ b/net/mptcp/pm_netlink.c
@@ -1974,6 +1974,9 @@ static int mptcp_event_created(struct sk_buff *skb,
 	if (err)
 		return err;
 
+	if (nla_put_u8(skb, MPTCP_ATTR_SERVER_SIDE, READ_ONCE(msk->pm.server_side)))
+		return -EMSGSIZE;
+
 	return mptcp_event_add_subflow(skb, ssk);
 }
 
-- 
2.31.1


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

* Re: mptcp: expose server_side attribute in MPTCP netlink events: Tests Results
  2022-03-16 19:07 ` [PATCH mptcp-next 5/5] mptcp: expose server_side attribute in MPTCP netlink events Kishen Maloor
@ 2022-03-16 20:55   ` MPTCP CI
  2022-03-17  9:22     ` Matthieu Baerts
  0 siblings, 1 reply; 10+ messages in thread
From: MPTCP CI @ 2022-03-16 20:55 UTC (permalink / raw)
  To: Kishen Maloor; +Cc: mptcp

Hi Kishen,

Thank you for your modifications, that's great!

Our CI did some validations and here is its report:

- KVM Validation: normal:
  - Unstable: 1 failed test(s): selftest_mptcp_join 🔴:
  - Task: https://cirrus-ci.com/task/6221660377317376
  - Summary: https://api.cirrus-ci.com/v1/artifact/task/6221660377317376/summary/summary.txt

- KVM Validation: debug:
  - Unstable: 3 failed test(s): selftest_diag selftest_mptcp_join selftest_simult_flows 🔴:
  - Task: https://cirrus-ci.com/task/4814285493764096
  - Summary: https://api.cirrus-ci.com/v1/artifact/task/4814285493764096/summary/summary.txt

Initiator: Patchew Applier
Commits: https://github.com/multipath-tcp/mptcp_net-next/commits/42f2a78166ac

Please note that despite all the efforts that have been already done to have a
stable tests suite when executed on a public CI like here, it is possible some
reported issues are not due to your modifications. Still, do not hesitate to
help us improve that ;-)

Cheers,
MPTCP GH Action bot
Bot operated by Matthieu Baerts (Tessares)

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

* Re: [PATCH mptcp-next 0/5] mptcp: fixes and enhancements related to path management
  2022-03-16 19:07 [PATCH mptcp-next 0/5] mptcp: fixes and enhancements related to path management Kishen Maloor
                   ` (4 preceding siblings ...)
  2022-03-16 19:07 ` [PATCH mptcp-next 5/5] mptcp: expose server_side attribute in MPTCP netlink events Kishen Maloor
@ 2022-03-16 23:23 ` Kishen Maloor
  5 siblings, 0 replies; 10+ messages in thread
From: Kishen Maloor @ 2022-03-16 23:23 UTC (permalink / raw)
  To: mptcp

This series is technically v6 of the original
series with the same name, but with some dropped
functionality based on community discussions.

On 3/16/22 12:07 PM, Kishen Maloor wrote:
> This patch series incorporates fixes and enhancements related to
> path management over MPTCP connections, particularly in support of
> userspace PMs. The changes ensure that the required bits of
> information are conveyed through MPTCP netlink events which
> would be consumed by the path manager in making its decisions.
> Further it adds flexibility in establishing paths and from
> both ends of MPTCP connections.
> 
> Kishen Maloor (5):
>   mptcp: bypass in-kernel PM restrictions for non-kernel PMs
>   mptcp: store remote id from MP_JOIN SYN/ACK in local ctx
>   mptcp: reflect remote port (not 0) in ANNOUNCED events
>   mptcp: establish subflows from either end of connection
>   mptcp: expose server_side attribute in MPTCP netlink events
> 
>  include/uapi/linux/mptcp.h |  1 +
>  net/mptcp/options.c        |  4 ++--
>  net/mptcp/pm.c             | 21 ++++++++++++++++-----
>  net/mptcp/pm_netlink.c     | 22 +++++++++++++++++++---
>  net/mptcp/protocol.c       |  5 +----
>  net/mptcp/protocol.h       | 22 ++++++++++++++++------
>  net/mptcp/subflow.c        |  5 ++++-
>  7 files changed, 59 insertions(+), 21 deletions(-)
> 
> 
> base-commit: 2a9f09777d24fc18cc62762b398054d3961ad8bf
> --
> 2.31.1


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

* Re: mptcp: expose server_side attribute in MPTCP netlink events: Tests Results
  2022-03-16 20:55   ` mptcp: expose server_side attribute in MPTCP netlink events: Tests Results MPTCP CI
@ 2022-03-17  9:22     ` Matthieu Baerts
  2022-03-17 15:31       ` Kishen Maloor
  0 siblings, 1 reply; 10+ messages in thread
From: Matthieu Baerts @ 2022-03-17  9:22 UTC (permalink / raw)
  To: Kishen Maloor; +Cc: mptcp

Hi Kishen,

On 16/03/2022 21:55, MPTCP CI wrote:
> Hi Kishen,
> 
> Thank you for your modifications, that's great!
> 
> Our CI did some validations and here is its report:
> 
> - KVM Validation: normal:
>   - Unstable: 1 failed test(s): selftest_mptcp_join 🔴:
>   - Task: https://cirrus-ci.com/task/6221660377317376
>   - Summary: https://api.cirrus-ci.com/v1/artifact/task/6221660377317376/summary/summary.txt
> 
> - KVM Validation: debug:
>   - Unstable: 3 failed test(s): selftest_diag selftest_mptcp_join selftest_simult_flows 🔴:
>   - Task: https://cirrus-ci.com/task/4814285493764096
>   - Summary: https://api.cirrus-ci.com/v1/artifact/task/4814285493764096/summary/summary.txt

The errors in mptcp_join.sh selftest are suspicious:

  echo  [fail] got 0 ADD_ADDR echo[s] expected 1

We can find them with and without a debug kernel config.

May you have a look at it if you don't mind?

Cheers,
Matt
-- 
Tessares | Belgium | Hybrid Access Solutions
www.tessares.net

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

* Re: mptcp: expose server_side attribute in MPTCP netlink events: Tests Results
  2022-03-17  9:22     ` Matthieu Baerts
@ 2022-03-17 15:31       ` Kishen Maloor
  0 siblings, 0 replies; 10+ messages in thread
From: Kishen Maloor @ 2022-03-17 15:31 UTC (permalink / raw)
  To: Matthieu Baerts; +Cc: mptcp

Hi Matthieu,

On 3/17/22 2:22 AM, Matthieu Baerts wrote:
> Hi Kishen,
> 
> On 16/03/2022 21:55, MPTCP CI wrote:
>> Hi Kishen,
>>
>> Thank you for your modifications, that's great!
>>
>> Our CI did some validations and here is its report:
>>
>> - KVM Validation: normal:
>>   - Unstable: 1 failed test(s): selftest_mptcp_join 🔴:
>>   - Task: https://cirrus-ci.com/task/6221660377317376
>>   - Summary: https://api.cirrus-ci.com/v1/artifact/task/6221660377317376/summary/summary.txt
>>
>> - KVM Validation: debug:
>>   - Unstable: 3 failed test(s): selftest_diag selftest_mptcp_join selftest_simult_flows 🔴:
>>   - Task: https://cirrus-ci.com/task/4814285493764096
>>   - Summary: https://api.cirrus-ci.com/v1/artifact/task/4814285493764096/summary/summary.txt
> 
> The errors in mptcp_join.sh selftest are suspicious:
> 
>   echo  [fail] got 0 ADD_ADDR echo[s] expected 1
> 
> We can find them with and without a debug kernel config.
> 
> May you have a look at it if you don't mind?

Thanks! A conditional was added at the wrong spot. Will send v7 shortly.

> 
> Cheers,
> Matt


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

end of thread, other threads:[~2022-03-17 15:32 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-16 19:07 [PATCH mptcp-next 0/5] mptcp: fixes and enhancements related to path management Kishen Maloor
2022-03-16 19:07 ` [PATCH mptcp-next 1/5] mptcp: bypass in-kernel PM restrictions for non-kernel PMs Kishen Maloor
2022-03-16 19:07 ` [PATCH mptcp-next 2/5] mptcp: store remote id from MP_JOIN SYN/ACK in local ctx Kishen Maloor
2022-03-16 19:07 ` [PATCH mptcp-next 3/5] mptcp: reflect remote port (not 0) in ANNOUNCED events Kishen Maloor
2022-03-16 19:07 ` [PATCH mptcp-next 4/5] mptcp: establish subflows from either end of connection Kishen Maloor
2022-03-16 19:07 ` [PATCH mptcp-next 5/5] mptcp: expose server_side attribute in MPTCP netlink events Kishen Maloor
2022-03-16 20:55   ` mptcp: expose server_side attribute in MPTCP netlink events: Tests Results MPTCP CI
2022-03-17  9:22     ` Matthieu Baerts
2022-03-17 15:31       ` Kishen Maloor
2022-03-16 23:23 ` [PATCH mptcp-next 0/5] mptcp: fixes and enhancements related to path management Kishen Maloor

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.