]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commitdiff
RDMA/cma: Introduce and use helper functions to init work
authorParav Pandit <parav@mellanox.com>
Tue, 14 Nov 2017 12:52:03 +0000 (14:52 +0200)
committerJason Gunthorpe <jgg@mellanox.com>
Mon, 18 Dec 2017 22:37:07 +0000 (15:37 -0700)
Introduce and user helper functions to initialize work for address
resolved and route resolved event that avoid code duplication at few
places.

Signed-off-by: Parav Pandit <parav@mellanox.com>
Reviewed-by: Daniel Jurgens <danielj@mellanox.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/core/cma.c

index f986597201fa39ad8d5ba0a73df63189a8159b04..48f593bafe331b05200b0d17259f66ad1386961c 100644 (file)
@@ -2413,6 +2413,26 @@ out:
        kfree(work);
 }
 
+static void cma_init_resolve_route_work(struct cma_work *work,
+                                       struct rdma_id_private *id_priv)
+{
+       work->id = id_priv;
+       INIT_WORK(&work->work, cma_work_handler);
+       work->old_state = RDMA_CM_ROUTE_QUERY;
+       work->new_state = RDMA_CM_ROUTE_RESOLVED;
+       work->event.event = RDMA_CM_EVENT_ROUTE_RESOLVED;
+}
+
+static void cma_init_resolve_addr_work(struct cma_work *work,
+                                      struct rdma_id_private *id_priv)
+{
+       work->id = id_priv;
+       INIT_WORK(&work->work, cma_work_handler);
+       work->old_state = RDMA_CM_ADDR_QUERY;
+       work->new_state = RDMA_CM_ADDR_RESOLVED;
+       work->event.event = RDMA_CM_EVENT_ADDR_RESOLVED;
+}
+
 static int cma_resolve_ib_route(struct rdma_id_private *id_priv, int timeout_ms)
 {
        struct rdma_route *route = &id_priv->id.route;
@@ -2423,11 +2443,7 @@ static int cma_resolve_ib_route(struct rdma_id_private *id_priv, int timeout_ms)
        if (!work)
                return -ENOMEM;
 
-       work->id = id_priv;
-       INIT_WORK(&work->work, cma_work_handler);
-       work->old_state = RDMA_CM_ROUTE_QUERY;
-       work->new_state = RDMA_CM_ROUTE_RESOLVED;
-       work->event.event = RDMA_CM_EVENT_ROUTE_RESOLVED;
+       cma_init_resolve_route_work(work, id_priv);
 
        route->path_rec = kmalloc(sizeof *route->path_rec, GFP_KERNEL);
        if (!route->path_rec) {
@@ -2482,11 +2498,7 @@ static int cma_resolve_iw_route(struct rdma_id_private *id_priv, int timeout_ms)
        if (!work)
                return -ENOMEM;
 
-       work->id = id_priv;
-       INIT_WORK(&work->work, cma_work_handler);
-       work->old_state = RDMA_CM_ROUTE_QUERY;
-       work->new_state = RDMA_CM_ROUTE_RESOLVED;
-       work->event.event = RDMA_CM_EVENT_ROUTE_RESOLVED;
+       cma_init_resolve_route_work(work, id_priv);
        queue_work(cma_wq, &work->work);
        return 0;
 }
@@ -2540,9 +2552,6 @@ static int cma_resolve_iboe_route(struct rdma_id_private *id_priv)
        if (!work)
                return -ENOMEM;
 
-       work->id = id_priv;
-       INIT_WORK(&work->work, cma_work_handler);
-
        route->path_rec = kzalloc(sizeof *route->path_rec, GFP_KERNEL);
        if (!route->path_rec) {
                ret = -ENOMEM;
@@ -2602,11 +2611,7 @@ static int cma_resolve_iboe_route(struct rdma_id_private *id_priv)
                goto err2;
        }
 
-       work->old_state = RDMA_CM_ROUTE_QUERY;
-       work->new_state = RDMA_CM_ROUTE_RESOLVED;
-       work->event.event = RDMA_CM_EVENT_ROUTE_RESOLVED;
-       work->event.status = 0;
-
+       cma_init_resolve_route_work(work, id_priv);
        queue_work(cma_wq, &work->work);
 
        return 0;
@@ -2786,11 +2791,7 @@ static int cma_resolve_loopback(struct rdma_id_private *id_priv)
        rdma_addr_get_sgid(&id_priv->id.route.addr.dev_addr, &gid);
        rdma_addr_set_dgid(&id_priv->id.route.addr.dev_addr, &gid);
 
-       work->id = id_priv;
-       INIT_WORK(&work->work, cma_work_handler);
-       work->old_state = RDMA_CM_ADDR_QUERY;
-       work->new_state = RDMA_CM_ADDR_RESOLVED;
-       work->event.event = RDMA_CM_EVENT_ADDR_RESOLVED;
+       cma_init_resolve_addr_work(work, id_priv);
        queue_work(cma_wq, &work->work);
        return 0;
 err:
@@ -2816,11 +2817,7 @@ static int cma_resolve_ib_addr(struct rdma_id_private *id_priv)
        rdma_addr_set_dgid(&id_priv->id.route.addr.dev_addr, (union ib_gid *)
                &(((struct sockaddr_ib *) &id_priv->id.route.addr.dst_addr)->sib_addr));
 
-       work->id = id_priv;
-       INIT_WORK(&work->work, cma_work_handler);
-       work->old_state = RDMA_CM_ADDR_QUERY;
-       work->new_state = RDMA_CM_ADDR_RESOLVED;
-       work->event.event = RDMA_CM_EVENT_ADDR_RESOLVED;
+       cma_init_resolve_addr_work(work, id_priv);
        queue_work(cma_wq, &work->work);
        return 0;
 err: