What's the status of this diff?

On 2021/09/21 17:30, Alexander Bluhm wrote:
> On Sat, Sep 18, 2021 at 02:35:20PM +0200, Jan Klemkow wrote:
> > The following diff removes the every 2nd ACK feature again and ensures
> > that we send out an ACK if soreceive() empties the receive buffer.
> 
> Looks good in my perform tests, 22% tcp throughput increase.
> 
> http://bluhm.genua.de/perform/results/2021-09-20T11:05:31Z/perform.html
> http://bluhm.genua.de/perform/results/2021-09-20T11:05:31Z/gnuplot/tcp.html
> 
> > We are so close to 7.0, that I would suggest to commit this after the
> > release.  Thus, we don't risk another last minute regression.
> > 
> > OK?
> 
> OK bluhm@ post 7.0
> 
> > Index: netinet/tcp_input.c
> > ===================================================================
> > RCS file: /cvs/src/sys/netinet/tcp_input.c,v
> > retrieving revision 1.370
> > diff -u -p -r1.370 tcp_input.c
> > --- netinet/tcp_input.c     9 Aug 2021 17:03:08 -0000       1.370
> > +++ netinet/tcp_input.c     18 Sep 2021 07:53:45 -0000
> > @@ -176,8 +176,7 @@ do { \
> >     struct ifnet *ifp = NULL; \
> >     if (m && (m->m_flags & M_PKTHDR)) \
> >             ifp = if_get(m->m_pkthdr.ph_ifidx); \
> > -   if (TCP_TIMER_ISARMED(tp, TCPT_DELACK) || \
> > -       (tcp_ack_on_push && (tiflags) & TH_PUSH) || \
> > +   if ((tcp_ack_on_push && (tiflags) & TH_PUSH) || \
> >         (ifp && (ifp->if_flags & IFF_LOOPBACK))) \
> >             tp->t_flags |= TF_ACKNOW; \
> >     else \
> > Index: netinet/tcp_usrreq.c
> > ===================================================================
> > RCS file: /cvs/src/sys/netinet/tcp_usrreq.c,v
> > retrieving revision 1.181
> > diff -u -p -r1.181 tcp_usrreq.c
> > --- netinet/tcp_usrreq.c    30 Apr 2021 13:52:48 -0000      1.181
> > +++ netinet/tcp_usrreq.c    18 Sep 2021 07:53:45 -0000
> > @@ -329,8 +329,15 @@ tcp_usrreq(struct socket *so, int req, s
> >              * template for a listening socket and hence the kernel
> >              * will panic.
> >              */
> > -           if ((so->so_state & (SS_ISCONNECTED|SS_ISCONNECTING)) != 0)
> > +           if ((so->so_state & (SS_ISCONNECTED|SS_ISCONNECTING)) != 0) {
> > +                   /*
> > +                    * If soreceive() empty the receive buffer, we have to
> > +                    * send a window update.
> > +                    */
> > +                   if (so->so_rcv.sb_cc == 0)
> > +                           tp->t_flags |= TF_ACKNOW;
> >                     (void) tcp_output(tp);
> > +           }
> >             break;
> >  
> >     /*
> 

Reply via email to