Skip to contentSkip to conversation

net/memif: fix init handling when already connected

PATCH Applied Július Milan 3 participants 3 messages Feb 19, 2020 – Mar 9, 2020 Network drivers

v1 of 3 Applied Latest is v3 →

lore
Share & tools
lore
#0 lore raw

PATCH 2/2 net/memif: fix init handling when already connected

This patch fixes the situation when there is already connected pair of memif interfaces and another slave tries to initiate the connection with (already occupied) master. Expected behavior is that the second slave is refused and gets disconnect message with reason: "Already connected", while old connection remains functional.

Fixes 09c7e63a71f9 ("net/memif: introduce memory interface PMD")
---
 drivers/net/memif/memif_socket.c | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)
drivers/net/memif/memif_socket.c +8 -6
index 553f8b004..1a06c6850 100644
@@ -204,6 +204,13 @@ memif_msg_receive_init(struct memif_control_channel *cc, memif_msg_t *msg)
 		pmd = dev->data->dev_private;
 		if (((pmd->flags & ETH_MEMIF_FLAG_DISABLED) == 0) &&
 		    (pmd->id == i->id) && (pmd->role == MEMIF_ROLE_MASTER)) {
+			if (pmd->flags & (ETH_MEMIF_FLAG_CONNECTING |
+					   ETH_MEMIF_FLAG_CONNECTED)) {
+				memif_msg_enq_disconnect(cc,
+							 "Already connected", 0);
+				return -1;
+			}
+
 			/* assign control channel to device */
 			cc->dev = dev;
 			pmd->cc = cc;
@@ -215,12 +222,6 @@ memif_msg_receive_init(struct memif_control_channel *cc, memif_msg_t *msg)
 				return -1;
 			}
 
-			if (pmd->flags & (ETH_MEMIF_FLAG_CONNECTING |
-					   ETH_MEMIF_FLAG_CONNECTED)) {
-				memif_msg_enq_disconnect(pmd->cc,
-							 "Already connected", 0);
-				return -1;
-			}
 			strlcpy(pmd->remote_name, (char *)i->name,
 				sizeof(pmd->remote_name));
 
@@ -772,6 +773,7 @@ memif_intr_handler(void *arg)
 	ret = memif_msg_receive(cc);
 	/* if driver failed to assign device */
 	if (cc->dev == NULL) {
+		memif_msg_send_from_queue(cc);
 		ret = rte_intr_callback_unregister_pending(&cc->intr_handle,
 							   memif_intr_handler,
 							   cc,
Signature · 1 line
2.17.1
#1 lore raw
Quoted 14 lines

-----Original Message-----
From: Július Milan <[email protected]>
Sent: Wednesday, February 19, 2020 9:19 AM
To: [email protected]; Jakub Grajciar -X (jgrajcia - PANTHEON TECH SRO at Cisco) <[email protected]>
Subject: [dpdk-dev][PATCH 2/2] net/memif: fix init handling when already connected

This patch fixes the situation when there is already connected pair of memif interfaces and another slave tries to initiate the connection with (already occupied) master. Expected behavior is that the second slave is refused and gets disconnect message with reason: "Already connected", while old connection remains functional.

Quoted 3 lines
Fixes 09c7e63a71f9 ("net/memif: introduce memory interface PMD")
Applied
#2 lore raw
Quoted 14 lines · Jakub Grajciar -X (jgrajcia - PANTHEON TECH SRO at Cisco)
Quoted 14 lines

-----Original Message-----
From: Július Milan <[email protected]>
Sent: Wednesday, February 19, 2020 9:19 AM
To: [email protected]; Jakub Grajciar -X (jgrajcia - PANTHEON TECH SRO at Cisco) <[email protected]>
Subject: [dpdk-dev][PATCH 2/2] net/memif: fix init handling when already connected

This patch fixes the situation when there is already connected pair of memif interfaces and another slave tries to initiate the connection with (already occupied) master. Expected behavior is that the second slave is refused and gets disconnect message with reason: "Already connected", while old connection remains functional.

Quoted 6 lines
Quoted 3 lines
Fixes 09c7e63a71f9 ("net/memif: introduce memory interface PMD")

Applied to dpdk-next-net/master, thanks.