Changes all ib_xxx_cached_pkey funcitons to use device structure instead of cache structure.
Signed-off-by: Goldwyn Rodrigues <[email protected]> --- drivers/infiniband/core/cache.c | 37 ++++++++++++++++++++----------------- include/rdma/ib_cache.h | 4 ++-- 2 files changed, 22 insertions(+), 19 deletions(-) diff --git a/drivers/infiniband/core/cache.c b/drivers/infiniband/core/cache.c index 4797b2b..f6d0830 100644 --- a/drivers/infiniband/core/cache.c +++ b/drivers/infiniband/core/cache.c @@ -140,64 +140,67 @@ found: } EXPORT_SYMBOL(ib_find_cached_gid); -int ib_get_cached_pkey(struct ib_device *device, +int ib_get_cached_pkey(struct ib_cache *cache, u8 port_num, int index, u16 *pkey) { - struct ib_pkey_cache *cache; + struct ib_pkey_cache *pc; unsigned long flags; int ret = 0; - if (port_num < start_port(device) || port_num > end_port(device)) + if (port_num < cache->start_port || port_num > cache->end_port) return -EINVAL; - read_lock_irqsave(&device->cache.lock, flags); + read_lock_irqsave(&cache->lock, flags); - cache = device->cache.pkey_cache[port_num - start_port(device)]; - if (!test_bit(index, cache->valid_bm)) { + pc = cache->pkey_cache[port_num - cache->start_port]; + if (!test_bit(index, pc->valid_bm)) { ret = -ENOENT; goto out; } - if (index < 0 || index >= cache->table_len) + if (index < 0 || index >= pc->table_len) ret = -EINVAL; else - *pkey = cache->table[index]; + *pkey = pc->table[index]; - read_unlock_irqrestore(&device->cache.lock, flags); out: + read_unlock_irqrestore(&cache->lock, flags); return ret; } EXPORT_SYMBOL(ib_get_cached_pkey); -int ib_find_cached_pkey(struct ib_device *device, +int ib_find_cached_pkey(struct ib_cache *cache, u8 port_num, u16 pkey, u16 *index) { - struct ib_pkey_cache *cache; + struct ib_pkey_cache *pc; unsigned long flags; int i; int ret = -ENOENT; - if (port_num < start_port(device) || port_num > end_port(device)) + if (port_num < cache->start_port || port_num > cache->end_port) return -EINVAL; - read_lock_irqsave(&device->cache.lock, flags); + read_lock_irqsave(&cache->lock, flags); - cache = device->cache.pkey_cache[port_num - start_port(device)]; + pc = cache->pkey_cache[port_num - cache->start_port]; *index = -1; - for (i = 0; i < cache->table_len; ++i) - if ((cache->table[i] & 0x7fff) == (pkey & 0x7fff)) { + for (i = 0; i < pc->table_len; ++i) { + if (!test_bit(i, pc->valid_bm)) + continue; + if ((pc->table[i] & 0x7fff) == (pkey & 0x7fff)) { *index = i; ret = 0; break; } + } - read_unlock_irqrestore(&device->cache.lock, flags); + read_unlock_irqrestore(&cache->lock, flags); return ret; } diff --git a/include/rdma/ib_cache.h b/include/rdma/ib_cache.h index c18d2ed..8af9d07 100644 --- a/include/rdma/ib_cache.h +++ b/include/rdma/ib_cache.h @@ -79,7 +79,7 @@ int ib_find_cached_gid(struct ib_cache *cache, * ib_get_cached_pkey() fetches the specified PKey table entry stored in * the local software cache. */ -int ib_get_cached_pkey(struct ib_device *device_handle, +int ib_get_cached_pkey(struct ib_cache *cache, u8 port_num, int index, u16 *pkey); @@ -95,7 +95,7 @@ int ib_get_cached_pkey(struct ib_device *device_handle, * ib_find_cached_pkey() searches the specified PKey table in * the local software cache. */ -int ib_find_cached_pkey(struct ib_device *device, +int ib_find_cached_pkey(struct ib_cache *cache, u8 port_num, u16 pkey, u16 *index); -- 1.7.6 -- Goldwyn -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
