public inbox for passt-dev@passt.top
 help / color / mirror / code / Atom feed
* [PATCH trivial 0/3] tcp_vu: Remove redundant header field assignments
@ 2026-03-20 13:51 Laurent Vivier
  2026-03-20 13:51 ` [PATCH trivial 1/3] tcp_vu: Remove redundant eh->h_proto assignments Laurent Vivier
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Laurent Vivier @ 2026-03-20 13:51 UTC (permalink / raw)
  To: passt-dev; +Cc: Laurent Vivier

tcp_vu_send_flag() and tcp_vu_prepare() set several header fields
that are unconditionally overwritten by tcp_fill_headers() or
tcp_prepare_flags() shortly after.

This series removes:
1. eh->h_proto assignments in both tcp_vu_send_flag() and
   tcp_vu_prepare(), overwritten by tcp_fill_headers()
2. eh->h_source memcpy in tcp_vu_send_flag(), overwritten by
   eth_update_mac() called from tcp_fill_headers()
3. th->doff and th->ack assignments in tcp_vu_send_flag(),
   overwritten by tcp_prepare_flags()

Laurent Vivier (3):
  tcp_vu: Remove redundant eh->h_proto assignments
  tcp_vu: Remove redundant eh->h_source assignment in tcp_vu_send_flag()
  tcp_vu: Remove redundant th->doff and th->ack in tcp_vu_send_flag()

 tcp_vu.c | 11 -----------
 1 file changed, 11 deletions(-)

-- 
2.53.0


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH trivial 1/3] tcp_vu: Remove redundant eh->h_proto assignments
  2026-03-20 13:51 [PATCH trivial 0/3] tcp_vu: Remove redundant header field assignments Laurent Vivier
@ 2026-03-20 13:51 ` Laurent Vivier
  2026-03-23 23:08   ` David Gibson
  2026-03-20 13:51 ` [PATCH trivial 2/3] tcp_vu: Remove redundant eh->h_source assignment in tcp_vu_send_flag() Laurent Vivier
  2026-03-20 13:51 ` [PATCH trivial 3/3] tcp_vu: Remove redundant th->doff and th->ack " Laurent Vivier
  2 siblings, 1 reply; 7+ messages in thread
From: Laurent Vivier @ 2026-03-20 13:51 UTC (permalink / raw)
  To: passt-dev; +Cc: Laurent Vivier

tcp_fill_headers() unconditionally sets eh->h_proto based on whether
ip4h or ip6h is non-NULL.  The assignments in tcp_vu_send_flag() and
tcp_vu_prepare() are therefore redundant and can be removed.

Signed-off-by: Laurent Vivier <lvivier@redhat.com>
---
 tcp_vu.c | 8 --------
 1 file changed, 8 deletions(-)

diff --git a/tcp_vu.c b/tcp_vu.c
index fd734e857b3b..c616b1fec2bf 100644
--- a/tcp_vu.c
+++ b/tcp_vu.c
@@ -105,15 +105,11 @@ int tcp_vu_send_flag(const struct ctx *c, struct tcp_tap_conn *conn, int flags)
 	memcpy(eh->h_source, c->our_tap_mac, sizeof(eh->h_source));
 
 	if (CONN_V4(conn)) {
-		eh->h_proto = htons(ETH_P_IP);
-
 		ip4h = vu_ip(flags_elem[0].in_sg[0].iov_base);
 		*ip4h = (struct iphdr)L2_BUF_IP4_INIT(IPPROTO_TCP);
 
 		th = vu_payloadv4(flags_elem[0].in_sg[0].iov_base);
 	} else {
-		eh->h_proto = htons(ETH_P_IPV6);
-
 		ip6h = vu_ip(flags_elem[0].in_sg[0].iov_base);
 		*ip6h = (struct ipv6hdr)L2_BUF_IP6_INIT(IPPROTO_TCP);
 		th = vu_payloadv6(flags_elem[0].in_sg[0].iov_base);
@@ -307,14 +303,10 @@ static void tcp_vu_prepare(const struct ctx *c, struct tcp_tap_conn *conn,
 	/* initialize header */
 
 	if (!v6) {
-		eh->h_proto = htons(ETH_P_IP);
-
 		ip4h = vu_ip(base);
 		*ip4h = (struct iphdr)L2_BUF_IP4_INIT(IPPROTO_TCP);
 		th = vu_payloadv4(base);
 	} else {
-		eh->h_proto = htons(ETH_P_IPV6);
-
 		ip6h = vu_ip(base);
 		*ip6h = (struct ipv6hdr)L2_BUF_IP6_INIT(IPPROTO_TCP);
 
-- 
2.53.0


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH trivial 2/3] tcp_vu: Remove redundant eh->h_source assignment in tcp_vu_send_flag()
  2026-03-20 13:51 [PATCH trivial 0/3] tcp_vu: Remove redundant header field assignments Laurent Vivier
  2026-03-20 13:51 ` [PATCH trivial 1/3] tcp_vu: Remove redundant eh->h_proto assignments Laurent Vivier
@ 2026-03-20 13:51 ` Laurent Vivier
  2026-03-23 23:10   ` David Gibson
  2026-03-20 13:51 ` [PATCH trivial 3/3] tcp_vu: Remove redundant th->doff and th->ack " Laurent Vivier
  2 siblings, 1 reply; 7+ messages in thread
From: Laurent Vivier @ 2026-03-20 13:51 UTC (permalink / raw)
  To: passt-dev; +Cc: Laurent Vivier

tcp_fill_headers() calls eth_update_mac(eh, NULL, omac) which
unconditionally overwrites eh->h_source.  The prior memcpy() setting
it to c->our_tap_mac is therefore redundant.

Signed-off-by: Laurent Vivier <lvivier@redhat.com>
---
 tcp_vu.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/tcp_vu.c b/tcp_vu.c
index c616b1fec2bf..9c4e916b1b8d 100644
--- a/tcp_vu.c
+++ b/tcp_vu.c
@@ -102,7 +102,6 @@ int tcp_vu_send_flag(const struct ctx *c, struct tcp_tap_conn *conn, int flags)
 	eh = vu_eth(flags_elem[0].in_sg[0].iov_base);
 
 	memcpy(eh->h_dest, c->guest_mac, sizeof(eh->h_dest));
-	memcpy(eh->h_source, c->our_tap_mac, sizeof(eh->h_source));
 
 	if (CONN_V4(conn)) {
 		ip4h = vu_ip(flags_elem[0].in_sg[0].iov_base);
-- 
2.53.0


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH trivial 3/3] tcp_vu: Remove redundant th->doff and th->ack in tcp_vu_send_flag()
  2026-03-20 13:51 [PATCH trivial 0/3] tcp_vu: Remove redundant header field assignments Laurent Vivier
  2026-03-20 13:51 ` [PATCH trivial 1/3] tcp_vu: Remove redundant eh->h_proto assignments Laurent Vivier
  2026-03-20 13:51 ` [PATCH trivial 2/3] tcp_vu: Remove redundant eh->h_source assignment in tcp_vu_send_flag() Laurent Vivier
@ 2026-03-20 13:51 ` Laurent Vivier
  2026-03-23 23:11   ` David Gibson
  2 siblings, 1 reply; 7+ messages in thread
From: Laurent Vivier @ 2026-03-20 13:51 UTC (permalink / raw)
  To: passt-dev; +Cc: Laurent Vivier

tcp_prepare_flags() unconditionally sets th->doff and th->ack, so
setting them right after the memset() is redundant.

Signed-off-by: Laurent Vivier <lvivier@redhat.com>
---
 tcp_vu.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/tcp_vu.c b/tcp_vu.c
index 9c4e916b1b8d..7a348eb01248 100644
--- a/tcp_vu.c
+++ b/tcp_vu.c
@@ -115,8 +115,6 @@ int tcp_vu_send_flag(const struct ctx *c, struct tcp_tap_conn *conn, int flags)
 	}
 
 	memset(th, 0, sizeof(*th));
-	th->doff = sizeof(*th) / 4;
-	th->ack = 1;
 
 	seq = conn->seq_to_tap;
 	opts = (struct tcp_syn_opts *)(th + 1);
-- 
2.53.0


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH trivial 1/3] tcp_vu: Remove redundant eh->h_proto assignments
  2026-03-20 13:51 ` [PATCH trivial 1/3] tcp_vu: Remove redundant eh->h_proto assignments Laurent Vivier
@ 2026-03-23 23:08   ` David Gibson
  0 siblings, 0 replies; 7+ messages in thread
From: David Gibson @ 2026-03-23 23:08 UTC (permalink / raw)
  To: Laurent Vivier; +Cc: passt-dev

[-- Attachment #1: Type: text/plain, Size: 1900 bytes --]

On Fri, Mar 20, 2026 at 02:51:14PM +0100, Laurent Vivier wrote:
> tcp_fill_headers() unconditionally sets eh->h_proto based on whether
> ip4h or ip6h is non-NULL.  The assignments in tcp_vu_send_flag() and
> tcp_vu_prepare() are therefore redundant and can be removed.
> 
> Signed-off-by: Laurent Vivier <lvivier@redhat.com>

Reviewed-by: David Gibson <david@gibson.dropbear.id.au>

> ---
>  tcp_vu.c | 8 --------
>  1 file changed, 8 deletions(-)
> 
> diff --git a/tcp_vu.c b/tcp_vu.c
> index fd734e857b3b..c616b1fec2bf 100644
> --- a/tcp_vu.c
> +++ b/tcp_vu.c
> @@ -105,15 +105,11 @@ int tcp_vu_send_flag(const struct ctx *c, struct tcp_tap_conn *conn, int flags)
>  	memcpy(eh->h_source, c->our_tap_mac, sizeof(eh->h_source));
>  
>  	if (CONN_V4(conn)) {
> -		eh->h_proto = htons(ETH_P_IP);
> -
>  		ip4h = vu_ip(flags_elem[0].in_sg[0].iov_base);
>  		*ip4h = (struct iphdr)L2_BUF_IP4_INIT(IPPROTO_TCP);
>  
>  		th = vu_payloadv4(flags_elem[0].in_sg[0].iov_base);
>  	} else {
> -		eh->h_proto = htons(ETH_P_IPV6);
> -
>  		ip6h = vu_ip(flags_elem[0].in_sg[0].iov_base);
>  		*ip6h = (struct ipv6hdr)L2_BUF_IP6_INIT(IPPROTO_TCP);
>  		th = vu_payloadv6(flags_elem[0].in_sg[0].iov_base);
> @@ -307,14 +303,10 @@ static void tcp_vu_prepare(const struct ctx *c, struct tcp_tap_conn *conn,
>  	/* initialize header */
>  
>  	if (!v6) {
> -		eh->h_proto = htons(ETH_P_IP);
> -
>  		ip4h = vu_ip(base);
>  		*ip4h = (struct iphdr)L2_BUF_IP4_INIT(IPPROTO_TCP);
>  		th = vu_payloadv4(base);
>  	} else {
> -		eh->h_proto = htons(ETH_P_IPV6);
> -
>  		ip6h = vu_ip(base);
>  		*ip6h = (struct ipv6hdr)L2_BUF_IP6_INIT(IPPROTO_TCP);
>  
> -- 
> 2.53.0
> 

-- 
David Gibson (he or they)	| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you, not the other way
				| around.
http://www.ozlabs.org/~dgibson

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH trivial 2/3] tcp_vu: Remove redundant eh->h_source assignment in tcp_vu_send_flag()
  2026-03-20 13:51 ` [PATCH trivial 2/3] tcp_vu: Remove redundant eh->h_source assignment in tcp_vu_send_flag() Laurent Vivier
@ 2026-03-23 23:10   ` David Gibson
  0 siblings, 0 replies; 7+ messages in thread
From: David Gibson @ 2026-03-23 23:10 UTC (permalink / raw)
  To: Laurent Vivier; +Cc: passt-dev

[-- Attachment #1: Type: text/plain, Size: 1134 bytes --]

On Fri, Mar 20, 2026 at 02:51:15PM +0100, Laurent Vivier wrote:
> tcp_fill_headers() calls eth_update_mac(eh, NULL, omac) which
> unconditionally overwrites eh->h_source.  The prior memcpy() setting
> it to c->our_tap_mac is therefore redundant.
> 
> Signed-off-by: Laurent Vivier <lvivier@redhat.com>

Reviewed-by: David Gibson <david@gibson.dropbear.id.au>

> ---
>  tcp_vu.c | 1 -
>  1 file changed, 1 deletion(-)
> 
> diff --git a/tcp_vu.c b/tcp_vu.c
> index c616b1fec2bf..9c4e916b1b8d 100644
> --- a/tcp_vu.c
> +++ b/tcp_vu.c
> @@ -102,7 +102,6 @@ int tcp_vu_send_flag(const struct ctx *c, struct tcp_tap_conn *conn, int flags)
>  	eh = vu_eth(flags_elem[0].in_sg[0].iov_base);
>  
>  	memcpy(eh->h_dest, c->guest_mac, sizeof(eh->h_dest));
> -	memcpy(eh->h_source, c->our_tap_mac, sizeof(eh->h_source));
>  
>  	if (CONN_V4(conn)) {
>  		ip4h = vu_ip(flags_elem[0].in_sg[0].iov_base);
> -- 
> 2.53.0
> 

-- 
David Gibson (he or they)	| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you, not the other way
				| around.
http://www.ozlabs.org/~dgibson

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH trivial 3/3] tcp_vu: Remove redundant th->doff and th->ack in tcp_vu_send_flag()
  2026-03-20 13:51 ` [PATCH trivial 3/3] tcp_vu: Remove redundant th->doff and th->ack " Laurent Vivier
@ 2026-03-23 23:11   ` David Gibson
  0 siblings, 0 replies; 7+ messages in thread
From: David Gibson @ 2026-03-23 23:11 UTC (permalink / raw)
  To: Laurent Vivier; +Cc: passt-dev

[-- Attachment #1: Type: text/plain, Size: 986 bytes --]

On Fri, Mar 20, 2026 at 02:51:16PM +0100, Laurent Vivier wrote:
> tcp_prepare_flags() unconditionally sets th->doff and th->ack, so
> setting them right after the memset() is redundant.
> 
> Signed-off-by: Laurent Vivier <lvivier@redhat.com>

Reviewed-by: David Gibson <david@gibson.dropbear.id.au>

> ---
>  tcp_vu.c | 2 --
>  1 file changed, 2 deletions(-)
> 
> diff --git a/tcp_vu.c b/tcp_vu.c
> index 9c4e916b1b8d..7a348eb01248 100644
> --- a/tcp_vu.c
> +++ b/tcp_vu.c
> @@ -115,8 +115,6 @@ int tcp_vu_send_flag(const struct ctx *c, struct tcp_tap_conn *conn, int flags)
>  	}
>  
>  	memset(th, 0, sizeof(*th));
> -	th->doff = sizeof(*th) / 4;
> -	th->ack = 1;
>  
>  	seq = conn->seq_to_tap;
>  	opts = (struct tcp_syn_opts *)(th + 1);
> -- 
> 2.53.0
> 

-- 
David Gibson (he or they)	| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you, not the other way
				| around.
http://www.ozlabs.org/~dgibson

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2026-03-23 23:11 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-03-20 13:51 [PATCH trivial 0/3] tcp_vu: Remove redundant header field assignments Laurent Vivier
2026-03-20 13:51 ` [PATCH trivial 1/3] tcp_vu: Remove redundant eh->h_proto assignments Laurent Vivier
2026-03-23 23:08   ` David Gibson
2026-03-20 13:51 ` [PATCH trivial 2/3] tcp_vu: Remove redundant eh->h_source assignment in tcp_vu_send_flag() Laurent Vivier
2026-03-23 23:10   ` David Gibson
2026-03-20 13:51 ` [PATCH trivial 3/3] tcp_vu: Remove redundant th->doff and th->ack " Laurent Vivier
2026-03-23 23:11   ` David Gibson

Code repositories for project(s) associated with this public inbox

	https://passt.top/passt

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for IMAP folder(s).