* [PATCH for-4.2 1/1] RDMA/core: Fixes for port mapper client registration
@ 2015-07-02 17:47 Tatyana Nikolova
2015-07-07 15:18 ` Steve Wise
2015-07-08 22:42 ` Doug Ledford
0 siblings, 2 replies; 3+ messages in thread
From: Tatyana Nikolova @ 2015-07-02 17:47 UTC (permalink / raw)
To: Doug Ledford
Cc: john.s.lacombe-ral2JQCrhuEAvxtiuMwx3w,
swise-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW,
linux-rdma-u79uwXL29TY76Z2rM5mHXA
Fixes to allow clients to make remove mapping requests, after
they have provided the user space service with the mapping
information, they are using when the service is restarted.
1) Adding IWPM_REG_VALID, IWPM_REG_INCOMPL and IWPM_REG_UNDEF
registration types for the port mapper clients and functions
to set/check the registration type.
2) If the port mapper user space service is not available to register
the client, then its registration stays IWPM_REG_UNDEF and the
registration isn't checked until the service becomes available
(no mappings are possible, if the user space service isn't running).
3) After the service is restarted, the user space port mapper pid is set
to valid and the client registration is set to IWPM_REG_INCOMPL
to allow the client to make remove mapping requests.
Signed-off-by: Tatyana Nikolova <Tatyana.E.Nikolova-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
---
drivers/infiniband/core/iwpm_msg.c | 33 ++++++++++++++++-----------------
drivers/infiniband/core/iwpm_util.c | 12 ++++++++++--
drivers/infiniband/core/iwpm_util.h | 28 ++++++++++++++++++++++------
3 files changed, 48 insertions(+), 25 deletions(-)
diff --git a/drivers/infiniband/core/iwpm_msg.c b/drivers/infiniband/core/iwpm_msg.c
index e6ffa2e..22a3abe 100644
--- a/drivers/infiniband/core/iwpm_msg.c
+++ b/drivers/infiniband/core/iwpm_msg.c
@@ -67,7 +67,8 @@ int iwpm_register_pid(struct iwpm_dev_data *pm_msg, u8 nl_client)
err_str = "Invalid port mapper client";
goto pid_query_error;
}
- if (iwpm_registered_client(nl_client))
+ if (iwpm_check_registration(nl_client, IWPM_REG_VALID) ||
+ iwpm_user_pid == IWPM_PID_UNAVAILABLE)
return 0;
skb = iwpm_create_nlmsg(RDMA_NL_IWPM_REG_PID, &nlh, nl_client);
if (!skb) {
@@ -106,7 +107,6 @@ int iwpm_register_pid(struct iwpm_dev_data *pm_msg, u8 nl_client)
ret = ibnl_multicast(skb, nlh, RDMA_NL_GROUP_IWPM, GFP_KERNEL);
if (ret) {
skb = NULL; /* skb is freed in the netlink send-op handling */
- iwpm_set_registered(nl_client, 1);
iwpm_user_pid = IWPM_PID_UNAVAILABLE;
err_str = "Unable to send a nlmsg";
goto pid_query_error;
@@ -144,12 +144,12 @@ int iwpm_add_mapping(struct iwpm_sa_data *pm_msg, u8 nl_client)
err_str = "Invalid port mapper client";
goto add_mapping_error;
}
- if (!iwpm_registered_client(nl_client)) {
+ if (!iwpm_valid_pid())
+ return 0;
+ if (!iwpm_check_registration(nl_client, IWPM_REG_VALID)) {
err_str = "Unregistered port mapper client";
goto add_mapping_error;
}
- if (!iwpm_valid_pid())
- return 0;
skb = iwpm_create_nlmsg(RDMA_NL_IWPM_ADD_MAPPING, &nlh, nl_client);
if (!skb) {
err_str = "Unable to create a nlmsg";
@@ -214,12 +214,12 @@ int iwpm_add_and_query_mapping(struct iwpm_sa_data *pm_msg, u8 nl_client)
err_str = "Invalid port mapper client";
goto query_mapping_error;
}
- if (!iwpm_registered_client(nl_client)) {
+ if (!iwpm_valid_pid())
+ return 0;
+ if (!iwpm_check_registration(nl_client, IWPM_REG_VALID)) {
err_str = "Unregistered port mapper client";
goto query_mapping_error;
}
- if (!iwpm_valid_pid())
- return 0;
ret = -ENOMEM;
skb = iwpm_create_nlmsg(RDMA_NL_IWPM_QUERY_MAPPING, &nlh, nl_client);
if (!skb) {
@@ -288,12 +288,12 @@ int iwpm_remove_mapping(struct sockaddr_storage *local_addr, u8 nl_client)
err_str = "Invalid port mapper client";
goto remove_mapping_error;
}
- if (!iwpm_registered_client(nl_client)) {
+ if (!iwpm_valid_pid())
+ return 0;
+ if (iwpm_check_registration(nl_client, IWPM_REG_UNDEF)) {
err_str = "Unregistered port mapper client";
goto remove_mapping_error;
}
- if (!iwpm_valid_pid())
- return 0;
skb = iwpm_create_nlmsg(RDMA_NL_IWPM_REMOVE_MAPPING, &nlh, nl_client);
if (!skb) {
ret = -ENOMEM;
@@ -388,7 +388,7 @@ int iwpm_register_pid_cb(struct sk_buff *skb, struct netlink_callback *cb)
pr_debug("%s: iWarp Port Mapper (pid = %d) is available!\n",
__func__, iwpm_user_pid);
if (iwpm_valid_client(nl_client))
- iwpm_set_registered(nl_client, 1);
+ iwpm_set_registration(nl_client, IWPM_REG_VALID);
register_pid_response_exit:
nlmsg_request->request_done = 1;
/* always for found nlmsg_request */
@@ -644,7 +644,6 @@ int iwpm_mapping_info_cb(struct sk_buff *skb, struct netlink_callback *cb)
{
struct nlattr *nltb[IWPM_NLA_MAPINFO_REQ_MAX];
const char *msg_type = "Mapping Info response";
- int iwpm_pid;
u8 nl_client;
char *iwpm_name;
u16 iwpm_version;
@@ -669,14 +668,14 @@ int iwpm_mapping_info_cb(struct sk_buff *skb, struct netlink_callback *cb)
__func__, nl_client);
return ret;
}
- iwpm_set_registered(nl_client, 0);
+ iwpm_set_registration(nl_client, IWPM_REG_INCOMPL);
atomic_set(&echo_nlmsg_seq, cb->nlh->nlmsg_seq);
+ iwpm_user_pid = cb->nlh->nlmsg_pid;
if (!iwpm_mapinfo_available())
return 0;
- iwpm_pid = cb->nlh->nlmsg_pid;
pr_debug("%s: iWarp Port Mapper (pid = %d) is available!\n",
- __func__, iwpm_pid);
- ret = iwpm_send_mapinfo(nl_client, iwpm_pid);
+ __func__, iwpm_user_pid);
+ ret = iwpm_send_mapinfo(nl_client, iwpm_user_pid);
return ret;
}
EXPORT_SYMBOL(iwpm_mapping_info_cb);
diff --git a/drivers/infiniband/core/iwpm_util.c b/drivers/infiniband/core/iwpm_util.c
index a626795..5fb089e 100644
--- a/drivers/infiniband/core/iwpm_util.c
+++ b/drivers/infiniband/core/iwpm_util.c
@@ -78,6 +78,7 @@ init_exit:
mutex_unlock(&iwpm_admin_lock);
if (!ret) {
iwpm_set_valid(nl_client, 1);
+ iwpm_set_registration(nl_client, IWPM_REG_UNDEF);
pr_debug("%s: Mapinfo and reminfo tables are created\n",
__func__);
}
@@ -106,6 +107,7 @@ int iwpm_exit(u8 nl_client)
}
mutex_unlock(&iwpm_admin_lock);
iwpm_set_valid(nl_client, 0);
+ iwpm_set_registration(nl_client, IWPM_REG_UNDEF);
return 0;
}
EXPORT_SYMBOL(iwpm_exit);
@@ -397,17 +399,23 @@ void iwpm_set_valid(u8 nl_client, int valid)
}
/* valid client */
-int iwpm_registered_client(u8 nl_client)
+u32 iwpm_get_registration(u8 nl_client)
{
return iwpm_admin.reg_list[nl_client];
}
/* valid client */
-void iwpm_set_registered(u8 nl_client, int reg)
+void iwpm_set_registration(u8 nl_client, u32 reg)
{
iwpm_admin.reg_list[nl_client] = reg;
}
+/* valid client */
+u32 iwpm_check_registration(u8 nl_client, u32 reg)
+{
+ return (iwpm_get_registration(nl_client) & reg);
+}
+
int iwpm_compare_sockaddr(struct sockaddr_storage *a_sockaddr,
struct sockaddr_storage *b_sockaddr)
{
diff --git a/drivers/infiniband/core/iwpm_util.h b/drivers/infiniband/core/iwpm_util.h
index ee2d9ff..b7b9e19 100644
--- a/drivers/infiniband/core/iwpm_util.h
+++ b/drivers/infiniband/core/iwpm_util.h
@@ -58,6 +58,10 @@
#define IWPM_PID_UNDEFINED -1
#define IWPM_PID_UNAVAILABLE -2
+#define IWPM_REG_UNDEF 0x01
+#define IWPM_REG_VALID 0x02
+#define IWPM_REG_INCOMPL 0x04
+
struct iwpm_nlmsg_request {
struct list_head inprocess_list;
__u32 nlmsg_seq;
@@ -88,7 +92,7 @@ struct iwpm_admin_data {
atomic_t refcount;
atomic_t nlmsg_seq;
int client_list[RDMA_NL_NUM_CLIENTS];
- int reg_list[RDMA_NL_NUM_CLIENTS];
+ u32 reg_list[RDMA_NL_NUM_CLIENTS];
};
/**
@@ -159,19 +163,31 @@ int iwpm_valid_client(u8 nl_client);
void iwpm_set_valid(u8 nl_client, int valid);
/**
- * iwpm_registered_client - Check if the port mapper client is registered
+ * iwpm_check_registration - Check if the client registration
+ * matches the given one
* @nl_client: The index of the netlink client
+ * @reg: The given registration type to compare with
*
* Call iwpm_register_pid() to register a client
+ * Returns true if the client registration matches reg,
+ * otherwise returns false
+ */
+u32 iwpm_check_registration(u8 nl_client, u32 reg);
+
+/**
+ * iwpm_set_registration - Set the client registration
+ * @nl_client: The index of the netlink client
+ * @reg: Registration type to set
*/
-int iwpm_registered_client(u8 nl_client);
+void iwpm_set_registration(u8 nl_client, u32 reg);
/**
- * iwpm_set_registered - Set the port mapper client to registered or not
+ * iwpm_get_registration
* @nl_client: The index of the netlink client
- * @reg: 1 if registered or 0 if not
+ *
+ * Returns the client registration type
*/
-void iwpm_set_registered(u8 nl_client, int reg);
+u32 iwpm_get_registration(u8 nl_client);
/**
* iwpm_send_mapinfo - Send local and mapped IPv4/IPv6 address info of
--
1.7.1
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply related [flat|nested] 3+ messages in thread* RE: [PATCH for-4.2 1/1] RDMA/core: Fixes for port mapper client registration
2015-07-02 17:47 [PATCH for-4.2 1/1] RDMA/core: Fixes for port mapper client registration Tatyana Nikolova
@ 2015-07-07 15:18 ` Steve Wise
2015-07-08 22:42 ` Doug Ledford
1 sibling, 0 replies; 3+ messages in thread
From: Steve Wise @ 2015-07-07 15:18 UTC (permalink / raw)
To: 'Tatyana Nikolova', 'Doug Ledford'
Cc: john.s.lacombe-ral2JQCrhuEAvxtiuMwx3w,
linux-rdma-u79uwXL29TY76Z2rM5mHXA
Reviewed-by: Steve Wise <swise-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org>
Tested-by: Steve Wise <swise-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org>
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH for-4.2 1/1] RDMA/core: Fixes for port mapper client registration
2015-07-02 17:47 [PATCH for-4.2 1/1] RDMA/core: Fixes for port mapper client registration Tatyana Nikolova
2015-07-07 15:18 ` Steve Wise
@ 2015-07-08 22:42 ` Doug Ledford
1 sibling, 0 replies; 3+ messages in thread
From: Doug Ledford @ 2015-07-08 22:42 UTC (permalink / raw)
To: Tatyana Nikolova
Cc: john.s.lacombe-ral2JQCrhuEAvxtiuMwx3w,
swise-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW,
linux-rdma-u79uwXL29TY76Z2rM5mHXA
[-- Attachment #1: Type: text/plain, Size: 9283 bytes --]
On 07/02/2015 01:47 PM, Tatyana Nikolova wrote:
> Fixes to allow clients to make remove mapping requests, after
> they have provided the user space service with the mapping
> information, they are using when the service is restarted.
>
> 1) Adding IWPM_REG_VALID, IWPM_REG_INCOMPL and IWPM_REG_UNDEF
> registration types for the port mapper clients and functions
> to set/check the registration type.
> 2) If the port mapper user space service is not available to register
> the client, then its registration stays IWPM_REG_UNDEF and the
> registration isn't checked until the service becomes available
> (no mappings are possible, if the user space service isn't running).
> 3) After the service is restarted, the user space port mapper pid is set
> to valid and the client registration is set to IWPM_REG_INCOMPL
> to allow the client to make remove mapping requests.
>
> Signed-off-by: Tatyana Nikolova <Tatyana.E.Nikolova-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
> ---
> drivers/infiniband/core/iwpm_msg.c | 33 ++++++++++++++++-----------------
> drivers/infiniband/core/iwpm_util.c | 12 ++++++++++--
> drivers/infiniband/core/iwpm_util.h | 28 ++++++++++++++++++++++------
> 3 files changed, 48 insertions(+), 25 deletions(-)
Thanks, applied.
>
> diff --git a/drivers/infiniband/core/iwpm_msg.c b/drivers/infiniband/core/iwpm_msg.c
> index e6ffa2e..22a3abe 100644
> --- a/drivers/infiniband/core/iwpm_msg.c
> +++ b/drivers/infiniband/core/iwpm_msg.c
> @@ -67,7 +67,8 @@ int iwpm_register_pid(struct iwpm_dev_data *pm_msg, u8 nl_client)
> err_str = "Invalid port mapper client";
> goto pid_query_error;
> }
> - if (iwpm_registered_client(nl_client))
> + if (iwpm_check_registration(nl_client, IWPM_REG_VALID) ||
> + iwpm_user_pid == IWPM_PID_UNAVAILABLE)
> return 0;
> skb = iwpm_create_nlmsg(RDMA_NL_IWPM_REG_PID, &nlh, nl_client);
> if (!skb) {
> @@ -106,7 +107,6 @@ int iwpm_register_pid(struct iwpm_dev_data *pm_msg, u8 nl_client)
> ret = ibnl_multicast(skb, nlh, RDMA_NL_GROUP_IWPM, GFP_KERNEL);
> if (ret) {
> skb = NULL; /* skb is freed in the netlink send-op handling */
> - iwpm_set_registered(nl_client, 1);
> iwpm_user_pid = IWPM_PID_UNAVAILABLE;
> err_str = "Unable to send a nlmsg";
> goto pid_query_error;
> @@ -144,12 +144,12 @@ int iwpm_add_mapping(struct iwpm_sa_data *pm_msg, u8 nl_client)
> err_str = "Invalid port mapper client";
> goto add_mapping_error;
> }
> - if (!iwpm_registered_client(nl_client)) {
> + if (!iwpm_valid_pid())
> + return 0;
> + if (!iwpm_check_registration(nl_client, IWPM_REG_VALID)) {
> err_str = "Unregistered port mapper client";
> goto add_mapping_error;
> }
> - if (!iwpm_valid_pid())
> - return 0;
> skb = iwpm_create_nlmsg(RDMA_NL_IWPM_ADD_MAPPING, &nlh, nl_client);
> if (!skb) {
> err_str = "Unable to create a nlmsg";
> @@ -214,12 +214,12 @@ int iwpm_add_and_query_mapping(struct iwpm_sa_data *pm_msg, u8 nl_client)
> err_str = "Invalid port mapper client";
> goto query_mapping_error;
> }
> - if (!iwpm_registered_client(nl_client)) {
> + if (!iwpm_valid_pid())
> + return 0;
> + if (!iwpm_check_registration(nl_client, IWPM_REG_VALID)) {
> err_str = "Unregistered port mapper client";
> goto query_mapping_error;
> }
> - if (!iwpm_valid_pid())
> - return 0;
> ret = -ENOMEM;
> skb = iwpm_create_nlmsg(RDMA_NL_IWPM_QUERY_MAPPING, &nlh, nl_client);
> if (!skb) {
> @@ -288,12 +288,12 @@ int iwpm_remove_mapping(struct sockaddr_storage *local_addr, u8 nl_client)
> err_str = "Invalid port mapper client";
> goto remove_mapping_error;
> }
> - if (!iwpm_registered_client(nl_client)) {
> + if (!iwpm_valid_pid())
> + return 0;
> + if (iwpm_check_registration(nl_client, IWPM_REG_UNDEF)) {
> err_str = "Unregistered port mapper client";
> goto remove_mapping_error;
> }
> - if (!iwpm_valid_pid())
> - return 0;
> skb = iwpm_create_nlmsg(RDMA_NL_IWPM_REMOVE_MAPPING, &nlh, nl_client);
> if (!skb) {
> ret = -ENOMEM;
> @@ -388,7 +388,7 @@ int iwpm_register_pid_cb(struct sk_buff *skb, struct netlink_callback *cb)
> pr_debug("%s: iWarp Port Mapper (pid = %d) is available!\n",
> __func__, iwpm_user_pid);
> if (iwpm_valid_client(nl_client))
> - iwpm_set_registered(nl_client, 1);
> + iwpm_set_registration(nl_client, IWPM_REG_VALID);
> register_pid_response_exit:
> nlmsg_request->request_done = 1;
> /* always for found nlmsg_request */
> @@ -644,7 +644,6 @@ int iwpm_mapping_info_cb(struct sk_buff *skb, struct netlink_callback *cb)
> {
> struct nlattr *nltb[IWPM_NLA_MAPINFO_REQ_MAX];
> const char *msg_type = "Mapping Info response";
> - int iwpm_pid;
> u8 nl_client;
> char *iwpm_name;
> u16 iwpm_version;
> @@ -669,14 +668,14 @@ int iwpm_mapping_info_cb(struct sk_buff *skb, struct netlink_callback *cb)
> __func__, nl_client);
> return ret;
> }
> - iwpm_set_registered(nl_client, 0);
> + iwpm_set_registration(nl_client, IWPM_REG_INCOMPL);
> atomic_set(&echo_nlmsg_seq, cb->nlh->nlmsg_seq);
> + iwpm_user_pid = cb->nlh->nlmsg_pid;
> if (!iwpm_mapinfo_available())
> return 0;
> - iwpm_pid = cb->nlh->nlmsg_pid;
> pr_debug("%s: iWarp Port Mapper (pid = %d) is available!\n",
> - __func__, iwpm_pid);
> - ret = iwpm_send_mapinfo(nl_client, iwpm_pid);
> + __func__, iwpm_user_pid);
> + ret = iwpm_send_mapinfo(nl_client, iwpm_user_pid);
> return ret;
> }
> EXPORT_SYMBOL(iwpm_mapping_info_cb);
> diff --git a/drivers/infiniband/core/iwpm_util.c b/drivers/infiniband/core/iwpm_util.c
> index a626795..5fb089e 100644
> --- a/drivers/infiniband/core/iwpm_util.c
> +++ b/drivers/infiniband/core/iwpm_util.c
> @@ -78,6 +78,7 @@ init_exit:
> mutex_unlock(&iwpm_admin_lock);
> if (!ret) {
> iwpm_set_valid(nl_client, 1);
> + iwpm_set_registration(nl_client, IWPM_REG_UNDEF);
> pr_debug("%s: Mapinfo and reminfo tables are created\n",
> __func__);
> }
> @@ -106,6 +107,7 @@ int iwpm_exit(u8 nl_client)
> }
> mutex_unlock(&iwpm_admin_lock);
> iwpm_set_valid(nl_client, 0);
> + iwpm_set_registration(nl_client, IWPM_REG_UNDEF);
> return 0;
> }
> EXPORT_SYMBOL(iwpm_exit);
> @@ -397,17 +399,23 @@ void iwpm_set_valid(u8 nl_client, int valid)
> }
>
> /* valid client */
> -int iwpm_registered_client(u8 nl_client)
> +u32 iwpm_get_registration(u8 nl_client)
> {
> return iwpm_admin.reg_list[nl_client];
> }
>
> /* valid client */
> -void iwpm_set_registered(u8 nl_client, int reg)
> +void iwpm_set_registration(u8 nl_client, u32 reg)
> {
> iwpm_admin.reg_list[nl_client] = reg;
> }
>
> +/* valid client */
> +u32 iwpm_check_registration(u8 nl_client, u32 reg)
> +{
> + return (iwpm_get_registration(nl_client) & reg);
> +}
> +
> int iwpm_compare_sockaddr(struct sockaddr_storage *a_sockaddr,
> struct sockaddr_storage *b_sockaddr)
> {
> diff --git a/drivers/infiniband/core/iwpm_util.h b/drivers/infiniband/core/iwpm_util.h
> index ee2d9ff..b7b9e19 100644
> --- a/drivers/infiniband/core/iwpm_util.h
> +++ b/drivers/infiniband/core/iwpm_util.h
> @@ -58,6 +58,10 @@
> #define IWPM_PID_UNDEFINED -1
> #define IWPM_PID_UNAVAILABLE -2
>
> +#define IWPM_REG_UNDEF 0x01
> +#define IWPM_REG_VALID 0x02
> +#define IWPM_REG_INCOMPL 0x04
> +
> struct iwpm_nlmsg_request {
> struct list_head inprocess_list;
> __u32 nlmsg_seq;
> @@ -88,7 +92,7 @@ struct iwpm_admin_data {
> atomic_t refcount;
> atomic_t nlmsg_seq;
> int client_list[RDMA_NL_NUM_CLIENTS];
> - int reg_list[RDMA_NL_NUM_CLIENTS];
> + u32 reg_list[RDMA_NL_NUM_CLIENTS];
> };
>
> /**
> @@ -159,19 +163,31 @@ int iwpm_valid_client(u8 nl_client);
> void iwpm_set_valid(u8 nl_client, int valid);
>
> /**
> - * iwpm_registered_client - Check if the port mapper client is registered
> + * iwpm_check_registration - Check if the client registration
> + * matches the given one
> * @nl_client: The index of the netlink client
> + * @reg: The given registration type to compare with
> *
> * Call iwpm_register_pid() to register a client
> + * Returns true if the client registration matches reg,
> + * otherwise returns false
> + */
> +u32 iwpm_check_registration(u8 nl_client, u32 reg);
> +
> +/**
> + * iwpm_set_registration - Set the client registration
> + * @nl_client: The index of the netlink client
> + * @reg: Registration type to set
> */
> -int iwpm_registered_client(u8 nl_client);
> +void iwpm_set_registration(u8 nl_client, u32 reg);
>
> /**
> - * iwpm_set_registered - Set the port mapper client to registered or not
> + * iwpm_get_registration
> * @nl_client: The index of the netlink client
> - * @reg: 1 if registered or 0 if not
> + *
> + * Returns the client registration type
> */
> -void iwpm_set_registered(u8 nl_client, int reg);
> +u32 iwpm_get_registration(u8 nl_client);
>
> /**
> * iwpm_send_mapinfo - Send local and mapped IPv4/IPv6 address info of
>
--
Doug Ledford <dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
GPG KeyID: 0E572FDD
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 884 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2015-07-08 22:42 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-07-02 17:47 [PATCH for-4.2 1/1] RDMA/core: Fixes for port mapper client registration Tatyana Nikolova
2015-07-07 15:18 ` Steve Wise
2015-07-08 22:42 ` Doug Ledford
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox