From patchwork Tue Nov 6 15:33:07 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Taehee Yoo X-Patchwork-Id: 993777 X-Patchwork-Delegate: pablo@netfilter.org Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netfilter-devel-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="IVDMeFn/"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 42qD8g5BCTz9sBh for ; Wed, 7 Nov 2018 02:33:23 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388425AbeKGA7H (ORCPT ); Tue, 6 Nov 2018 19:59:07 -0500 Received: from mail-pl1-f194.google.com ([209.85.214.194]:41812 "EHLO mail-pl1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2387741AbeKGA7H (ORCPT ); Tue, 6 Nov 2018 19:59:07 -0500 Received: by mail-pl1-f194.google.com with SMTP id p16-v6so6365674plr.8 for ; Tue, 06 Nov 2018 07:33:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=Ry9jY1wRoQMBheV7lRn/0rwgtKCAV35wsPcT97OV1/Q=; b=IVDMeFn/VjgmTfgR7xOjzXMSS0VC5ZBdb1kyx+c5Ga5WB/HsEhmqx2Lq3gE3H0vbM/ gW7oSzXu4YD62Ceu8twoE3r3c7tsGaEPZ6UGe/1mOq4LG80EBexHMe/9suRw/5djBMW/ rCKjPVGmVL1n+Lt3dVblCV15g2Ez1Njp2Vx6AoiI0cv0l4dYghDHguoZdpb3gekG7gpp B94b4Rr7DNkwxCuN5URhYoJO1Gk7QixY0StGrfNzGCKIYn0dmbTMZKizb2r+axQIqXXR gtqmitB3DekF6amruN56tQ+KNqrEvtTVLIHgfm8j9PCiDlTz5Zn8K2TkCh3duL3/6/ir VjDA== 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=Ry9jY1wRoQMBheV7lRn/0rwgtKCAV35wsPcT97OV1/Q=; b=mFbcrZaAQgi2TvdaoP7Sv6yMkLavkPpQmY4ZiFfVrf2Rb+Pw6iKU3Vy5WJ3wBxYNQ6 ue000HrmnSSTOfgDMxu0JCbzFm24A7KJcqRv6BbTVGNM+O7+i5LApnrMzIbvtZCBKpH5 smqShfhl+maK4AhG4ImI4SkjQkz/K7a7NWivqfESuJXx/rQTsnrQZu2l7BwMobMh/SBm HP+9R2sbszOnT+zKZ++djLPOW9Y24HWWVA4V7qKY1PuPlxR9wPiaFglbLFI1VL0NhVUJ p9sSyRgxGiEI0XDsK6dKpJVUBrVpRtCAgUAtOgLFE6LcPKw+5Li/LyUbb4MEsqVQR/i0 qr7A== X-Gm-Message-State: AGRZ1gL4MGT91p6GddkZMcQye6Rh4oF5LJBGU4Rmlt/H5A7bAxZQqdME 4yG+3YbpBQ3PGQjLRjyhwQU= X-Google-Smtp-Source: AJdET5cdAIYH6an5qrQghbW02StDTM3ZUgmeZQX0l0ezbvti6xVtx8Qj9jtjEY+D2Jq6HCJmKsXejA== X-Received: by 2002:a17:902:343:: with SMTP id 61-v6mr25923577pld.327.1541518401078; Tue, 06 Nov 2018 07:33:21 -0800 (PST) Received: from ap-To-be-filled-by-O-E-M.8.8.8.8 ([125.130.197.10]) by smtp.gmail.com with ESMTPSA id n2-v6sm47240593pgg.86.2018.11.06.07.33.18 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Nov 2018 07:33:20 -0800 (PST) From: Taehee Yoo To: pablo@netfilter.org, netfilter-devel@vger.kernel.org Cc: ap420073@gmail.com Subject: [PATCH nf-next 2/2] netfilter: nf_flow_table: simplify nf_flow_offload_gc_step() Date: Wed, 7 Nov 2018 00:33:07 +0900 Message-Id: <20181106153307.15877-1-ap420073@gmail.com> X-Mailer: git-send-email 2.17.1 Sender: netfilter-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netfilter-devel@vger.kernel.org nf_flow_offload_gc_step() and nf_flow_table_iterate() are very similar. so that many duplicate code can be removed. After this patch, nf_flow_offload_gc_step() is simple callback function of nf_flow_table_iterate() like nf_flow_table_do_cleanup(). Signed-off-by: Taehee Yoo --- net/netfilter/nf_flow_table_core.c | 34 ++++++------------------------ 1 file changed, 7 insertions(+), 27 deletions(-) diff --git a/net/netfilter/nf_flow_table_core.c b/net/netfilter/nf_flow_table_core.c index 58bb006cf1b8..fa0844e2a68d 100644 --- a/net/netfilter/nf_flow_table_core.c +++ b/net/netfilter/nf_flow_table_core.c @@ -286,33 +286,13 @@ static inline bool nf_flow_has_expired(const struct flow_offload *flow) return (__s32)(flow->timeout - (u32)jiffies) <= 0; } -static void nf_flow_offload_gc_step(struct nf_flowtable *flow_table) +static void nf_flow_offload_gc_step(struct flow_offload *flow, void *data) { - struct flow_offload_tuple_rhash *tuplehash; - struct rhashtable_iter hti; - struct flow_offload *flow; - - rhashtable_walk_enter(&flow_table->rhashtable, &hti); - rhashtable_walk_start(&hti); + struct nf_flowtable *flow_table = data; - while ((tuplehash = rhashtable_walk_next(&hti))) { - if (IS_ERR(tuplehash)) { - if (PTR_ERR(tuplehash) != -EAGAIN) - break; - continue; - } - if (tuplehash->tuple.dir) - continue; - - flow = container_of(tuplehash, struct flow_offload, tuplehash[0]); - - if (nf_flow_has_expired(flow) || - (flow->flags & (FLOW_OFFLOAD_DYING | - FLOW_OFFLOAD_TEARDOWN))) - flow_offload_del(flow_table, flow); - } - rhashtable_walk_stop(&hti); - rhashtable_walk_exit(&hti); + if (nf_flow_has_expired(flow) || + (flow->flags & (FLOW_OFFLOAD_DYING | FLOW_OFFLOAD_TEARDOWN))) + flow_offload_del(flow_table, flow); } static void nf_flow_offload_work_gc(struct work_struct *work) @@ -320,7 +300,7 @@ static void nf_flow_offload_work_gc(struct work_struct *work) struct nf_flowtable *flow_table; flow_table = container_of(work, struct nf_flowtable, gc_work.work); - nf_flow_offload_gc_step(flow_table); + nf_flow_table_iterate(flow_table, nf_flow_offload_gc_step, flow_table); queue_delayed_work(system_power_efficient_wq, &flow_table->gc_work, HZ); } @@ -504,7 +484,7 @@ void nf_flow_table_free(struct nf_flowtable *flow_table) mutex_unlock(&flowtable_lock); cancel_delayed_work_sync(&flow_table->gc_work); nf_flow_table_iterate(flow_table, nf_flow_table_do_cleanup, NULL); - nf_flow_offload_gc_step(flow_table); + nf_flow_table_iterate(flow_table, nf_flow_offload_gc_step, flow_table); rhashtable_destroy(&flow_table->rhashtable); } EXPORT_SYMBOL_GPL(nf_flow_table_free);