#
79059e0e |
| 01-Aug-2025 |
Nick Banks <nickbanks@netflix.com> |
tcp: Fix wrap around comparison bug
The variables p_curtick and p_lasttick are not in usecs.
Reviewed by: tuexen MFC after: 1 week Sponsored by: Netflix, Inc.
|
#
2266c602 |
| 31-Jul-2025 |
Nick Banks <nickbanks@netflix.com> |
tcp hpts: cleanup header file
Cleanup tcp_hpts.h by * move definition used only in tcp_hpts.c to that file * fix a typo * remove duplicate declarion of tcp_min_hptsi_time * rearange declarations for
tcp hpts: cleanup header file
Cleanup tcp_hpts.h by * move definition used only in tcp_hpts.c to that file * fix a typo * remove duplicate declarion of tcp_min_hptsi_time * rearange declarations for simpler reading
Approved by: tuexen MFC after: 1 week Sponsored by: Netflix, Inc.
show more ...
|
#
f197a24d |
| 31-Jul-2025 |
Nick Banks <nickbanks@netflix.com> |
tcp: improve variable and constant names
Don't use ticks in variable names or constant when they don't have a relation to ticks. Use slots or usecs. No functional change intended.
Reviewed by: tuex
tcp: improve variable and constant names
Don't use ticks in variable names or constant when they don't have a relation to ticks. Use slots or usecs. No functional change intended.
Reviewed by: tuexen MFC after: 1 week Sponsored by: Netflix, Inc.
show more ...
|
#
dc0c7424 |
| 31-Jul-2025 |
Nick Banks <nickbanks@netflix.com> |
tcp: improve function names
tcp_tv_to_usectick(), tcp_tv_to_mssectick(), and tcp_tv_to_lusectick() are not related to ticks. Therefore remove the trailing 'tick'. No functional change intended.
Rev
tcp: improve function names
tcp_tv_to_usectick(), tcp_tv_to_mssectick(), and tcp_tv_to_lusectick() are not related to ticks. Therefore remove the trailing 'tick'. No functional change intended.
Reviewed by: tuexen MFC after: 1 week Sponsored by: Netflix, Inc.
show more ...
|
#
3ad8fd6f |
| 20-Jul-2025 |
Nick Banks <nickbanks@netflix.com> |
tcp hpts: remove unused line argument from tcp_set_hpts
Reviewed by: tuexen MFC after: 1 week Sponsored by: Netflix, Inc.
|
#
a1fa30ce |
| 20-Jul-2025 |
Nick Banks <nickbanks@netflix.com> |
tcp: remove duplicate tcp_bblogging_on checks
Reviewed by: tuexen MFC after: 1 week Sponsored by: Netflix, Inc.
|
Revision tags: release/14.3.0-p1, release/14.2.0-p4, release/13.5.0-p2, release/14.3.0, release/13.4.0-p5, release/13.5.0-p1, release/14.2.0-p3 |
|
#
382af4d3 |
| 04-Apr-2025 |
Peter Lei <peterlei@netflix.com> |
tcp: clear blackbox logging union
Clear the black box logging containing union rather than the u_bbr structure for clarity and consistency. Currently u_bbr, u_raw, and u64_raw are the same size. No
tcp: clear blackbox logging union
Clear the black box logging containing union rather than the u_bbr structure for clarity and consistency. Currently u_bbr, u_raw, and u64_raw are the same size. No functional change intended.
Reviewed by: tuexen MFC after: 3 days Sponsored by: Netflix, Inc.
show more ...
|
Revision tags: release/13.5.0, release/14.2.0-p2, release/14.1.0-p8, release/13.4.0-p4, release/14.1.0-p7, release/14.2.0-p1, release/13.4.0-p3 |
|
#
3604a050 |
| 16-Dec-2024 |
Gleb Smirnoff <glebius@FreeBSD.org> |
tcp_hpts: refactor the per tcpcb call to either input/output method
Either input or output return unlocked on failure. Should be no functional change.
Reviewed by: rrs Differential Revision: http
tcp_hpts: refactor the per tcpcb call to either input/output method
Either input or output return unlocked on failure. Should be no functional change.
Reviewed by: rrs Differential Revision: https://reviews.freebsd.org/D47925
show more ...
|
#
b2bde8a6 |
| 04-Dec-2024 |
Gleb Smirnoff <glebius@FreeBSD.org> |
tcp_hpts: consistenly use macros to lock & unlock
The macros version of lock/unlock has already been used 23 times in this file and the bare version was used 6 times only, so prefer the former. No f
tcp_hpts: consistenly use macros to lock & unlock
The macros version of lock/unlock has already been used 23 times in this file and the bare version was used 6 times only, so prefer the former. No functional change.
show more ...
|
#
5cb73dbe |
| 04-Dec-2024 |
Gleb Smirnoff <glebius@FreeBSD.org> |
tcp_hpts: use booleans for tcp_hptsi() local variables
No functional change.
|
#
63446fd3 |
| 04-Dec-2024 |
Gleb Smirnoff <glebius@FreeBSD.org> |
tcp_hpts: use boolean to tell is it callout or userret context
No functional change.
|
Revision tags: release/14.2.0, release/13.4.0, release/14.1.0 |
|
#
aaaa01c0 |
| 05-Apr-2024 |
Michael Tuexen <tuexen@FreeBSD.org> |
tcp hpts: initialize variable
Ensure that tv.tv_sec is zero in all code paths.
Reported by: Coverity Scan CID: 1527724 Reviewed by: rscheff MFC after: 3 days Sponsored by: Netflix, Inc. Diff
tcp hpts: initialize variable
Ensure that tv.tv_sec is zero in all code paths.
Reported by: Coverity Scan CID: 1527724 Reviewed by: rscheff MFC after: 3 days Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D44584
show more ...
|
#
b600644f |
| 01-Apr-2024 |
Michael Tuexen <tuexen@FreeBSD.org> |
tcp hpts: improve consistency
The target_slot argument of max_slots_available() can be NULL. Therefore, check for this in all places. Right now, all callers provide non-NULL pointer.
Reported by:
tcp hpts: improve consistency
The target_slot argument of max_slots_available() can be NULL. Therefore, check for this in all places. Right now, all callers provide non-NULL pointer.
Reported by: Coverity Scan CID: 1527732 Reviewed by: rrs MFC after: 3 days Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D44527
show more ...
|
#
b7b78c1c |
| 28-Mar-2024 |
Randall Stewart <rrs@FreeBSD.org> |
Optimize HPTS so that little work is done until we have a hpts thread that is over the connection threshold
HPTS inserts a softclock for system call return that optimizes performance. However when n
Optimize HPTS so that little work is done until we have a hpts thread that is over the connection threshold
HPTS inserts a softclock for system call return that optimizes performance. However when no HPTS threads need the help (i.e. when they have less than 100 or so connections) then there should be little work done i.e. check the counter and return instead of running through all the threads getting locks etc.ptimize HPTS so that little work is done until we have a hpts thread that is over the connection threshold.
Reported by: eduardo Reviewed by: gallatin, glebius, tuexen Tested by: gallatin Differential Revision: https://reviews.freebsd.org/D44420
show more ...
|
#
638b5ae1 |
| 01-Mar-2024 |
Randall Stewart <rrs@FreeBSD.org> |
HTPS has actually three states not two so the macro needs to account for that.
Ok lets fix up the tcp_in_hpts() so that it also says yes if you are in the race state moving and you are scheduled to
HTPS has actually three states not two so the macro needs to account for that.
Ok lets fix up the tcp_in_hpts() so that it also says yes if you are in the race state moving and you are scheduled to be put in. This also requires changing the MPASS to be the old version non inline function of tcp_in_hpts().
This change also adds a new inline macro so that a uint64_t timestamp can be obtained by a transport (aka Rack will use this).
Reviewed by: glebius, tuexen Sponsored by: Netflix Inc. Differential Revision: https://reviews.freebsd.org/D44157
show more ...
|
Revision tags: release/13.3.0 |
|
#
ef0ac0a1 |
| 20-Jan-2024 |
Gordon Bergling <gbe@FreeBSD.org> |
tcp_hpts: Fix a typo of a function name in a comment
- s/tcp_ouput/tcp_output/
MFC after: 3 days
|
#
08c33cd9 |
| 26-Dec-2023 |
Gleb Smirnoff <glebius@FreeBSD.org> |
hpts: avoid duplicate call to tcp_output()
Obtained from: rrs
|
#
48b55a7c |
| 19-Dec-2023 |
Gleb Smirnoff <glebius@FreeBSD.org> |
tcp_hpts: make the module unloadable
Although the HPTS subsytem wasn't initially designed as a loadable module, now it is so. Make it possible to also unload it, but for safety reasons hide that un
tcp_hpts: make the module unloadable
Although the HPTS subsytem wasn't initially designed as a loadable module, now it is so. Make it possible to also unload it, but for safety reasons hide that under 'kldunload -f'.
Reviewed by: tuexen Differential Revision: https://reviews.freebsd.org/D43092
show more ...
|
#
175d4d69 |
| 19-Dec-2023 |
Gleb Smirnoff <glebius@FreeBSD.org> |
tcp_hpts: use tcp_pace.cts_last_ran for last ran table
Remove the global cts_last_ran and use already existing unused field of struct tcp_hptsi, which seems originally planned to hold this table. T
tcp_hpts: use tcp_pace.cts_last_ran for last ran table
Remove the global cts_last_ran and use already existing unused field of struct tcp_hptsi, which seems originally planned to hold this table. This makes it consistent with other malloc-ed tables, like main array of HPTS entities and CPU groups.
Reviewed by: tuexen Differential Revision: https://reviews.freebsd.org/D43091
show more ...
|
#
3f46be6a |
| 07-Dec-2023 |
Gleb Smirnoff <glebius@FreeBSD.org> |
tcp_hpts: let tcp_hpts_init() set a random CPU only once
After d2ef52ef3dee the tcp_hpts_init() function can be called multiple times on a tcpcb if it is switched there and back between two TCP stac
tcp_hpts: let tcp_hpts_init() set a random CPU only once
After d2ef52ef3dee the tcp_hpts_init() function can be called multiple times on a tcpcb if it is switched there and back between two TCP stacks. First, this makes existing assertion in tcp_hpts_init() incorrect. Second, it creates possibility to change a randomly set t_hpts_cpu to a different random value, while a tcpcb is already in the HPTS wheel, triggering other assertions later in tcp_hptsi().
The best approach here would be to work on the stacks to really clear a tcpcb out of HPTS wheel in tfb_tcp_fb_fini, draining the IHPTS_MOVING state. But that's pretty intrusive change, so let's just get back to the old logic (pre d2ef52ef3dee) where t_hpts_cpu was set to a random value only once in a CPU lifetime and a newly switched stack inherits t_hpts_cpu from the previous stack.
Reviewed by: rrs, tuexen Differential Revision: https://reviews.freebsd.org/D42946 Reported-by: syzbot+fab29fe1ab089c52998d@syzkaller.appspotmail.com Reported-by: syzbot+ca5f2aa0fda15dcfe6d7@syzkaller.appspotmail.com Fixes: 2b3a77467dd3d74a7170f279fb25f9736b46ef8a
show more ...
|
#
2c6fc36a |
| 04-Dec-2023 |
Gleb Smirnoff <glebius@FreeBSD.org> |
hpts/lro: make tcp_lro_flush_tcphpts() and tcp_run_hpts() pointers
Rename tcp_run_hpts() to tcp_hpts_softlock() to better describe its function. This makes loadable hpts.ko working correctly with L
hpts/lro: make tcp_lro_flush_tcphpts() and tcp_run_hpts() pointers
Rename tcp_run_hpts() to tcp_hpts_softlock() to better describe its function. This makes loadable hpts.ko working correctly with LRO.
Reviewed by: tuexen, rrs Differential Revision: https://reviews.freebsd.org/D42858
show more ...
|
#
6a79e480 |
| 27-Nov-2023 |
Randall Stewart <rrs@FreeBSD.org> |
Fix two latent bugs in hpts. One where a static is put on a local variable, the other an initialization bug where we should be setting tv.tv_sec to 0.
PR: 275482
|
Revision tags: release/14.0.0 |
|
#
685dc743 |
| 16-Aug-2023 |
Warner Losh <imp@FreeBSD.org> |
sys: Remove $FreeBSD$: one-line .c pattern
Remove /^[\s*]*__FBSDID\("\$FreeBSD\$"\);?\s*\n/
|
#
c3c20de3 |
| 25-Apr-2023 |
Gleb Smirnoff <glebius@FreeBSD.org> |
tcp: move HPTS/LRO flags out of inpcb to tcpcb
These flags are TCP specific. While here, make also several LRO internal functions to pass tcpcb pointer instead of inpcb one.
Reviewed by: rrs Diff
tcp: move HPTS/LRO flags out of inpcb to tcpcb
These flags are TCP specific. While here, make also several LRO internal functions to pass tcpcb pointer instead of inpcb one.
Reviewed by: rrs Differential Revision: https://reviews.freebsd.org/D39698
show more ...
|
#
c2a69e84 |
| 25-Apr-2023 |
Gleb Smirnoff <glebius@FreeBSD.org> |
tcp_hpts: move HPTS related fields from inpcb to tcpcb
This makes inpcb lighter and allows future cache line optimizations of tcpcb. The reason why HPTS originally used inpcb is the compressed TIME
tcp_hpts: move HPTS related fields from inpcb to tcpcb
This makes inpcb lighter and allows future cache line optimizations of tcpcb. The reason why HPTS originally used inpcb is the compressed TIME-WAIT state (see 0d7445193ab), that used to free a tcpcb, while the associated connection is still on the HPTS ring.
Reviewed by: rrs Differential Revision: https://reviews.freebsd.org/D39697
show more ...
|