Received: by 2002:a05:6602:18e:0:0:0:0 with SMTP id m14csp2127415ioo; Mon, 23 May 2022 10:39:51 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx2y9iSP1Wd3sOuGxIRSPyGItbQ/tavHltd75BUKeJnAXBdhodggm/AV3bKWecgZyG3dQkw X-Received: by 2002:aa7:888a:0:b0:518:a0b8:f5c1 with SMTP id z10-20020aa7888a000000b00518a0b8f5c1mr5944515pfe.46.1653327591064; Mon, 23 May 2022 10:39:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1653327591; cv=none; d=google.com; s=arc-20160816; b=dExqHwkYy8Kr8P6D48mWh5YDNgHBEeLxoCVyYfykhVuyW2tQiVeoRCiTO/LeQP6dUG Fq6mxSRcp2rjVFcAUfUHY3a091CMlqvCDNJgdby+rTM/qAY1T97Du9SJ4HEkZd9DcnMc fGgo65gl9pE9xsYNP/B/rP9SHZ3nnLcPdvAHGcVEdBLrO3df2ry8EkAL/7qrGic1rMzU hWalz4HLTr/UxQwGsbBHlMNWFpPLY1F6UQL+nVwGJqZe9kA1boiPTUvblGnbcptNi2Zg ViKGkJMlLoYtYzd93GOQGelMa+SLxFVHnACaBl8zEKhHaACifaK8cfpjqfVeHpkARd1e haPw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=o7RL+FT/bzdMwR6P0NfJEN+CauemS0MPCQfaVF/tNfs=; b=Gvvsy7yAPEcPW6S5oPYJbTsVWcfxTeUMrbAbqXDE+E2luhTLBrNiFwf9ocJIFmzttq OjTc9TUidUrf+W4ZoXGnHIFE15KM1ozn8C20No2znzEwQ6S5xH1qUQnX2bACoKZB1F5G Rz5I+g0t8WY4Cg13uGflIlURNqDYi1W///J1NKUfcb/ZxT6fjDi2LJCO3yzaScYQyQLc 7zpiERefd53ecE2+yhbEBvb+SNoIYHXn0OFzbr4LEW2YMMm2HLyGJpkpPsNf1lpSUXNk UhcwqObfu0lidV3GpKqxlBzra0AXljErkeSLkPAk6n2YrLzD7H26FvfcfO0roTEt9Eds z0Zw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=NYj8mXno; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [23.128.96.19]) by mx.google.com with ESMTPS id h187-20020a6253c4000000b00510368029a9si13257435pfb.282.2022.05.23.10.39.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 May 2022 10:39:51 -0700 (PDT) Received-SPF: softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) client-ip=23.128.96.19; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=NYj8mXno; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id DFBF665D31; Mon, 23 May 2022 10:39:31 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241920AbiEWRg0 (ORCPT + 99 others); Mon, 23 May 2022 13:36:26 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43392 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240984AbiEWR0O (ORCPT ); Mon, 23 May 2022 13:26:14 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4954963E4; Mon, 23 May 2022 10:21:17 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id A5FEBB811FE; Mon, 23 May 2022 17:21:16 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E9F22C385A9; Mon, 23 May 2022 17:21:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1653326475; bh=Kb3EsYIGclp3SjLyiWotONiDJkvSpTjwoijaEjgWOrc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=NYj8mXnoYZeq5qaazy+HwvyMT71+iFeEm7koeT3+WS/XS8GcGgAx5QiWrrLODSglt YKSS7bSBuJPC7wVpc9wlM533pCNc4dhB/aXZ7dJYHyyBt5vGYvtZv96qskbjAk/FhF VwsV7RU6vHqV4T3Uirtxfhsag0Gc19CjOJxclGws= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Felix Fietkau , Pablo Neira Ayuso , Sasha Levin Subject: [PATCH 5.15 075/132] netfilter: flowtable: fix excessive hw offload attempts after failure Date: Mon, 23 May 2022 19:04:44 +0200 Message-Id: <20220523165835.568193404@linuxfoundation.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220523165823.492309987@linuxfoundation.org> References: <20220523165823.492309987@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Felix Fietkau [ Upstream commit 396ef64113a8ba01c46315d67a99db8dde3eef51 ] If a flow cannot be offloaded, the code currently repeatedly tries again as quickly as possible, which can significantly increase system load. Fix this by limiting flow timeout update and hardware offload retry to once per second. Fixes: c07531c01d82 ("netfilter: flowtable: Remove redundant hw refresh bit") Signed-off-by: Felix Fietkau Signed-off-by: Pablo Neira Ayuso Signed-off-by: Sasha Levin --- net/netfilter/nf_flow_table_core.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/net/netfilter/nf_flow_table_core.c b/net/netfilter/nf_flow_table_core.c index b90eca7a2f22..52e7f94d2450 100644 --- a/net/netfilter/nf_flow_table_core.c +++ b/net/netfilter/nf_flow_table_core.c @@ -329,8 +329,10 @@ void flow_offload_refresh(struct nf_flowtable *flow_table, u32 timeout; timeout = nf_flowtable_time_stamp + flow_offload_get_timeout(flow); - if (READ_ONCE(flow->timeout) != timeout) + if (timeout - READ_ONCE(flow->timeout) > HZ) WRITE_ONCE(flow->timeout, timeout); + else + return; if (likely(!nf_flowtable_hw_offload(flow_table))) return; -- 2.35.1