From patchwork Mon May 11 10:00:42 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sagi Grimberg X-Patchwork-Id: 6375511 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 282799F32E for ; Mon, 11 May 2015 10:01:44 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 1408C20279 for ; Mon, 11 May 2015 10:01:43 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id D54B82025B for ; Mon, 11 May 2015 10:01:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753194AbbEKKBl (ORCPT ); Mon, 11 May 2015 06:01:41 -0400 Received: from ns1327.ztomy.com ([193.47.165.129]:40381 "EHLO mellanox.co.il" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1752746AbbEKKBk (ORCPT ); Mon, 11 May 2015 06:01:40 -0400 Received: from Internal Mail-Server by MTLPINE1 (envelope-from sagig@mellanox.com) with ESMTPS (AES256-SHA encrypted); 11 May 2015 13:00:43 +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 t4BA0or1018329; Mon, 11 May 2015 13:00:50 +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 t4BA0o5h013368; Mon, 11 May 2015 13:00:50 +0300 Received: (from sagig@localhost) by r-vnc05.mtr.labs.mlnx (8.14.4/8.14.4/Submit) id t4BA0n31013367; Mon, 11 May 2015 13:00:49 +0300 From: Sagi Grimberg To: linux-rdma@vger.kernel.org Cc: Chuck Lever , Bart Van Assche , Doug Ledford , Or Gerlitz , Chien Yen , Sagi Grimberg Subject: [PATCH v1 1/2] IB/core, cma: Nice log-friendly string helpers Date: Mon, 11 May 2015 13:00:42 +0300 Message-Id: <1431338443-13216-2-git-send-email-sagig@mellanox.com> X-Mailer: git-send-email 1.8.4.3 In-Reply-To: <1431338443-13216-1-git-send-email-sagig@mellanox.com> References: <1431338443-13216-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, UPPERCASE_50_75 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 our logs. Let's borrow the nice logging helpers that exists in xprtrdma and rds for CMA events, IB events and WC statuses. Signed-off-by: Sagi Grimberg --- drivers/infiniband/core/cma.c | 26 ++++++++++++++++ drivers/infiniband/core/verbs.c | 61 +++++++++++++++++++++++++++++++++++++++ include/rdma/ib_verbs.h | 4 ++ include/rdma/rdma_cm.h | 2 + 4 files changed, 93 insertions(+), 0 deletions(-) diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c index d570030..1438dde 100644 --- a/drivers/infiniband/core/cma.c +++ b/drivers/infiniband/core/cma.c @@ -65,6 +65,32 @@ 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 *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", +}; + +__attribute_const__ const char *cma_event_msg(enum rdma_cm_event_type event) +{ + return event < ARRAY_SIZE(cma_events) ? + cma_events[event] : "UNRECOGNIZED_EVENT"; +} +EXPORT_SYMBOL(cma_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..0cdf1b6 100644 --- a/drivers/infiniband/core/verbs.c +++ b/drivers/infiniband/core/verbs.c @@ -48,6 +48,67 @@ #include "core_priv.h" +static const char *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", +}; + +__attribute_const__ const char *ib_event_msg(enum ib_event_type event) +{ + return event < ARRAY_SIZE(ib_events) ? + ib_events[event] : "UNRECOGNIZED_EVENT"; +} +EXPORT_SYMBOL(ib_event_msg); + +static const char *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", +}; + +__attribute_const__ const char *wc_status_msg(enum ib_wc_status status) +{ + return status < ARRAY_SIZE(wc_statuses) ? + wc_statuses[status] : "UNRECOGNIZED_STATUS"; +} +EXPORT_SYMBOL(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..ad12935 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 *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..00cd398 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 *cma_event_msg(enum rdma_cm_event_type event); + enum rdma_port_space { RDMA_PS_SDP = 0x0001, RDMA_PS_IPOIB = 0x0002,