[PATCH 9/9] ibacm: Restructure acm_port_join

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Sean Hefty <sean.hefty@xxxxxxxxx>

Create a subroutine to process joining a single
endpoint that can be called directly in place of
joining all endpoints on a port.

This will make it easier to handle future changes that
affect a single endpoint, such as a pkey change.

Signed-off-by: Sean Hefty <sean.hefty@xxxxxxxxx>
---
 src/acm.c |   38 ++++++++++++++++++++++++--------------
 1 files changed, 24 insertions(+), 14 deletions(-)

diff --git a/src/acm.c b/src/acm.c
index 2d9ecee..14ef71a 100644
--- a/src/acm.c
+++ b/src/acm.c
@@ -1566,32 +1566,42 @@ out:
 	free(umad);
 }
 
+static void acm_ep_join(struct acm_ep *ep)
+{
+	struct acm_port *port;
+
+	port = ep->port;
+	acm_log(1, "%s\n", ep->id_string);
+
+	ep->mc_cnt = 0;
+	acm_join_group(ep, &port->base_gid, 0, 0, 0, min_rate, min_mtu);
+
+	if ((ep->state = ep->mc_dest[0].state) != ACM_READY)
+		return;
+
+	if ((route_prot == ACM_ROUTE_PROT_ACM) &&
+	    (port->rate != min_rate || port->mtu != min_mtu))
+		acm_join_group(ep, &port->base_gid, 0, 0, 0, port->rate, port->mtu);
+
+	acm_log(1, "join for %s complete\n", ep->id_string);
+}
+
 static void acm_port_join(struct acm_port *port)
 {
-	struct acm_device *dev;
 	struct acm_ep *ep;
 	DLIST_ENTRY *ep_entry;
 
-	dev = port->dev;
-	acm_log(1, "device %s port %d\n", dev->verbs->device->name,
+	acm_log(1, "device %s port %d\n", port->dev->verbs->device->name,
 		port->port_num);
 
 	for (ep_entry = port->ep_list.Next; ep_entry != &port->ep_list;
 		 ep_entry = ep_entry->Next) {
 
 		ep = container_of(ep_entry, struct acm_ep, entry);
-		ep->mc_cnt = 0;
-		acm_join_group(ep, &port->base_gid, 0, 0, 0, min_rate, min_mtu);
-
-		if ((ep->state = ep->mc_dest[0].state) != ACM_READY)
-			continue;
-
-		if ((route_prot == ACM_ROUTE_PROT_ACM) &&
-		    (port->rate != min_rate || port->mtu != min_mtu))
-			acm_join_group(ep, &port->base_gid, 0, 0, 0, port->rate, port->mtu);
+		acm_ep_join(ep);
 	}
-	acm_log(1, "joins for device %s port %d complete\n", dev->verbs->device->name,
-		port->port_num);
+	acm_log(1, "joins for device %s port %d complete\n",
+		port->dev->verbs->device->name, port->port_num);
 }
 
 static void acm_process_timeouts(void)
-- 
1.7.3

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux