* [PATCH RFC v2 0/3] connect reject event helpers @ 2016-10-20 22:40 ` Steve Wise 0 siblings, 0 replies; 46+ messages in thread From: Steve Wise @ 2016-10-20 22:40 UTC (permalink / raw) To: dledford-H+wXaHxf7aLQT0dZR+AlfA, sean.hefty-ral2JQCrhuEAvxtiuMwx3w Cc: linux-rdma-u79uwXL29TY76Z2rM5mHXA, bart.vanassche-XdAiOPVOjttBDgjK7y7TUQ, linux-nvme-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, sagig-NQWnxTmZq1alnMjI0IkVqw, hch-jcswGhMUV9g, axboe-b10kYP2dOMg While reviewing: http://lists.infradead.org/pipermail/linux-nvme/2016-October/006681.html I decided to propose transport-agnostic helper functions to better handle connection reject event information. I've included a nvme_rdma patch to utilize the new helpers. Thoughts? Changes since v1: - moved reject logic to cm.c and iwcm.c. - added rdma_consumer_reject() helper. - added nvme-rdma change to utilize the new helpers. Steve Wise (3): rdma_cm: add rdma_reject_msg() helper function rdma_cm: add rdma_consumer_reject() helper function nvme-rdma: use rdma_reject_msg() to log connection rejects drivers/infiniband/core/cm.c | 46 ++++++++++++++++++++++++++++++++++++++++++ drivers/infiniband/core/cma.c | 26 ++++++++++++++++++++++++ drivers/infiniband/core/iwcm.c | 18 +++++++++++++++++ drivers/nvme/host/rdma.c | 18 ++++++++++------- include/rdma/ib_cm.h | 15 ++++++++++++++ include/rdma/iw_cm.h | 15 ++++++++++++++ include/rdma/rdma_cm.h | 14 +++++++++++++ 7 files changed, 145 insertions(+), 7 deletions(-) -- 2.7.0 -- 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] 46+ messages in thread
* [PATCH RFC v2 0/3] connect reject event helpers @ 2016-10-20 22:40 ` Steve Wise 0 siblings, 0 replies; 46+ messages in thread From: Steve Wise @ 2016-10-20 22:40 UTC (permalink / raw) While reviewing: http://lists.infradead.org/pipermail/linux-nvme/2016-October/006681.html I decided to propose transport-agnostic helper functions to better handle connection reject event information. I've included a nvme_rdma patch to utilize the new helpers. Thoughts? Changes since v1: - moved reject logic to cm.c and iwcm.c. - added rdma_consumer_reject() helper. - added nvme-rdma change to utilize the new helpers. Steve Wise (3): rdma_cm: add rdma_reject_msg() helper function rdma_cm: add rdma_consumer_reject() helper function nvme-rdma: use rdma_reject_msg() to log connection rejects drivers/infiniband/core/cm.c | 46 ++++++++++++++++++++++++++++++++++++++++++ drivers/infiniband/core/cma.c | 26 ++++++++++++++++++++++++ drivers/infiniband/core/iwcm.c | 18 +++++++++++++++++ drivers/nvme/host/rdma.c | 18 ++++++++++------- include/rdma/ib_cm.h | 15 ++++++++++++++ include/rdma/iw_cm.h | 15 ++++++++++++++ include/rdma/rdma_cm.h | 14 +++++++++++++ 7 files changed, 145 insertions(+), 7 deletions(-) -- 2.7.0 ^ permalink raw reply [flat|nested] 46+ messages in thread
[parent not found: <cover.1477003235.git.swise-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org>]
* [PATCH RFC v2 1/3] rdma_cm: add rdma_reject_msg() helper function 2016-10-20 22:40 ` Steve Wise @ 2016-10-20 22:40 ` Steve Wise -1 siblings, 0 replies; 46+ messages in thread From: Steve Wise @ 2016-10-20 22:40 UTC (permalink / raw) To: dledford-H+wXaHxf7aLQT0dZR+AlfA, sean.hefty-ral2JQCrhuEAvxtiuMwx3w Cc: linux-rdma-u79uwXL29TY76Z2rM5mHXA, bart.vanassche-XdAiOPVOjttBDgjK7y7TUQ, linux-nvme-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, sagig-NQWnxTmZq1alnMjI0IkVqw, hch-jcswGhMUV9g, axboe-b10kYP2dOMg rdma_reject_msg() returns a pointer to a string message associated with the transport reject reason codes. Signed-off-by: Steve Wise <swise-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org> --- drivers/infiniband/core/cm.c | 46 ++++++++++++++++++++++++++++++++++++++++++ drivers/infiniband/core/cma.c | 13 ++++++++++++ drivers/infiniband/core/iwcm.c | 18 +++++++++++++++++ include/rdma/ib_cm.h | 6 ++++++ include/rdma/iw_cm.h | 6 ++++++ include/rdma/rdma_cm.h | 8 ++++++++ 6 files changed, 97 insertions(+) diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c index c995255..0918c17 100644 --- a/drivers/infiniband/core/cm.c +++ b/drivers/infiniband/core/cm.c @@ -57,6 +57,52 @@ MODULE_AUTHOR("Sean Hefty"); MODULE_DESCRIPTION("InfiniBand CM"); MODULE_LICENSE("Dual BSD/GPL"); +static const char * const ib_rej_reason_strs[] = { + [IB_CM_REJ_NO_QP] = "no qp", + [IB_CM_REJ_NO_EEC] = "no eec", + [IB_CM_REJ_NO_RESOURCES] = "no resources", + [IB_CM_REJ_TIMEOUT] = "timeout", + [IB_CM_REJ_UNSUPPORTED] = "unsupported", + [IB_CM_REJ_INVALID_COMM_ID] = "invalid comm id", + [IB_CM_REJ_INVALID_COMM_INSTANCE] = "invalid comm instance", + [IB_CM_REJ_INVALID_SERVICE_ID] = "invalid service id", + [IB_CM_REJ_INVALID_TRANSPORT_TYPE] = "invalid transport type", + [IB_CM_REJ_STALE_CONN] = "stale conn", + [IB_CM_REJ_RDC_NOT_EXIST] = "rdc not exist", + [IB_CM_REJ_INVALID_GID] = "invalid gid", + [IB_CM_REJ_INVALID_LID] = "invalid lid", + [IB_CM_REJ_INVALID_SL] = "invalid sl", + [IB_CM_REJ_INVALID_TRAFFIC_CLASS] = "invalid traffic class", + [IB_CM_REJ_INVALID_HOP_LIMIT] = "invalid hop limit", + [IB_CM_REJ_INVALID_PACKET_RATE] = "invalid packet rate", + [IB_CM_REJ_INVALID_ALT_GID] = "invalid alt gid", + [IB_CM_REJ_INVALID_ALT_LID] = "invalid alt lid", + [IB_CM_REJ_INVALID_ALT_SL] = "invalid alt sl", + [IB_CM_REJ_INVALID_ALT_TRAFFIC_CLASS] = "invalid alt traffic class", + [IB_CM_REJ_INVALID_ALT_HOP_LIMIT] = "invalid alt hop limit", + [IB_CM_REJ_INVALID_ALT_PACKET_RATE] = "invalid alt packet rate", + [IB_CM_REJ_PORT_CM_REDIRECT] = "port cm redirect", + [IB_CM_REJ_PORT_REDIRECT] = "port redirect", + [IB_CM_REJ_INVALID_MTU] = "invalid mtu", + [IB_CM_REJ_INSUFFICIENT_RESP_RESOURCES] = "insufficient resp resources", + [IB_CM_REJ_CONSUMER_DEFINED] = "consumer defined", + [IB_CM_REJ_INVALID_RNR_RETRY] = "invalid rnr retry", + [IB_CM_REJ_DUPLICATE_LOCAL_COMM_ID] = "duplicate local comm id", + [IB_CM_REJ_INVALID_CLASS_VERSION] = "invalid class version", + [IB_CM_REJ_INVALID_FLOW_LABEL] = "invalid flow label", + [IB_CM_REJ_INVALID_ALT_FLOW_LABEL] = "invalid alt flow label", +}; + +const char *__attribute_const__ ib_reject_msg(int reason) +{ + size_t index = reason; + + return (index < ARRAY_SIZE(ib_rej_reason_strs) && + ib_rej_reason_strs[index]) ? + ib_rej_reason_strs[index] : "unrecognized reason"; +} +EXPORT_SYMBOL(ib_reject_msg); + static void cm_add_one(struct ib_device *device); static void cm_remove_one(struct ib_device *device, void *client_data); diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c index 5f65a78..7cc7346 100644 --- a/drivers/infiniband/core/cma.c +++ b/drivers/infiniband/core/cma.c @@ -101,6 +101,19 @@ const char *__attribute_const__ rdma_event_msg(enum rdma_cm_event_type event) } EXPORT_SYMBOL(rdma_event_msg); +const char *__attribute_const__ rdma_reject_msg(struct rdma_cm_id *id, + int reason) +{ + if (rdma_ib_or_roce(id->device, id->port_num)) + return ib_reject_msg(reason); + + if (rdma_protocol_iwarp(id->device, id->port_num)) + return iw_reject_msg(reason); + + return "unrecognized reason"; +} +EXPORT_SYMBOL(rdma_reject_msg); + static void cma_add_one(struct ib_device *device); static void cma_remove_one(struct ib_device *device, void *client_data); diff --git a/drivers/infiniband/core/iwcm.c b/drivers/infiniband/core/iwcm.c index 357624f..588a31d 100644 --- a/drivers/infiniband/core/iwcm.c +++ b/drivers/infiniband/core/iwcm.c @@ -59,6 +59,24 @@ MODULE_AUTHOR("Tom Tucker"); MODULE_DESCRIPTION("iWARP CM"); MODULE_LICENSE("Dual BSD/GPL"); +static const char * const iw_rej_reason_strs[] = { + [ECONNRESET] = "reset by remote host", + [ECONNREFUSED] = "refused by remote application", + [ETIMEDOUT] = "setup timeout", +}; + +const char *__attribute_const__ iw_reject_msg(int reason) +{ + size_t index = -reason; + + /* iWARP uses negative errnos */ + index = -index; + return (index < ARRAY_SIZE(iw_rej_reason_strs) && + iw_rej_reason_strs[index]) ? + iw_rej_reason_strs[index] : "unrecognized reason"; +} +EXPORT_SYMBOL(iw_reject_msg); + static struct ibnl_client_cbs iwcm_nl_cb_table[] = { [RDMA_NL_IWPM_REG_PID] = {.dump = iwpm_register_pid_cb}, [RDMA_NL_IWPM_ADD_MAPPING] = {.dump = iwpm_add_mapping_cb}, diff --git a/include/rdma/ib_cm.h b/include/rdma/ib_cm.h index 92a7d85..af193b7 100644 --- a/include/rdma/ib_cm.h +++ b/include/rdma/ib_cm.h @@ -603,4 +603,10 @@ struct ib_cm_sidr_rep_param { int ib_send_cm_sidr_rep(struct ib_cm_id *cm_id, struct ib_cm_sidr_rep_param *param); +/** + * ib_reject_msg - return a pointer to a reject message string. + * @reason: Value returned in the REJECT event status field. + */ +const char *__attribute_const__ ib_reject_msg(int reason); + #endif /* IB_CM_H */ diff --git a/include/rdma/iw_cm.h b/include/rdma/iw_cm.h index 6d0065c..15b437e 100644 --- a/include/rdma/iw_cm.h +++ b/include/rdma/iw_cm.h @@ -253,4 +253,10 @@ int iw_cm_disconnect(struct iw_cm_id *cm_id, int abrupt); int iw_cm_init_qp_attr(struct iw_cm_id *cm_id, struct ib_qp_attr *qp_attr, int *qp_attr_mask); +/** + * iw_reject_msg - return a pointer to a reject message string. + * @reason: Value returned in the REJECT event status field. + */ +const char *__attribute_const__ iw_reject_msg(int reason); + #endif /* IW_CM_H */ diff --git a/include/rdma/rdma_cm.h b/include/rdma/rdma_cm.h index 81fb1d1..712a70c 100644 --- a/include/rdma/rdma_cm.h +++ b/include/rdma/rdma_cm.h @@ -388,4 +388,12 @@ int rdma_set_afonly(struct rdma_cm_id *id, int afonly); */ __be64 rdma_get_service_id(struct rdma_cm_id *id, struct sockaddr *addr); +/** + * rdma_reject_msg - return a pointer to a reject message string. + * @id: Communication identifier that received the REJECT event + * @reason: Value returned in the REJECT event status field. + */ +const char *__attribute_const__ rdma_reject_msg(struct rdma_cm_id *id, + int reason); + #endif /* RDMA_CM_H */ -- 2.7.0 -- 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] 46+ messages in thread
* [PATCH RFC v2 1/3] rdma_cm: add rdma_reject_msg() helper function @ 2016-10-20 22:40 ` Steve Wise 0 siblings, 0 replies; 46+ messages in thread From: Steve Wise @ 2016-10-20 22:40 UTC (permalink / raw) rdma_reject_msg() returns a pointer to a string message associated with the transport reject reason codes. Signed-off-by: Steve Wise <swise at opengridcomputing.com> --- drivers/infiniband/core/cm.c | 46 ++++++++++++++++++++++++++++++++++++++++++ drivers/infiniband/core/cma.c | 13 ++++++++++++ drivers/infiniband/core/iwcm.c | 18 +++++++++++++++++ include/rdma/ib_cm.h | 6 ++++++ include/rdma/iw_cm.h | 6 ++++++ include/rdma/rdma_cm.h | 8 ++++++++ 6 files changed, 97 insertions(+) diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c index c995255..0918c17 100644 --- a/drivers/infiniband/core/cm.c +++ b/drivers/infiniband/core/cm.c @@ -57,6 +57,52 @@ MODULE_AUTHOR("Sean Hefty"); MODULE_DESCRIPTION("InfiniBand CM"); MODULE_LICENSE("Dual BSD/GPL"); +static const char * const ib_rej_reason_strs[] = { + [IB_CM_REJ_NO_QP] = "no qp", + [IB_CM_REJ_NO_EEC] = "no eec", + [IB_CM_REJ_NO_RESOURCES] = "no resources", + [IB_CM_REJ_TIMEOUT] = "timeout", + [IB_CM_REJ_UNSUPPORTED] = "unsupported", + [IB_CM_REJ_INVALID_COMM_ID] = "invalid comm id", + [IB_CM_REJ_INVALID_COMM_INSTANCE] = "invalid comm instance", + [IB_CM_REJ_INVALID_SERVICE_ID] = "invalid service id", + [IB_CM_REJ_INVALID_TRANSPORT_TYPE] = "invalid transport type", + [IB_CM_REJ_STALE_CONN] = "stale conn", + [IB_CM_REJ_RDC_NOT_EXIST] = "rdc not exist", + [IB_CM_REJ_INVALID_GID] = "invalid gid", + [IB_CM_REJ_INVALID_LID] = "invalid lid", + [IB_CM_REJ_INVALID_SL] = "invalid sl", + [IB_CM_REJ_INVALID_TRAFFIC_CLASS] = "invalid traffic class", + [IB_CM_REJ_INVALID_HOP_LIMIT] = "invalid hop limit", + [IB_CM_REJ_INVALID_PACKET_RATE] = "invalid packet rate", + [IB_CM_REJ_INVALID_ALT_GID] = "invalid alt gid", + [IB_CM_REJ_INVALID_ALT_LID] = "invalid alt lid", + [IB_CM_REJ_INVALID_ALT_SL] = "invalid alt sl", + [IB_CM_REJ_INVALID_ALT_TRAFFIC_CLASS] = "invalid alt traffic class", + [IB_CM_REJ_INVALID_ALT_HOP_LIMIT] = "invalid alt hop limit", + [IB_CM_REJ_INVALID_ALT_PACKET_RATE] = "invalid alt packet rate", + [IB_CM_REJ_PORT_CM_REDIRECT] = "port cm redirect", + [IB_CM_REJ_PORT_REDIRECT] = "port redirect", + [IB_CM_REJ_INVALID_MTU] = "invalid mtu", + [IB_CM_REJ_INSUFFICIENT_RESP_RESOURCES] = "insufficient resp resources", + [IB_CM_REJ_CONSUMER_DEFINED] = "consumer defined", + [IB_CM_REJ_INVALID_RNR_RETRY] = "invalid rnr retry", + [IB_CM_REJ_DUPLICATE_LOCAL_COMM_ID] = "duplicate local comm id", + [IB_CM_REJ_INVALID_CLASS_VERSION] = "invalid class version", + [IB_CM_REJ_INVALID_FLOW_LABEL] = "invalid flow label", + [IB_CM_REJ_INVALID_ALT_FLOW_LABEL] = "invalid alt flow label", +}; + +const char *__attribute_const__ ib_reject_msg(int reason) +{ + size_t index = reason; + + return (index < ARRAY_SIZE(ib_rej_reason_strs) && + ib_rej_reason_strs[index]) ? + ib_rej_reason_strs[index] : "unrecognized reason"; +} +EXPORT_SYMBOL(ib_reject_msg); + static void cm_add_one(struct ib_device *device); static void cm_remove_one(struct ib_device *device, void *client_data); diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c index 5f65a78..7cc7346 100644 --- a/drivers/infiniband/core/cma.c +++ b/drivers/infiniband/core/cma.c @@ -101,6 +101,19 @@ const char *__attribute_const__ rdma_event_msg(enum rdma_cm_event_type event) } EXPORT_SYMBOL(rdma_event_msg); +const char *__attribute_const__ rdma_reject_msg(struct rdma_cm_id *id, + int reason) +{ + if (rdma_ib_or_roce(id->device, id->port_num)) + return ib_reject_msg(reason); + + if (rdma_protocol_iwarp(id->device, id->port_num)) + return iw_reject_msg(reason); + + return "unrecognized reason"; +} +EXPORT_SYMBOL(rdma_reject_msg); + static void cma_add_one(struct ib_device *device); static void cma_remove_one(struct ib_device *device, void *client_data); diff --git a/drivers/infiniband/core/iwcm.c b/drivers/infiniband/core/iwcm.c index 357624f..588a31d 100644 --- a/drivers/infiniband/core/iwcm.c +++ b/drivers/infiniband/core/iwcm.c @@ -59,6 +59,24 @@ MODULE_AUTHOR("Tom Tucker"); MODULE_DESCRIPTION("iWARP CM"); MODULE_LICENSE("Dual BSD/GPL"); +static const char * const iw_rej_reason_strs[] = { + [ECONNRESET] = "reset by remote host", + [ECONNREFUSED] = "refused by remote application", + [ETIMEDOUT] = "setup timeout", +}; + +const char *__attribute_const__ iw_reject_msg(int reason) +{ + size_t index = -reason; + + /* iWARP uses negative errnos */ + index = -index; + return (index < ARRAY_SIZE(iw_rej_reason_strs) && + iw_rej_reason_strs[index]) ? + iw_rej_reason_strs[index] : "unrecognized reason"; +} +EXPORT_SYMBOL(iw_reject_msg); + static struct ibnl_client_cbs iwcm_nl_cb_table[] = { [RDMA_NL_IWPM_REG_PID] = {.dump = iwpm_register_pid_cb}, [RDMA_NL_IWPM_ADD_MAPPING] = {.dump = iwpm_add_mapping_cb}, diff --git a/include/rdma/ib_cm.h b/include/rdma/ib_cm.h index 92a7d85..af193b7 100644 --- a/include/rdma/ib_cm.h +++ b/include/rdma/ib_cm.h @@ -603,4 +603,10 @@ struct ib_cm_sidr_rep_param { int ib_send_cm_sidr_rep(struct ib_cm_id *cm_id, struct ib_cm_sidr_rep_param *param); +/** + * ib_reject_msg - return a pointer to a reject message string. + * @reason: Value returned in the REJECT event status field. + */ +const char *__attribute_const__ ib_reject_msg(int reason); + #endif /* IB_CM_H */ diff --git a/include/rdma/iw_cm.h b/include/rdma/iw_cm.h index 6d0065c..15b437e 100644 --- a/include/rdma/iw_cm.h +++ b/include/rdma/iw_cm.h @@ -253,4 +253,10 @@ int iw_cm_disconnect(struct iw_cm_id *cm_id, int abrupt); int iw_cm_init_qp_attr(struct iw_cm_id *cm_id, struct ib_qp_attr *qp_attr, int *qp_attr_mask); +/** + * iw_reject_msg - return a pointer to a reject message string. + * @reason: Value returned in the REJECT event status field. + */ +const char *__attribute_const__ iw_reject_msg(int reason); + #endif /* IW_CM_H */ diff --git a/include/rdma/rdma_cm.h b/include/rdma/rdma_cm.h index 81fb1d1..712a70c 100644 --- a/include/rdma/rdma_cm.h +++ b/include/rdma/rdma_cm.h @@ -388,4 +388,12 @@ int rdma_set_afonly(struct rdma_cm_id *id, int afonly); */ __be64 rdma_get_service_id(struct rdma_cm_id *id, struct sockaddr *addr); +/** + * rdma_reject_msg - return a pointer to a reject message string. + * @id: Communication identifier that received the REJECT event + * @reason: Value returned in the REJECT event status field. + */ +const char *__attribute_const__ rdma_reject_msg(struct rdma_cm_id *id, + int reason); + #endif /* RDMA_CM_H */ -- 2.7.0 ^ permalink raw reply related [flat|nested] 46+ messages in thread
[parent not found: <1360f08b7c25f3befcd6836b47af81e2ecb51b75.1477003235.git.swise-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org>]
* Re: [PATCH RFC v2 1/3] rdma_cm: add rdma_reject_msg() helper function 2016-10-20 22:40 ` Steve Wise @ 2016-10-21 12:12 ` Christoph Hellwig -1 siblings, 0 replies; 46+ messages in thread From: Christoph Hellwig @ 2016-10-21 12:12 UTC (permalink / raw) To: Steve Wise Cc: dledford-H+wXaHxf7aLQT0dZR+AlfA, sean.hefty-ral2JQCrhuEAvxtiuMwx3w, linux-rdma-u79uwXL29TY76Z2rM5mHXA, bart.vanassche-XdAiOPVOjttBDgjK7y7TUQ, linux-nvme-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, sagig-NQWnxTmZq1alnMjI0IkVqw, hch-jcswGhMUV9g, axboe-b10kYP2dOMg > +const char *__attribute_const__ ib_reject_msg(int reason) > +{ > + size_t index = reason; > + > + return (index < ARRAY_SIZE(ib_rej_reason_strs) && > + ib_rej_reason_strs[index]) ? > + ib_rej_reason_strs[index] : "unrecognized reason"; > +} > +EXPORT_SYMBOL(ib_reject_msg); This looks a bit odd, why not something like: const char *__attribute_const__ ib_reject_msg(int reason) { if (reason >= ARRAY_SIZE(ib_rej_reason_strs) || !ib_rej_reason_strs[reason]) return "unrecognized reason"; return ib_rej_reason_strs[reason]; } > +const char *__attribute_const__ iw_reject_msg(int reason) > +{ > + size_t index = -reason; > + > + /* iWARP uses negative errnos */ > + index = -index; > + return (index < ARRAY_SIZE(iw_rej_reason_strs) && > + iw_rej_reason_strs[index]) ? > + iw_rej_reason_strs[index] : "unrecognized reason"; > +} > +EXPORT_SYMBOL(iw_reject_msg); Same here: const char *__attribute_const__ iw_reject_msg(int reason) { /* iWARP uses negative errnos */ reason = -reason; if (reason >= ARRAY_SIZE(iw_rej_reason_strs) || !iw_rej_reason_strs[reason]) return "unrecognized reason"; return iw_rej_reason_strs[reason]; } Otherwise this looks good and very useful to me. -- 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] 46+ messages in thread
* [PATCH RFC v2 1/3] rdma_cm: add rdma_reject_msg() helper function @ 2016-10-21 12:12 ` Christoph Hellwig 0 siblings, 0 replies; 46+ messages in thread From: Christoph Hellwig @ 2016-10-21 12:12 UTC (permalink / raw) > +const char *__attribute_const__ ib_reject_msg(int reason) > +{ > + size_t index = reason; > + > + return (index < ARRAY_SIZE(ib_rej_reason_strs) && > + ib_rej_reason_strs[index]) ? > + ib_rej_reason_strs[index] : "unrecognized reason"; > +} > +EXPORT_SYMBOL(ib_reject_msg); This looks a bit odd, why not something like: const char *__attribute_const__ ib_reject_msg(int reason) { if (reason >= ARRAY_SIZE(ib_rej_reason_strs) || !ib_rej_reason_strs[reason]) return "unrecognized reason"; return ib_rej_reason_strs[reason]; } > +const char *__attribute_const__ iw_reject_msg(int reason) > +{ > + size_t index = -reason; > + > + /* iWARP uses negative errnos */ > + index = -index; > + return (index < ARRAY_SIZE(iw_rej_reason_strs) && > + iw_rej_reason_strs[index]) ? > + iw_rej_reason_strs[index] : "unrecognized reason"; > +} > +EXPORT_SYMBOL(iw_reject_msg); Same here: const char *__attribute_const__ iw_reject_msg(int reason) { /* iWARP uses negative errnos */ reason = -reason; if (reason >= ARRAY_SIZE(iw_rej_reason_strs) || !iw_rej_reason_strs[reason]) return "unrecognized reason"; return iw_rej_reason_strs[reason]; } Otherwise this looks good and very useful to me. ^ permalink raw reply [flat|nested] 46+ messages in thread
[parent not found: <20161021121234.GA17028-jcswGhMUV9g@public.gmane.org>]
* RE: [PATCH RFC v2 1/3] rdma_cm: add rdma_reject_msg() helper function 2016-10-21 12:12 ` Christoph Hellwig @ 2016-10-21 14:07 ` Steve Wise -1 siblings, 0 replies; 46+ messages in thread From: Steve Wise @ 2016-10-21 14:07 UTC (permalink / raw) To: 'Christoph Hellwig' Cc: dledford-H+wXaHxf7aLQT0dZR+AlfA, sean.hefty-ral2JQCrhuEAvxtiuMwx3w, linux-rdma-u79uwXL29TY76Z2rM5mHXA, bart.vanassche-XdAiOPVOjttBDgjK7y7TUQ, linux-nvme-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, sagig-NQWnxTmZq1alnMjI0IkVqw, axboe-b10kYP2dOMg > > > +const char *__attribute_const__ ib_reject_msg(int reason) > > +{ > > + size_t index = reason; > > + > > + return (index < ARRAY_SIZE(ib_rej_reason_strs) && > > + ib_rej_reason_strs[index]) ? > > + ib_rej_reason_strs[index] : "unrecognized reason"; > > +} > > +EXPORT_SYMBOL(ib_reject_msg); > > This looks a bit odd, why not something like: > > const char *__attribute_const__ ib_reject_msg(int reason) > { > if (reason >= ARRAY_SIZE(ib_rej_reason_strs) || > !ib_rej_reason_strs[reason]) > return "unrecognized reason"; > return ib_rej_reason_strs[reason]; > } > I copy/pasted from rdma_event_msg(). > > +const char *__attribute_const__ iw_reject_msg(int reason) > > +{ > > + size_t index = -reason; > > + > > + /* iWARP uses negative errnos */ > > + index = -index; > > + return (index < ARRAY_SIZE(iw_rej_reason_strs) && > > + iw_rej_reason_strs[index]) ? > > + iw_rej_reason_strs[index] : "unrecognized reason"; > > +} > > +EXPORT_SYMBOL(iw_reject_msg); > > Same here: > > const char *__attribute_const__ iw_reject_msg(int reason) > { > /* iWARP uses negative errnos */ > reason = -reason; > > if (reason >= ARRAY_SIZE(iw_rej_reason_strs) || > !iw_rej_reason_strs[reason]) > return "unrecognized reason"; > return iw_rej_reason_strs[reason]; > } > > Otherwise this looks good and very useful to me. I will refactor as you suggest. You proposed logic is slightly more readable to me... Thanks. -- 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] 46+ messages in thread
* [PATCH RFC v2 1/3] rdma_cm: add rdma_reject_msg() helper function @ 2016-10-21 14:07 ` Steve Wise 0 siblings, 0 replies; 46+ messages in thread From: Steve Wise @ 2016-10-21 14:07 UTC (permalink / raw) > > > +const char *__attribute_const__ ib_reject_msg(int reason) > > +{ > > + size_t index = reason; > > + > > + return (index < ARRAY_SIZE(ib_rej_reason_strs) && > > + ib_rej_reason_strs[index]) ? > > + ib_rej_reason_strs[index] : "unrecognized reason"; > > +} > > +EXPORT_SYMBOL(ib_reject_msg); > > This looks a bit odd, why not something like: > > const char *__attribute_const__ ib_reject_msg(int reason) > { > if (reason >= ARRAY_SIZE(ib_rej_reason_strs) || > !ib_rej_reason_strs[reason]) > return "unrecognized reason"; > return ib_rej_reason_strs[reason]; > } > I copy/pasted from rdma_event_msg(). > > +const char *__attribute_const__ iw_reject_msg(int reason) > > +{ > > + size_t index = -reason; > > + > > + /* iWARP uses negative errnos */ > > + index = -index; > > + return (index < ARRAY_SIZE(iw_rej_reason_strs) && > > + iw_rej_reason_strs[index]) ? > > + iw_rej_reason_strs[index] : "unrecognized reason"; > > +} > > +EXPORT_SYMBOL(iw_reject_msg); > > Same here: > > const char *__attribute_const__ iw_reject_msg(int reason) > { > /* iWARP uses negative errnos */ > reason = -reason; > > if (reason >= ARRAY_SIZE(iw_rej_reason_strs) || > !iw_rej_reason_strs[reason]) > return "unrecognized reason"; > return iw_rej_reason_strs[reason]; > } > > Otherwise this looks good and very useful to me. I will refactor as you suggest. You proposed logic is slightly more readable to me... Thanks. ^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [PATCH RFC v2 1/3] rdma_cm: add rdma_reject_msg() helper function 2016-10-21 14:07 ` Steve Wise @ 2016-10-21 21:43 ` Sagi Grimberg -1 siblings, 0 replies; 46+ messages in thread From: Sagi Grimberg @ 2016-10-21 21:43 UTC (permalink / raw) To: Steve Wise, 'Christoph Hellwig' Cc: dledford-H+wXaHxf7aLQT0dZR+AlfA, sean.hefty-ral2JQCrhuEAvxtiuMwx3w, linux-rdma-u79uwXL29TY76Z2rM5mHXA, bart.vanassche-XdAiOPVOjttBDgjK7y7TUQ, linux-nvme-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, sagig-NQWnxTmZq1alnMjI0IkVqw, axboe-b10kYP2dOMg Looks good to me either way, Reviewed-by: Sagi Grimberg <sagi-NQWnxTmZq1alnMjI0IkVqw@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] 46+ messages in thread
* [PATCH RFC v2 1/3] rdma_cm: add rdma_reject_msg() helper function @ 2016-10-21 21:43 ` Sagi Grimberg 0 siblings, 0 replies; 46+ messages in thread From: Sagi Grimberg @ 2016-10-21 21:43 UTC (permalink / raw) Looks good to me either way, Reviewed-by: Sagi Grimberg <sagi at grimberg.me> ^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [PATCH RFC v2 1/3] rdma_cm: add rdma_reject_msg() helper function 2016-10-20 22:40 ` Steve Wise @ 2016-10-21 21:51 ` Sagi Grimberg -1 siblings, 0 replies; 46+ messages in thread From: Sagi Grimberg @ 2016-10-21 21:51 UTC (permalink / raw) To: Steve Wise, dledford-H+wXaHxf7aLQT0dZR+AlfA, sean.hefty-ral2JQCrhuEAvxtiuMwx3w Cc: sagig-NQWnxTmZq1alnMjI0IkVqw, linux-rdma-u79uwXL29TY76Z2rM5mHXA, linux-nvme-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, axboe-b10kYP2dOMg, bart.vanassche-XdAiOPVOjttBDgjK7y7TUQ, hch-jcswGhMUV9g > +static const char * const ib_rej_reason_strs[] = { > + [IB_CM_REJ_NO_QP] = "no qp", > + [IB_CM_REJ_NO_EEC] = "no eec", > + [IB_CM_REJ_NO_RESOURCES] = "no resources", > + [IB_CM_REJ_TIMEOUT] = "timeout", > + [IB_CM_REJ_UNSUPPORTED] = "unsupported", > + [IB_CM_REJ_INVALID_COMM_ID] = "invalid comm id", > + [IB_CM_REJ_INVALID_COMM_INSTANCE] = "invalid comm instance", > + [IB_CM_REJ_INVALID_SERVICE_ID] = "invalid service id", > + [IB_CM_REJ_INVALID_TRANSPORT_TYPE] = "invalid transport type", > + [IB_CM_REJ_STALE_CONN] = "stale conn", > + [IB_CM_REJ_RDC_NOT_EXIST] = "rdc not exist", > + [IB_CM_REJ_INVALID_GID] = "invalid gid", > + [IB_CM_REJ_INVALID_LID] = "invalid lid", > + [IB_CM_REJ_INVALID_SL] = "invalid sl", > + [IB_CM_REJ_INVALID_TRAFFIC_CLASS] = "invalid traffic class", > + [IB_CM_REJ_INVALID_HOP_LIMIT] = "invalid hop limit", > + [IB_CM_REJ_INVALID_PACKET_RATE] = "invalid packet rate", > + [IB_CM_REJ_INVALID_ALT_GID] = "invalid alt gid", > + [IB_CM_REJ_INVALID_ALT_LID] = "invalid alt lid", > + [IB_CM_REJ_INVALID_ALT_SL] = "invalid alt sl", > + [IB_CM_REJ_INVALID_ALT_TRAFFIC_CLASS] = "invalid alt traffic class", > + [IB_CM_REJ_INVALID_ALT_HOP_LIMIT] = "invalid alt hop limit", > + [IB_CM_REJ_INVALID_ALT_PACKET_RATE] = "invalid alt packet rate", > + [IB_CM_REJ_PORT_CM_REDIRECT] = "port cm redirect", > + [IB_CM_REJ_PORT_REDIRECT] = "port redirect", > + [IB_CM_REJ_INVALID_MTU] = "invalid mtu", > + [IB_CM_REJ_INSUFFICIENT_RESP_RESOURCES] = "insufficient resp resources", > + [IB_CM_REJ_CONSUMER_DEFINED] = "consumer defined", > + [IB_CM_REJ_INVALID_RNR_RETRY] = "invalid rnr retry", > + [IB_CM_REJ_DUPLICATE_LOCAL_COMM_ID] = "duplicate local comm id", > + [IB_CM_REJ_INVALID_CLASS_VERSION] = "invalid class version", > + [IB_CM_REJ_INVALID_FLOW_LABEL] = "invalid flow label", > + [IB_CM_REJ_INVALID_ALT_FLOW_LABEL] = "invalid alt flow label", > +}; > + > +const char *__attribute_const__ ib_reject_msg(int reason) Please call it ibcm_reject_msg() > +const char *__attribute_const__ iw_reject_msg(int reason) and this iwcm_reject_msg -- 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] 46+ messages in thread
* [PATCH RFC v2 1/3] rdma_cm: add rdma_reject_msg() helper function @ 2016-10-21 21:51 ` Sagi Grimberg 0 siblings, 0 replies; 46+ messages in thread From: Sagi Grimberg @ 2016-10-21 21:51 UTC (permalink / raw) > +static const char * const ib_rej_reason_strs[] = { > + [IB_CM_REJ_NO_QP] = "no qp", > + [IB_CM_REJ_NO_EEC] = "no eec", > + [IB_CM_REJ_NO_RESOURCES] = "no resources", > + [IB_CM_REJ_TIMEOUT] = "timeout", > + [IB_CM_REJ_UNSUPPORTED] = "unsupported", > + [IB_CM_REJ_INVALID_COMM_ID] = "invalid comm id", > + [IB_CM_REJ_INVALID_COMM_INSTANCE] = "invalid comm instance", > + [IB_CM_REJ_INVALID_SERVICE_ID] = "invalid service id", > + [IB_CM_REJ_INVALID_TRANSPORT_TYPE] = "invalid transport type", > + [IB_CM_REJ_STALE_CONN] = "stale conn", > + [IB_CM_REJ_RDC_NOT_EXIST] = "rdc not exist", > + [IB_CM_REJ_INVALID_GID] = "invalid gid", > + [IB_CM_REJ_INVALID_LID] = "invalid lid", > + [IB_CM_REJ_INVALID_SL] = "invalid sl", > + [IB_CM_REJ_INVALID_TRAFFIC_CLASS] = "invalid traffic class", > + [IB_CM_REJ_INVALID_HOP_LIMIT] = "invalid hop limit", > + [IB_CM_REJ_INVALID_PACKET_RATE] = "invalid packet rate", > + [IB_CM_REJ_INVALID_ALT_GID] = "invalid alt gid", > + [IB_CM_REJ_INVALID_ALT_LID] = "invalid alt lid", > + [IB_CM_REJ_INVALID_ALT_SL] = "invalid alt sl", > + [IB_CM_REJ_INVALID_ALT_TRAFFIC_CLASS] = "invalid alt traffic class", > + [IB_CM_REJ_INVALID_ALT_HOP_LIMIT] = "invalid alt hop limit", > + [IB_CM_REJ_INVALID_ALT_PACKET_RATE] = "invalid alt packet rate", > + [IB_CM_REJ_PORT_CM_REDIRECT] = "port cm redirect", > + [IB_CM_REJ_PORT_REDIRECT] = "port redirect", > + [IB_CM_REJ_INVALID_MTU] = "invalid mtu", > + [IB_CM_REJ_INSUFFICIENT_RESP_RESOURCES] = "insufficient resp resources", > + [IB_CM_REJ_CONSUMER_DEFINED] = "consumer defined", > + [IB_CM_REJ_INVALID_RNR_RETRY] = "invalid rnr retry", > + [IB_CM_REJ_DUPLICATE_LOCAL_COMM_ID] = "duplicate local comm id", > + [IB_CM_REJ_INVALID_CLASS_VERSION] = "invalid class version", > + [IB_CM_REJ_INVALID_FLOW_LABEL] = "invalid flow label", > + [IB_CM_REJ_INVALID_ALT_FLOW_LABEL] = "invalid alt flow label", > +}; > + > +const char *__attribute_const__ ib_reject_msg(int reason) Please call it ibcm_reject_msg() > +const char *__attribute_const__ iw_reject_msg(int reason) and this iwcm_reject_msg ^ permalink raw reply [flat|nested] 46+ messages in thread
* [PATCH RFC v2 2/3] rdma_cm: add rdma_consumer_reject() helper function 2016-10-20 22:40 ` Steve Wise @ 2016-10-20 22:40 ` Steve Wise -1 siblings, 0 replies; 46+ messages in thread From: Steve Wise @ 2016-10-20 22:40 UTC (permalink / raw) To: dledford-H+wXaHxf7aLQT0dZR+AlfA, sean.hefty-ral2JQCrhuEAvxtiuMwx3w Cc: linux-rdma-u79uwXL29TY76Z2rM5mHXA, bart.vanassche-XdAiOPVOjttBDgjK7y7TUQ, linux-nvme-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, sagig-NQWnxTmZq1alnMjI0IkVqw, hch-jcswGhMUV9g, axboe-b10kYP2dOMg Return true if the peer consumer application rejected the connection attempt. Signed-off-by: Steve Wise <swise-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org> --- drivers/infiniband/core/cma.c | 13 +++++++++++++ include/rdma/ib_cm.h | 9 +++++++++ include/rdma/iw_cm.h | 9 +++++++++ include/rdma/rdma_cm.h | 6 ++++++ 4 files changed, 37 insertions(+) diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c index 7cc7346..4ec16a3 100644 --- a/drivers/infiniband/core/cma.c +++ b/drivers/infiniband/core/cma.c @@ -114,6 +114,19 @@ const char *__attribute_const__ rdma_reject_msg(struct rdma_cm_id *id, } EXPORT_SYMBOL(rdma_reject_msg); +bool rdma_consumer_reject(struct rdma_cm_id *id, int reason) +{ + if (rdma_ib_or_roce(id->device, id->port_num)) + return ib_consumer_reject(reason); + + if (rdma_protocol_iwarp(id->device, id->port_num)) + return iw_consumer_reject(reason); + + /* FIXME should we WARN_ONCE() here? */ + return false; +} +EXPORT_SYMBOL(rdma_consumer_reject); + static void cma_add_one(struct ib_device *device); static void cma_remove_one(struct ib_device *device, void *client_data); diff --git a/include/rdma/ib_cm.h b/include/rdma/ib_cm.h index af193b7..5595529 100644 --- a/include/rdma/ib_cm.h +++ b/include/rdma/ib_cm.h @@ -609,4 +609,13 @@ int ib_send_cm_sidr_rep(struct ib_cm_id *cm_id, */ const char *__attribute_const__ ib_reject_msg(int reason); +/** + * ib_consumer_reject - return true if the user rejected the connection. + * @reason: Value returned in the REJECT event status field. + */ +static inline bool ib_consumer_reject(int reason) +{ + return reason == IB_CM_REJ_CONSUMER_DEFINED; +}; + #endif /* IB_CM_H */ diff --git a/include/rdma/iw_cm.h b/include/rdma/iw_cm.h index 15b437e..1e5bd33 100644 --- a/include/rdma/iw_cm.h +++ b/include/rdma/iw_cm.h @@ -259,4 +259,13 @@ int iw_cm_init_qp_attr(struct iw_cm_id *cm_id, struct ib_qp_attr *qp_attr, */ const char *__attribute_const__ iw_reject_msg(int reason); +/** + * iw_consumer_reject - return true if the consumer rejected the connection. + * @reason: Value returned in the REJECT event status field. + */ +static inline bool iw_consumer_reject(int reason) +{ + return reason == -ECONNREFUSED; +} + #endif /* IW_CM_H */ diff --git a/include/rdma/rdma_cm.h b/include/rdma/rdma_cm.h index 712a70c..058dfbb 100644 --- a/include/rdma/rdma_cm.h +++ b/include/rdma/rdma_cm.h @@ -395,5 +395,11 @@ __be64 rdma_get_service_id(struct rdma_cm_id *id, struct sockaddr *addr); */ const char *__attribute_const__ rdma_reject_msg(struct rdma_cm_id *id, int reason); +/** + * rdma_consumer_reject - return true if the consumer rejected the connection. + * @id: Communication identifier that received the REJECT event + * @reason: Value returned in the REJECT event status field. + */ +bool rdma_consumer_reject(struct rdma_cm_id *id, int reason); #endif /* RDMA_CM_H */ -- 2.7.0 -- 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] 46+ messages in thread
* [PATCH RFC v2 2/3] rdma_cm: add rdma_consumer_reject() helper function @ 2016-10-20 22:40 ` Steve Wise 0 siblings, 0 replies; 46+ messages in thread From: Steve Wise @ 2016-10-20 22:40 UTC (permalink / raw) Return true if the peer consumer application rejected the connection attempt. Signed-off-by: Steve Wise <swise at opengridcomputing.com> --- drivers/infiniband/core/cma.c | 13 +++++++++++++ include/rdma/ib_cm.h | 9 +++++++++ include/rdma/iw_cm.h | 9 +++++++++ include/rdma/rdma_cm.h | 6 ++++++ 4 files changed, 37 insertions(+) diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c index 7cc7346..4ec16a3 100644 --- a/drivers/infiniband/core/cma.c +++ b/drivers/infiniband/core/cma.c @@ -114,6 +114,19 @@ const char *__attribute_const__ rdma_reject_msg(struct rdma_cm_id *id, } EXPORT_SYMBOL(rdma_reject_msg); +bool rdma_consumer_reject(struct rdma_cm_id *id, int reason) +{ + if (rdma_ib_or_roce(id->device, id->port_num)) + return ib_consumer_reject(reason); + + if (rdma_protocol_iwarp(id->device, id->port_num)) + return iw_consumer_reject(reason); + + /* FIXME should we WARN_ONCE() here? */ + return false; +} +EXPORT_SYMBOL(rdma_consumer_reject); + static void cma_add_one(struct ib_device *device); static void cma_remove_one(struct ib_device *device, void *client_data); diff --git a/include/rdma/ib_cm.h b/include/rdma/ib_cm.h index af193b7..5595529 100644 --- a/include/rdma/ib_cm.h +++ b/include/rdma/ib_cm.h @@ -609,4 +609,13 @@ int ib_send_cm_sidr_rep(struct ib_cm_id *cm_id, */ const char *__attribute_const__ ib_reject_msg(int reason); +/** + * ib_consumer_reject - return true if the user rejected the connection. + * @reason: Value returned in the REJECT event status field. + */ +static inline bool ib_consumer_reject(int reason) +{ + return reason == IB_CM_REJ_CONSUMER_DEFINED; +}; + #endif /* IB_CM_H */ diff --git a/include/rdma/iw_cm.h b/include/rdma/iw_cm.h index 15b437e..1e5bd33 100644 --- a/include/rdma/iw_cm.h +++ b/include/rdma/iw_cm.h @@ -259,4 +259,13 @@ int iw_cm_init_qp_attr(struct iw_cm_id *cm_id, struct ib_qp_attr *qp_attr, */ const char *__attribute_const__ iw_reject_msg(int reason); +/** + * iw_consumer_reject - return true if the consumer rejected the connection. + * @reason: Value returned in the REJECT event status field. + */ +static inline bool iw_consumer_reject(int reason) +{ + return reason == -ECONNREFUSED; +} + #endif /* IW_CM_H */ diff --git a/include/rdma/rdma_cm.h b/include/rdma/rdma_cm.h index 712a70c..058dfbb 100644 --- a/include/rdma/rdma_cm.h +++ b/include/rdma/rdma_cm.h @@ -395,5 +395,11 @@ __be64 rdma_get_service_id(struct rdma_cm_id *id, struct sockaddr *addr); */ const char *__attribute_const__ rdma_reject_msg(struct rdma_cm_id *id, int reason); +/** + * rdma_consumer_reject - return true if the consumer rejected the connection. + * @id: Communication identifier that received the REJECT event + * @reason: Value returned in the REJECT event status field. + */ +bool rdma_consumer_reject(struct rdma_cm_id *id, int reason); #endif /* RDMA_CM_H */ -- 2.7.0 ^ permalink raw reply related [flat|nested] 46+ messages in thread
[parent not found: <cb135696be86c21c144ef35a4d6f7f71394a3627.1477003235.git.swise-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org>]
* Re: [PATCH RFC v2 2/3] rdma_cm: add rdma_consumer_reject() helper function 2016-10-20 22:40 ` Steve Wise @ 2016-10-21 12:14 ` Christoph Hellwig -1 siblings, 0 replies; 46+ messages in thread From: Christoph Hellwig @ 2016-10-21 12:14 UTC (permalink / raw) To: Steve Wise Cc: dledford-H+wXaHxf7aLQT0dZR+AlfA, sean.hefty-ral2JQCrhuEAvxtiuMwx3w, linux-rdma-u79uwXL29TY76Z2rM5mHXA, bart.vanassche-XdAiOPVOjttBDgjK7y7TUQ, linux-nvme-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, sagig-NQWnxTmZq1alnMjI0IkVqw, hch-jcswGhMUV9g, axboe-b10kYP2dOMg On Thu, Oct 20, 2016 at 03:40:26PM -0700, Steve Wise wrote: > Return true if the peer consumer application rejected the > connection attempt. > > Signed-off-by: Steve Wise <swise-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org> > --- > drivers/infiniband/core/cma.c | 13 +++++++++++++ > include/rdma/ib_cm.h | 9 +++++++++ > include/rdma/iw_cm.h | 9 +++++++++ > include/rdma/rdma_cm.h | 6 ++++++ > 4 files changed, 37 insertions(+) > > diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c > index 7cc7346..4ec16a3 100644 > --- a/drivers/infiniband/core/cma.c > +++ b/drivers/infiniband/core/cma.c > @@ -114,6 +114,19 @@ const char *__attribute_const__ rdma_reject_msg(struct rdma_cm_id *id, > } > EXPORT_SYMBOL(rdma_reject_msg); > > +bool rdma_consumer_reject(struct rdma_cm_id *id, int reason) > +{ > + if (rdma_ib_or_roce(id->device, id->port_num)) > + return ib_consumer_reject(reason); > + > + if (rdma_protocol_iwarp(id->device, id->port_num)) > + return iw_consumer_reject(reason); > + > + /* FIXME should we WARN_ONCE() here? */ > + return false; Yes. Also I'd just inline the ib_consumer_reject and iw_consumer_reject helpers here. Aso wouldn't it be better named rdma_consumer_is_reject or similar given that we don't reject anything here, but check if the request has been rejected? -- 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] 46+ messages in thread
* [PATCH RFC v2 2/3] rdma_cm: add rdma_consumer_reject() helper function @ 2016-10-21 12:14 ` Christoph Hellwig 0 siblings, 0 replies; 46+ messages in thread From: Christoph Hellwig @ 2016-10-21 12:14 UTC (permalink / raw) On Thu, Oct 20, 2016@03:40:26PM -0700, Steve Wise wrote: > Return true if the peer consumer application rejected the > connection attempt. > > Signed-off-by: Steve Wise <swise at opengridcomputing.com> > --- > drivers/infiniband/core/cma.c | 13 +++++++++++++ > include/rdma/ib_cm.h | 9 +++++++++ > include/rdma/iw_cm.h | 9 +++++++++ > include/rdma/rdma_cm.h | 6 ++++++ > 4 files changed, 37 insertions(+) > > diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c > index 7cc7346..4ec16a3 100644 > --- a/drivers/infiniband/core/cma.c > +++ b/drivers/infiniband/core/cma.c > @@ -114,6 +114,19 @@ const char *__attribute_const__ rdma_reject_msg(struct rdma_cm_id *id, > } > EXPORT_SYMBOL(rdma_reject_msg); > > +bool rdma_consumer_reject(struct rdma_cm_id *id, int reason) > +{ > + if (rdma_ib_or_roce(id->device, id->port_num)) > + return ib_consumer_reject(reason); > + > + if (rdma_protocol_iwarp(id->device, id->port_num)) > + return iw_consumer_reject(reason); > + > + /* FIXME should we WARN_ONCE() here? */ > + return false; Yes. Also I'd just inline the ib_consumer_reject and iw_consumer_reject helpers here. Aso wouldn't it be better named rdma_consumer_is_reject or similar given that we don't reject anything here, but check if the request has been rejected? ^ permalink raw reply [flat|nested] 46+ messages in thread
[parent not found: <20161021121428.GB17028-jcswGhMUV9g@public.gmane.org>]
* RE: [PATCH RFC v2 2/3] rdma_cm: add rdma_consumer_reject() helper function 2016-10-21 12:14 ` Christoph Hellwig @ 2016-10-21 14:09 ` Steve Wise -1 siblings, 0 replies; 46+ messages in thread From: Steve Wise @ 2016-10-21 14:09 UTC (permalink / raw) To: 'Christoph Hellwig' Cc: dledford-H+wXaHxf7aLQT0dZR+AlfA, sean.hefty-ral2JQCrhuEAvxtiuMwx3w, linux-rdma-u79uwXL29TY76Z2rM5mHXA, bart.vanassche-XdAiOPVOjttBDgjK7y7TUQ, linux-nvme-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, sagig-NQWnxTmZq1alnMjI0IkVqw, axboe-b10kYP2dOMg > > On Thu, Oct 20, 2016 at 03:40:26PM -0700, Steve Wise wrote: > > Return true if the peer consumer application rejected the > > connection attempt. > > > > Signed-off-by: Steve Wise <swise-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org> > > --- > > drivers/infiniband/core/cma.c | 13 +++++++++++++ > > include/rdma/ib_cm.h | 9 +++++++++ > > include/rdma/iw_cm.h | 9 +++++++++ > > include/rdma/rdma_cm.h | 6 ++++++ > > 4 files changed, 37 insertions(+) > > > > diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c > > index 7cc7346..4ec16a3 100644 > > --- a/drivers/infiniband/core/cma.c > > +++ b/drivers/infiniband/core/cma.c > > @@ -114,6 +114,19 @@ const char *__attribute_const__ > rdma_reject_msg(struct rdma_cm_id *id, > > } > > EXPORT_SYMBOL(rdma_reject_msg); > > > > +bool rdma_consumer_reject(struct rdma_cm_id *id, int reason) > > +{ > > + if (rdma_ib_or_roce(id->device, id->port_num)) > > + return ib_consumer_reject(reason); > > + > > + if (rdma_protocol_iwarp(id->device, id->port_num)) > > + return iw_consumer_reject(reason); > > + > > + /* FIXME should we WARN_ONCE() here? */ > > + return false; > > Yes. Also I'd just inline the ib_consumer_reject and iw_consumer_reject > helpers here. > > Aso wouldn't it be better named rdma_consumer_is_reject or similar > given that we don't reject anything here, but check if the request > has been rejected? How about rdma_rejected_by_consumer()? -- 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] 46+ messages in thread
* [PATCH RFC v2 2/3] rdma_cm: add rdma_consumer_reject() helper function @ 2016-10-21 14:09 ` Steve Wise 0 siblings, 0 replies; 46+ messages in thread From: Steve Wise @ 2016-10-21 14:09 UTC (permalink / raw) > > On Thu, Oct 20, 2016@03:40:26PM -0700, Steve Wise wrote: > > Return true if the peer consumer application rejected the > > connection attempt. > > > > Signed-off-by: Steve Wise <swise at opengridcomputing.com> > > --- > > drivers/infiniband/core/cma.c | 13 +++++++++++++ > > include/rdma/ib_cm.h | 9 +++++++++ > > include/rdma/iw_cm.h | 9 +++++++++ > > include/rdma/rdma_cm.h | 6 ++++++ > > 4 files changed, 37 insertions(+) > > > > diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c > > index 7cc7346..4ec16a3 100644 > > --- a/drivers/infiniband/core/cma.c > > +++ b/drivers/infiniband/core/cma.c > > @@ -114,6 +114,19 @@ const char *__attribute_const__ > rdma_reject_msg(struct rdma_cm_id *id, > > } > > EXPORT_SYMBOL(rdma_reject_msg); > > > > +bool rdma_consumer_reject(struct rdma_cm_id *id, int reason) > > +{ > > + if (rdma_ib_or_roce(id->device, id->port_num)) > > + return ib_consumer_reject(reason); > > + > > + if (rdma_protocol_iwarp(id->device, id->port_num)) > > + return iw_consumer_reject(reason); > > + > > + /* FIXME should we WARN_ONCE() here? */ > > + return false; > > Yes. Also I'd just inline the ib_consumer_reject and iw_consumer_reject > helpers here. > > Aso wouldn't it be better named rdma_consumer_is_reject or similar > given that we don't reject anything here, but check if the request > has been rejected? How about rdma_rejected_by_consumer()? ^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [PATCH RFC v2 2/3] rdma_cm: add rdma_consumer_reject() helper function 2016-10-21 14:09 ` Steve Wise @ 2016-10-21 15:50 ` Parav Pandit -1 siblings, 0 replies; 46+ messages in thread From: Parav Pandit @ 2016-10-21 15:50 UTC (permalink / raw) To: Steve Wise Cc: Christoph Hellwig, Doug Ledford, Hefty, Sean, linux-rdma, Bart Van Assche, linux-nvme-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, sagig-NQWnxTmZq1alnMjI0IkVqw, axboe-b10kYP2dOMg On Fri, Oct 21, 2016 at 7:39 PM, Steve Wise <swise-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org> wrote: >> >> On Thu, Oct 20, 2016 at 03:40:26PM -0700, Steve Wise wrote: >> > Return true if the peer consumer application rejected the >> > connection attempt. >> > >> > Signed-off-by: Steve Wise <swise-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org> >> > --- >> > drivers/infiniband/core/cma.c | 13 +++++++++++++ >> > include/rdma/ib_cm.h | 9 +++++++++ >> > include/rdma/iw_cm.h | 9 +++++++++ >> > include/rdma/rdma_cm.h | 6 ++++++ >> > 4 files changed, 37 insertions(+) >> > >> > diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c >> > index 7cc7346..4ec16a3 100644 >> > --- a/drivers/infiniband/core/cma.c >> > +++ b/drivers/infiniband/core/cma.c >> > @@ -114,6 +114,19 @@ const char *__attribute_const__ >> rdma_reject_msg(struct rdma_cm_id *id, >> > } >> > EXPORT_SYMBOL(rdma_reject_msg); >> > >> > +bool rdma_consumer_reject(struct rdma_cm_id *id, int reason) >> > +{ >> > + if (rdma_ib_or_roce(id->device, id->port_num)) >> > + return ib_consumer_reject(reason); >> > + >> > + if (rdma_protocol_iwarp(id->device, id->port_num)) >> > + return iw_consumer_reject(reason); >> > + >> > + /* FIXME should we WARN_ONCE() here? */ >> > + return false; >> >> Yes. Also I'd just inline the ib_consumer_reject and iw_consumer_reject >> helpers here. >> >> Aso wouldn't it be better named rdma_consumer_is_reject or similar >> given that we don't reject anything here, but check if the request >> has been rejected? > > How about rdma_rejected_by_consumer()? > How about rdma_reject_by_ulp()? We have ulp directory holding iser, srp etc. -- 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] 46+ messages in thread
* [PATCH RFC v2 2/3] rdma_cm: add rdma_consumer_reject() helper function @ 2016-10-21 15:50 ` Parav Pandit 0 siblings, 0 replies; 46+ messages in thread From: Parav Pandit @ 2016-10-21 15:50 UTC (permalink / raw) On Fri, Oct 21, 2016@7:39 PM, Steve Wise <swise@opengridcomputing.com> wrote: >> >> On Thu, Oct 20, 2016@03:40:26PM -0700, Steve Wise wrote: >> > Return true if the peer consumer application rejected the >> > connection attempt. >> > >> > Signed-off-by: Steve Wise <swise at opengridcomputing.com> >> > --- >> > drivers/infiniband/core/cma.c | 13 +++++++++++++ >> > include/rdma/ib_cm.h | 9 +++++++++ >> > include/rdma/iw_cm.h | 9 +++++++++ >> > include/rdma/rdma_cm.h | 6 ++++++ >> > 4 files changed, 37 insertions(+) >> > >> > diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c >> > index 7cc7346..4ec16a3 100644 >> > --- a/drivers/infiniband/core/cma.c >> > +++ b/drivers/infiniband/core/cma.c >> > @@ -114,6 +114,19 @@ const char *__attribute_const__ >> rdma_reject_msg(struct rdma_cm_id *id, >> > } >> > EXPORT_SYMBOL(rdma_reject_msg); >> > >> > +bool rdma_consumer_reject(struct rdma_cm_id *id, int reason) >> > +{ >> > + if (rdma_ib_or_roce(id->device, id->port_num)) >> > + return ib_consumer_reject(reason); >> > + >> > + if (rdma_protocol_iwarp(id->device, id->port_num)) >> > + return iw_consumer_reject(reason); >> > + >> > + /* FIXME should we WARN_ONCE() here? */ >> > + return false; >> >> Yes. Also I'd just inline the ib_consumer_reject and iw_consumer_reject >> helpers here. >> >> Aso wouldn't it be better named rdma_consumer_is_reject or similar >> given that we don't reject anything here, but check if the request >> has been rejected? > > How about rdma_rejected_by_consumer()? > How about rdma_reject_by_ulp()? We have ulp directory holding iser, srp etc. ^ permalink raw reply [flat|nested] 46+ messages in thread
[parent not found: <CAG53R5Xyp+n7KYj6zZF6PFuXke3XtqaMgaGTRmgd_uGXTFNDtw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>]
* Re: [PATCH RFC v2 2/3] rdma_cm: add rdma_consumer_reject() helper function 2016-10-21 15:50 ` Parav Pandit @ 2016-10-21 21:45 ` Sagi Grimberg -1 siblings, 0 replies; 46+ messages in thread From: Sagi Grimberg @ 2016-10-21 21:45 UTC (permalink / raw) To: Parav Pandit, Steve Wise Cc: Christoph Hellwig, Doug Ledford, Hefty, Sean, linux-rdma, Bart Van Assche, linux-nvme-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, sagig-NQWnxTmZq1alnMjI0IkVqw, axboe-b10kYP2dOMg >>> Yes. Also I'd just inline the ib_consumer_reject and iw_consumer_reject >>> helpers here. >>> >>> Aso wouldn't it be better named rdma_consumer_is_reject or similar >>> given that we don't reject anything here, but check if the request >>> has been rejected? >> >> How about rdma_rejected_by_consumer()? >> > How about rdma_reject_by_ulp()? > We have ulp directory holding iser, srp etc. I like consumer better. -- 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] 46+ messages in thread
* [PATCH RFC v2 2/3] rdma_cm: add rdma_consumer_reject() helper function @ 2016-10-21 21:45 ` Sagi Grimberg 0 siblings, 0 replies; 46+ messages in thread From: Sagi Grimberg @ 2016-10-21 21:45 UTC (permalink / raw) >>> Yes. Also I'd just inline the ib_consumer_reject and iw_consumer_reject >>> helpers here. >>> >>> Aso wouldn't it be better named rdma_consumer_is_reject or similar >>> given that we don't reject anything here, but check if the request >>> has been rejected? >> >> How about rdma_rejected_by_consumer()? >> > How about rdma_reject_by_ulp()? > We have ulp directory holding iser, srp etc. I like consumer better. ^ permalink raw reply [flat|nested] 46+ messages in thread
* RE: [PATCH RFC v2 2/3] rdma_cm: add rdma_consumer_reject() helper function 2016-10-21 12:14 ` Christoph Hellwig @ 2016-10-22 15:57 ` Steve Wise -1 siblings, 0 replies; 46+ messages in thread From: Steve Wise @ 2016-10-22 15:57 UTC (permalink / raw) To: 'Christoph Hellwig' Cc: dledford-H+wXaHxf7aLQT0dZR+AlfA, sean.hefty-ral2JQCrhuEAvxtiuMwx3w, linux-rdma-u79uwXL29TY76Z2rM5mHXA, bart.vanassche-XdAiOPVOjttBDgjK7y7TUQ, linux-nvme-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, sagig-NQWnxTmZq1alnMjI0IkVqw, axboe-b10kYP2dOMg > > --- a/drivers/infiniband/core/cma.c > > +++ b/drivers/infiniband/core/cma.c > > @@ -114,6 +114,19 @@ const char *__attribute_const__ > rdma_reject_msg(struct rdma_cm_id *id, > > } > > EXPORT_SYMBOL(rdma_reject_msg); > > > > +bool rdma_consumer_reject(struct rdma_cm_id *id, int reason) > > +{ > > + if (rdma_ib_or_roce(id->device, id->port_num)) > > + return ib_consumer_reject(reason); > > + > > + if (rdma_protocol_iwarp(id->device, id->port_num)) > > + return iw_consumer_reject(reason); > > + > > + /* FIXME should we WARN_ONCE() here? */ > > + return false; > > Yes. Also I'd just inline the ib_consumer_reject and iw_consumer_reject > helpers here. > Why is that preferred vs the static inline functions in ib_cm.h and iw_cm.h? -- 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] 46+ messages in thread
* [PATCH RFC v2 2/3] rdma_cm: add rdma_consumer_reject() helper function @ 2016-10-22 15:57 ` Steve Wise 0 siblings, 0 replies; 46+ messages in thread From: Steve Wise @ 2016-10-22 15:57 UTC (permalink / raw) > > --- a/drivers/infiniband/core/cma.c > > +++ b/drivers/infiniband/core/cma.c > > @@ -114,6 +114,19 @@ const char *__attribute_const__ > rdma_reject_msg(struct rdma_cm_id *id, > > } > > EXPORT_SYMBOL(rdma_reject_msg); > > > > +bool rdma_consumer_reject(struct rdma_cm_id *id, int reason) > > +{ > > + if (rdma_ib_or_roce(id->device, id->port_num)) > > + return ib_consumer_reject(reason); > > + > > + if (rdma_protocol_iwarp(id->device, id->port_num)) > > + return iw_consumer_reject(reason); > > + > > + /* FIXME should we WARN_ONCE() here? */ > > + return false; > > Yes. Also I'd just inline the ib_consumer_reject and iw_consumer_reject > helpers here. > Why is that preferred vs the static inline functions in ib_cm.h and iw_cm.h? ^ permalink raw reply [flat|nested] 46+ messages in thread
* [PATCH RFC v2 3/3] nvme-rdma: use rdma_reject_msg() to log connection rejects 2016-10-20 22:40 ` Steve Wise @ 2016-10-20 22:40 ` Steve Wise -1 siblings, 0 replies; 46+ messages in thread From: Steve Wise @ 2016-10-20 22:40 UTC (permalink / raw) To: dledford-H+wXaHxf7aLQT0dZR+AlfA, sean.hefty-ral2JQCrhuEAvxtiuMwx3w Cc: linux-rdma-u79uwXL29TY76Z2rM5mHXA, bart.vanassche-XdAiOPVOjttBDgjK7y7TUQ, linux-nvme-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, sagig-NQWnxTmZq1alnMjI0IkVqw, hch-jcswGhMUV9g, axboe-b10kYP2dOMg Signed-off-by: Steve Wise <swise-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org> --- drivers/nvme/host/rdma.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/drivers/nvme/host/rdma.c b/drivers/nvme/host/rdma.c index 601aecf..6319c26 100644 --- a/drivers/nvme/host/rdma.c +++ b/drivers/nvme/host/rdma.c @@ -1237,18 +1237,22 @@ out_destroy_queue_ib: static int nvme_rdma_conn_rejected(struct nvme_rdma_queue *queue, struct rdma_cm_event *ev) { - if (ev->param.conn.private_data_len) { + struct rdma_cm_id *cm_id = queue->cm_id; + int rdma_status = ev->status; + short nvme_status = -1; + + if (rdma_consumer_reject(cm_id, rdma_status) && + ev->param.conn.private_data_len) { struct nvme_rdma_cm_rej *rej = (struct nvme_rdma_cm_rej *)ev->param.conn.private_data; - dev_err(queue->ctrl->ctrl.device, - "Connect rejected, status %d.", le16_to_cpu(rej->sts)); - /* XXX: Think of something clever to do here... */ - } else { - dev_err(queue->ctrl->ctrl.device, - "Connect rejected, no private data.\n"); + nvme_status = le16_to_cpu(rej->sts); } + dev_err(queue->ctrl->ctrl.device, "Connect rejected: status %d (%s) " + "nvme status %d.\n", rdma_status, + rdma_reject_msg(cm_id, rdma_status), nvme_status); + return -ECONNRESET; } -- 2.7.0 -- 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] 46+ messages in thread
* [PATCH RFC v2 3/3] nvme-rdma: use rdma_reject_msg() to log connection rejects @ 2016-10-20 22:40 ` Steve Wise 0 siblings, 0 replies; 46+ messages in thread From: Steve Wise @ 2016-10-20 22:40 UTC (permalink / raw) Signed-off-by: Steve Wise <swise at opengridcomputing.com> --- drivers/nvme/host/rdma.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/drivers/nvme/host/rdma.c b/drivers/nvme/host/rdma.c index 601aecf..6319c26 100644 --- a/drivers/nvme/host/rdma.c +++ b/drivers/nvme/host/rdma.c @@ -1237,18 +1237,22 @@ out_destroy_queue_ib: static int nvme_rdma_conn_rejected(struct nvme_rdma_queue *queue, struct rdma_cm_event *ev) { - if (ev->param.conn.private_data_len) { + struct rdma_cm_id *cm_id = queue->cm_id; + int rdma_status = ev->status; + short nvme_status = -1; + + if (rdma_consumer_reject(cm_id, rdma_status) && + ev->param.conn.private_data_len) { struct nvme_rdma_cm_rej *rej = (struct nvme_rdma_cm_rej *)ev->param.conn.private_data; - dev_err(queue->ctrl->ctrl.device, - "Connect rejected, status %d.", le16_to_cpu(rej->sts)); - /* XXX: Think of something clever to do here... */ - } else { - dev_err(queue->ctrl->ctrl.device, - "Connect rejected, no private data.\n"); + nvme_status = le16_to_cpu(rej->sts); } + dev_err(queue->ctrl->ctrl.device, "Connect rejected: status %d (%s) " + "nvme status %d.\n", rdma_status, + rdma_reject_msg(cm_id, rdma_status), nvme_status); + return -ECONNRESET; } -- 2.7.0 ^ permalink raw reply related [flat|nested] 46+ messages in thread
[parent not found: <60243a2ce17e08cdc93600b9998698dbd7f83306.1477003235.git.swise-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org>]
* Re: [PATCH RFC v2 3/3] nvme-rdma: use rdma_reject_msg() to log connection rejects 2016-10-20 22:40 ` Steve Wise @ 2016-10-21 12:23 ` Christoph Hellwig -1 siblings, 0 replies; 46+ messages in thread From: Christoph Hellwig @ 2016-10-21 12:23 UTC (permalink / raw) To: Steve Wise Cc: dledford-H+wXaHxf7aLQT0dZR+AlfA, sean.hefty-ral2JQCrhuEAvxtiuMwx3w, linux-rdma-u79uwXL29TY76Z2rM5mHXA, bart.vanassche-XdAiOPVOjttBDgjK7y7TUQ, linux-nvme-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, sagig-NQWnxTmZq1alnMjI0IkVqw, hch-jcswGhMUV9g, axboe-b10kYP2dOMg On Thu, Oct 20, 2016 at 03:40:29PM -0700, Steve Wise wrote: > @@ -1237,18 +1237,22 @@ out_destroy_queue_ib: > static int nvme_rdma_conn_rejected(struct nvme_rdma_queue *queue, > struct rdma_cm_event *ev) > { > + struct rdma_cm_id *cm_id = queue->cm_id; > + int rdma_status = ev->status; > + short nvme_status = -1; > + > + if (rdma_consumer_reject(cm_id, rdma_status) && > + ev->param.conn.private_data_len) { > struct nvme_rdma_cm_rej *rej = > (struct nvme_rdma_cm_rej *)ev->param.conn.private_data; Given the nasty casting issues in the current RDMA/CM API maybe we should actually expand the scope of the rdma_consumer_reject helper to include the above check, e.g. check that there is a private data len and then return a pointer to the private data? Something like static int nvme_rdma_conn_rejected(struct nvme_rdma_queue *queue, struct rdma_cm_event *ev) { struct rdma_cm_id *cm_id = queue->cm_id; struct nvme_rdma_cm_rej *rej short nvme_status = -1; rej = rdma_cm_reject_message(ev); if (rej) nvme_status = le16_to_cpu(rej->sts); > > + dev_err(queue->ctrl->ctrl.device, "Connect rejected: status %d (%s) " > + "nvme status %d.\n", rdma_status, > + rdma_reject_msg(cm_id, rdma_status), nvme_status); And while we're pretty printing the rest it would be nice to pretty print the NVMe status here as well. -- 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] 46+ messages in thread
* [PATCH RFC v2 3/3] nvme-rdma: use rdma_reject_msg() to log connection rejects @ 2016-10-21 12:23 ` Christoph Hellwig 0 siblings, 0 replies; 46+ messages in thread From: Christoph Hellwig @ 2016-10-21 12:23 UTC (permalink / raw) On Thu, Oct 20, 2016@03:40:29PM -0700, Steve Wise wrote: > @@ -1237,18 +1237,22 @@ out_destroy_queue_ib: > static int nvme_rdma_conn_rejected(struct nvme_rdma_queue *queue, > struct rdma_cm_event *ev) > { > + struct rdma_cm_id *cm_id = queue->cm_id; > + int rdma_status = ev->status; > + short nvme_status = -1; > + > + if (rdma_consumer_reject(cm_id, rdma_status) && > + ev->param.conn.private_data_len) { > struct nvme_rdma_cm_rej *rej = > (struct nvme_rdma_cm_rej *)ev->param.conn.private_data; Given the nasty casting issues in the current RDMA/CM API maybe we should actually expand the scope of the rdma_consumer_reject helper to include the above check, e.g. check that there is a private data len and then return a pointer to the private data? Something like static int nvme_rdma_conn_rejected(struct nvme_rdma_queue *queue, struct rdma_cm_event *ev) { struct rdma_cm_id *cm_id = queue->cm_id; struct nvme_rdma_cm_rej *rej short nvme_status = -1; rej = rdma_cm_reject_message(ev); if (rej) nvme_status = le16_to_cpu(rej->sts); > > + dev_err(queue->ctrl->ctrl.device, "Connect rejected: status %d (%s) " > + "nvme status %d.\n", rdma_status, > + rdma_reject_msg(cm_id, rdma_status), nvme_status); And while we're pretty printing the rest it would be nice to pretty print the NVMe status here as well. ^ permalink raw reply [flat|nested] 46+ messages in thread
[parent not found: <20161021122318.GB17325-jcswGhMUV9g@public.gmane.org>]
* Re: [PATCH RFC v2 3/3] nvme-rdma: use rdma_reject_msg() to log connection rejects 2016-10-21 12:23 ` Christoph Hellwig @ 2016-10-21 21:48 ` Sagi Grimberg -1 siblings, 0 replies; 46+ messages in thread From: Sagi Grimberg @ 2016-10-21 21:48 UTC (permalink / raw) To: Christoph Hellwig, Steve Wise Cc: dledford-H+wXaHxf7aLQT0dZR+AlfA, sean.hefty-ral2JQCrhuEAvxtiuMwx3w, linux-rdma-u79uwXL29TY76Z2rM5mHXA, bart.vanassche-XdAiOPVOjttBDgjK7y7TUQ, linux-nvme-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, sagig-NQWnxTmZq1alnMjI0IkVqw, axboe-b10kYP2dOMg > Given the nasty casting issues in the current RDMA/CM API maybe we should > actually expand the scope of the rdma_consumer_reject helper to include > the above check, e.g. check that there is a private data len and then > return a pointer to the private data? > > Something like > > static int nvme_rdma_conn_rejected(struct nvme_rdma_queue *queue, > struct rdma_cm_event *ev) > { > struct rdma_cm_id *cm_id = queue->cm_id; > struct nvme_rdma_cm_rej *rej > short nvme_status = -1; > > rej = rdma_cm_reject_message(ev); > if (rej) > nvme_status = le16_to_cpu(rej->sts); > Looks nicer... >> >> + dev_err(queue->ctrl->ctrl.device, "Connect rejected: status %d (%s) " >> + "nvme status %d.\n", rdma_status, >> + rdma_reject_msg(cm_id, rdma_status), nvme_status); > > And while we're pretty printing the rest it would be nice to pretty > print the NVMe status here as well. Would be nice... -- 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] 46+ messages in thread
* [PATCH RFC v2 3/3] nvme-rdma: use rdma_reject_msg() to log connection rejects @ 2016-10-21 21:48 ` Sagi Grimberg 0 siblings, 0 replies; 46+ messages in thread From: Sagi Grimberg @ 2016-10-21 21:48 UTC (permalink / raw) > Given the nasty casting issues in the current RDMA/CM API maybe we should > actually expand the scope of the rdma_consumer_reject helper to include > the above check, e.g. check that there is a private data len and then > return a pointer to the private data? > > Something like > > static int nvme_rdma_conn_rejected(struct nvme_rdma_queue *queue, > struct rdma_cm_event *ev) > { > struct rdma_cm_id *cm_id = queue->cm_id; > struct nvme_rdma_cm_rej *rej > short nvme_status = -1; > > rej = rdma_cm_reject_message(ev); > if (rej) > nvme_status = le16_to_cpu(rej->sts); > Looks nicer... >> >> + dev_err(queue->ctrl->ctrl.device, "Connect rejected: status %d (%s) " >> + "nvme status %d.\n", rdma_status, >> + rdma_reject_msg(cm_id, rdma_status), nvme_status); > > And while we're pretty printing the rest it would be nice to pretty > print the NVMe status here as well. Would be nice... ^ permalink raw reply [flat|nested] 46+ messages in thread
* RE: [PATCH RFC v2 3/3] nvme-rdma: use rdma_reject_msg() to log connection rejects 2016-10-21 12:23 ` Christoph Hellwig @ 2016-10-22 16:12 ` Steve Wise -1 siblings, 0 replies; 46+ messages in thread From: Steve Wise @ 2016-10-22 16:12 UTC (permalink / raw) To: 'Christoph Hellwig' Cc: dledford-H+wXaHxf7aLQT0dZR+AlfA, sean.hefty-ral2JQCrhuEAvxtiuMwx3w, linux-rdma-u79uwXL29TY76Z2rM5mHXA, bart.vanassche-XdAiOPVOjttBDgjK7y7TUQ, linux-nvme-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, sagig-NQWnxTmZq1alnMjI0IkVqw, axboe-b10kYP2dOMg > > On Thu, Oct 20, 2016 at 03:40:29PM -0700, Steve Wise wrote: > > @@ -1237,18 +1237,22 @@ out_destroy_queue_ib: > > static int nvme_rdma_conn_rejected(struct nvme_rdma_queue *queue, > > struct rdma_cm_event *ev) > > { > > + struct rdma_cm_id *cm_id = queue->cm_id; > > + int rdma_status = ev->status; > > + short nvme_status = -1; > > + > > + if (rdma_consumer_reject(cm_id, rdma_status) && > > + ev->param.conn.private_data_len) { > > struct nvme_rdma_cm_rej *rej = > > (struct nvme_rdma_cm_rej *)ev- > >param.conn.private_data; > > Given the nasty casting issues in the current RDMA/CM API maybe we should > actually expand the scope of the rdma_consumer_reject helper to include > the above check, e.g. check that there is a private data len and then > return a pointer to the private data? An application could reject and not provide private data, so I think we need 3 helpers (so far): rdma_reject_msg() - protocol reject reason string rdma_is_consumer_reject() - true if the peer consumer/ulp rejected rdma_consumer_reject_data() - ptr to any private data Sound good? -- 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] 46+ messages in thread
* [PATCH RFC v2 3/3] nvme-rdma: use rdma_reject_msg() to log connection rejects @ 2016-10-22 16:12 ` Steve Wise 0 siblings, 0 replies; 46+ messages in thread From: Steve Wise @ 2016-10-22 16:12 UTC (permalink / raw) > > On Thu, Oct 20, 2016@03:40:29PM -0700, Steve Wise wrote: > > @@ -1237,18 +1237,22 @@ out_destroy_queue_ib: > > static int nvme_rdma_conn_rejected(struct nvme_rdma_queue *queue, > > struct rdma_cm_event *ev) > > { > > + struct rdma_cm_id *cm_id = queue->cm_id; > > + int rdma_status = ev->status; > > + short nvme_status = -1; > > + > > + if (rdma_consumer_reject(cm_id, rdma_status) && > > + ev->param.conn.private_data_len) { > > struct nvme_rdma_cm_rej *rej = > > (struct nvme_rdma_cm_rej *)ev- > >param.conn.private_data; > > Given the nasty casting issues in the current RDMA/CM API maybe we should > actually expand the scope of the rdma_consumer_reject helper to include > the above check, e.g. check that there is a private data len and then > return a pointer to the private data? An application could reject and not provide private data, so I think we need 3 helpers (so far): rdma_reject_msg() - protocol reject reason string rdma_is_consumer_reject() - true if the peer consumer/ulp rejected rdma_consumer_reject_data() - ptr to any private data Sound good? ^ permalink raw reply [flat|nested] 46+ messages in thread
[parent not found: <005701d22c7f$0c883ed0$2598bc70$@opengridcomputing.com>]
* RE: [PATCH RFC v2 3/3] nvme-rdma: use rdma_reject_msg() to log connection rejects [not found] ` <005701d22c7f$0c883ed0$2598bc70$@opengridcomputing.com> @ 2016-10-24 14:57 ` Steve Wise 0 siblings, 0 replies; 46+ messages in thread From: Steve Wise @ 2016-10-24 14:57 UTC (permalink / raw) To: 'Christoph Hellwig' Cc: dledford-H+wXaHxf7aLQT0dZR+AlfA, sean.hefty-ral2JQCrhuEAvxtiuMwx3w, linux-rdma-u79uwXL29TY76Z2rM5mHXA, bart.vanassche-XdAiOPVOjttBDgjK7y7TUQ, linux-nvme-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, sagig-NQWnxTmZq1alnMjI0IkVqw, axboe-b10kYP2dOMg > > Given the nasty casting issues in the current RDMA/CM API maybe we > should > > actually expand the scope of the rdma_consumer_reject helper to include > > the above check, e.g. check that there is a private data len and then > > return a pointer to the private data? > > An application could reject and not provide private data, so I think we > need 3 helpers (so far): > > rdma_reject_msg() - protocol reject reason string > rdma_is_consumer_reject() - true if the peer consumer/ulp rejected > rdma_consumer_reject_data() - ptr to any private data > > Sound good? Or these 3 could be rolled into one uber function that returns true if the consumer rejected, and sets 2 pointers passed in: one to the protocol reject string, and one to the private data, if any. If the something like like this: bool rdma_reject_info(struct rdma_cm_id *id, int reason, char **protocol_msg, char **consumer_data) Kinda ugly, but only one call is needed vs 3 calls to get this info... -- 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] 46+ messages in thread
* [PATCH RFC v2 3/3] nvme-rdma: use rdma_reject_msg() to log connection rejects @ 2016-10-24 14:57 ` Steve Wise 0 siblings, 0 replies; 46+ messages in thread From: Steve Wise @ 2016-10-24 14:57 UTC (permalink / raw) > > Given the nasty casting issues in the current RDMA/CM API maybe we > should > > actually expand the scope of the rdma_consumer_reject helper to include > > the above check, e.g. check that there is a private data len and then > > return a pointer to the private data? > > An application could reject and not provide private data, so I think we > need 3 helpers (so far): > > rdma_reject_msg() - protocol reject reason string > rdma_is_consumer_reject() - true if the peer consumer/ulp rejected > rdma_consumer_reject_data() - ptr to any private data > > Sound good? Or these 3 could be rolled into one uber function that returns true if the consumer rejected, and sets 2 pointers passed in: one to the protocol reject string, and one to the private data, if any. If the something like like this: bool rdma_reject_info(struct rdma_cm_id *id, int reason, char **protocol_msg, char **consumer_data) Kinda ugly, but only one call is needed vs 3 calls to get this info... ^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [PATCH RFC v2 3/3] nvme-rdma: use rdma_reject_msg() to log connection rejects 2016-10-24 14:57 ` Steve Wise @ 2016-10-24 15:09 ` 'Christoph Hellwig' -1 siblings, 0 replies; 46+ messages in thread From: 'Christoph Hellwig' @ 2016-10-24 15:09 UTC (permalink / raw) To: Steve Wise Cc: 'Christoph Hellwig', dledford-H+wXaHxf7aLQT0dZR+AlfA, sean.hefty-ral2JQCrhuEAvxtiuMwx3w, linux-rdma-u79uwXL29TY76Z2rM5mHXA, bart.vanassche-XdAiOPVOjttBDgjK7y7TUQ, linux-nvme-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, sagig-NQWnxTmZq1alnMjI0IkVqw, axboe-b10kYP2dOMg On Mon, Oct 24, 2016 at 09:57:50AM -0500, Steve Wise wrote: > > rdma_reject_msg() - protocol reject reason string This one sounds useful on it's own. > > rdma_is_consumer_reject() - true if the peer consumer/ulp rejected > > rdma_consumer_reject_data() - ptr to any private data I see why these are conceptually different, but why do we care if something is a consumer reject except for printing what reject we got (solved by rdma_reject_msg) or for getting consumer reject data if there is any (solved by rdma_consumer_reject_data). So all three helpers are fine with me, but rdma_is_consumer_reject would be more of a low-level helper that drivers wouldn't use directly, only through rdma_consumer_reject_data. -- 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] 46+ messages in thread
* [PATCH RFC v2 3/3] nvme-rdma: use rdma_reject_msg() to log connection rejects @ 2016-10-24 15:09 ` 'Christoph Hellwig' 0 siblings, 0 replies; 46+ messages in thread From: 'Christoph Hellwig' @ 2016-10-24 15:09 UTC (permalink / raw) On Mon, Oct 24, 2016@09:57:50AM -0500, Steve Wise wrote: > > rdma_reject_msg() - protocol reject reason string This one sounds useful on it's own. > > rdma_is_consumer_reject() - true if the peer consumer/ulp rejected > > rdma_consumer_reject_data() - ptr to any private data I see why these are conceptually different, but why do we care if something is a consumer reject except for printing what reject we got (solved by rdma_reject_msg) or for getting consumer reject data if there is any (solved by rdma_consumer_reject_data). So all three helpers are fine with me, but rdma_is_consumer_reject would be more of a low-level helper that drivers wouldn't use directly, only through rdma_consumer_reject_data. ^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [PATCH RFC v2 0/3] connect reject event helpers 2016-10-20 22:40 ` Steve Wise @ 2016-10-21 21:53 ` Sagi Grimberg -1 siblings, 0 replies; 46+ messages in thread From: Sagi Grimberg @ 2016-10-21 21:53 UTC (permalink / raw) To: Steve Wise, dledford-H+wXaHxf7aLQT0dZR+AlfA, sean.hefty-ral2JQCrhuEAvxtiuMwx3w Cc: sagig-NQWnxTmZq1alnMjI0IkVqw, linux-rdma-u79uwXL29TY76Z2rM5mHXA, linux-nvme-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, axboe-b10kYP2dOMg, bart.vanassche-XdAiOPVOjttBDgjK7y7TUQ, hch-jcswGhMUV9g > While reviewing: > > http://lists.infradead.org/pipermail/linux-nvme/2016-October/006681.html > > I decided to propose transport-agnostic helper functions to better > handle connection reject event information. I've included a nvme_rdma > patch to utilize the new helpers. > > Thoughts? Hey Steve, This looks nice and useful. Would be great if you can also help other ULPs that use this (e.g. srp/srpt) -- 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] 46+ messages in thread
* [PATCH RFC v2 0/3] connect reject event helpers @ 2016-10-21 21:53 ` Sagi Grimberg 0 siblings, 0 replies; 46+ messages in thread From: Sagi Grimberg @ 2016-10-21 21:53 UTC (permalink / raw) > While reviewing: > > http://lists.infradead.org/pipermail/linux-nvme/2016-October/006681.html > > I decided to propose transport-agnostic helper functions to better > handle connection reject event information. I've included a nvme_rdma > patch to utilize the new helpers. > > Thoughts? Hey Steve, This looks nice and useful. Would be great if you can also help other ULPs that use this (e.g. srp/srpt) ^ permalink raw reply [flat|nested] 46+ messages in thread
[parent not found: <a46f48f3-01b3-fd9b-b642-c20555759107-NQWnxTmZq1alnMjI0IkVqw@public.gmane.org>]
* RE: [PATCH RFC v2 0/3] connect reject event helpers 2016-10-21 21:53 ` Sagi Grimberg @ 2016-10-21 21:58 ` Steve Wise -1 siblings, 0 replies; 46+ messages in thread From: Steve Wise @ 2016-10-21 21:58 UTC (permalink / raw) To: 'Sagi Grimberg', dledford-H+wXaHxf7aLQT0dZR+AlfA, sean.hefty-ral2JQCrhuEAvxtiuMwx3w Cc: sagig-NQWnxTmZq1alnMjI0IkVqw, linux-rdma-u79uwXL29TY76Z2rM5mHXA, linux-nvme-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, axboe-b10kYP2dOMg, bart.vanassche-XdAiOPVOjttBDgjK7y7TUQ, hch-jcswGhMUV9g > > > > While reviewing: > > > > http://lists.infradead.org/pipermail/linux-nvme/2016-October/006681.html > > > > I decided to propose transport-agnostic helper functions to better > > handle connection reject event information. I've included a nvme_rdma > > patch to utilize the new helpers. > > > > Thoughts? > > Hey Steve, > > This looks nice and useful. Would be great if you can > also help other ULPs that use this (e.g. srp/srpt) can-do! -- 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] 46+ messages in thread
* [PATCH RFC v2 0/3] connect reject event helpers @ 2016-10-21 21:58 ` Steve Wise 0 siblings, 0 replies; 46+ messages in thread From: Steve Wise @ 2016-10-21 21:58 UTC (permalink / raw) > > > > While reviewing: > > > > http://lists.infradead.org/pipermail/linux-nvme/2016-October/006681.html > > > > I decided to propose transport-agnostic helper functions to better > > handle connection reject event information. I've included a nvme_rdma > > patch to utilize the new helpers. > > > > Thoughts? > > Hey Steve, > > This looks nice and useful. Would be great if you can > also help other ULPs that use this (e.g. srp/srpt) can-do! ^ permalink raw reply [flat|nested] 46+ messages in thread
[parent not found: <001701d22be6$4854b8b0$d8fe2a10$@opengridcomputing.com>]
* RE: [PATCH RFC v2 0/3] connect reject event helpers [not found] ` <001701d22be6$4854b8b0$d8fe2a10$@opengridcomputing.com> @ 2016-10-24 17:44 ` Steve Wise 0 siblings, 0 replies; 46+ messages in thread From: Steve Wise @ 2016-10-24 17:44 UTC (permalink / raw) To: 'Sagi Grimberg', dledford-H+wXaHxf7aLQT0dZR+AlfA, sean.hefty-ral2JQCrhuEAvxtiuMwx3w Cc: linux-rdma-u79uwXL29TY76Z2rM5mHXA, linux-nvme-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, axboe-b10kYP2dOMg, bart.vanassche-XdAiOPVOjttBDgjK7y7TUQ, hch-jcswGhMUV9g > > > > > While reviewing: > > > > > > > http://lists.infradead.org/pipermail/linux-nvme/2016-October/006681.html > > > > > > I decided to propose transport-agnostic helper functions to better > > > handle connection reject event information. I've included a nvme_rdma > > > patch to utilize the new helpers. > > > > > > Thoughts? > > > > Hey Steve, > > > > This looks nice and useful. Would be great if you can > > also help other ULPs that use this (e.g. srp/srpt) > > can-do! Actually, srp uses the ib_cm directly. Further it already has logic to do various actions based on the IB_CM Reject status. It really doesn't need these helpers. The only one would be ibcm_reject_msg(). Looking at the iser initiator, it logs nothing on a reject event. And nfsrdma doesn't log any details about the reject reason also. I could add a dev_warn() or something for iser and nfsrdma. Steve. -- 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] 46+ messages in thread
* [PATCH RFC v2 0/3] connect reject event helpers @ 2016-10-24 17:44 ` Steve Wise 0 siblings, 0 replies; 46+ messages in thread From: Steve Wise @ 2016-10-24 17:44 UTC (permalink / raw) > > > > > While reviewing: > > > > > > > http://lists.infradead.org/pipermail/linux-nvme/2016-October/006681.html > > > > > > I decided to propose transport-agnostic helper functions to better > > > handle connection reject event information. I've included a nvme_rdma > > > patch to utilize the new helpers. > > > > > > Thoughts? > > > > Hey Steve, > > > > This looks nice and useful. Would be great if you can > > also help other ULPs that use this (e.g. srp/srpt) > > can-do! Actually, srp uses the ib_cm directly. Further it already has logic to do various actions based on the IB_CM Reject status. It really doesn't need these helpers. The only one would be ibcm_reject_msg(). Looking at the iser initiator, it logs nothing on a reject event. And nfsrdma doesn't log any details about the reject reason also. I could add a dev_warn() or something for iser and nfsrdma. Steve. ^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [PATCH RFC v2 0/3] connect reject event helpers 2016-10-24 17:44 ` Steve Wise @ 2016-10-24 17:52 ` Chuck Lever -1 siblings, 0 replies; 46+ messages in thread From: Chuck Lever @ 2016-10-24 17:52 UTC (permalink / raw) To: Steve Wise Cc: Sagi Grimberg, Doug Ledford, Sean Hefty, List Linux RDMA Mailing, linux-nvme-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, axboe-b10kYP2dOMg, bart.vanassche-XdAiOPVOjttBDgjK7y7TUQ, hch-jcswGhMUV9g > On Oct 24, 2016, at 1:44 PM, Steve Wise <swise-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org> wrote: > >>> >>>> While reviewing: >>>> >>>> >> http://lists.infradead.org/pipermail/linux-nvme/2016-October/006681.html >>>> >>>> I decided to propose transport-agnostic helper functions to better >>>> handle connection reject event information. I've included a nvme_rdma >>>> patch to utilize the new helpers. >>>> >>>> Thoughts? >>> >>> Hey Steve, >>> >>> This looks nice and useful. Would be great if you can >>> also help other ULPs that use this (e.g. srp/srpt) >> >> can-do! > > Actually, srp uses the ib_cm directly. Further it already has logic to do > various actions based on the IB_CM Reject status. It really doesn't need these > helpers. The only one would be ibcm_reject_msg(). Looking at the iser > initiator, it logs nothing on a reject event. And nfsrdma doesn't log any > details about the reject reason also. > > I could add a dev_warn() or something for iser and nfsrdma. I'm fixing an issue in this area. I'd like to take care of the xprtrdma connection upcall myself once you've got these new APIs introduced. -- Chuck Lever -- 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] 46+ messages in thread
* [PATCH RFC v2 0/3] connect reject event helpers @ 2016-10-24 17:52 ` Chuck Lever 0 siblings, 0 replies; 46+ messages in thread From: Chuck Lever @ 2016-10-24 17:52 UTC (permalink / raw) > On Oct 24, 2016,@1:44 PM, Steve Wise <swise@opengridcomputing.com> wrote: > >>> >>>> While reviewing: >>>> >>>> >> http://lists.infradead.org/pipermail/linux-nvme/2016-October/006681.html >>>> >>>> I decided to propose transport-agnostic helper functions to better >>>> handle connection reject event information. I've included a nvme_rdma >>>> patch to utilize the new helpers. >>>> >>>> Thoughts? >>> >>> Hey Steve, >>> >>> This looks nice and useful. Would be great if you can >>> also help other ULPs that use this (e.g. srp/srpt) >> >> can-do! > > Actually, srp uses the ib_cm directly. Further it already has logic to do > various actions based on the IB_CM Reject status. It really doesn't need these > helpers. The only one would be ibcm_reject_msg(). Looking at the iser > initiator, it logs nothing on a reject event. And nfsrdma doesn't log any > details about the reject reason also. > > I could add a dev_warn() or something for iser and nfsrdma. I'm fixing an issue in this area. I'd like to take care of the xprtrdma connection upcall myself once you've got these new APIs introduced. -- Chuck Lever ^ permalink raw reply [flat|nested] 46+ messages in thread
[parent not found: <2F5E122E-0B50-4264-8E44-3D484B0282F0-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>]
* RE: [PATCH RFC v2 0/3] connect reject event helpers 2016-10-24 17:52 ` Chuck Lever @ 2016-10-24 17:57 ` Steve Wise -1 siblings, 0 replies; 46+ messages in thread From: Steve Wise @ 2016-10-24 17:57 UTC (permalink / raw) To: 'Chuck Lever' Cc: 'Sagi Grimberg', 'Doug Ledford', 'Sean Hefty', 'List Linux RDMA Mailing', linux-nvme-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, axboe-b10kYP2dOMg, bart.vanassche-XdAiOPVOjttBDgjK7y7TUQ, hch-jcswGhMUV9g > >>> Hey Steve, > >>> > >>> This looks nice and useful. Would be great if you can > >>> also help other ULPs that use this (e.g. srp/srpt) > >> > >> can-do! > > > > Actually, srp uses the ib_cm directly. Further it already has logic to do > > various actions based on the IB_CM Reject status. It really doesn't need these > > helpers. The only one would be ibcm_reject_msg(). Looking at the iser > > initiator, it logs nothing on a reject event. And nfsrdma doesn't log any > > details about the reject reason also. > > > > I could add a dev_warn() or something for iser and nfsrdma. > > I'm fixing an issue in this area. I'd like to take care of > the xprtrdma connection upcall myself once you've got these > new APIs introduced. Sure, not a problem! -- 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] 46+ messages in thread
* [PATCH RFC v2 0/3] connect reject event helpers @ 2016-10-24 17:57 ` Steve Wise 0 siblings, 0 replies; 46+ messages in thread From: Steve Wise @ 2016-10-24 17:57 UTC (permalink / raw) > >>> Hey Steve, > >>> > >>> This looks nice and useful. Would be great if you can > >>> also help other ULPs that use this (e.g. srp/srpt) > >> > >> can-do! > > > > Actually, srp uses the ib_cm directly. Further it already has logic to do > > various actions based on the IB_CM Reject status. It really doesn't need these > > helpers. The only one would be ibcm_reject_msg(). Looking at the iser > > initiator, it logs nothing on a reject event. And nfsrdma doesn't log any > > details about the reject reason also. > > > > I could add a dev_warn() or something for iser and nfsrdma. > > I'm fixing an issue in this area. I'd like to take care of > the xprtrdma connection upcall myself once you've got these > new APIs introduced. Sure, not a problem! ^ permalink raw reply [flat|nested] 46+ messages in thread
end of thread, other threads:[~2016-10-24 17:57 UTC | newest] Thread overview: 46+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2016-10-20 22:40 [PATCH RFC v2 0/3] connect reject event helpers Steve Wise 2016-10-20 22:40 ` Steve Wise [not found] ` <cover.1477003235.git.swise-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org> 2016-10-20 22:40 ` [PATCH RFC v2 1/3] rdma_cm: add rdma_reject_msg() helper function Steve Wise 2016-10-20 22:40 ` Steve Wise [not found] ` <1360f08b7c25f3befcd6836b47af81e2ecb51b75.1477003235.git.swise-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org> 2016-10-21 12:12 ` Christoph Hellwig 2016-10-21 12:12 ` Christoph Hellwig [not found] ` <20161021121234.GA17028-jcswGhMUV9g@public.gmane.org> 2016-10-21 14:07 ` Steve Wise 2016-10-21 14:07 ` Steve Wise 2016-10-21 21:43 ` Sagi Grimberg 2016-10-21 21:43 ` Sagi Grimberg 2016-10-21 21:51 ` Sagi Grimberg 2016-10-21 21:51 ` Sagi Grimberg 2016-10-20 22:40 ` [PATCH RFC v2 2/3] rdma_cm: add rdma_consumer_reject() " Steve Wise 2016-10-20 22:40 ` Steve Wise [not found] ` <cb135696be86c21c144ef35a4d6f7f71394a3627.1477003235.git.swise-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org> 2016-10-21 12:14 ` Christoph Hellwig 2016-10-21 12:14 ` Christoph Hellwig [not found] ` <20161021121428.GB17028-jcswGhMUV9g@public.gmane.org> 2016-10-21 14:09 ` Steve Wise 2016-10-21 14:09 ` Steve Wise 2016-10-21 15:50 ` Parav Pandit 2016-10-21 15:50 ` Parav Pandit [not found] ` <CAG53R5Xyp+n7KYj6zZF6PFuXke3XtqaMgaGTRmgd_uGXTFNDtw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2016-10-21 21:45 ` Sagi Grimberg 2016-10-21 21:45 ` Sagi Grimberg 2016-10-22 15:57 ` Steve Wise 2016-10-22 15:57 ` Steve Wise 2016-10-20 22:40 ` [PATCH RFC v2 3/3] nvme-rdma: use rdma_reject_msg() to log connection rejects Steve Wise 2016-10-20 22:40 ` Steve Wise [not found] ` <60243a2ce17e08cdc93600b9998698dbd7f83306.1477003235.git.swise-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org> 2016-10-21 12:23 ` Christoph Hellwig 2016-10-21 12:23 ` Christoph Hellwig [not found] ` <20161021122318.GB17325-jcswGhMUV9g@public.gmane.org> 2016-10-21 21:48 ` Sagi Grimberg 2016-10-21 21:48 ` Sagi Grimberg 2016-10-22 16:12 ` Steve Wise 2016-10-22 16:12 ` Steve Wise [not found] ` <005701d22c7f$0c883ed0$2598bc70$@opengridcomputing.com> 2016-10-24 14:57 ` Steve Wise 2016-10-24 14:57 ` Steve Wise 2016-10-24 15:09 ` 'Christoph Hellwig' 2016-10-24 15:09 ` 'Christoph Hellwig' 2016-10-21 21:53 ` [PATCH RFC v2 0/3] connect reject event helpers Sagi Grimberg 2016-10-21 21:53 ` Sagi Grimberg [not found] ` <a46f48f3-01b3-fd9b-b642-c20555759107-NQWnxTmZq1alnMjI0IkVqw@public.gmane.org> 2016-10-21 21:58 ` Steve Wise 2016-10-21 21:58 ` Steve Wise [not found] ` <001701d22be6$4854b8b0$d8fe2a10$@opengridcomputing.com> 2016-10-24 17:44 ` Steve Wise 2016-10-24 17:44 ` Steve Wise 2016-10-24 17:52 ` Chuck Lever 2016-10-24 17:52 ` Chuck Lever [not found] ` <2F5E122E-0B50-4264-8E44-3D484B0282F0-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org> 2016-10-24 17:57 ` Steve Wise 2016-10-24 17:57 ` Steve Wise
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.