From patchwork Tue May 12 12:05:24 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sagi Grimberg X-Patchwork-Id: 6387431 Return-Path: X-Original-To: patchwork-linux-rdma@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 724B79F32E for ; Tue, 12 May 2015 12:06:16 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 6B3DE20328 for ; Tue, 12 May 2015 12:06:15 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 27651203F4 for ; Tue, 12 May 2015 12:06:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932631AbbELMGL (ORCPT ); Tue, 12 May 2015 08:06:11 -0400 Received: from ns1327.ztomy.com ([193.47.165.129]:32781 "EHLO mellanox.co.il" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S932557AbbELMGK (ORCPT ); Tue, 12 May 2015 08:06:10 -0400 Received: from Internal Mail-Server by MTLPINE1 (envelope-from sagig@mellanox.com) with ESMTPS (AES256-SHA encrypted); 12 May 2015 15:05:34 +0300 Received: from r-vnc05.mtr.labs.mlnx (r-vnc05.mtr.labs.mlnx [10.208.0.115]) by labmailer.mlnx (8.13.8/8.13.8) with ESMTP id t4CC5fKI032388; Tue, 12 May 2015 15:05:41 +0300 Received: from r-vnc05.mtr.labs.mlnx (localhost [127.0.0.1]) by r-vnc05.mtr.labs.mlnx (8.14.4/8.14.4) with ESMTP id t4CC5fhM000985; Tue, 12 May 2015 15:05:41 +0300 Received: (from sagig@localhost) by r-vnc05.mtr.labs.mlnx (8.14.4/8.14.4/Submit) id t4CC5fKW000984; Tue, 12 May 2015 15:05:41 +0300 From: Sagi Grimberg To: linux-rdma@vger.kernel.org Cc: Sagi Grimberg Subject: [PATCH v5 1/6] IB/core, cma: Nice log-friendly string helpers Date: Tue, 12 May 2015 15:05:24 +0300 Message-Id: <1431432329-859-2-git-send-email-sagig@mellanox.com> X-Mailer: git-send-email 1.8.4.3 In-Reply-To: <1431432329-859-1-git-send-email-sagig@mellanox.com> References: <1431432329-859-1-git-send-email-sagig@mellanox.com> Sender: linux-rdma-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-rdma@vger.kernel.org X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, T_RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Some of us keep revisiting the code to decode enumerations that appear in out logs. Let's borrow the nice logging helpers that exists in xprtrdma and rds for CMA events, IB events and WC statuses. Reviewed-by: Yann Droneaud Reviewed-by: Bart Van Assche Signed-off-by: Sagi Grimberg --- drivers/infiniband/core/cma.c | 28 +++++++++++++++++ drivers/infiniband/core/verbs.c | 65 +++++++++++++++++++++++++++++++++++++++ include/rdma/ib_verbs.h | 4 ++ include/rdma/rdma_cm.h | 2 + 4 files changed, 99 insertions(+), 0 deletions(-) diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c index d570030..ef9f277 100644 --- a/drivers/infiniband/core/cma.c +++ b/drivers/infiniband/core/cma.c @@ -65,6 +65,34 @@ MODULE_LICENSE("Dual BSD/GPL"); #define CMA_CM_MRA_SETTING (IB_CM_MRA_FLAG_DELAY | 24) #define CMA_IBOE_PACKET_LIFETIME 18 +static const char * const cma_events[] = { + [RDMA_CM_EVENT_ADDR_RESOLVED] = "ADDR_RESOLVED", + [RDMA_CM_EVENT_ADDR_ERROR] = "ADDR_ERROR", + [RDMA_CM_EVENT_ROUTE_RESOLVED] = "ROUTE_RESOLVED", + [RDMA_CM_EVENT_ROUTE_ERROR] = "ROUTE_ERROR", + [RDMA_CM_EVENT_CONNECT_REQUEST] = "CONNECT_REQUEST", + [RDMA_CM_EVENT_CONNECT_RESPONSE]= "CONNECT_RESPONSE", + [RDMA_CM_EVENT_CONNECT_ERROR] = "CONNECT_ERROR", + [RDMA_CM_EVENT_UNREACHABLE] = "UNREACHABLE", + [RDMA_CM_EVENT_REJECTED] = "REJECTED", + [RDMA_CM_EVENT_ESTABLISHED] = "ESTABLISHED", + [RDMA_CM_EVENT_DISCONNECTED] = "DISCONNECTED", + [RDMA_CM_EVENT_DEVICE_REMOVAL] = "DEVICE_REMOVAL", + [RDMA_CM_EVENT_MULTICAST_JOIN] = "MULTICAST_JOIN", + [RDMA_CM_EVENT_MULTICAST_ERROR] = "MULTICAST_ERROR", + [RDMA_CM_EVENT_ADDR_CHANGE] = "ADDR_CHANGE", + [RDMA_CM_EVENT_TIMEWAIT_EXIT] = "TIMEWAIT_EXIT", +}; + +const char *rdma_event_msg(enum rdma_cm_event_type event) +{ + size_t index = event; + + return (index < ARRAY_SIZE(cma_events) && cma_events[index]) ? + cma_events[index] : "UNRECOGNIZED_EVENT"; +} +EXPORT_SYMBOL(rdma_event_msg); + static void cma_add_one(struct ib_device *device); static void cma_remove_one(struct ib_device *device); diff --git a/drivers/infiniband/core/verbs.c b/drivers/infiniband/core/verbs.c index f93eb8d..e366a52 100644 --- a/drivers/infiniband/core/verbs.c +++ b/drivers/infiniband/core/verbs.c @@ -48,6 +48,71 @@ #include "core_priv.h" +static const char * const ib_events[] = { + [IB_EVENT_CQ_ERR] = "CQ_ERR", + [IB_EVENT_QP_FATAL] = "QP_FATAL", + [IB_EVENT_QP_REQ_ERR] = "QP_REQ_ERR", + [IB_EVENT_QP_ACCESS_ERR] = "QP_ACCESS_ERR", + [IB_EVENT_COMM_EST] = "COMM_EST", + [IB_EVENT_SQ_DRAINED] = "SQ_DRAINED", + [IB_EVENT_PATH_MIG] = "PATH_MIG", + [IB_EVENT_PATH_MIG_ERR] = "PATH_MIG_ERR", + [IB_EVENT_DEVICE_FATAL] = "DEVICE_FATAL", + [IB_EVENT_PORT_ACTIVE] = "PORT_ACTIVE", + [IB_EVENT_PORT_ERR] = "PORT_ERR", + [IB_EVENT_LID_CHANGE] = "LID_CHANGE", + [IB_EVENT_PKEY_CHANGE] = "PKEY_CHANGE", + [IB_EVENT_SM_CHANGE] = "SM_CHANGE", + [IB_EVENT_SRQ_ERR] = "SRQ_ERR", + [IB_EVENT_SRQ_LIMIT_REACHED] = "SRQ_LIMIT_REACHED", + [IB_EVENT_QP_LAST_WQE_REACHED] = "QP_LAST_WQE_REACHED", + [IB_EVENT_CLIENT_REREGISTER] = "CLIENT_REREGISTER", + [IB_EVENT_GID_CHANGE] = "GID_CHANGE", +}; + +const char *ib_event_msg(enum ib_event_type event) +{ + size_t index = event; + + return (index < ARRAY_SIZE(ib_events) && ib_events[index]) ? + ib_events[index] : "UNRECOGNIZED_EVENT"; +} +EXPORT_SYMBOL(ib_event_msg); + +static const char * const wc_statuses[] = { + [IB_WC_SUCCESS] = "SUCCESS", + [IB_WC_LOC_LEN_ERR] = "LOC_LEN_ERR", + [IB_WC_LOC_QP_OP_ERR] = "LOC_QP_OP_ERR", + [IB_WC_LOC_EEC_OP_ERR] = "LOC_EEC_OP_ERR", + [IB_WC_LOC_PROT_ERR] = "LOC_PROT_ERR", + [IB_WC_WR_FLUSH_ERR] = "WR_FLUSH_ERR", + [IB_WC_MW_BIND_ERR] = "MW_BIND_ERR", + [IB_WC_BAD_RESP_ERR] = "BAD_RESP_ERR", + [IB_WC_LOC_ACCESS_ERR] = "LOC_ACCESS_ERR", + [IB_WC_REM_INV_REQ_ERR] = "REM_INV_REQ_ERR", + [IB_WC_REM_ACCESS_ERR] = "REM_ACCESS_ERR", + [IB_WC_REM_OP_ERR] = "REM_OP_ERR", + [IB_WC_RETRY_EXC_ERR] = "RETRY_EXC_ERR", + [IB_WC_RNR_RETRY_EXC_ERR] = "RNR_RETRY_EXC_ERR", + [IB_WC_LOC_RDD_VIOL_ERR] = "LOC_RDD_VIOL_ERR", + [IB_WC_REM_INV_RD_REQ_ERR] = "REM_INV_RD_REQ_ERR", + [IB_WC_REM_ABORT_ERR] = "REM_ABORT_ERR", + [IB_WC_INV_EECN_ERR] = "INV_EECN_ERR", + [IB_WC_INV_EEC_STATE_ERR] = "INV_EEC_STATE_ERR", + [IB_WC_FATAL_ERR] = "FATAL_ERR", + [IB_WC_RESP_TIMEOUT_ERR] = "RESP_TIMEOUT_ERR", + [IB_WC_GENERAL_ERR] = "GENERAL_ERR", +}; + +const char *ib_wc_status_msg(enum ib_wc_status status) +{ + size_t index = status; + + return (index < ARRAY_SIZE(wc_statuses) && wc_statuses[index]) ? + wc_statuses[index] : "UNRECOGNIZED_STATUS"; +} +EXPORT_SYMBOL(ib_wc_status_msg); + __attribute_const__ int ib_rate_to_mult(enum ib_rate rate) { switch (rate) { diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h index 65994a1..672fc8f 100644 --- a/include/rdma/ib_verbs.h +++ b/include/rdma/ib_verbs.h @@ -412,6 +412,8 @@ enum ib_event_type { IB_EVENT_GID_CHANGE, }; +__attribute_const__ const char *ib_event_msg(enum ib_event_type event); + struct ib_event { struct ib_device *device; union { @@ -663,6 +665,8 @@ enum ib_wc_status { IB_WC_GENERAL_ERR }; +__attribute_const__ const char *ib_wc_status_msg(enum ib_wc_status status); + enum ib_wc_opcode { IB_WC_SEND, IB_WC_RDMA_WRITE, diff --git a/include/rdma/rdma_cm.h b/include/rdma/rdma_cm.h index 1ed2088..c92522c 100644 --- a/include/rdma/rdma_cm.h +++ b/include/rdma/rdma_cm.h @@ -62,6 +62,8 @@ enum rdma_cm_event_type { RDMA_CM_EVENT_TIMEWAIT_EXIT }; +__attribute_const__ const char *rdma_event_msg(enum rdma_cm_event_type event); + enum rdma_port_space { RDMA_PS_SDP = 0x0001, RDMA_PS_IPOIB = 0x0002,