Page MenuHomeFreeBSD
Feed Advanced Search

Jun 4 2024

lstewart accepted D45253: tcp: simplify stack switching protocol.
Jun 4 2024, 4:12 AM

May 31 2024

lstewart added inline comments to D45253: tcp: simplify stack switching protocol.
May 31 2024, 11:59 PM
lstewart added a comment to D45253: tcp: simplify stack switching protocol.

Might be worth adding a check in tcp_subr.c:register_tcp_functions_as_names() that the handoff_ok hook is not NULL and return an errno + fail to register the module if it is?

This is already part of the diff, I think. See tcp_subr.c:1186. tcp_subr.c:register_tcp_functions_as_names() would return EINVAL like in the case where some other mandatory function is not provided.

May 31 2024, 11:44 PM

May 28 2024

lstewart added a comment to D45253: tcp: simplify stack switching protocol.

Right now, the absence of the function means that it is not OK to switch, except the state is TCPS_CLOSED. So I think keeping the semantic of the absence of the tfb_tcp_handoff_ok() is in tune with POLA for all states except TCPS_CLOSED. The other reason is that one could use tfb_tcp_handoff_ok() as the first step of the switch. In particular, one could call something like tcp_timer_stop_nounlock as the last step of tfb_tcp_handoff_ok(). This does not work, if the semantic of the absence of tfb_tcp_handoff_ok() is that it is OK to switch.

Your comments are entirely reasonable so I don't have a strong objection against what you've proposed (although the idea of mutating the connection state/set up in handoff_ok() seems sketchy at best, but we can't stop anyone from doing it either).

I think the protocol would require that if tfb_tcp_handoff_ok() returns no error, tfb_tcp_fb_init() must be called. So you can put something in tfb_tcp_handoff_ok(), which either fails and does not change the state or succeeds and potentially change the state in a way that tfb_tcp_fb_init() expects. But this is up to the user of the API and we cannot control what is done the in callbacks.

May 28 2024, 1:49 AM

May 27 2024

lstewart added a comment to D45253: tcp: simplify stack switching protocol.

Right now, the absence of the function means that it is not OK to switch, except the state is TCPS_CLOSED. So I think keeping the semantic of the absence of the tfb_tcp_handoff_ok() is in tune with POLA for all states except TCPS_CLOSED. The other reason is that one could use tfb_tcp_handoff_ok() as the first step of the switch. In particular, one could call something like tcp_timer_stop_nounlock as the last step of tfb_tcp_handoff_ok(). This does not work, if the semantic of the absence of tfb_tcp_handoff_ok() is that it is OK to switch.

May 27 2024, 12:10 PM

May 20 2024

lstewart added a comment to D45253: tcp: simplify stack switching protocol.

Nit: why require tfb_tcp_handoff_ok() be implemented by a stack rather than treat the absence of the hook's implementation to be an implicit ok? Many of the hook functions are optional so it seems a bit unexpected to require that this hook function be implemented.

May 20 2024, 4:28 AM

Apr 3 2024

lstewart committed rG7eb92c502eb5: Reinstate returning EOVERFLOW from stats_v1_blob_clone() (authored by lstewart).
Reinstate returning EOVERFLOW from stats_v1_blob_clone()
Apr 3 2024, 2:01 AM
lstewart closed D44585: Reinstate returning EOVERFLOW from stats_v1_blob_clone().
Apr 3 2024, 2:01 AM

Apr 2 2024

lstewart committed rG743d4b7cc5e2: Fix the logic which determines if the destination Q variable can represent the… (authored by lstewart).
Fix the logic which determines if the destination Q variable can represent the…
Apr 2 2024, 7:24 AM
lstewart added a reviewer for D44585: Reinstate returning EOVERFLOW from stats_v1_blob_clone(): markj.
Apr 2 2024, 7:01 AM
lstewart requested review of D44585: Reinstate returning EOVERFLOW from stats_v1_blob_clone().
Apr 2 2024, 7:00 AM

Mar 2 2024

lstewart added a comment to D43179: stats: Check for errors from copyout().

Hi Mark,

Mar 2 2024, 11:30 PM

Mar 2 2022

lstewart added inline comments to D30036: Update Rack and BBR to the latest from NF fixing LRO issues along the way..
Mar 2 2022, 9:21 AM

Dec 1 2021

lstewart added a comment to D33035: tcp: Add hystart++ to our cubic implementation..

I won't have the time to review this in the near future but would note that many of the things I flagged for the original newreno hystart++ implementation also apply to this implementation. However, I wouldn't call any of them blockers so don't have an objection to you committing this at your discretion.

Dec 1 2021, 9:20 AM

Nov 24 2021

lstewart accepted D33098: tcp: don't upgrade a lock just for logging.
Nov 24 2021, 12:01 PM
lstewart added inline comments to D33098: tcp: don't upgrade a lock just for logging.
Nov 24 2021, 9:00 AM

Nov 16 2021

lstewart added a comment to D32983: tcp: Fix a locking issue.

The whole point of this was that there were absolutely no logs what so ever when tcp_respond() was used. So prior to this set of commits you *never* saw anything when we responded to a packet (and that happens in many places in all stacks). Now I would have to study when we use tcp_respond() with a INP_RLOCK() this is a very narrow case I would imagine, but if you are not willing to get a INP_WLOCK() that implies to me you are not changing the TCB... but thats what logging does.

Nov 16 2021, 4:48 AM

Nov 15 2021

lstewart added inline comments to D32983: tcp: Fix a locking issue.
Nov 15 2021, 5:42 AM
lstewart added inline comments to D32983: tcp: Fix a locking issue.
Nov 15 2021, 12:14 AM

Nov 4 2021

lstewart accepted D32698: SIFTR: Fix compilation with -DSIFTR_IPV6.

Thanks for fixing!

Nov 4 2021, 12:13 AM

Nov 3 2021

lstewart added a comment to D32693: tcp: Congestion control cleanup..

First pass feedback

Nov 3 2021, 11:54 PM

Oct 22 2021

lstewart added a comment to D32373: tcp: Add hystart-plus to cc_newreno and rack..

I haven't finished reviewing yet but some initial thoughts in addition to my inline comments:

  • Nit: please submit diffs with full context as it makes reviewing easier
  • You need to address how enabling Hystart++ when using cc_newreno with the default FreeBSD stack will work
  • The implementation pessimises the common case where newreno will be used without ABE or Hystart++ which is probably undesirable. The module's lack of a cb_init() hook implementation was very deliberate to avoid such pessimisation and also as noted inline, assumptions are made elsewhere that cc_newreno can always be used as an algo of last resort so we cannot allow init to ever fail.
Oct 22 2021, 12:13 PM

Apr 5 2021

lstewart requested review of D29585: Fix the "frlossreduce" feature of newreno's Alternative Backoff with ECN (ABE) implementation.
Apr 5 2021, 4:46 AM

Apr 2 2021

lstewart committed rG9141b58b50a8: stats(3): Improve t-digest merging of samples which result in mu adjustment… (authored by lstewart).
stats(3): Improve t-digest merging of samples which result in mu adjustment…
Apr 2 2021, 2:48 AM
lstewart committed rG1eb402e47af3: stats(3): Improve t-digest merging of samples which result in mu adjustment… (authored by lstewart).
stats(3): Improve t-digest merging of samples which result in mu adjustment…
Apr 2 2021, 2:18 AM

Mar 25 2021

lstewart committed rG2a878f01f22f: random(9): Restore historical [0,2^31-1] output range and related man… (authored by lstewart).
random(9): Restore historical [0,2^31-1] output range and related man…
Mar 25 2021, 7:05 AM
lstewart committed rG828e6b5f5e30: random(9): Restore historical [0,2^31-1] output range and related man… (authored by lstewart).
random(9): Restore historical [0,2^31-1] output range and related man…
Mar 25 2021, 7:00 AM

Mar 24 2021

lstewart closed D29385: Make random() behaves as documented: "result is uniform in [0, 2^31 - 1]".
Mar 24 2021, 5:18 AM
lstewart committed rGdbbf3e3f37d6: random(9): Restore historical [0,2^31-1] output range and related man (authored by lstewart).
random(9): Restore historical [0,2^31-1] output range and related man
Mar 24 2021, 5:18 AM

Mar 23 2021

lstewart accepted D29385: Make random() behaves as documented: "result is uniform in [0, 2^31 - 1]".

Loic doesn't have a commit bit, so I've offered to commit on his behalf.

Mar 23 2021, 5:30 AM

Dec 13 2020

lstewart committed R9:58d7bd1515b4: Document the __FreeBSD_version bump to 800061 in relation to the (authored by lstewart).
Document the __FreeBSD_version bump to 800061 in relation to the
Dec 13 2020, 6:07 PM
lstewart committed R9:3079451f59fd: Add myself as requested by the committers-guide (authored by lstewart).
Add myself as requested by the committers-guide
Dec 13 2020, 5:45 PM
lstewart committed R9:69079175b7cd: Add myself as requested by the committers-guide (authored by lstewart).
Add myself as requested by the committers-guide
Dec 13 2020, 5:45 PM

Nov 24 2020

lstewart added a comment to D26807: move cwnd and ssthresh updates into individual congestion control module.

incrementing by t_maxseg (w/o TSopt) vs. tcp_maxseg() (w/ TSopt/MPTCP) does not lead to a unexpected transmission of 2 segments, when only a single segment would be expected (tcp_output prefers to send full segments but considers option overhead).

Incrementing by tcp_maxseg() is sightly less aggressive during CA, not?

First up, it seems buggy to me that the sender side accounts for received SACK blocks in the "effective" MSS computed by tcp_maxseg() for outbound segments. (Not your bug, but your change amplifies the effect of the bug).

Not quite sure I get your point here; are you saying the tcp_maxseg() is erraneously including received SACK blocks fom the previous ACK? Maybe you can send an annotated code snippet per direct mail?

Nov 24 2020, 5:24 AM

Nov 23 2020

lstewart added inline comments to D27148: Improve RFC 7323 Compliance.
Nov 23 2020, 11:56 AM
lstewart added inline comments to D27148: Improve RFC 7323 Compliance.
Nov 23 2020, 11:53 AM
lstewart added a comment to D26807: move cwnd and ssthresh updates into individual congestion control module.

Apologies for the delayed reaction...

Nov 23 2020, 8:53 AM
lstewart committed rP556089: benchmarks/spp: Update v0.4 -> v0.4.2.
benchmarks/spp: Update v0.4 -> v0.4.2
Nov 23 2020, 6:35 AM
lstewart added a comment to D27148: Improve RFC 7323 Compliance.

Sorry for the tardy comments, but a few things in this changeset caught my eye during our internal Netflix upstream merge review.

Nov 23 2020, 5:20 AM

Nov 4 2020

lstewart added inline comments to D26807: move cwnd and ssthresh updates into individual congestion control module.
Nov 4 2020, 6:23 AM

Nov 18 2019

lstewart added inline comments to D20655: Make use of stats(3) in the TCP stack.
Nov 18 2019, 11:20 PM
lstewart added inline comments to D20655: Make use of stats(3) in the TCP stack.
Nov 18 2019, 3:31 AM

Nov 5 2019

lstewart accepted D22188: libstats: Fix ABI assertion..

Thanks for the fix @brooks

Nov 5 2019, 2:04 AM

Oct 14 2019

lstewart committed rS353486: Fix some "RB_" -> "ARB_" copy and paste nits for text sourced from tree(3)..
Fix some "RB_" -> "ARB_" copy and paste nits for text sourced from tree(3).
Oct 14 2019, 5:26 AM

Oct 8 2019

lstewart added a comment to D20477: Introduce stats(3).
In D20477#477820, @cem wrote:

I'm still confused why some of the structures are defined in endian-specific ways — it would be good if the author could answer that since guesses are just guesses.

Oct 8 2019, 6:16 AM

Oct 2 2019

lstewart added inline comments to D20477: Introduce stats(3).
Oct 2 2019, 3:27 AM

Sep 24 2019

lstewart added inline comments to D20477: Introduce stats(3).
Sep 24 2019, 2:47 AM

Aug 12 2019

lstewart added inline comments to D20655: Make use of stats(3) in the TCP stack.
Aug 12 2019, 7:54 AM
lstewart added inline comments to D20655: Make use of stats(3) in the TCP stack.
Aug 12 2019, 2:35 AM

Jul 11 2019

lstewart added inline comments to D20477: Introduce stats(3).
Jul 11 2019, 4:19 AM
lstewart added inline comments to D20116: Introduce <sys/qmath.h>.
Jul 11 2019, 4:08 AM

Mar 28 2019

lstewart accepted D17614: RFC6582 - prevent cwnd to collapse down to 1 mss after exiting recovery.
Mar 28 2019, 1:58 PM · transport

Feb 25 2019

lstewart committed rP493891: Assume maintainership of benchmarks/spp and update to v0.4 which addresses:.
Assume maintainership of benchmarks/spp and update to v0.4 which addresses:
Feb 25 2019, 7:33 PM
lstewart closed D18336: Update benchmarks/spp to v0.4.
Feb 25 2019, 7:33 PM

Feb 7 2019

lstewart accepted D19071: Get TCP CDG CC working if net.inet.tcp.cc.cdg.smoothing_factor = 0 .

Agreed and apologies, I misread/miunderstood the code. I also touched base with one of the original CDG authors to sanity check and they agree this change is a good idea.

Feb 7 2019, 9:08 PM

Feb 5 2019

lstewart requested changes to D19071: Get TCP CDG CC working if net.inet.tcp.cc.cdg.smoothing_factor = 0 .

Suggest moving stailq flush loops out of cdg_cb_destroy() into an inline function, changing smoothing_factor sysctl to a SYSCTL_PROC with custom handler similar to the exp_backoff_scale sysctl, and calling flush function from both cdg_cb_destroy() and sysctl handler when smoothing_factor is set to zero

Feb 5 2019, 12:53 PM
lstewart added a comment to D19071: Get TCP CDG CC working if net.inet.tcp.cc.cdg.smoothing_factor = 0 .

Actually, we probably need to flush the qdiffmin_q and qdiffmax_q lists in the sample_q_size == 0 branch so that a change back to non-zero smoothing_factor doesn't start operating with stale data.

Feb 5 2019, 12:39 PM
lstewart accepted D19071: Get TCP CDG CC working if net.inet.tcp.cc.cdg.smoothing_factor = 0 .

Thank you for fixing this.

Feb 5 2019, 12:36 PM

Dec 3 2018

lstewart added a comment to D18336: Update benchmarks/spp to v0.4.

Thanks all for the feedback... I'm a bit rusty on working with ports. Will commit sometime this week with my src commit bit hat on and "review/approved by:" if no further feedback materialises.

Dec 3 2018, 5:45 PM

Nov 26 2018

lstewart updated the diff for D18336: Update benchmarks/spp to v0.4.

Checked with one of the authors. Preference is to reference the Bitbucket URL in pkg-descr if it can only list a single URL.

Nov 26 2018, 9:29 AM
lstewart updated the diff for D18336: Update benchmarks/spp to v0.4.

Full context diff, shuffle variable order and ditch DISTVERSION in favour of a custom variable to hold the commit hash used in the tarball directory name.

Nov 26 2018, 8:41 AM
lstewart created D18336: Update benchmarks/spp to v0.4.
Nov 26 2018, 7:53 AM

Oct 31 2018

lstewart added a comment to D17595: Fix handling of RST segments in SYN-RCVD state via the syn cache code path.

@tuexen Any thoughts on the TFO case?

Oct 31 2018, 2:52 AM

Oct 18 2018

lstewart added inline comments to D17595: Fix handling of RST segments in SYN-RCVD state via the syn cache code path.
Oct 18 2018, 8:45 PM

Jul 21 2018

lstewart accepted D16282: NULL out cc_data in pluggable TCP {cc}_cb_destroy.

I would prefer to leave the check in cc_cdg until we run to ground why the callback was getting hit twice (in the case someone has cc_cdg as default).

Jul 21 2018, 3:40 AM
lstewart added a comment to D16282: NULL out cc_data in pluggable TCP {cc}_cb_destroy.

@lstewart we debated who should NULL before submitting this, I think it can be moved out of the destructors to the places I put the KASSERTs but I'll have to double check everything. One issue I foresaw NULLing in the framework is that we have to trust that the cc_cb_destroy destructor did indeed free() and can't catch mistakes with a KASSERT. But writing a new CC isn't exactly common and will probably be cribbed from an existing one so maybe I was over thinking that angle.

Jul 21 2018, 2:52 AM

Jul 20 2018

lstewart added a comment to D16282: NULL out cc_data in pluggable TCP {cc}_cb_destroy.

If the cb_destroy virtual function shouldn't null the pointer, I assert that it shouldn't free it either.

There should be another cc_assert wrapper function that checks for not null, frees then nulls, after calling the virtual function.

Jul 20 2018, 3:48 AM
lstewart added inline comments to D16282: NULL out cc_data in pluggable TCP {cc}_cb_destroy.
Jul 20 2018, 3:29 AM
lstewart added a comment to D16282: NULL out cc_data in pluggable TCP {cc}_cb_destroy.

When ABE was added (rS331214) to New Reno and leak fixed (rS333699) , some assumptions about the state of it as the default and always ready cc seem to have changed, notably it now has a constructor and destructor (newreno_cb_destroy) for per connection state.

Jul 20 2018, 3:14 AM

Jun 8 2018

lstewart added a member for transport: lstewart.
Jun 8 2018, 6:28 PM

May 17 2018

lstewart committed rS333699: Plug a memory leak and potential NULL-pointer dereference introduced in r331214..
Plug a memory leak and potential NULL-pointer dereference introduced in r331214.
May 17 2018, 2:46 AM
lstewart closed D15358: Address memory leak in new reno cc module.
May 17 2018, 2:46 AM

May 15 2018

lstewart added inline comments to D15358: Address memory leak in new reno cc module.
May 15 2018, 1:45 AM

May 14 2018

lstewart updated the diff for D15358: Address memory leak in new reno cc module.

Final commit candidate, rebased against FreeBSD head r333598, and with M_ZERO removed from malloc call.

May 14 2018, 2:24 AM

May 10 2018

lstewart updated the diff for D15358: Address memory leak in new reno cc module.
May 10 2018, 10:55 AM
lstewart commandeered D15358: Address memory leak in new reno cc module.

newreno_plugleak_v3.diff with getsockopt(2)/setsockopt(2) updated.

May 10 2018, 10:34 AM
lstewart added a comment to D15358: Address memory leak in new reno cc module.

@wollman Many thanks for the historical and standards related context - greatly appreciated. I realised that I probably need to update getsockopt(2)/setsockopt(2) as well...

May 10 2018, 10:00 AM
lstewart updated subscribers of D15358: Address memory leak in new reno cc module.
In D15358#323834, @thj wrote:

Still to be tested, but I think something like this would address the leak and change memory allocation to being conditional on need: newreno_plugleak_v1.diff

This reads okay.

I ran through a loop with netcat and didn't doesn't leak(of course it wouldn't!) and tested setting the abe beta values via set sockopt with a modified netcat (https://people.freebsd.org/~thj/diffs/ncabe.diff). This also doesn't leak.

May 10 2018, 1:41 AM

May 9 2018

lstewart added a comment to D15358: Address memory leak in new reno cc module.

Still to be tested, but I think something like this would address the leak and change memory allocation to being conditional on need: newreno_plugleak_v1.diff

May 9 2018, 3:43 AM

Mar 19 2018

lstewart closed D11616: Add support for TCP ABE draft-khademi-tcpm-alternativebackoff-ecn.
Mar 19 2018, 4:37 PM
lstewart committed rS331214: Add support for the experimental Internet-Draft "TCP Alternative Backoff with.
Add support for the experimental Internet-Draft "TCP Alternative Backoff with
Mar 19 2018, 4:37 PM

Feb 7 2018

lstewart added a comment to D14141: fix underflow for cubic_cwnd().

@jason_eggnet.com I thought about this some more and while there is no doubt that overflow/underflow due to the function's inputs is possible and needs to be remedied, the cause of overflow in your test case is not in fact the time since congestion being too large, but the bogus value of K, which for a wmax of 1460 bytes (i.e. slightly more than 1 MSS) should be 205 per my quick check:

Feb 7 2018, 3:14 AM
lstewart added a comment to D14141: fix underflow for cubic_cwnd().

Oh and @jason_eggnet.com , regarding your test code, I structured things the way they are so that you can simply #include <netinet/cc/cc_cubic.h> into your userspace test.c to get access to the various window calculation inlines rather than copy/pasting them.

Feb 7 2018, 2:21 AM
lstewart added inline comments to D14141: fix underflow for cubic_cwnd().
Feb 7 2018, 2:13 AM
lstewart added a comment to D14141: fix underflow for cubic_cwnd().

This fix doesn't make sense to me. If it has been a long time since the last congestion epoch resulting in an overflow in the calculated congestion window, collapsing the window from <something_large> to 1 segment is a terrible idea. There's also no sound reason that cwnd shouldn't be allowed to shrink below 1 segment, and if that causes problems elsewhere, those places should be fixed.

Feb 7 2018, 2:10 AM

Aug 24 2017

lstewart committed rS322831: Only emit the trailing new line added in r322613 when not operating in quiet.
Only emit the trailing new line added in r322613 when not operating in quiet
Aug 24 2017, 8:20 AM

Aug 18 2017

lstewart committed rS322643: An off-by-one error exists in sbuf_vprintf()'s use of SBUF_HASROOM() when an.
An off-by-one error exists in sbuf_vprintf()'s use of SBUF_HASROOM() when an
Aug 18 2017, 2:06 AM
lstewart closed D8535: Fix an off-by-one error in libsbuf's userland sbuf_vprintf() function. by committing rS322643: An off-by-one error exists in sbuf_vprintf()'s use of SBUF_HASROOM() when an.
Aug 18 2017, 2:06 AM
lstewart updated the diff for D8535: Fix an off-by-one error in libsbuf's userland sbuf_vprintf() function..

yoda be gone

Aug 18 2017, 12:31 AM

Aug 17 2017

lstewart added a comment to D8535: Fix an off-by-one error in libsbuf's userland sbuf_vprintf() function..

@cem Thanks!

Aug 17 2017, 10:53 PM
lstewart updated the diff for D8535: Fix an off-by-one error in libsbuf's userland sbuf_vprintf() function..

Update diff post r322614 commit.

Aug 17 2017, 8:06 AM
lstewart added a reviewer for D8535: Fix an off-by-one error in libsbuf's userland sbuf_vprintf() function.: cem.

Conrad: would you be willing to sanity check this sbuf change for me as well?

Aug 17 2017, 7:32 AM
lstewart committed rS322614: Implement simple record boundary tracking in sbuf(9) to avoid record splitting.
Implement simple record boundary tracking in sbuf(9) to avoid record splitting
Aug 17 2017, 7:20 AM
lstewart closed D8536: Implement simple record boundary tracking in sbuf(9) by committing rS322614: Implement simple record boundary tracking in sbuf(9) to avoid record splitting.
Aug 17 2017, 7:20 AM
lstewart committed rS322613: The r322210 change to pgrep's PID delimiting behaviour causes pgrep's default.
The r322210 change to pgrep's PID delimiting behaviour causes pgrep's default
Aug 17 2017, 6:36 AM
lstewart added a comment to D8536: Implement simple record boundary tracking in sbuf(9).
In D8536#249937, @cem wrote:

Looks fine. I think it would be good to note in the commit message that this is only for top-level sections and does not nest. It's obvious when you think about it, but, I like clarity.

Aug 17 2017, 1:10 AM

Aug 15 2017

lstewart added a reviewer for D8536: Implement simple record boundary tracking in sbuf(9): cem.
Aug 15 2017, 5:15 AM

Aug 8 2017

lstewart updated the diff for D8536: Implement simple record boundary tracking in sbuf(9).

Rebase patch against current head and address review feedback.

Aug 8 2017, 12:59 AM
lstewart updated the diff for D8535: Fix an off-by-one error in libsbuf's userland sbuf_vprintf() function..

The off-by-one error was incorrectly attributed to the condition that checks if vsnprintf() was successful at rendering all of the specified content into the sbuf.

Aug 8 2017, 12:45 AM
lstewart committed rS322210: pgrep naively appends the delimiter to all PIDs including the last.
pgrep naively appends the delimiter to all PIDs including the last
Aug 8 2017, 12:31 AM