From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm0-f44.google.com (mail-wm0-f44.google.com [74.125.82.44]) by dpdk.org (Postfix) with ESMTP id 766C63B5 for ; Fri, 28 Apr 2017 12:10:39 +0200 (CEST) Received: by mail-wm0-f44.google.com with SMTP id u65so38024828wmu.1 for ; Fri, 28 Apr 2017 03:10:39 -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; bh=axwmMnjHsemzrRP9Knxj9SLhAYeNlIJT83sxDGnQeQA=; b=P1a3xyg//Nm/DGcbST7hQ6ywIrOzxGRksYDuqCZMkM7+zmAwJAkIo0dcTfBiYL5JY0 Z8MoNESOBAovXM7p6xp3xsNhYe3FgMxNomA8/3WmMXlQTN5e4/31Fdnqg9QCLcsqcxlE eelhQWSr4zBv/bfkA72nCWFtzrl8UkhEF4Qx4rTYWL1yaJ7etdhH7P4qqa+xpUrf5sW9 scrrmdK8Wc6b0mzN7Kc52jRs/joyHp3K8IXsmVQnYEFuFtZt8VXxSDPx3eiv5VLiBcxY Bin2BxiKNt0KN24oqgSZIVPCCGKMRqAkQg+Z1gfb+/G6NIq7ZuQkNyMpUAcE9/hbZ4V7 n6dA== 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; bh=axwmMnjHsemzrRP9Knxj9SLhAYeNlIJT83sxDGnQeQA=; b=smdcJVgcJiHEXwH+loNLjW+esPShsfxCJIRGMf+spKq38K3RIAfS1W04b4dqvJyg+g BEiyxE0Rn20NeqTFKFtV2A+krfQ7B71tjM15V+nuZR+jXGae/xLDIMp022qY/09SpJJy /StI3ovExSJx3qKcciFbBPT3iyXGuUVBrJao88ybDrdc6PrutYWYFA1RIHdpqG2nhELg b42d654k7egdG76wH7ZsDjaU1MpWfwWK94MEtFoqdt5M+y5sqm/p8HKkQ4psnnakToQH HVGWbhErWKJbMklQAx+ce9oZ5UhJa+6iBEfdS+p1iNOB5zKOEyDH+GdmQX/llUOUMOgo QlMg== X-Gm-Message-State: AN3rC/6yrVlqutdAOvWfeN+Tg36DtbRJ110wY57AjuHYh40mi/UjyCDs whJVYthSd21e8KA8 X-Received: by 10.28.166.143 with SMTP id p137mr5245045wme.113.1493374238734; Fri, 28 Apr 2017 03:10:38 -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 r60sm6034481wrb.37.2017.04.28.03.10.37 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 28 Apr 2017 03:10:38 -0700 (PDT) From: Gaetan Rivet To: dev@dpdk.org Cc: "Wu, Jingjing" , "Lu, Wenzhuo" Date: Fri, 28 Apr 2017 12:10:26 +0200 Message-Id: <1493374226-24245-1-git-send-email-gaetan.rivet@6wind.com> X-Mailer: git-send-email 2.1.4 Subject: [dpdk-dev] [PATCH] 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: , X-List-Received-Date: Fri, 28 Apr 2017 10:10:39 -0000 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 --- Additionally, I'm thinking about runtime commands for events, in the form event show event print event mask where show could display the state of the masking for this event as well as statistics for the event. print and mask 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. --- 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 3f4d3a2..3ee1ace 100644 --- a/app/test-pmd/parameters.c +++ b/app/test-pmd/parameters.c @@ -202,6 +202,10 @@ usage(char* progname) "starting/stopping ports.\n"); printf(" --no-lsc-interrupt: disable link status change interrupt.\n"); printf(" --no-rmv-interrupt: disable device removal interrupt."); + printf(" --print-event : " + "enable print of designated event"); + printf(" --mask-event : " + "disable print of designated event"); } #ifdef RTE_LIBRTE_CMDLINE @@ -499,6 +503,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) { @@ -573,6 +607,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 }, }; @@ -1009,6 +1045,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 3a57348..755f73b 100644 --- a/app/test-pmd/testpmd.c +++ b/app/test-pmd/testpmd.c @@ -281,6 +281,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 a9ff07e..30b2472 100644 --- a/app/test-pmd/testpmd.h +++ b/app/test-pmd/testpmd.h @@ -307,6 +307,8 @@ extern uint8_t no_link_check; /**`` + + Enable printing the occurence of the designated event. + +* ``--mask-event `` + + Disable printing the occurence of the designated event. -- 2.1.4