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 5C29F5A0274 for ; Tue, 26 Mar 2024 06:42:31 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gibson.dropbear.id.au; s=202312; t=1711431746; bh=KowpxuOCtltj4Zf06L7huaI5sKQYg0F1v5vZ0+Q70wY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=enx/t6jvqz/nXgO7nbFx5BfbcYJQ+b5wxeLFBHIp60WB+zAZjElwJCELPh9w99LOl xTCkn0q6jyxtAOvYZki5rbxHla+oeDyBaJcah3BN3li5815BnRBgN5+WCQ7C7SqjYJ DqzX/JqSxViob6R1ZNKKCNA/5jZh/SZNNlZZJhGR+CkjwWSmz2G1sHdzdQctj+dynd PdS3/A7wpqhtzKMWC2/EAmD9zF+jHF2JDy0mr2WuclJkUwhB3xvaCL4OUubVk3rPlG c4oTx57KEI5kxUmpfjBpZMg1N+in/AgzJRh2xtLRvNjNbYyj8IEe1MZ1n3ukjIQ8Ly L3qDaZdOLGBNw== Received: by gandalf.ozlabs.org (Postfix, from userid 1007) id 4V3dwy64ngz4wcs; Tue, 26 Mar 2024 16:42:26 +1100 (AEDT) From: David Gibson To: passt-dev@passt.top, Stefano Brivio Subject: [PATCH 2/4] tcp: Rearrange logic for setting ACK flag in tcp_send_flag() Date: Tue, 26 Mar 2024 16:42:22 +1100 Message-ID: <20240326054224.716874-3-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20240326054224.716874-1-david@gibson.dropbear.id.au> References: <20240326054224.716874-1-david@gibson.dropbear.id.au> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Message-ID-Hash: LP4EWCHBI5JIUMG7IBNEGYU5PFYYPMNM X-Message-ID-Hash: LP4EWCHBI5JIUMG7IBNEGYU5PFYYPMNM 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: maxi.rostock@outlook.de, pholzing@redhat.com, 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: We have different paths for controlling the ACK flag for the SYN and !SYN paths. This amounts to sometimes forcing on the ACK flag in the !SYN path regardless of options. We can rearrange things to explicitly be that which will make things neater for some future changes. Signed-off-by: David Gibson --- tcp.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/tcp.c b/tcp.c index edd3d899..47954d11 100644 --- a/tcp.c +++ b/tcp.c @@ -1674,16 +1674,15 @@ static int tcp_send_flag(struct ctx *c, struct tcp_tap_conn *conn, int flags) *data++ = OPT_WS; *data++ = OPT_WS_LEN; *data++ = conn->ws_to_tap; - - th->ack = !!(flags & ACK); } else { - th->ack = !!(flags & ACK)) || - conn->seq_ack_to_tap != prev_ack_to_tap || - !prev_wnd_to_tap; + if (conn->seq_ack_to_tap != prev_ack_to_tap || + !prev_wnd_to_tap) + flags |= ACK; } th->doff = (sizeof(*th) + optlen) / 4; + th->ack = !!(flags & ACK); th->rst = !!(flags & RST); th->syn = !!(flags & SYN); th->fin = !!(flags & FIN); -- 2.44.0