Received: by 2002:ac2:464d:0:0:0:0:0 with SMTP id s13csp3678428lfo; Mon, 23 May 2022 11:10:04 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw4XO807zbFUio8MMSB46uBTFqAe4e20Ac0aUk8Gjuqeqh1KBN3Vk/VU5HOILDIZNTXc8OD X-Received: by 2002:a17:902:c2d0:b0:15a:2344:f8a4 with SMTP id c16-20020a170902c2d000b0015a2344f8a4mr23722044pla.28.1653329404165; Mon, 23 May 2022 11:10:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1653329404; cv=none; d=google.com; s=arc-20160816; b=uezKUVYmf6nveG0BYD2z7z2HqyNt0p+KE+fAnP4e6K+bLkkCKOzc1g6+U7uS/M5/tS mtw7yLTFFXdqfkEetVBvV5HctmLwTlfjh/nJ1YcGVeYHSUwRFXb9RReDXfrQ9ITgxudJ Go/FM8eqA713FbutTuPnJT5QlAtYzGEPaL5vE+dhYSVc/nKVrmL6z2i6lUvS6vMKC42g N3PmJhkoP0LfEOukDD4xByQ0rSia9T1RDYY4MUgg+/XJ5p56niaESJQMg4x2UXNhrVfX PBe8hiy4lz64N/0TB+fHWW5Vonk8l210NbPf9dZL+OynKjRfSevjAlwc+bmhqpkI99Sg A82A== 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=uTHjfoHjLoaM/7PfvmtC7zYD9r2L18vs3yPXNNkWw1Mp4duCKY9AkZiEkCFhaQORd7 VuEpRq7c7QfWz771J5/BWNFLISRl7QVFp9U3VRmJIdMZJteVCjaTxyKRuBdDzf7D9Zjo KDn0POkLEZOQHtv1QuvFqWsTrTCKYAiOOaweKD9VIJjUg+yE8Nagd7UJKdZ1DcKcJ2e5 Q/Es3lZY9suOUemv352IbFcZnuh1hjKNUpP9JKSvCx9NLcy/v8X2CvUANo3FgNYIiX02 S5uKFWAQHyCvpqi7Zgf3b7QSCJOL0wU/OArM5amuyMw5Vbx6bXtPJcCHkNUB27UFh3RY 1L5Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=nGBXGB6p; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 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. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id i11-20020a6551cb000000b0039cb90dd2e9si11630139pgq.132.2022.05.23.11.10.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 May 2022 11:10:04 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=nGBXGB6p; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 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 781A9275FE; Mon, 23 May 2022 11:09:39 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243736AbiEWSCC (ORCPT + 99 others); Mon, 23 May 2022 14:02:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34892 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240692AbiEWRdt (ORCPT ); Mon, 23 May 2022 13:33:49 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4139A7CB36; Mon, 23 May 2022 10:27:54 -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 dfw.source.kernel.org (Postfix) with ESMTPS id D2F3860916; Mon, 23 May 2022 17:27:53 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id DA127C34115; Mon, 23 May 2022 17:27:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1653326873; bh=Kb3EsYIGclp3SjLyiWotONiDJkvSpTjwoijaEjgWOrc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=nGBXGB6pHFg0KSkFlZnqQCAcxHnMZmPTKGABd8JMJzlbVHGBWKq2im1X04S/dNgmj 3JIqT7AjREAF8HjAmC7NE3KsDhSQmEsuQyVKBIcU8lZVgH9qdtqE6zVI7elH5D9The 5p/eJqHY7GTfLccVRJOiXU4Th3623bZFEspD+9VE= 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.17 085/158] netfilter: flowtable: fix excessive hw offload attempts after failure Date: Mon, 23 May 2022 19:04:02 +0200 Message-Id: <20220523165845.201616537@linuxfoundation.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220523165830.581652127@linuxfoundation.org> References: <20220523165830.581652127@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