Re: svn commit: r349893 - in head/sys: modules/tcp/rack netinet netinet/tcp_stacks sys

2019-07-11 Thread John Baldwin
On 7/10/19 9:48 PM, Randall Stewart wrote:
> John:
> 
> Thanks for the suggestions.. I have committed changes to the two
> nits. As to M_PROTO1, I see that in the NF world we have removed
> M_PROTO12 and moved the M_PROTO’s up 1 i.e. M_PROTO1 == 0x2000
> 
> So for now it is safe, since the M_TSTMP_LRO is not yet used.. but in
> my up and coming commits I will have to address this i.e. either do
> the same thing or just make it use M_PROTO12.
> 
> There are a couple of places M_PROTO1 is used on the receive path
> so that would not work there :o
> 
> After I get the DSACK fixes in my next change to get BBR in will
> be the LRO work…
> 
> So maybe I should just settle on using M_PROTO12 for that 
> what do you think?

If M_PROTO12 isn't used in the tree, then the approach we've used in
the past is to bump up the M_PROTO values by one as in the NF
tree.

-- 
John Baldwin
___
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"


Re: svn commit: r349893 - in head/sys: modules/tcp/rack netinet netinet/tcp_stacks sys

2019-07-10 Thread Randall Stewart via svn-src-all
John:

Thanks for the suggestions.. I have committed changes to the two
nits. As to M_PROTO1, I see that in the NF world we have removed
M_PROTO12 and moved the M_PROTO’s up 1 i.e. M_PROTO1 == 0x2000

So for now it is safe, since the M_TSTMP_LRO is not yet used.. but in
my up and coming commits I will have to address this i.e. either do
the same thing or just make it use M_PROTO12.

There are a couple of places M_PROTO1 is used on the receive path
so that would not work there :o

After I get the DSACK fixes in my next change to get BBR in will
be the LRO work…

So maybe I should just settle on using M_PROTO12 for that 
what do you think?

R

> On Jul 10, 2019, at 7:28 PM, John Baldwin  wrote:
> 
> On 7/10/19 1:40 PM, Randall Stewart wrote:
>> Author: rrs
>> Date: Wed Jul 10 20:40:39 2019
>> New Revision: 349893
>> URL: https://svnweb.freebsd.org/changeset/base/349893
>> 
>> Log:
>>  This commit updates rack to what is basically being used at NF as
>>  well as sets in some of the groundwork for committing BBR. The
>>  hpts system is updated as well as some other needed utilities
>>  for the entrance of BBR. This is actually part 1 of 3 more
>>  needed commits which will finally complete with BBRv1 being
>>  added as a new tcp stack.
>> 
>>  Sponsored by:   Netflix Inc.
>>  Differential Revision:  https://reviews.freebsd.org/D20834
> 
> Is it safe for M_TSTMP_LRO to conflict with M_PROTO1?
> 
> Also, it seems you changed the copyright range on rack.c from
> 2016-2019 to just 2016 which I suspect is an accident.
> 
> I would suggest using #error here:
> 
> #ifndef TCPHPTS
> fatal error missing option TCPHSTS in the build;
> #endif
> 
> -- 
> John Baldwin

--
Randall Stewart
r...@netflix.com



___
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"


Re: svn commit: r349893 - in head/sys: modules/tcp/rack netinet netinet/tcp_stacks sys

2019-07-10 Thread John Baldwin
On 7/10/19 1:40 PM, Randall Stewart wrote:
> Author: rrs
> Date: Wed Jul 10 20:40:39 2019
> New Revision: 349893
> URL: https://svnweb.freebsd.org/changeset/base/349893
> 
> Log:
>   This commit updates rack to what is basically being used at NF as
>   well as sets in some of the groundwork for committing BBR. The
>   hpts system is updated as well as some other needed utilities
>   for the entrance of BBR. This is actually part 1 of 3 more
>   needed commits which will finally complete with BBRv1 being
>   added as a new tcp stack.
>   
>   Sponsored by:   Netflix Inc.
>   Differential Revision:  https://reviews.freebsd.org/D20834

Is it safe for M_TSTMP_LRO to conflict with M_PROTO1?

Also, it seems you changed the copyright range on rack.c from
2016-2019 to just 2016 which I suspect is an accident.

I would suggest using #error here:

#ifndef TCPHPTS
fatal error missing option TCPHSTS in the build;
#endif

-- 
John Baldwin
___
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"


svn commit: r349893 - in head/sys: modules/tcp/rack netinet netinet/tcp_stacks sys

2019-07-10 Thread Randall Stewart
Author: rrs
Date: Wed Jul 10 20:40:39 2019
New Revision: 349893
URL: https://svnweb.freebsd.org/changeset/base/349893

Log:
  This commit updates rack to what is basically being used at NF as
  well as sets in some of the groundwork for committing BBR. The
  hpts system is updated as well as some other needed utilities
  for the entrance of BBR. This is actually part 1 of 3 more
  needed commits which will finally complete with BBRv1 being
  added as a new tcp stack.
  
  Sponsored by: Netflix Inc.
  Differential Revision:https://reviews.freebsd.org/D20834

Added:
  head/sys/netinet/tcp_stacks/rack_bbr_common.c   (contents, props changed)
Modified:
  head/sys/modules/tcp/rack/Makefile
  head/sys/netinet/in_pcb.h
  head/sys/netinet/tcp.h
  head/sys/netinet/tcp_hpts.c
  head/sys/netinet/tcp_hpts.h
  head/sys/netinet/tcp_log_buf.h
  head/sys/netinet/tcp_stacks/rack.c
  head/sys/netinet/tcp_stacks/rack_bbr_common.h
  head/sys/netinet/tcp_var.h
  head/sys/sys/mbuf.h

Modified: head/sys/modules/tcp/rack/Makefile
==
--- head/sys/modules/tcp/rack/Makefile  Wed Jul 10 19:57:48 2019
(r349892)
+++ head/sys/modules/tcp/rack/Makefile  Wed Jul 10 20:40:39 2019
(r349893)
@@ -6,7 +6,7 @@
 
 STACKNAME= rack
 KMOD=  tcp_${STACKNAME}
-SRCS=  rack.c sack_filter.c
+SRCS=  rack.c sack_filter.c rack_bbr_common.c
 
 SRCS+= opt_inet.h opt_inet6.h opt_ipsec.h
 SRCS+= opt_tcpdebug.h

Modified: head/sys/netinet/in_pcb.h
==
--- head/sys/netinet/in_pcb.h   Wed Jul 10 19:57:48 2019(r349892)
+++ head/sys/netinet/in_pcb.h   Wed Jul 10 20:40:39 2019(r349893)
@@ -759,7 +759,9 @@ int inp_so_options(const struct inpcb *inp);
 #defineINP_ORIGDSTADDR 0x0800 /* receive IP dst 
address/port */
 #define INP_CANNOT_DO_ECN  0x1000 /* The stack does not do ECN */
 #defineINP_REUSEPORT_LB0x2000 /* SO_REUSEPORT_LB option is 
set */
-
+#define INP_SUPPORTS_MBUFQ 0x4000 /* Supports the mbuf queue method of 
LRO */
+#define INP_MBUF_QUEUE_READY   0x8000 /* The transport is pacing, inputs 
can be queued */
+#define INP_DONT_SACK_QUEUE0x0001 /* If a sack arrives do not wake me 
*/
 /*
  * Flags passed to in_pcblookup*() functions.
  */

Modified: head/sys/netinet/tcp.h
==
--- head/sys/netinet/tcp.h  Wed Jul 10 19:57:48 2019(r349892)
+++ head/sys/netinet/tcp.h  Wed Jul 10 20:40:39 2019(r349893)
@@ -201,9 +201,8 @@ struct tcphdr {
 #define TCP_RACK_TLP_THRESH   1063 /* RACK TLP theshold i.e. srtt+(srtt/N) */
 #define TCP_RACK_PKT_DELAY1064 /* RACK added ms i.e. rack-rtt + reord + N 
*/
 #define TCP_RACK_TLP_INC_VAR  1065 /* Does TLP include rtt variance in t-o */
-#define TCP_RACK_SESS_CWV 1066 /* Enable RFC7611 cwnd validation on sess */
 #define TCP_BBR_IWINTSO  1067 /* Initial TSO window for BBRs first 
sends */
-#define TCP_BBR_RECFORCE  1068 /* Enter recovery force out a segment 
disregard pacer */
+#define TCP_BBR_RECFORCE  1068 /* Enter recovery force out a segment 
disregard pacer no longer valid */
 #define TCP_BBR_STARTUP_PG1069 /* Startup pacing gain */
 #define TCP_BBR_DRAIN_PG  1070 /* Drain pacing gain */
 #define TCP_BBR_RWND_IS_APP   1071 /* Rwnd limited is considered app limited */
@@ -211,14 +210,18 @@ struct tcphdr {
 #define TCP_BBR_ONE_RETRAN1073 /* Is only one segment allowed out during 
retran */
 #define TCP_BBR_STARTUP_LOSS_EXIT 1074 /* Do we exit a loss during startup if 
not 20% incr */
 #define TCP_BBR_USE_LOWGAIN   1075 /* lower the gain in PROBE_BW enable */
-#define TCP_BBR_LOWGAIN_THRESH 1076 /* How many cycles do we stay in lowgain */
-#define TCP_BBR_LOWGAIN_HALF  1077 /* Do we halfstep lowgain down */
-#define TCP_BBR_LOWGAIN_FD1078 /* Do we force a drain when lowgain in 
place */
+#define TCP_BBR_LOWGAIN_THRESH 1076 /* Unused after 2.3 morphs to TSLIMITS >= 
2.3 */
+#define TCP_BBR_TSLIMITS 1076 /* Do we use experimental Timestamp limiting 
for our algo */
+#define TCP_BBR_LOWGAIN_HALF  1077 /* Unused after 2.3 */
+#define TCP_BBR_PACE_OH1077 /* Reused in 4.2 for pacing overhead 
setting */
+#define TCP_BBR_LOWGAIN_FD1078 /* Unused after 2.3 */
+#define TCP_BBR_HOLD_TARGET 1078   /* For 4.3 on */
 #define TCP_BBR_USEDEL_RATE   1079 /* Enable use of delivery rate for loss 
recovery */
 #define TCP_BBR_MIN_RTO   1080 /* Min RTO in milliseconds */
 #define TCP_BBR_MAX_RTO  1081 /* Max RTO in milliseconds */
 #define TCP_BBR_REC_OVER_HPTS 1082 /* Recovery override htps settings 0/1/3 */
-#define TCP_BBR_UNLIMITED 1083 /* Does BBR, in non-recovery not use cwnd */
+#define TCP_BBR_UNLIMITED 1083 /* Not used before 2.3 and morphs to 
algorithm >= 2.3 */
+#define TCP_BBR_ALGORITHM