aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/core/cache.c
diff options
context:
space:
mode:
authorJack Wang <jinpu.wang@profitbricks.com>2017-01-02 13:19:24 +0100
committerDoug Ledford <dledford@redhat.com>2017-01-12 23:00:00 -0500
commit9e2c3f1c7f3edc6bdd83dab601418ac6c3b6df73 (patch)
treed9f6df0402e77e029b7628d78bc7c9979e083fa7 /drivers/infiniband/core/cache.c
parentRDMA/core: add port state cache (diff)
downloadlinux-dev-9e2c3f1c7f3edc6bdd83dab601418ac6c3b6df73.tar.xz
linux-dev-9e2c3f1c7f3edc6bdd83dab601418ac6c3b6df73.zip
RDMA/core: export ib_get_cached_port_state
Export function for rdma_cm, patch for rdma_cm to follow. 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>
Diffstat (limited to 'drivers/infiniband/core/cache.c')
-rw-r--r--drivers/infiniband/core/cache.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/drivers/infiniband/core/cache.c b/drivers/infiniband/core/cache.c
index 87fd7c39fbc0..f91886bab9d1 100644
--- a/drivers/infiniband/core/cache.c
+++ b/drivers/infiniband/core/cache.c
@@ -1021,6 +1021,24 @@ int ib_get_cached_lmc(struct ib_device *device,
}
EXPORT_SYMBOL(ib_get_cached_lmc);
+int ib_get_cached_port_state(struct ib_device *device,
+ u8 port_num,
+ enum ib_port_state *port_state)
+{
+ unsigned long flags;
+ int ret = 0;
+
+ if (port_num < rdma_start_port(device) || port_num > rdma_end_port(device))
+ return -EINVAL;
+
+ read_lock_irqsave(&device->cache.lock, flags);
+ *port_state = device->cache.port_state_cache[port_num - rdma_start_port(device)];
+ read_unlock_irqrestore(&device->cache.lock, flags);
+
+ return ret;
+}
+EXPORT_SYMBOL(ib_get_cached_port_state);
+
static void ib_cache_update(struct ib_device *device,
u8 port)
{