Page MenuHomeFreeBSD

rscheff (Richard Scheffenegger)
User

Projects

User Details

User Since
Oct 18 2018, 9:44 PM (407 w, 1 d)

Recent Activity

Mon, Aug 3

rscheff accepted D58594: tcp: improve SEG.SEQ validation for RST segments.

Looks like you do modify the BBR/RACK stack too, unlike the high level description. In both places the same checks used to be done in a mirror image - and this again mirrors each other.

Mon, Aug 3, 7:50 AM

Tue, Jul 28

rscheff committed rG2d01998e9e8a: tcp_hostcache: ensure expire and prune values stay consistent with each other (authored by rscheff).
tcp_hostcache: ensure expire and prune values stay consistent with each other
Tue, Jul 28, 9:21 PM
rscheff committed rG5de91610cc74: tcp_hostcache: limit scope of struct hc_metrics_lite and rename with tcp_ prefix (authored by rscheff).
tcp_hostcache: limit scope of struct hc_metrics_lite and rename with tcp_ prefix
Tue, Jul 28, 9:21 PM
rscheff closed D58424: tcp_hostcache: ensure expire and prune values stay consistent with each other.
Tue, Jul 28, 9:21 PM
rscheff closed D58440: tcp_hostcache: limit scope of struct hc_metrics_lite and rename with tcp_ prefix.
Tue, Jul 28, 9:21 PM
rscheff added a comment to D58408: tcp_hostcache: include versioning in hc_metrics_lite structure.

Yes, the external struct I have now named tcp_xhc_metrics in my branch; I'll keep the individual ip4/ip6 structs though, as including the full in_conninfo seems excessive to me,

I agree about in_conninfo. I'd actually be happy if nothing outside inpcb code uses it. But why don't you want to union IPv4/IPv6 using your own anonymous union?

Tue, Jul 28, 8:33 PM
rscheff committed rGee9a8a9730be: tcp_hostcache: explicitly typecast atomic_load_int to (int) for comparison (authored by rscheff).
tcp_hostcache: explicitly typecast atomic_load_int to (int) for comparison
Tue, Jul 28, 8:30 AM
rscheff committed rG3a51f7b13512: tcp_hostcache: explicitly typecast atomic_load_int to (int) for comparison (authored by rscheff).
tcp_hostcache: explicitly typecast atomic_load_int to (int) for comparison
Tue, Jul 28, 8:28 AM
rscheff updated the diff for D58424: tcp_hostcache: ensure expire and prune values stay consistent with each other.
  • make sysctl configurables uint
Tue, Jul 28, 7:30 AM
rscheff added a comment to D58424: tcp_hostcache: ensure expire and prune values stay consistent with each other.

I agree that switching to unsigned for time intervals should be more correct. But the struct tcp_hostcache members now are int and that makes the sysctls to be signed. If structure members are also changed, a more thorough review of all the code that uses expire and prune needed. @rscheff since you already catched one difficult signedness bug in this code, maybe you can do such sweep, too?

Tue, Jul 28, 7:30 AM
rscheff updated the diff for D58440: tcp_hostcache: limit scope of struct hc_metrics_lite and rename with tcp_ prefix.
  • complete renaming from hc_metrics_lite to tcp_hc_metrics, including abbreviated variable names
Tue, Jul 28, 6:25 AM
rscheff added a comment to D58408: tcp_hostcache: include versioning in hc_metrics_lite structure.

Yes, the external struct I have now named tcp_xhc_metrics in my branch; I'll keep the individual ip4/ip6 structs though, as including the full in_conninfo seems excessive to me,

Tue, Jul 28, 6:11 AM

Sat, Jul 25

rscheff updated the diff for D58424: tcp_hostcache: ensure expire and prune values stay consistent with each other.
  • also restart the callout so the next pruning will occur at the expected time
Sat, Jul 25, 8:04 PM

Fri, Jul 24

rscheff requested review of D58440: tcp_hostcache: limit scope of struct hc_metrics_lite and rename with tcp_ prefix.
Fri, Jul 24, 8:32 PM
rscheff added a comment to D58408: tcp_hostcache: include versioning in hc_metrics_lite structure.

This structure is used for KPI between TCP and the TCP hostcache module. An API structure for userland tools to fetch (possibly inject?) TCP hostcache entries should not be mixed with this one.

Suggested structure:

struct tcp_hc_entry {
        u_int             thc_version;        /* current version is 0 */
        uint32_t        thc_flags;
#define THC_IP4 0x00000001
#define THC_IP6 0x00000002
        union {
		struct in_addr	thc_ip4;            /* IP address */
		struct in6_addr	thc_ip6;            /* IP6 address */
        };
        uint32_t        thc_mtu;         /* MTU for this path */
        uint32_t        thc_ssthresh;    /* outbound gateway buffer limit */
        uint32_t        thc_rtt;         /* estimated round trip time */
        uint32_t        thc_rttvar;      /* estimated rtt variance */
        uint32_t        thc_cwnd;        /* congestion window */
        uint32_t        thc_sendpipe;    /* outbound delay-bandwidth product */
        uint32_t        thc_recvpipe;    /* inbound delay-bandwidth product */
        uint32_t        thc_expire;      /* lifetime for object */
};
Fri, Jul 24, 7:54 AM

Thu, Jul 23

rscheff updated the diff for D58408: tcp_hostcache: include versioning in hc_metrics_lite structure.
  • fill new fields with relevant data
Thu, Jul 23, 8:11 PM
rscheff added a comment to D58408: tcp_hostcache: include versioning in hc_metrics_lite structure.

Note to self: rrs mentioned a difference in the internal rtt formats between base and rack stacks - verify the current state here

Thu, Jul 23, 7:51 PM
rscheff retitled D58408: tcp_hostcache: include versioning in hc_metrics_lite structure from rcp_hostcache: retire the hc_metrics_lite structure and make the hc_metrics structure public to tcp_hostcache: include versioning in hc_metrics_lite structure.
Thu, Jul 23, 7:30 PM
rscheff updated the diff for D58408: tcp_hostcache: include versioning in hc_metrics_lite structure.
  • add versioning and sysctl blob fields to userland hostcache struct
Thu, Jul 23, 7:28 PM
rscheff requested review of D58424: tcp_hostcache: ensure expire and prune values stay consistent with each other.
Thu, Jul 23, 7:09 PM
rscheff accepted D58411: tcp: make ghost ACK conformant.
Thu, Jul 23, 3:45 PM
rscheff requested review of D58408: tcp_hostcache: include versioning in hc_metrics_lite structure.
Thu, Jul 23, 9:04 AM

Wed, Jul 22

rscheff added a comment to D58356: tcp_hostcache: refactor the hostcache update function.
Wed, Jul 22, 8:54 PM
rscheff updated the diff for D58356: tcp_hostcache: refactor the hostcache update function.
  • provide a way to check for the mere existance, and contents of an entry for a given IP address.
Wed, Jul 22, 12:25 PM

Tue, Jul 21

rscheff added a comment to D58358: tcp_hostcache: add sysctl function for updating the hostcache.

I found that there is actual precedence in sysctl to have custom handling code for CTL_OPAQUE datastructures there - from very long ago (checked in 24 yrs ago).

Tue, Jul 21, 3:25 PM
rscheff committed rGf22b08443f6a: tcp_hostcache: explicitly typecast atomic_load_int to (int) for comparison (authored by rscheff).
tcp_hostcache: explicitly typecast atomic_load_int to (int) for comparison
Tue, Jul 21, 3:22 PM
rscheff closed D58360: tcp_hostcache: explicitly typecast atomic_load_int to (int) on comparsion against negative values.
Tue, Jul 21, 3:21 PM
rscheff added a comment to D58360: tcp_hostcache: explicitly typecast atomic_load_int to (int) on comparsion against negative values.

Since there appear only two instances of comparisons where negative values are relevant in the full kernel source tree, I think the most progressive way would then be to simply also typecast the atomic_load_int here.

Tue, Jul 21, 2:01 PM
rscheff added a comment to D58360: tcp_hostcache: explicitly typecast atomic_load_int to (int) on comparsion against negative values.

There are apparently is only one other instances with a comparison for lower than zero, and in this other instance, a typecast is also used; everything else compares to non-zero values, exactly zero, etc...

Tue, Jul 21, 6:20 AM
rscheff added a comment to D58360: tcp_hostcache: explicitly typecast atomic_load_int to (int) on comparsion against negative values.

Adding Marc as he initially put in the typechecking - which doesn't appear to be doing all that much though.

Tue, Jul 21, 6:14 AM
rscheff added a reviewer for D58360: tcp_hostcache: explicitly typecast atomic_load_int to (int) on comparsion against negative values: markj.
Tue, Jul 21, 6:13 AM
rscheff added a comment to D58360: tcp_hostcache: explicitly typecast atomic_load_int to (int) on comparsion against negative values.

That sounds like pretty serious compiler bug. What is the compiler and what is the machine arch?

Tue, Jul 21, 5:44 AM

Mon, Jul 20

rscheff added a comment to D58358: tcp_hostcache: add sysctl function for updating the hostcache.

This is definitely a useful functionality but the implementation will raise concerns from developers outside of network stack area. We don't want to add string parsing procedures to the kernel.

The correct implementation should use a binary API and string parsing should happen in the userspace. The tcpdrop(8) seems like a nice place to add this functionality to avoid a new utility.

Mon, Jul 20, 7:36 PM
rscheff requested review of D58360: tcp_hostcache: explicitly typecast atomic_load_int to (int) on comparsion against negative values.
Mon, Jul 20, 7:28 PM
rscheff retitled D58356: tcp_hostcache: refactor the hostcache update function from tcp_hostcache: add sysctl function for updating the hostcache to tcp_hostcache: refactor the hostcache update function.
Mon, Jul 20, 4:01 PM
rscheff requested review of D58358: tcp_hostcache: add sysctl function for updating the hostcache.
Mon, Jul 20, 3:59 PM
rscheff updated the diff for D58356: tcp_hostcache: refactor the hostcache update function.
  • just do the refactory here
Mon, Jul 20, 3:52 PM
rscheff added inline comments to D58325: irdma: improve validation checks further.
Mon, Jul 20, 3:24 PM
rscheff added inline comments to D58323: irdma: improve TCP header validation.
Mon, Jul 20, 3:22 PM
rscheff updated the diff for D58323: irdma: improve TCP header validation.
  • add a tcp_hlen check oversight and indentation
Mon, Jul 20, 3:21 PM
rscheff requested review of D58356: tcp_hostcache: refactor the hostcache update function.
Mon, Jul 20, 12:53 PM

Sat, Jul 18

rscheff updated the diff for D58325: irdma: improve validation checks further.
  • fix typo
Sat, Jul 18, 2:28 PM
rscheff requested review of D58325: irdma: improve validation checks further.
Sat, Jul 18, 2:24 PM
rscheff updated the diff for D58323: irdma: improve TCP header validation.
  • updating phabricator to show proper diff
Sat, Jul 18, 1:34 PM
rscheff requested review of D58323: irdma: improve TCP header validation.
Sat, Jul 18, 1:30 PM
rscheff added a comment to D56535: tcp: Align PRR implementation with RFC 9937.

@tuexen is currently looking to create standard compliant packetdrill scripts to check various test cases.

Sat, Jul 18, 9:41 AM · network
rscheff committed rG506e3e30a43c: tcp: Align PRR implementation with RFC 9937 (authored by rscheff).
tcp: Align PRR implementation with RFC 9937
Sat, Jul 18, 9:25 AM
rscheff closed D56535: tcp: Align PRR implementation with RFC 9937.
Sat, Jul 18, 9:25 AM · network
rscheff abandoned D58319: minor rearrangement of declarations and white space clean-up of diff. no functional change.

unintentional creation instead of updating D56535

Sat, Jul 18, 8:36 AM
rscheff requested review of D58319: minor rearrangement of declarations and white space clean-up of diff. no functional change.
Sat, Jul 18, 8:33 AM

Jun 25 2026

rscheff added a comment to D57823: ip_icmp ip_ctlprotox[] unbounded index.

you can close/abandon the diff as the original submitter. or change it entirely to what Gleb suggests.

Jun 25 2026, 4:51 PM

Jun 17 2026

rscheff accepted D57374: tcp: cleanup resource handling when adding SYN-cache entries.

Reading these changes, i looks good to perform more consistently and properly handling the pointers; the logical flow is reordered as described - while the small formatting nits make this change appear a bit more expansive while not changing the flow dramatically.

Jun 17 2026, 1:14 PM

Apr 21 2026

rscheff added a comment to D56535: tcp: Align PRR implementation with RFC 9937.

Thanks,
I'll discuss this with all the transport committers in the next call.

Apr 21 2026, 10:28 AM · network

Apr 16 2026

rscheff accepted D56321: tcp: use RFC 6191 for connection recycling in TIME-WAIT.
Apr 16 2026, 3:33 PM

Apr 8 2026

rscheff added a comment to D56307: tcp: Allow recycling of TIME_WAIT connections on differnet ISN.

Checking a connecting in TIMEWAIT's irs doesn't make any sense to me - the actually in-window sequence numbers of the previous connection could be anywhere, depending on how much data was sent by the time the session got closed.

Apr 8 2026, 8:10 PM

Mar 31 2026

rscheff added a comment to D56155: siftr: replace macro constants with debug friendly enums.

I understand that this helps with debugging, as ENUMs get printed as symbols. However, since these are, as Michael points out, quite unrelated to each other, and defining multiple enum identifiers may help catch incorrect assignments by the compiler, why not split the ENUM up into multiple, independently identified enums, still with explicit assignments?

Mar 31 2026, 8:24 AM

Mar 22 2026

rscheff accepted D56025: tcp: retire TF_SENTSYN.
Mar 22 2026, 9:26 AM

Feb 24 2026

rscheff added a comment to D55460: When TCP ECN decides it wants to assure an ACK is sent it needs to do it correctly and with some limits..
In D55460#1269353, @rrs wrote:

Have a look at state diagram.
When you close your writing end, you send a FIN and enter FIN WAIT 1. When you receive the ACK for this FIN, you enter FIN WAIT 2. From the perspective of your peer, there is no difference if you are in FIN WAIT 1 or FIN WAIT 2 (or ESTABLISHED). The peer can send data. As long as it can send data, ECN should be usable, I think.

I will update the review.. however I have trepidation on this whole issue. You have two ack-regimes going on.

  1. TCP's normal acking -- delayed ack or ack every packet
  2. ECN commanding acks.

Now the interaction of the two regimes could prove interesting with un-anticipated consequences. Especially in
state machine transitions. So though yes, FIN WAIT 1/2 probably should be included in the exception list, I just
feel we could have issues down the road.. not sure what, but just the interactions of these algorithms could
be a src of problems... In ESTABLISHED I see no problem worse that happens is you end up acking every packet.
But in any other state I wonder...

I will increase your exclusions.. but I am concerned...

Feb 24 2026, 1:45 PM

Feb 23 2026

rscheff added a comment to D43213: tcp: retry CWR transmission if TSO doesn't support ECN.

Personally I would like a TCP session NOT fail because it has ECN negotiated over a virtio driver, who then throws an error when a TSO superframe with CWR is handed down...

Feb 23 2026, 7:31 PM
rscheff accepted D55466: tcp: BBLog incoming packets in TCPS_TIME_WAIT.

LGTM

Feb 23 2026, 7:29 PM
rscheff abandoned D41672: tcp: add cubic_compute_pipe.

No. lets abandon it.

Feb 23 2026, 7:28 PM
rscheff accepted D55460: When TCP ECN decides it wants to assure an ACK is sent it needs to do it correctly and with some limits..

LGTM

Feb 23 2026, 5:09 PM
rscheff accepted D55459: Mitigate a case where TCP rack can send an extra ack..

Reducing the number of challenge ACKs when closing out the connection makes sense.

Feb 23 2026, 5:08 PM

Feb 6 2026

rscheff added inline comments to D32540: iSCSI: Fast and per-session timeouts.
Feb 6 2026, 6:30 PM
rscheff updated the diff for D32540: iSCSI: Fast and per-session timeouts.
  • bump man date, use roundup(), fix various places which would indicate more than 0.1 sec granularity
Feb 6 2026, 6:29 PM

Feb 3 2026

rscheff updated the diff for D32540: iSCSI: Fast and per-session timeouts.
  • touch man date, rebase
Feb 3 2026, 1:42 PM

Jan 14 2026

rscheff added a comment to D54718: tcpdump: Fix buffer overrun in ATM OAM printing .

I have not. I'm still getting familiar with the process. Should I submit there first and if so, would the new version of tcpdump just be picked up by FreeBSD with no need for this review?

Jan 14 2026, 7:17 PM

Dec 11 2025

rscheff closed D54072: tcp: retire do_newsack - always adhere to RFC6675.
Dec 11 2025, 12:55 PM

Dec 5 2025

rscheff committed rG9155d4b273ff: tcp: retire do_newsack - always adhere to RFC6675 SACK (authored by rscheff).
tcp: retire do_newsack - always adhere to RFC6675 SACK
Dec 5 2025, 1:11 PM

Dec 4 2025

rscheff requested review of D54072: tcp: retire do_newsack - always adhere to RFC6675.
Dec 4 2025, 4:08 PM

Nov 14 2025

rscheff accepted D53739: Update ip_ecn to use C standard types.
Nov 14 2025, 8:21 AM

Nov 13 2025

rscheff added inline comments to D53516: Update ip_ecn to RFC 6040.
Nov 13 2025, 5:05 PM

Oct 3 2025

rscheff accepted D52871: tcp: bump max rcv buffer size for autoscaling.
Oct 3 2025, 10:19 AM
rscheff accepted D52872: tcp: bump max snd buffer size for autoscaling.
Oct 3 2025, 10:19 AM
rscheff accepted D52873: sockets: bump socket buffer limit.
Oct 3 2025, 10:18 AM

Sep 4 2025

rscheff committed rG3aa0a0aaa23b: tcp: add gone_in note for net.inet.tcp.sack.revised for fbsd16 (authored by rscheff).
tcp: add gone_in note for net.inet.tcp.sack.revised for fbsd16
Sep 4 2025, 10:26 PM
rscheff closed D52383: tcp: add gone_in note for net.inet.tcp.sack.revised for fbsd16.
Sep 4 2025, 10:26 PM
rscheff updated the diff for D52383: tcp: add gone_in note for net.inet.tcp.sack.revised for fbsd16.
  • bump date of tcp.4
Sep 4 2025, 10:21 PM
rscheff updated the diff for D52383: tcp: add gone_in note for net.inet.tcp.sack.revised for fbsd16.
  • bump date of tcp.4
Sep 4 2025, 10:18 PM
rscheff requested review of D52383: tcp: add gone_in note for net.inet.tcp.sack.revised for fbsd16.
Sep 4 2025, 4:13 PM

Sep 1 2025

rscheff accepted D52296: tcp: micro-optimize SYN-cookie expansion.
Sep 1 2025, 6:42 AM

Aug 29 2025

rscheff added a comment to D52225: tcp: improve sending of SYN-cookies.

Is D52226 good enough or do you have suggestions to improve the clarity?

Aug 29 2025, 11:45 AM
rscheff accepted D52226: syncache.4: add missing information.

content appears to be a better matching what the code does. Thx.

Aug 29 2025, 11:43 AM
rscheff accepted D52225: tcp: improve sending of SYN-cookies.

Maybe also put an updated syncookies(4) man page update into this diff. Currently, that man page is not really clear on the distinctions between sysctl net.inet.tcp.syncookies and sysctl net.inet.tcp.syncookies_only. (the _only is mentioned, but not the relationship between syncache, syncookie and syncookie_only ).

Aug 29 2025, 10:34 AM

Aug 25 2025

rscheff accepted D52140: tcp: improve inflating cwnd in limited transmit.

Thanks for catching

Aug 25 2025, 5:52 AM

Aug 15 2025

rscheff accepted D51903: unix: increase net.local.(stream|seqpacket).(recv|send)space to 64 KiB.
Aug 15 2025, 6:08 AM

Aug 13 2025

rscheff committed rG7b9f6ebb9268: tcp: ensure SACK rxmit never ends up left of its hole (authored by rscheff).
tcp: ensure SACK rxmit never ends up left of its hole
Aug 13 2025, 7:22 PM

Aug 6 2025

rscheff committed rG65d4a8339984: tcp: ensure SACK rxmit never ends up left of its hole (authored by rscheff).
tcp: ensure SACK rxmit never ends up left of its hole
Aug 6 2025, 9:51 PM
rscheff closed D51725: tcp: ensure that SACK hole->rxmit never ends up left of the hole with LRD.
Aug 6 2025, 9:50 PM

Aug 4 2025

rscheff requested review of D51725: tcp: ensure that SACK hole->rxmit never ends up left of the hole with LRD.
Aug 4 2025, 7:34 PM

Aug 3 2025

rscheff accepted D51718: tcp sack: improve computation of delivered_data.

I now wonder why i had the left_edge adjustment conditional on an fack adjustment only. But that may have preceeded some other modifications. LGTM

Aug 3 2025, 8:36 PM

Jun 26 2025

rscheff accepted D50912: tcp: restrict the contents of tcp_timer.h to the kernel context.
Jun 26 2025, 3:19 PM

Jun 17 2025

rscheff accepted D50900: tcp: remove TCPTV_TWTRUNC.
Jun 17 2025, 11:25 AM

Jun 12 2025

rscheff accepted D49540: cc_cubic: sync to the new specification of RFC9438 for TCP CUBIC..
Jun 12 2025, 3:36 PM

Mar 31 2025

rscheff accepted D49589: tcp: remove support for TCPPCAP.
Mar 31 2025, 3:20 PM

Mar 24 2025

rscheff committed rG4a328b804996: tcp: fix reverting of spurious timeouts (RTO) (authored by rscheff).
tcp: fix reverting of spurious timeouts (RTO)
Mar 24 2025, 5:57 AM

Mar 21 2025

rscheff closed D48652: tcp: revert rxtshift too on a spurious timeout (RTO).
Mar 21 2025, 5:26 AM
rscheff committed rG6f6c07813b38: tcp: fix reverting of spurious timeouts (RTO) (authored by rscheff).
tcp: fix reverting of spurious timeouts (RTO)
Mar 21 2025, 5:26 AM
rscheff updated the diff for D48652: tcp: revert rxtshift too on a spurious timeout (RTO).
  • rebase before commit
Mar 21 2025, 4:19 AM

Mar 20 2025

rscheff accepted D49414: tcp: fix detection of bad RTOs.

lgtm

Mar 20 2025, 9:21 AM