]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
IB/core: Cut down single member ib_cache structure
authorParav Pandit <parav@mellanox.com>
Thu, 12 Dec 2019 11:30:23 +0000 (13:30 +0200)
committerJason Gunthorpe <jgg@mellanox.com>
Wed, 8 Jan 2020 00:18:11 +0000 (20:18 -0400)
Given that ib_cache structure has only single member now, merge the cache
lock directly in the ib_device.

Link: https://lore.kernel.org/r/20191212113024.336702-4-leon@kernel.org
Signed-off-by: Parav Pandit <parav@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Reviewed-by: Jason Gunthorpe <jgg@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/core/cache.c
include/rdma/ib_verbs.h

index e55f345799e41371451bd7d121f83d479ac96b06..17bfedd24cc340f9781a15e827d63fb651cd5376 100644 (file)
@@ -1033,7 +1033,7 @@ int ib_get_cached_pkey(struct ib_device *device,
        if (!rdma_is_port_valid(device, port_num))
                return -EINVAL;
 
-       read_lock_irqsave(&device->cache.lock, flags);
+       read_lock_irqsave(&device->cache_lock, flags);
 
        cache = device->port_data[port_num].cache.pkey;
 
@@ -1042,7 +1042,7 @@ int ib_get_cached_pkey(struct ib_device *device,
        else
                *pkey = cache->table[index];
 
-       read_unlock_irqrestore(&device->cache.lock, flags);
+       read_unlock_irqrestore(&device->cache_lock, flags);
 
        return ret;
 }
@@ -1057,9 +1057,9 @@ int ib_get_cached_subnet_prefix(struct ib_device *device,
        if (!rdma_is_port_valid(device, port_num))
                return -EINVAL;
 
-       read_lock_irqsave(&device->cache.lock, flags);
+       read_lock_irqsave(&device->cache_lock, flags);
        *sn_pfx = device->port_data[port_num].cache.subnet_prefix;
-       read_unlock_irqrestore(&device->cache.lock, flags);
+       read_unlock_irqrestore(&device->cache_lock, flags);
 
        return 0;
 }
@@ -1079,7 +1079,7 @@ int ib_find_cached_pkey(struct ib_device *device,
        if (!rdma_is_port_valid(device, port_num))
                return -EINVAL;
 
-       read_lock_irqsave(&device->cache.lock, flags);
+       read_lock_irqsave(&device->cache_lock, flags);
 
        cache = device->port_data[port_num].cache.pkey;
 
@@ -1100,7 +1100,7 @@ int ib_find_cached_pkey(struct ib_device *device,
                ret = 0;
        }
 
-       read_unlock_irqrestore(&device->cache.lock, flags);
+       read_unlock_irqrestore(&device->cache_lock, flags);
 
        return ret;
 }
@@ -1119,7 +1119,7 @@ int ib_find_exact_cached_pkey(struct ib_device *device,
        if (!rdma_is_port_valid(device, port_num))
                return -EINVAL;
 
-       read_lock_irqsave(&device->cache.lock, flags);
+       read_lock_irqsave(&device->cache_lock, flags);
 
        cache = device->port_data[port_num].cache.pkey;
 
@@ -1132,7 +1132,7 @@ int ib_find_exact_cached_pkey(struct ib_device *device,
                        break;
                }
 
-       read_unlock_irqrestore(&device->cache.lock, flags);
+       read_unlock_irqrestore(&device->cache_lock, flags);
 
        return ret;
 }
@@ -1148,9 +1148,9 @@ int ib_get_cached_lmc(struct ib_device *device,
        if (!rdma_is_port_valid(device, port_num))
                return -EINVAL;
 
-       read_lock_irqsave(&device->cache.lock, flags);
+       read_lock_irqsave(&device->cache_lock, flags);
        *lmc = device->port_data[port_num].cache.lmc;
-       read_unlock_irqrestore(&device->cache.lock, flags);
+       read_unlock_irqrestore(&device->cache_lock, flags);
 
        return ret;
 }
@@ -1166,9 +1166,9 @@ int ib_get_cached_port_state(struct ib_device   *device,
        if (!rdma_is_port_valid(device, port_num))
                return -EINVAL;
 
-       read_lock_irqsave(&device->cache.lock, flags);
+       read_lock_irqsave(&device->cache_lock, flags);
        *port_state = device->port_data[port_num].cache.port_state;
-       read_unlock_irqrestore(&device->cache.lock, flags);
+       read_unlock_irqrestore(&device->cache_lock, flags);
 
        return ret;
 }
@@ -1428,7 +1428,7 @@ ib_cache_update(struct ib_device *device, u8 port, bool enforce_security)
                }
        }
 
-       write_lock_irq(&device->cache.lock);
+       write_lock_irq(&device->cache_lock);
 
        old_pkey_cache = device->port_data[port].cache.pkey;
 
@@ -1437,7 +1437,7 @@ ib_cache_update(struct ib_device *device, u8 port, bool enforce_security)
        device->port_data[port].cache.port_state = tprops->state;
 
        device->port_data[port].cache.subnet_prefix = tprops->subnet_prefix;
-       write_unlock_irq(&device->cache.lock);
+       write_unlock_irq(&device->cache_lock);
 
        if (enforce_security)
                ib_security_cache_change(device,
@@ -1530,7 +1530,7 @@ int ib_cache_setup_one(struct ib_device *device)
        unsigned int p;
        int err;
 
-       rwlock_init(&device->cache.lock);
+       rwlock_init(&device->cache_lock);
 
        err = gid_table_setup_one(device);
        if (err)
index f36fb657518f9760ee453c960bf49ee307a126d8..37dac147a946939a0f74361da2ba27618d14eb65 100644 (file)
@@ -2152,10 +2152,6 @@ struct ib_port_cache {
        enum ib_port_state     port_state;
 };
 
-struct ib_cache {
-       rwlock_t                lock;
-};
-
 struct ib_port_immutable {
        int                           pkey_tbl_len;
        int                           gid_tbl_len;
@@ -2641,7 +2637,8 @@ struct ib_device {
        struct xarray                 client_data;
        struct mutex                  unregistration_lock;
 
-       struct ib_cache               cache;
+       /* Synchronize GID, Pkey cache entries, subnet prefix, LMC */
+       rwlock_t cache_lock;
        /**
         * port_data is indexed by port number
         */