From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-oi1-f175.google.com (mail-oi1-f175.google.com [209.85.167.175]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8EE873A874B for ; Sun, 24 May 2026 16:12:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.175 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779639150; cv=none; b=lm07PY/z8huKGSFmrqQ7/z91BMILBIlCx79Hxt4kU4XGqHDwxJHHRDnAadSCYDVcvWFV4Wq/cvZ4fh07BWRYP1p1b3dsJSYEITOJqMiEAk1r7LEn4EH76pjRlU3DQhhtcY8bD5g9rTZCFqwFQippoM5h9+L15dx09UbnJt+oX98= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779639150; c=relaxed/simple; bh=DfAMocgapgQ/LI/qEUqGA8jdlKm8WnUDdcQZ9Oss0SE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=fMnPuMZfGQsoC10PZhdTqSh6WytygyKLXFbQLlFnXQ9QOHwCpXo4fDloRsIZ1gJK9EtY93XGtiXJmli6mUi38QBHmX2XXYOxjYDpdbpixVPYMsHcugbkmbQoir35BJ82Gxt37h/9r8Vibm6Wr6jxVxPA9PgF730bJ7tz1v3NVUA= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=fail (p=none dis=none) header.from=debian.org; spf=pass smtp.mailfrom=gmail.com; arc=none smtp.client-ip=209.85.167.175 Authentication-Results: smtp.subspace.kernel.org; dmarc=fail (p=none dis=none) header.from=debian.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-oi1-f175.google.com with SMTP id 5614622812f47-4856d563d4fso762768b6e.3 for ; Sun, 24 May 2026 09:12:28 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779639147; x=1780243947; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=LWDratKSJZdKmxRQRRe5Ewa5FMIG09hb/oexxLbLqXs=; b=cixb9NpzyJOkmm6euECYo8tFOowXt07MpNrANCsxHC5H2SijmWHdhbF7YIDhmC7Ewz TzdjjEBKVJBrrdBdO4PBV1cbUkQ7Mszolr2Vd8b4hMovH/NdBLFxIwIDHLXwuTeFMkc3 VcG0m+57OPvFcLIWCBBma3fVS4bPmeivNR06Y381SQkoSUHPNm0dBVATk/Lc3KSgWS3u bqnnw7Qy2oIN1RNS7FG4yrmdhKohRsLZgtAs1V9i+7pD70xDPC1JG51gtpgK13uPDry6 lgQLx/6Z4RuF876MuXLgfjm+WWj3CxtDUXdJybov4nBsJNChnFz6c+TGKcTFtb4T/nwo WZHw== X-Forwarded-Encrypted: i=1; AFNElJ8V4MFNGfKH3iUPPV5z/Nnpn+GKNC60EggfRFDsSRSXbEE42gUyvlDAAD14sKTs+XKJl5VxnXbXPzJAxTU=@vger.kernel.org X-Gm-Message-State: AOJu0YydWVgpsqy8HsyJ0LFk8Jf94bz0y/CtUFS9VYhyLWqv7kA7AhmG x1pRw0vFM4RVtBltVtVb0CWX+x58oCgTvAcITikn/sqjr+wsOZziEobA X-Gm-Gg: Acq92OEZKPM5++1nVp8p3D1KnpgBdA/02GfPQTIOFJahNvAfwzI278jxlwTtUTYvCyg pLcUAzE33oNoGNbeqp7bI15FRcp0hLhWSGCNyrKHhLdfUdGikHQOdFrh5ELC4w6lR/NoPMf8NAN 2SC7hSb8NaWSI/C+wZ8SW6WRfh3rGn/nrJsNmpNR9KqfRUwTqnXrXeBCRLMfk3NWTJDnAzg0/KF /8Dtg0zQnPNyCsZ/oQRBbEP+VvmzVijwpiAsATQRHZLOO2EplQPxhIkiQvvjsyk6KVsydZwCxv7 RZnIPZyTzDF3rWV1z1pUKAQsWAI7/lmxHpA6IbL03vA3p57m+TBA2k5gR64yT0UBUFofXupr97U wZHwgTRJtSZkprqDKiShHhMS/pzWANCrYTybButBWFUs4agYqDPRuYEhEQ/EjzK4pm02yfE44tE tNqvhM1ab6Bbz2zQ== X-Received: by 2002:a05:6808:448d:b0:482:7a59:47a with SMTP id 5614622812f47-4854a505287mr6934995b6e.46.1779639147456; Sun, 24 May 2026 09:12:27 -0700 (PDT) Received: from localhost ([2a03:2880:10ff:70::]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-7e606482b65sm5482001a34.10.2026.05.24.09.12.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 24 May 2026 09:12:27 -0700 (PDT) From: Breno Leitao Date: Sun, 24 May 2026 09:12:20 -0700 Subject: [PATCH 4/9] netconsole: move refill_skbs() and skb-pool sizing macros from netpoll Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20260524-netconsole_move_more-v1-4-909d1ab398b4@debian.org> References: <20260524-netconsole_move_more-v1-0-909d1ab398b4@debian.org> In-Reply-To: <20260524-netconsole_move_more-v1-0-909d1ab398b4@debian.org> To: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Andrew Lunn Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, gustavold@gmail.com, asantostc@gmail.com, Breno Leitao , kernel-team@meta.com X-Mailer: b4 0.16-dev-d5d98 X-Developer-Signature: v=1; a=openpgp-sha256; l=3932; i=leitao@debian.org; h=from:subject:message-id; bh=DfAMocgapgQ/LI/qEUqGA8jdlKm8WnUDdcQZ9Oss0SE=; b=owEBbQKS/ZANAwAIATWjk5/8eHdtAcsmYgBqEyNlWNw3ugj9wFA7OW9WQeZKy2mrxbjA/GyBl trQ/M08IaeJAjMEAAEIAB0WIQSshTmm6PRnAspKQ5s1o5Of/Hh3bQUCahMjZQAKCRA1o5Of/Hh3 bd1IEACQFC685++1K0n3zuhL/63bxnY+H7TPcbfOIONCF9TvdoAISacN9gqyK8KCzPa6Lj4NBZz vaHNTRqDjDNGBzox3OGq9/Pv5/Bus5lO69TJhtTn5zKwX1uMdmNJpxj6tkhABg9p8BUZUZQVGrq gJ+148ge2a7ufXNFwvB+FUIjRaK+kJDu12wOr+JNcG9u5GRaC+yUFeKIXMYdfvLDCFmvGh3mE1s ja9GIPTdidlXhOKV1pa8/bKTC4P8b1ccdSiZqRBJ16RilpxBGsiNhxVHD9QYOIFC6qXbDTRFHaX WYVyaWU7sVeVFp7EOlsiYedroPK7/wqjaI5UaA/ykWoJksbqvWMlpLpNBh241pI4hQrp5LuGC1h 7/g/6iNLjSo8XE0G+ZHooimmgC2E+YWW5kM+ihiYvk2I1PifJO7jibQCxk/tl76Zl3OL+x2B31c CJBtSqOHRWvjoPpBLV8Q5/oi/kjtDwD+IK/WROAFeYtiE0JoRCkHPY1noD8KDe3wlC8gg7qhvyk xVnzDhEEgqzeH9HWT88EC3Y8A6AkU+DAbCi9lo9Mp7vbj4cpmKokBQhnUblVN1HnMdKNgKaXHDb 2vi4a2KTzWjruTL/5zHp9bV84Gc9rE9mXw/oixRinLzcTLEaBR13xQECxdDjLhkDYTp8gBXYy9e z4DLe6Ed2hPBuBw== X-Developer-Key: i=leitao@debian.org; a=openpgp; fpr=AC8539A6E8F46702CA4A439B35A3939FFC78776D refill_skbs() is now only called from netconsole (directly via netconsole_skb_pool_init() and indirectly via the just-moved refill_skbs_work_handler()), and the MAX_UDP_CHUNK / MAX_SKBS / MAX_SKB_SIZE macros are private to it. Move them all into drivers/net/netconsole.c. Drop EXPORT_SYMBOL_GPL(refill_skbs) and remove its prototype from ; the macros only ever lived as file-static defines in netpoll.c. Pure code motion: bodies and pool sizing semantics are unchanged. Signed-off-by: Breno Leitao --- drivers/net/netconsole.c | 29 +++++++++++++++++++++++++++++ include/linux/netpoll.h | 1 - net/core/netpoll.c | 30 ------------------------------ 3 files changed, 29 insertions(+), 31 deletions(-) diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c index 3d7d17c59902..76a569d487db 100644 --- a/drivers/net/netconsole.c +++ b/drivers/net/netconsole.c @@ -61,6 +61,19 @@ MODULE_IMPORT_NS("NETDEV_INTERNAL"); #define MAX_USERDATA_ITEMS 256 #define MAX_PRINT_CHUNK 1000 +/* + * Sizing for the per-target fallback skb pool consulted by find_skb() + * when its GFP_ATOMIC allocation fails so messages still get out under + * memory pressure. + */ +#define MAX_UDP_CHUNK 1460 +#define MAX_SKBS 32 +#define MAX_SKB_SIZE \ + (sizeof(struct ethhdr) + \ + sizeof(struct iphdr) + \ + sizeof(struct udphdr) + \ + MAX_UDP_CHUNK) + static char config[MAX_PARAM_LENGTH]; module_param_string(netconsole, config, MAX_PARAM_LENGTH, 0); MODULE_PARM_DESC(netconsole, " netconsole=[src-port]@[src-ip]/[dev],[tgt-port]@/[tgt-macaddr]"); @@ -283,6 +296,22 @@ static bool bound_by_mac(struct netconsole_target *nt) return is_valid_ether_addr(nt->np.dev_mac); } +static void refill_skbs(struct netpoll *np) +{ + struct sk_buff_head *skb_pool; + struct sk_buff *skb; + + skb_pool = &np->skb_pool; + + while (READ_ONCE(skb_pool->qlen) < MAX_SKBS) { + skb = alloc_skb(MAX_SKB_SIZE, GFP_ATOMIC); + if (!skb) + break; + + skb_queue_tail(skb_pool, skb); + } +} + static void refill_skbs_work_handler(struct work_struct *work) { struct netpoll *np = diff --git a/include/linux/netpoll.h b/include/linux/netpoll.h index 1a497d12f336..bc491f600a71 100644 --- a/include/linux/netpoll.h +++ b/include/linux/netpoll.h @@ -74,7 +74,6 @@ void netpoll_cleanup(struct netpoll *np); void do_netpoll_cleanup(struct netpoll *np); netdev_tx_t netpoll_send_skb(struct netpoll *np, struct sk_buff *skb); void netpoll_zap_completion_queue(void); -void refill_skbs(struct netpoll *np); void skb_pool_flush(struct netpoll *np); #ifdef CONFIG_NETPOLL diff --git a/net/core/netpoll.c b/net/core/netpoll.c index 4111d6ee8d4b..2fca74b4ea75 100644 --- a/net/core/netpoll.c +++ b/net/core/netpoll.c @@ -36,21 +36,8 @@ #include #include -/* - * We maintain a small pool of fully-sized skbs, to make sure the - * message gets out even in extreme OOM situations. - */ - -#define MAX_UDP_CHUNK 1460 -#define MAX_SKBS 32 #define USEC_PER_POLL 50 -#define MAX_SKB_SIZE \ - (sizeof(struct ethhdr) + \ - sizeof(struct iphdr) + \ - sizeof(struct udphdr) + \ - MAX_UDP_CHUNK) - static unsigned int carrier_timeout = 4; module_param(carrier_timeout, uint, 0644); @@ -220,23 +207,6 @@ void netpoll_poll_enable(struct net_device *dev) up(&ni->dev_lock); } -void refill_skbs(struct netpoll *np) -{ - struct sk_buff_head *skb_pool; - struct sk_buff *skb; - - skb_pool = &np->skb_pool; - - while (READ_ONCE(skb_pool->qlen) < MAX_SKBS) { - skb = alloc_skb(MAX_SKB_SIZE, GFP_ATOMIC); - if (!skb) - break; - - skb_queue_tail(skb_pool, skb); - } -} -EXPORT_SYMBOL_GPL(refill_skbs); - void netpoll_zap_completion_queue(void) { unsigned long flags; -- 2.54.0