RDMA: Remove a few extra calls to ib_get_client_data()
authorJason Gunthorpe <jgg@mellanox.com>
Tue, 7 Apr 2020 23:20:09 +0000 (20:20 -0300)
committerJason Gunthorpe <jgg@mellanox.com>
Tue, 14 Apr 2020 19:05:08 +0000 (16:05 -0300)
These four places already have easy access to the client data, just use
that instead.

Link: https://lore.kernel.org/r/0-v1-fae83f600b4a+68-less_get_client_data%25jgg@mellanox.com
Acked-by: Ursula Braun <ubraun@linux.ibm.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/core/sa_query.c
drivers/infiniband/ulp/srpt/ib_srpt.c
net/smc/smc_ib.c

index 74e0058..2dd326f 100644 (file)
@@ -1412,17 +1412,13 @@ void ib_sa_pack_path(struct sa_path_rec *rec, void *attribute)
 EXPORT_SYMBOL(ib_sa_pack_path);
 
 static bool ib_sa_opa_pathrecord_support(struct ib_sa_client *client,
-                                        struct ib_device *device,
+                                        struct ib_sa_device *sa_dev,
                                         u8 port_num)
 {
-       struct ib_sa_device *sa_dev = ib_get_client_data(device, &sa_client);
        struct ib_sa_port *port;
        unsigned long flags;
        bool ret = false;
 
-       if (!sa_dev)
-               return ret;
-
        port = &sa_dev->port[port_num - sa_dev->start_port];
        spin_lock_irqsave(&port->classport_lock, flags);
        if (!port->classport_info.valid)
@@ -1450,8 +1446,8 @@ enum opa_pr_supported {
  * query is possible.
  */
 static int opa_pr_query_possible(struct ib_sa_client *client,
-                                struct ib_device *device,
-                                u8 port_num,
+                                struct ib_sa_device *sa_dev,
+                                struct ib_device *device, u8 port_num,
                                 struct sa_path_rec *rec)
 {
        struct ib_port_attr port_attr;
@@ -1459,7 +1455,7 @@ static int opa_pr_query_possible(struct ib_sa_client *client,
        if (ib_query_port(device, port_num, &port_attr))
                return PR_NOT_SUPPORTED;
 
-       if (ib_sa_opa_pathrecord_support(client, device, port_num))
+       if (ib_sa_opa_pathrecord_support(client, sa_dev, port_num))
                return PR_OPA_SUPPORTED;
 
        if (port_attr.lid >= be16_to_cpu(IB_MULTICAST_LID_BASE))
@@ -1574,7 +1570,8 @@ int ib_sa_path_rec_get(struct ib_sa_client *client,
 
        query->sa_query.port     = port;
        if (rec->rec_type == SA_PATH_REC_TYPE_OPA) {
-               status = opa_pr_query_possible(client, device, port_num, rec);
+               status = opa_pr_query_possible(client, sa_dev, device, port_num,
+                                              rec);
                if (status == PR_NOT_SUPPORTED) {
                        ret = -EINVAL;
                        goto err1;
index 9855274..9d02d80 100644 (file)
@@ -135,14 +135,11 @@ static bool srpt_set_ch_state(struct srpt_rdma_ch *ch, enum rdma_ch_state new)
 static void srpt_event_handler(struct ib_event_handler *handler,
                               struct ib_event *event)
 {
-       struct srpt_device *sdev;
+       struct srpt_device *sdev =
+               container_of(handler, struct srpt_device, event_handler);
        struct srpt_port *sport;
        u8 port_num;
 
-       sdev = ib_get_client_data(event->device, &srpt_client);
-       if (!sdev || sdev->device != event->device)
-               return;
-
        pr_debug("ASYNC event= %d on device= %s\n", event->event,
                 dev_name(&sdev->device->dev));
 
index 04b6fef..e7e7c3c 100644 (file)
@@ -588,9 +588,8 @@ static void smc_ib_add_dev(struct ib_device *ibdev)
 /* callback function for ib_unregister_client() */
 static void smc_ib_remove_dev(struct ib_device *ibdev, void *client_data)
 {
-       struct smc_ib_device *smcibdev;
+       struct smc_ib_device *smcibdev = client_data;
 
-       smcibdev = ib_get_client_data(ibdev, &smc_ib_client);
        if (!smcibdev || smcibdev->ibdev != ibdev)
                return;
        ib_set_client_data(ibdev, &smc_ib_client, NULL);