RDMA/core: add port state cache
We need a port state cache in ib_core, later we will use in rdma_cm. Signed-off-by: Jack Wang <jinpu.wang@profitbricks.com> Reviewed-by: Michael Wang <yun.wang@profitbricks.com> Acked-by: Sean Hefty <sean.hefty@intel.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
parent
27d41d29c7
commit
aaaca121c7
@ -1105,6 +1105,8 @@ static void ib_cache_update(struct ib_device *device,
|
||||
}
|
||||
|
||||
device->cache.lmc_cache[port - rdma_start_port(device)] = tprops->lmc;
|
||||
device->cache.port_state_cache[port - rdma_start_port(device)] =
|
||||
tprops->state;
|
||||
|
||||
write_unlock_irq(&device->cache.lock);
|
||||
|
||||
@ -1164,7 +1166,11 @@ int ib_cache_setup_one(struct ib_device *device)
|
||||
(rdma_end_port(device) -
|
||||
rdma_start_port(device) + 1),
|
||||
GFP_KERNEL);
|
||||
if (!device->cache.pkey_cache ||
|
||||
device->cache.port_state_cache = kmalloc(sizeof *device->cache.port_state_cache *
|
||||
(rdma_end_port(device) -
|
||||
rdma_start_port(device) + 1),
|
||||
GFP_KERNEL);
|
||||
if (!device->cache.pkey_cache || !device->cache.port_state_cache ||
|
||||
!device->cache.lmc_cache) {
|
||||
err = -ENOMEM;
|
||||
goto free;
|
||||
@ -1190,6 +1196,7 @@ err:
|
||||
free:
|
||||
kfree(device->cache.pkey_cache);
|
||||
kfree(device->cache.lmc_cache);
|
||||
kfree(device->cache.port_state_cache);
|
||||
return err;
|
||||
}
|
||||
|
||||
@ -1211,6 +1218,7 @@ void ib_cache_release_one(struct ib_device *device)
|
||||
gid_table_release_one(device);
|
||||
kfree(device->cache.pkey_cache);
|
||||
kfree(device->cache.lmc_cache);
|
||||
kfree(device->cache.port_state_cache);
|
||||
}
|
||||
|
||||
void ib_cache_cleanup_one(struct ib_device *device)
|
||||
|
@ -1781,6 +1781,7 @@ struct ib_cache {
|
||||
struct ib_pkey_cache **pkey_cache;
|
||||
struct ib_gid_table **gid_cache;
|
||||
u8 *lmc_cache;
|
||||
enum ib_port_state *port_state_cache;
|
||||
};
|
||||
|
||||
struct ib_dma_mapping_ops {
|
||||
|
Loading…
x
Reference in New Issue
Block a user