From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from gandalf.ozlabs.org (mail.ozlabs.org [IPv6:2404:9400:2221:ea00::3]) by passt.top (Postfix) with ESMTPS id 564C85A0272 for ; Wed, 20 Dec 2023 08:09:18 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gibson.dropbear.id.au; s=202312; t=1703056152; bh=QvJepsa37CziO8Hddbc9O7gl5O5QjfZ/pf3Mf0oEcf0=; h=From:To:Cc:Subject:Date:From; b=IpKCiAB2FskXi8wUbRM98VFNZH/DBHbG9bxcGMjo1qJNIA7hgtc5F7RbOEpFzDCgA BRNyjCjBkau+acX0FvqGllCxojwMLKehixPk6ytybZCcd38Ad4cKy9IlhmlYZwlCeS uJHpK7Uq2D/YMbk0YfIr4dFsE7GGX4xiq0IOSgv9OG5HPxVPLzOBjk/7NMISOdoUI9 Wuh4Thw4cvNmeQrTK5Ei8tE38dWTN5v0EE309YX1n4GPTwqGLFVsCSqf2E3VRDUi09 z/YJDHRcSDMHXfJLM8BLLxxkpSQrtZkubnOmU9LPAQNjJe+DuHTnxVxDW2zkPObL+D vJWV6dsBc0+ow== Received: by gandalf.ozlabs.org (Postfix, from userid 1007) id 4Sw4Rr1Mcyz4wx5; Wed, 20 Dec 2023 18:09:12 +1100 (AEDT) From: David Gibson To: passt-dev@passt.top, Stefano Brivio Subject: [PATCH v2 00/13] Manage more flow related things from generic flow code Date: Wed, 20 Dec 2023 18:08:55 +1100 Message-ID: <20231220070908.2506277-1-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.43.0 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Message-ID-Hash: YEVNDKY4GRVEDXAWDB7OPM6YWSSZMZAE X-Message-ID-Hash: YEVNDKY4GRVEDXAWDB7OPM6YWSSZMZAE X-MailFrom: dgibson@gandalf.ozlabs.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: David Gibson X-Mailman-Version: 3.3.8 Precedence: list List-Id: Development discussion and patches for passt Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: There are a number of things that are more-or-less general to flows which are still explicitly handled in tcp.c and tcp_splice.c including allocation and freeing of flow entries, and dispatch of deferred and timer functions. Even without adding more fields to the common flow structure, we can handle a number of these in a more flow-centric way. Unlike v1 this version is based on the hash table rework series. Changes since v1: * Store the timestamp of last flow timers run in a global, rather than a ctx field * Rebased on the TCP hash table rework * Add patches 9..13/13 with changes to allocation and freeing of flow entries. David Gibson (13): flow: Make flow_table.h #include the protocol specific headers it needs treewide: Standardise on 'now' for current timestamp variables tcp, tcp_splice: Remove redundant handling from tcp_timer() tcp, tcp_splice: Move per-type cleanup logic into per-type helpers flow, tcp: Add flow-centric dispatch for deferred flow handling flow, tcp: Add handling for per-flow timers epoll: Better handling of number of epoll types tcp, tcp_splice: Avoid double layered dispatch for connected TCP sockets flow: Move flow_log_() to near top of flow.c flow: Move flow_count from context structure to a global flow: Abstract helpers for allocating new flows flow: Enforce that freeing of closed flows must happen in deferred handlers flow: Avoid moving flow entries to compact table flow.c | 201 +++++++++++++++++++++++++++++++++++++++++---------- flow.h | 5 +- flow_table.h | 34 +++++++++ icmp.c | 12 +-- icmp.h | 2 +- log.c | 34 ++++----- passt.c | 20 +++-- passt.h | 9 +-- tcp.c | 139 ++++++++--------------------------- tcp.h | 2 +- tcp_conn.h | 8 +- tcp_splice.c | 60 +++++++-------- tcp_splice.h | 6 +- udp.c | 16 ++-- udp.h | 2 +- 15 files changed, 317 insertions(+), 233 deletions(-) -- 2.43.0