From patchwork Thu Aug 10 09:54:50 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Breno Leitao X-Patchwork-Id: 13349151 X-Patchwork-Delegate: kuba@kernel.org Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net [23.128.96.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BAA5D1E51F for ; Thu, 10 Aug 2023 09:55:18 +0000 (UTC) Received: from mail-ej1-f49.google.com (mail-ej1-f49.google.com [209.85.218.49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B3E6C211F; Thu, 10 Aug 2023 02:55:17 -0700 (PDT) Received: by mail-ej1-f49.google.com with SMTP id a640c23a62f3a-99d6d5054bcso53172766b.1; Thu, 10 Aug 2023 02:55:17 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691661316; x=1692266116; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=xcmFvkTZaOEF7ex/M10t1g9cl0Ka7mKgrAMDoUfhRLc=; b=gfHtFhrPkk0w+tYHrQtguuPM2nRpEomgKR9AsRHOgVrGQdvGyD1cZ+xFVu6vCV+PE2 JdEbN+baniRN7GqrOU1Q7JBiyT8tlgOLr09kqrEZwFwCh0gqHPdfRmBh25frto+gsRRW 6ae8of1MoqS0NOzx4PjzZD0JS3yNv4IxzWIJcN7LCRsNJ06REptn73ADcDCEjtggaZWN v2dEiO11DYP9dxSx0XqzC5CuoXuYeLDp2qGbrVUrmfz6/IYc1lGmZqZTGkppKXgJRH6S r0MC3OJH3qYR6Eo2o4vRpWjRkmNTrqys9+ljZ4rTrfbJ8l0U63sy7ZC62FmnMr5jboiv 0ujA== X-Gm-Message-State: AOJu0YyOYGfqcWBk1zpjCoVw2zbP+IRml5282XWereQsaH47yapLZBVC +sVZoHUfrdU2/rgV3AVRIko= X-Google-Smtp-Source: AGHT+IGDo7qix2jFbYzjd/Wkd9HG3qvfVtWCvu8IuJwutp1lVi6AKLgN4qxc5MXRXuhU7uSUNnYnmA== X-Received: by 2002:a17:907:9623:b0:98e:1c4b:10e2 with SMTP id gb35-20020a170907962300b0098e1c4b10e2mr2008863ejc.20.1691661316035; Thu, 10 Aug 2023 02:55:16 -0700 (PDT) Received: from localhost (fwdproxy-cln-117.fbsv.net. [2a03:2880:31ff:75::face:b00c]) by smtp.gmail.com with ESMTPSA id h8-20020a1709062dc800b0099b7276235esm697720eji.93.2023.08.10.02.55.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Aug 2023 02:55:15 -0700 (PDT) From: Breno Leitao To: rdunlap@infradead.org, benjamin.poirier@gmail.com, davem@davemloft.net, kuba@kernel.org, edumazet@google.com, Paolo Abeni Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org (open list) Subject: [PATCH net-next v5 1/2] netconsole: Create a allocation helper Date: Thu, 10 Aug 2023 02:54:50 -0700 Message-Id: <20230810095452.3171106-2-leitao@debian.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230810095452.3171106-1-leitao@debian.org> References: <20230810095452.3171106-1-leitao@debian.org> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Spam-Status: No, score=-1.4 required=5.0 tests=BAYES_00, FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL, SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net X-Patchwork-Delegate: kuba@kernel.org De-duplicate the initialization and allocation code for struct netconsole_target. The same allocation and initialization code is duplicated in two different places in the netconsole subsystem, when the netconsole target is initialized by command line parameters (alloc_param_target()), and dynamically by sysfs (make_netconsole_target()). Create a helper function, and call it from the two different functions. Suggested-by: Eric Dumazet Signed-off-by: Breno Leitao --- drivers/net/netconsole.c | 42 +++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c index 87f18aedd3bd..f93b98d64a3c 100644 --- a/drivers/net/netconsole.c +++ b/drivers/net/netconsole.c @@ -167,19 +167,16 @@ static void netconsole_target_put(struct netconsole_target *nt) #endif /* CONFIG_NETCONSOLE_DYNAMIC */ -/* Allocate new target (from boot/module param) and setup netpoll for it */ -static struct netconsole_target *alloc_param_target(char *target_config) +/* Allocate and initialize with defaults. + * Note that these targets get their config_item fields zeroed-out. + */ +static struct netconsole_target *alloc_and_init(void) { - int err = -ENOMEM; struct netconsole_target *nt; - /* - * Allocate and initialize with defaults. - * Note that these targets get their config_item fields zeroed-out. - */ nt = kzalloc(sizeof(*nt), GFP_KERNEL); if (!nt) - goto fail; + return nt; nt->np.name = "netconsole"; strscpy(nt->np.dev_name, "eth0", IFNAMSIZ); @@ -187,6 +184,21 @@ static struct netconsole_target *alloc_param_target(char *target_config) nt->np.remote_port = 6666; eth_broadcast_addr(nt->np.remote_mac); + return nt; +} + +/* Allocate new target (from boot/module param) and setup netpoll for it */ +static struct netconsole_target *alloc_param_target(char *target_config) +{ + struct netconsole_target *nt; + int err; + + nt = alloc_and_init(); + if (!nt) { + err = -ENOMEM; + goto fail; + } + if (*target_config == '+') { nt->extended = true; target_config++; @@ -664,23 +676,13 @@ static const struct config_item_type netconsole_target_type = { static struct config_item *make_netconsole_target(struct config_group *group, const char *name) { - unsigned long flags; struct netconsole_target *nt; + unsigned long flags; - /* - * Allocate and initialize with defaults. - * Target is disabled at creation (!enabled). - */ - nt = kzalloc(sizeof(*nt), GFP_KERNEL); + nt = alloc_and_init(); if (!nt) return ERR_PTR(-ENOMEM); - nt->np.name = "netconsole"; - strscpy(nt->np.dev_name, "eth0", IFNAMSIZ); - nt->np.local_port = 6665; - nt->np.remote_port = 6666; - eth_broadcast_addr(nt->np.remote_mac); - /* Initialize the config_item member */ config_item_init_type_name(&nt->item, name, &netconsole_target_type); From patchwork Thu Aug 10 09:54:51 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Breno Leitao X-Patchwork-Id: 13349152 X-Patchwork-Delegate: kuba@kernel.org Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net [23.128.96.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C220C1E51F for ; Thu, 10 Aug 2023 09:55:20 +0000 (UTC) Received: from mail-lj1-f169.google.com (mail-lj1-f169.google.com [209.85.208.169]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AED58E7F; Thu, 10 Aug 2023 02:55:19 -0700 (PDT) Received: by mail-lj1-f169.google.com with SMTP id 38308e7fff4ca-2b9e6cc93c6so10751981fa.2; Thu, 10 Aug 2023 02:55:19 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691661318; x=1692266118; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=gffuZaa/ihRTSH1k1c/YUIAF3UhoRHwdFaPoPVPmbmw=; b=MXOmMHnLeWSA7FBPF9Mr1z5TCgbyMHvskShhvXmIkEaaWQK3rNJxDtlk+a2yo1W5Bg pS/b+hg0qJpIYkeJXM31nF9ICMcxav95RFgfp9HqhLZPrHS03E1r+UBM9qe9AHbR1H7n Yu0nk+prG4WzFCYBSTuiT4zrNSgFk1hzs54JwGicbBaiJr0jQMsDrLjFJdMAE0JLTOx5 eslnMxAAaQsrmvAwDIb/fDlq15fAfvc+JCG8hlFsYnxVJVgegzl1DzTP1NalylA9HD/H K9cJQWIco/WhRq5xLRMly01lQM+/LE3ccHk/QcAsylRZrbt6zG8TmhP18lCV9j4iSJCr ywjA== X-Gm-Message-State: AOJu0YxyZEJzjItyLuean85kBwnEFbYL1FaRQCxR8/fijgkK8fAcYvhG TXaeDw6HhUacAzrXDvbfgVNAD2yOx3o= X-Google-Smtp-Source: AGHT+IF2qOMXARfDGKxIaYy0XzYbezH3oX9rJ+sMYHNNYmiKGfx4YJAsSyljW4IGXhFueEhr3HTu/Q== X-Received: by 2002:a2e:800c:0:b0:2b8:3a1e:eec9 with SMTP id j12-20020a2e800c000000b002b83a1eeec9mr1318765ljg.36.1691661317712; Thu, 10 Aug 2023 02:55:17 -0700 (PDT) Received: from localhost (fwdproxy-cln-014.fbsv.net. [2a03:2880:31ff:e::face:b00c]) by smtp.gmail.com with ESMTPSA id vr2-20020a170906bfe200b00988b8ff849csm687300ejb.108.2023.08.10.02.55.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Aug 2023 02:55:17 -0700 (PDT) From: Breno Leitao To: rdunlap@infradead.org, benjamin.poirier@gmail.com, davem@davemloft.net, kuba@kernel.org, edumazet@google.com, Paolo Abeni Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org (open list) Subject: [PATCH net-next v5 2/2] netconsole: Enable compile time configuration Date: Thu, 10 Aug 2023 02:54:51 -0700 Message-Id: <20230810095452.3171106-3-leitao@debian.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230810095452.3171106-1-leitao@debian.org> References: <20230810095452.3171106-1-leitao@debian.org> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Spam-Status: No, score=-1.4 required=5.0 tests=BAYES_00, FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net X-Patchwork-Delegate: kuba@kernel.org Enable netconsole features to be set at compilation time. Create two Kconfig options that allow users to set extended logs and release prepending features at compilation time. Right now, the user needs to pass command line parameters to netconsole, such as "+"/"r" to enable extended logs and version prepending features. With these two options, the user could set the default values for the features at compile time, and don't need to pass it in the command line to get them enabled, simplifying the command line. Signed-off-by: Breno Leitao --- drivers/net/Kconfig | 22 ++++++++++++++++++++++ drivers/net/netconsole.c | 5 +++++ 2 files changed, 27 insertions(+) diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig index 368c6f5b327e..55fb9509bcae 100644 --- a/drivers/net/Kconfig +++ b/drivers/net/Kconfig @@ -332,6 +332,28 @@ config NETCONSOLE_DYNAMIC at runtime through a userspace interface exported using configfs. See for details. +config NETCONSOLE_EXTENDED_LOG + bool "Set kernel extended message by default" + depends on NETCONSOLE + default n + help + Set extended log support for netconsole message. If this option is + set, log messages are transmitted with extended metadata header in a + format similar to /dev/kmsg. See + for details. + +config NETCONSOLE_PREPEND_RELEASE + bool "Prepend kernel release version in the message by default" + depends on NETCONSOLE_EXTENDED_LOG + default n + help + Set kernel release to be prepended to each netconsole message by + default. If this option is set, the kernel release is prepended into + the first field of every netconsole message, so, the netconsole + server/peer can easily identify what kernel release is logging each + message. See for + details. + config NETPOLL def_bool NETCONSOLE diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c index f93b98d64a3c..1dc56d6b1c15 100644 --- a/drivers/net/netconsole.c +++ b/drivers/net/netconsole.c @@ -178,6 +178,11 @@ static struct netconsole_target *alloc_and_init(void) if (!nt) return nt; + if (IS_ENABLED(CONFIG_NETCONSOLE_EXTENDED_LOG)) + nt->extended = true; + if (IS_ENABLED(CONFIG_NETCONSOLE_PREPEND_RELEASE)) + nt->release = true; + nt->np.name = "netconsole"; strscpy(nt->np.dev_name, "eth0", IFNAMSIZ); nt->np.local_port = 6665;