From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from gandalf.ozlabs.org (gandalf.ozlabs.org [150.107.74.76]) by passt.top (Postfix) with ESMTPS id 134B15A026D for ; Thu, 21 Dec 2023 07:15:59 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gibson.dropbear.id.au; s=202312; t=1703139352; bh=MEqcjk5UrGQvLn5f8OaLw0wduQcpE7jnN+pR3VPyJKg=; h=From:To:Cc:Subject:Date:From; b=P0GvP5F/WdbefSIoQUIeRHIHEePIOfih8pGTutQQeYkuPdu/CBda7yZpUUJ6TQlnU CkhxLGP3YQK6mWMOIwhV52LQJIe9+oZRvOkxeQuq8F1ST0sa9bv/7R69V6tqBgiFDj KiC4hu+BlR5OI/bBy7KtQUm32Zb+i1Q0kHcXCwW6Tz6dQE0Elewi8MrsOpKaXe9ONU oBCnTIsYJqp05Fk+OvWaQOpf+S+5l8tSRqfoondXpz0K6Kn9pVLNWFEyHCKpPTkhsb ngCMDg3W6MAXearn7/HJe0Ahyci9O1xUWp77msRvZR6XQ/TEi6szIZejVq0fTayydM 8PoIBs5z2gkbA== Received: by gandalf.ozlabs.org (Postfix, from userid 1007) id 4SwgCr3F4fz4xNG; Thu, 21 Dec 2023 17:15:52 +1100 (AEDT) From: David Gibson To: passt-dev@passt.top, Stefano Brivio Subject: [PATCH v3 00/13] Manage more flow related things from generic flow code Date: Thu, 21 Dec 2023 17:15:36 +1100 Message-ID: <20231221061549.976358-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: 2E4NMEWMEYX6NDWHZLNVKGWKXI6QKLJ4 X-Message-ID-Hash: 2E4NMEWMEYX6NDWHZLNVKGWKXI6QKLJ4 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 v2: * Realised the prealloc/commit functions where confusing and worked poorly for some future stuff. Replaced with alloc/alloc_cancel * Fixed a bug where newly allocated flow entries might not be 0-filled, because of the free tracking information in there. This could cause very subtle problems. 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 allocation of new flows with helper function flow: Enforce that freeing of closed flows must happen in deferred handlers flow: Avoid moving flow entries to compact table flow.c | 223 ++++++++++++++++++++++++++++++++++++++++++--------- flow.h | 5 +- flow_table.h | 20 +++++ icmp.c | 12 +-- icmp.h | 2 +- log.c | 34 ++++---- passt.c | 20 +++-- passt.h | 9 +-- tcp.c | 143 +++++++++------------------------ tcp.h | 2 +- tcp_conn.h | 8 +- tcp_splice.c | 49 +++++------ tcp_splice.h | 4 +- udp.c | 16 ++-- udp.h | 2 +- 15 files changed, 324 insertions(+), 225 deletions(-) -- 2.43.0