diff mbox

[2/4] IB/core: export ib_get_cached_port_state

Message ID CAMGffEmu+UcC7uk86qu7sPawKaBOOe6Fj2ogTrvsdA72O-yokw@mail.gmail.com (mailing list archive)
State Changes Requested
Headers show

Commit Message

Jinpu Wang Dec. 12, 2016, 1:31 p.m. UTC
Add Mark in reply.

Hi, Mark,



On Mon, Dec 12, 2016 at 12:45 PM, Jinpu Wang
<jinpu.wang@profitbricks.com> wrote:
> From 1cf770be635e987e31feed2f7c82b9f4f3bd316a Mon Sep 17 00:00:00 2001
> From: Jack Wang <jinpu.wang@profitbricks.com>
> Date: Mon, 12 Dec 2016 10:12:39 +0100
> Subject: [PATCH 2/4] IB/core: export ib_get_cached_port_state
>
> Export function for rdma_cm, patch will follow.
>
> Signed-off-by: Jack Wang <jinpu.wang@profitbricks.com>
> Reviewed-by: Michael Wang <yun.wang@profitbricks.com>
> ---
>  drivers/infiniband/core/cache.c | 18 ++++++++++++++++++
>  include/rdma/ib_cache.h         | 13 +++++++++++++
>  2 files changed, 31 insertions(+)
>
> diff --git a/drivers/infiniband/core/cache.c b/drivers/infiniband/core/cache.c
> index 025db27..1b064cf 100644
> --- a/drivers/infiniband/core/cache.c
> +++ b/drivers/infiniband/core/cache.c
> @@ -1025,6 +1025,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)
Q: Can you please fix the style (indentation)
A: format mangled by gmail, I attached the patch in attachment.

> +{
> +    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);
> +
Q: Why do you need ret? just return 0.
A: We just need to keep the same style as ib_get_cached_lmc(), ret could be
reserved, indentation should be consistent if not.

>  static void ib_cache_update(struct ib_device *device,
>                  u8                port)
>  {
> diff --git a/include/rdma/ib_cache.h b/include/rdma/ib_cache.h
> index e30f19b..385ec88 100644
> --- a/include/rdma/ib_cache.h
> +++ b/include/rdma/ib_cache.h
> @@ -165,4 +165,17 @@ int ib_get_cached_lmc(struct ib_device *device,
>                u8                port_num,
>                u8                *lmc);
>
> +/**
> + * ib_get_cached_port_state - Returns a cached port state table entry
> + * @device: The device to query.
> + * @port_num: The port number of the device to query.
> + * @port_state: port_state for the specified port for that device.
> + *
> + * ib_get_cached_port_state() fetches the specified port_state table
> entry stored in
> + * the local software cache.
> + */
> +int ib_get_cached_port_state(struct ib_device *device,
> +                  u8                port_num,
> +                  enum ib_port_state *port_active);
> +
>  #endif /* _IB_CACHE_H */
> --
> 2.7.4
>
>
Thanks!
diff mbox

Patch

From 1cf770be635e987e31feed2f7c82b9f4f3bd316a Mon Sep 17 00:00:00 2001
From: Jack Wang <jinpu.wang@profitbricks.com>
Date: Mon, 12 Dec 2016 10:12:39 +0100
Subject: [PATCH 2/4] IB/core: export ib_get_cached_port_state

Export function for rdma_cm, patch will follow.

Signed-off-by: Jack Wang <jinpu.wang@profitbricks.com>
Reviewed-by: Michael Wang <yun.wang@profitbricks.com>
---
 drivers/infiniband/core/cache.c | 18 ++++++++++++++++++
 include/rdma/ib_cache.h         | 13 +++++++++++++
 2 files changed, 31 insertions(+)

diff --git a/drivers/infiniband/core/cache.c b/drivers/infiniband/core/cache.c
index 025db27..1b064cf 100644
--- a/drivers/infiniband/core/cache.c
+++ b/drivers/infiniband/core/cache.c
@@ -1025,6 +1025,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)
 {
diff --git a/include/rdma/ib_cache.h b/include/rdma/ib_cache.h
index e30f19b..385ec88 100644
--- a/include/rdma/ib_cache.h
+++ b/include/rdma/ib_cache.h
@@ -165,4 +165,17 @@  int ib_get_cached_lmc(struct ib_device *device,
 		      u8                port_num,
 		      u8                *lmc);
 
+/**
+ * ib_get_cached_port_state - Returns a cached port state table entry
+ * @device: The device to query.
+ * @port_num: The port number of the device to query.
+ * @port_state: port_state for the specified port for that device.
+ *
+ * ib_get_cached_port_state() fetches the specified port_state table entry stored in
+ * the local software cache.
+ */
+int ib_get_cached_port_state(struct ib_device *device,
+			      u8                port_num,
+			      enum ib_port_state *port_active);
+
 #endif /* _IB_CACHE_H */
-- 
2.7.4