On Fri, Nov 03, 2023 at 05:21:53PM +0100, Stefano Brivio wrote: > On Thu, 12 Oct 2023 12:51:11 +1100 > David Gibson wrote: > > > tcp_splice_timer() has two very similar blocks one after another that > > handle the SO_RCVLOWAT flags for the two sides of the connection. We can > > deduplicate this with a loop across the two sides. > > > > Signed-off-by: David Gibson > > --- > > tcp_splice.c | 27 +++++++++++---------------- > > 1 file changed, 11 insertions(+), 16 deletions(-) > > > > diff --git a/tcp_splice.c b/tcp_splice.c > > index 4a0580c..259d774 100644 > > --- a/tcp_splice.c > > +++ b/tcp_splice.c > > @@ -835,30 +835,25 @@ void tcp_splice_init(struct ctx *c) > > void tcp_splice_timer(struct ctx *c, union tcp_conn *conn_union) > > { > > struct tcp_splice_conn *conn = &conn_union->splice; > > + int side; > > > > if (conn->flags & CLOSING) { > > tcp_splice_destroy(c, conn_union); > > return; > > } > > > > - if ( (conn->flags & RCVLOWAT_SET_0) && > > - !(conn->flags & RCVLOWAT_ACT_0)) { > > - if (setsockopt(conn->s[0], SOL_SOCKET, SO_RCVLOWAT, > > - &((int){ 1 }), sizeof(int))) { > > - trace("TCP (spliced): can't set SO_RCVLOWAT on " > > - "%i", conn->s[0]); > > - } > > - conn_flag(c, conn, ~RCVLOWAT_SET_0); > > - } > > + for (side = 0; side < SIDES; side++) { > > + uint8_t set = side == 0 ? RCVLOWAT_SET_0 : RCVLOWAT_SET_1; > > + uint8_t act = side == 0 ? RCVLOWAT_ACT_0 : RCVLOWAT_ACT_1; > > > > - if ( (conn->flags & RCVLOWAT_SET_1) && > > - !(conn->flags & RCVLOWAT_ACT_1)) { > > - if (setsockopt(conn->s[1], SOL_SOCKET, SO_RCVLOWAT, > > - &((int){ 1 }), sizeof(int))) { > > - trace("TCP (spliced): can't set SO_RCVLOWAT on " > > - "%i", conn->s[1]); > > + if ( (conn->flags & set) && !(conn->flags & act)) { > ^ > > Nit: this extra whitespace is now useless. Corrected. -- David Gibson | 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