From patchwork Tue May 2 09:54:06 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Ga=C3=ABtan_Rivet?= X-Patchwork-Id: 24047 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id 2FB3A5A44; Tue, 2 May 2017 11:54:19 +0200 (CEST) Received: from mail-wm0-f45.google.com (mail-wm0-f45.google.com [74.125.82.45]) by dpdk.org (Postfix) with ESMTP id DDE77234 for ; Tue, 2 May 2017 11:54:17 +0200 (CEST) Received: by mail-wm0-f45.google.com with SMTP id m123so13066048wma.0 for ; Tue, 02 May 2017 02:54:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=/N+J2/509jyq1PsFgpNc2JMiQvsMMcwnPCrWOK0wJQM=; b=qnRc+YlZvYmb44t8ZBYDvL81ulNaLD5jOvvRcCPZQVfdxud0/+iWW7FR5p+oUHy8bx eiCOSJh8gDYHoJzYil7TOjyBbXGj0qMpdtyz+VlfRIBKQAgKDt8GMU0XNcStiFnIrF04 oYjyO1Mh0qf1Nel5xFu46G/1VbvbbXZYyxkz13mxPBgCaRF/PjXKkBYy1Q3UwIwNmud6 8DKMuxrn+GejCl9+rHMGxXHJn8H0HCNut5Ry96vb++x3JIvNDhMRvz8vsiCXqE9+7Sld zTxLoamoiWLGO8n1LBO++fS4sFD0iSQq/riJBaCbMf4+ojFqyslcKAP+ZUCxskCMDOOi /YAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=/N+J2/509jyq1PsFgpNc2JMiQvsMMcwnPCrWOK0wJQM=; b=tJbJfCChS58Fn7tgmcMNSxn3ZCI8ahYZrO1UA2FKrQKso894bIZwDxZClKoS5RcE5W fDmsxjSL3SrbZsu3f18Kr3E5RVPc1HDUxoTdP/7b41KcTWScIA7Qf0K9fg5DeMErRPp/ eWJ5TjLXKF10I6Y7121XfFoXJPpABXFVrFz2sx+k7XwCHJsbv+6Hm3oIZD1VSQIFywem lAxLwFaej/WywstZpOqUW5yzqkJQTHZ9kigx2R2oMCzqAqbDh8G3wJSJT1FCW9ya0uC7 wRjp0Ks/roVMMVLl1G+aAKLox1x7qtX09ThUAFxJqhnXYhSHNH5kKosmIy2hsvuc0IJZ CA5w== X-Gm-Message-State: AN3rC/7W+068rhBGYUWbkEa2OCmKRWD7HhkxrRrKQyXIsR0Gh56qxOrc 2l2vT97/pS5VUpG/NQo= X-Received: by 10.28.158.216 with SMTP id h207mr1561660wme.0.1493718857146; Tue, 02 May 2017 02:54:17 -0700 (PDT) Received: from bidouze.dev.6wind.com (host.78.145.23.62.rev.coltfrance.com. [62.23.145.78]) by smtp.gmail.com with ESMTPSA id n193sm456880wmg.30.2017.05.02.02.54.15 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 02 May 2017 02:54:16 -0700 (PDT) From: Gaetan Rivet To: dev@dpdk.org Cc: "Wu, Jingjing" , "Lu, Wenzhuo" Date: Tue, 2 May 2017 11:54:06 +0200 Message-Id: X-Mailer: git-send-email 2.1.4 In-Reply-To: <1493708598-24306-1-git-send-email-gaetan.rivet@6wind.com> References: <1493708598-24306-1-git-send-email-gaetan.rivet@6wind.com> Subject: [dpdk-dev] [PATCH v3] app/testpmd: configure event display X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Add two parameters to testpmd: --print-event --mask-event To enable or disable to printing of events. This display is configured on a per-event basis. By default, all except VF_MBOX are displayed. Fixes: 76ad4a2d82d4 ("app/testpmd: add generic event handler") Cc: "Lu, Wenzhuo" Signed-off-by: Gaetan Rivet Acked-by: Jingjing Wu --- Additionally, I'm thinking about runtime commands for events, in the form event show event print where show could display the state of the display for this event as well as statistics for the event. print on|off would do the same as the two parameters introduced by this patch. But this is a little heavier and I wanted to propose this fix as soon as possible. v1 -> v2: * Rebased on top of master * Fixed typos in doc v2 -> v3: * Fixed doc alignment issues. --- app/test-pmd/parameters.c | 46 +++++++++++++++++++++++++++++++++++ app/test-pmd/testpmd.c | 13 +++++++++- app/test-pmd/testpmd.h | 2 ++ doc/guides/testpmd_app_ug/run_app.rst | 8 ++++++ 4 files changed, 68 insertions(+), 1 deletion(-) diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c index 787e143..5a07dea 100644 --- a/app/test-pmd/parameters.c +++ b/app/test-pmd/parameters.c @@ -206,6 +206,10 @@ usage(char* progname) printf(" --no-rmv-interrupt: disable device removal interrupt.\n"); printf(" --bitrate-stats=N: set the logical core N to perform " "bit-rate calculation.\n"); + printf(" --print-event : " + "enable print of designated event"); + printf(" --mask-event : " + "disable print of designated event"); } #ifdef RTE_LIBRTE_CMDLINE @@ -503,6 +507,36 @@ parse_ringnuma_config(const char *q_arg) return 0; } +static int +parse_event_printing_config(const char *optarg, int enable) +{ + uint32_t mask = 0; + + if (!strcmp(optarg, "unknown")) + mask = UINT32_C(1) << RTE_ETH_EVENT_UNKNOWN; + else if (!strcmp(optarg, "intr_lsc")) + mask = UINT32_C(1) << RTE_ETH_EVENT_INTR_LSC; + else if (!strcmp(optarg, "queue_state")) + mask = UINT32_C(1) << RTE_ETH_EVENT_QUEUE_STATE; + else if (!strcmp(optarg, "intr_reset")) + mask = UINT32_C(1) << RTE_ETH_EVENT_INTR_RESET; + else if (!strcmp(optarg, "vf_mbox")) + mask = UINT32_C(1) << RTE_ETH_EVENT_VF_MBOX; + else if (!strcmp(optarg, "macsec")) + mask = UINT32_C(1) << RTE_ETH_EVENT_MACSEC; + else if (!strcmp(optarg, "intr_rmv")) + mask = UINT32_C(1) << RTE_ETH_EVENT_INTR_RMV; + else { + fprintf(stderr, "Invalid event: %s\n", optarg); + return -1; + } + if (enable) + event_print_mask |= mask; + else + event_print_mask &= ~mask; + return 0; +} + void launch_args_parse(int argc, char** argv) { @@ -581,6 +615,8 @@ launch_args_parse(int argc, char** argv) { "disable-link-check", 0, 0, 0 }, { "no-lsc-interrupt", 0, 0, 0 }, { "no-rmv-interrupt", 0, 0, 0 }, + { "print-event", 1, 0, 0 }, + { "mask-event", 1, 0, 0 }, { 0, 0, 0, 0 }, }; @@ -1036,6 +1072,16 @@ launch_args_parse(int argc, char** argv) lsc_interrupt = 0; if (!strcmp(lgopts[opt_idx].name, "no-rmv-interrupt")) rmv_interrupt = 0; + if (!strcmp(lgopts[opt_idx].name, "print-event")) + if (parse_event_printing_config(optarg, 1)) { + rte_exit(EXIT_FAILURE, + "invalid print-event argument\n"); + } + if (!strcmp(lgopts[opt_idx].name, "mask-event")) + if (parse_event_printing_config(optarg, 0)) { + rte_exit(EXIT_FAILURE, + "invalid mask-event argument\n"); + } break; case 'h': diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c index dfe6442..b9c385e 100644 --- a/app/test-pmd/testpmd.c +++ b/app/test-pmd/testpmd.c @@ -282,6 +282,17 @@ uint8_t lsc_interrupt = 1; /* enabled by default */ uint8_t rmv_interrupt = 1; /* enabled by default */ /* + * Display or mask ether events + * Default to all events except VF_MBOX + */ +uint32_t event_print_mask = (UINT32_C(1) << RTE_ETH_EVENT_UNKNOWN) | + (UINT32_C(1) << RTE_ETH_EVENT_INTR_LSC) | + (UINT32_C(1) << RTE_ETH_EVENT_QUEUE_STATE) | + (UINT32_C(1) << RTE_ETH_EVENT_INTR_RESET) | + (UINT32_C(1) << RTE_ETH_EVENT_MACSEC) | + (UINT32_C(1) << RTE_ETH_EVENT_INTR_RMV); + +/* * NIC bypass mode configuration options. */ #ifdef RTE_NIC_BYPASS @@ -1806,7 +1817,7 @@ eth_event_callback(uint8_t port_id, enum rte_eth_event_type type, void *param) fprintf(stderr, "\nPort %" PRIu8 ": %s called upon invalid event %d\n", port_id, __func__, type); fflush(stderr); - } else { + } else if (event_print_mask & (UINT32_C(1) << type)) { printf("\nPort %" PRIu8 ": %s event\n", port_id, event_desc[type]); fflush(stdout); diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h index 8b3d903..3c6a59a 100644 --- a/app/test-pmd/testpmd.h +++ b/app/test-pmd/testpmd.h @@ -308,6 +308,8 @@ extern uint8_t no_link_check; /**`` + + Enable printing the occurrence of the designated event. + +* ``--mask-event `` + + Disable printing the occurrence of the designated event.