Page MenuHomeFreeBSD
Feed Advanced Search

Nov 30 2015

rrs committed rS291494: Add support for Intel Skylake and Intel Broadwell PMC's. The Broadwell PMC's….
Add support for Intel Skylake and Intel Broadwell PMC's. The Broadwell PMC's…
Nov 30 2015, 5:36 PM

Nov 13 2015

rrs accepted D4154: Clean up unused bandwidth entry in the TCP hostcache.

Looks good to me :-)

Nov 13 2015, 10:53 PM
rrs committed rS290805: This fixes several places where callout_stops return is examined. The.
This fixes several places where callout_stops return is examined. The
Nov 13 2015, 10:51 PM
rrs updated the diff for D4055: First step to modularize TCP including two added tcp modules that can be played with..

Adds Jonathan's code (with one minor modification to make it print right).

Nov 13 2015, 7:47 PM
rrs updated the diff for D4055: First step to modularize TCP including two added tcp modules that can be played with..

This updates the latest round from Jonathan.

Nov 13 2015, 11:26 AM
rrs added a comment to D3115: Fix return value for callout_stop_safe(9)..

The code currently in head will return one of three values:

Nov 13 2015, 11:23 AM
rrs added a comment to D4055: First step to modularize TCP including two added tcp modules that can be played with..

I can be convinced *not* to have a user space program (though that is exactly what unix was founded upon, a
bunch of small programs that did things for you that could be put together.. I am an old timer so I harken
from those days)..

Nov 13 2015, 10:38 AM

Nov 12 2015

rrs added a comment to D3115: Fix return value for callout_stop_safe(9)..

For some reason fabricator is not cooperating with me. sigh.

Nov 12 2015, 10:15 PM
rrs added a comment to D4055: First step to modularize TCP including two added tcp modules that can be played with..

I still wonder why we need a new user-space program, when you could use sysctls to do the same thing.

  • Well if you look at an email Hiren asked me .. how do I tell the number of pcb's that are there attached to it? The -l option does that for you.. the rest is just fluff... I am pretty set on having a user space function at this point, it also allows us to add more things in the future. So stop wondering and go with the flow :-)
Nov 12 2015, 10:07 PM
rrs updated the diff for D4055: First step to modularize TCP including two added tcp modules that can be played with..

This updates for the latest comments and adds back the missing
user program that I inadvertently took out of the diff (by not
diffing in the right place :-D)

Nov 12 2015, 12:01 PM
rrs added inline comments to D4055: First step to modularize TCP including two added tcp modules that can be played with..
Nov 12 2015, 11:54 AM
rrs committed rS290716: Some basic documentation (a man page) on kern_testfrwk.
Some basic documentation (a man page) on kern_testfrwk
Nov 12 2015, 11:42 AM
rrs committed rD47773: Bump new version number documentation for r290664 (v1100090).
Bump new version number documentation for r290664 (v1100090)
Nov 12 2015, 10:50 AM
rrs committed rS290715: Bump version number since callout_stop() macro now has new NULL arg..
Bump version number since callout_stop() macro now has new NULL arg.
Nov 12 2015, 10:48 AM
rrs committed rS290714: Style 9 changes..
Style 9 changes.
Nov 12 2015, 10:31 AM

Nov 11 2015

rrs committed rS290690: Add the MLINK for async_drain Thanks Edward for the pointer..
Add the MLINK for async_drain Thanks Edward for the pointer.
Nov 11 2015, 11:10 PM

Nov 10 2015

rrs committed rS290664: Add new async_drain to the callout system. This is so-far not used but.
Add new async_drain to the callout system. This is so-far not used but
Nov 10 2015, 2:49 PM
rrs closed D4076: Add async drain from within the callout system. by committing rS290664: Add new async_drain to the callout system. This is so-far not used but.
Nov 10 2015, 2:49 PM
rrs updated the diff for D4055: First step to modularize TCP including two added tcp modules that can be played with..

Ok after reviewing a bit of the tcp_function_set routine, I updated it to
have a default no arguments to just show the default, the -l to
show the default with a *. No changes to the TCP stack itself here.. I think
we are about ready.. :-)

Nov 10 2015, 2:45 PM
rrs added a comment to D3019: Reduce overhead of IPSEC on socket creation and destruction.

I think the SCTP change are ok, I will flag this to Michael when you commit it (the code
in the FreeBSD netinet directory is not the base code..). The key here is its *very* doubtful
that SCTP and IPSEC can work. This is due to the multi-homing and the fact that once you
turn on IPSEC you would not be able to do un-ordered or partial reliability. There is
nothing in the SCTP stack to restrict this so, if a user tried this the association would fail.
DTLS is the right answer for SCTP not IPSEC.. as exemplified in all the deployment of
SCTP over DTLS over UDP over Stun/Ice in firefox/chrome using our SCTP code ;-)

Nov 10 2015, 2:26 PM · network
rrs committed rS290663: Add a kernel test framework. The callout_test is a demonstration and will only.
Add a kernel test framework. The callout_test is a demonstration and will only
Nov 10 2015, 2:15 PM
rrs closed D1755: Kernel Test Framework (built for the callout testing) by committing rS290663: Add a kernel test framework. The callout_test is a demonstration and will only.
Nov 10 2015, 2:15 PM
rrs updated the diff for D4055: First step to modularize TCP including two added tcp modules that can be played with..

In another review, Han's commented on having source code in modules. Since
it probably is not a good idea lets move them to a sub-dir called netinet/tcp_stacks
and then just arrange the modules makefile to point over there.

Nov 10 2015, 1:57 PM
rrs updated the diff for D1755: Kernel Test Framework (built for the callout testing).

Just in case, lets go ahead and move all the sources
under

Nov 10 2015, 1:51 PM
rrs added a comment to D1755: Kernel Test Framework (built for the callout testing).

I have no idea to that Hans though it works well :-)

Nov 10 2015, 1:37 PM
rrs added inline comments to D4055: First step to modularize TCP including two added tcp modules that can be played with..
Nov 10 2015, 1:19 PM
rrs updated the diff for D4055: First step to modularize TCP including two added tcp modules that can be played with..

Adds and updates comments. I did find a small difference below
the comments in the auto-buffer sizing so that too was fixed.

Nov 10 2015, 12:10 PM
rrs updated the diff for D4076: Add async drain from within the callout system..

Update the man page per Han's suggestion.

Nov 10 2015, 11:41 AM
rrs added inline comments to D4076: Add async drain from within the callout system..
Nov 10 2015, 12:21 AM

Nov 9 2015

rrs requested changes to D3864: Add a safety net to reclaim mbufs when one of the mbuf zones become exhausted.

fix my comment and I think you will be good to go

Nov 9 2015, 3:31 PM · network
rrs added a comment to D1809: [sockbuf] Don't expose lock details when isn't needed.

The socket buffer with SCTP is just not something thats workable. There are
all sorts of pre-defined notions that closely align a socket buffer to stream-of-bytes
semantics of TCP. With UDP its never an issue, since you have all un-ordered who
cares up come the messages.

Nov 9 2015, 3:25 PM
rrs abandoned D1894: Guarding against invalid CPU or mixed mode callout_reset and callout_reset_on.
Nov 9 2015, 3:04 PM
rrs updated the diff for D4076: Add async drain from within the callout system..

Ok this will update it so we get three return codes out
of callout_stop and friends

Nov 9 2015, 3:00 PM
rrs updated the diff for D4055: First step to modularize TCP including two added tcp modules that can be played with..

This updates all things from Jonathan's comments..

Nov 9 2015, 2:58 PM
rrs updated the diff for D1755: Kernel Test Framework (built for the callout testing).

Ok this addresses getting all things in a module (framework and callout code test for
new async-drain tests). And it also moves headers to sys/tests

Nov 9 2015, 2:51 PM
rrs added inline comments to D4055: First step to modularize TCP including two added tcp modules that can be played with..
Nov 9 2015, 1:53 PM

Nov 6 2015

rrs updated the diff for D4076: Add async drain from within the callout system..

Gesh, I am going to get more coffee.. .pick the right update silly.

Nov 6 2015, 12:49 PM
rrs updated the diff for D4076: Add async drain from within the callout system..

opps forgot the arg's in the man

Nov 6 2015, 12:47 PM
rrs updated the diff for D4076: Add async drain from within the callout system..

Ok this adds the small section into the manual page. With
that we are about ready :-)

Nov 6 2015, 12:42 PM
rrs added a comment to D4055: First step to modularize TCP including two added tcp modules that can be played with..

all the rest I will fix shortly

Nov 6 2015, 12:24 PM
rrs updated the diff for D4076: Add async drain from within the callout system..

This update is now tested. However I still need to an update to
the manual. Kib has a proposal to change where I KASSERT(drain == NULL) and
I think we should do that i.e. make that case return -1.

Nov 6 2015, 12:14 PM
rrs requested changes to D3115: Fix return value for callout_stop_safe(9)..

Oh I forgot to mark this :-)

Nov 6 2015, 12:11 PM
rrs added a comment to D3115: Fix return value for callout_stop_safe(9)..

Hmm the problem here is the same I see in building the async-drain functionality. This
is the one case that is rather nebulous in the callout return when stopping. If you
return 1, you say the callout was stopped.. but was it? Not really, this block of
code will happen in the case you illustrate but also in the case where the
callout was already stopped. Returning 1 when it was already stopped (that I was able
to stop it) is not really what you want.

Nov 6 2015, 12:11 PM

Nov 3 2015

rrs updated the diff for D4076: Add async drain from within the callout system..

Fix imp's blank line style issue.

Nov 3 2015, 9:48 PM
rrs updated the diff for D4076: Add async drain from within the callout system..

Fix the great bug Han's found in setting drain..

Nov 3 2015, 9:45 PM
rrs updated the diff for D4076: Add async drain from within the callout system..

Ok lets make it so that *always* if you call callout_async_drain() on a stopped/completed timer
then kassert and die. You need to always assure the timer is running before you call
async_drain!

Nov 3 2015, 9:21 PM
rrs updated the diff for D4076: Add async drain from within the callout system..

After chatting with jhb, some changes he suggested.

Nov 3 2015, 8:31 PM
rrs updated the diff for D4076: Add async drain from within the callout system..

Fixes typo Han's caught.. great catch thanks!

Nov 3 2015, 6:59 PM
rrs added inline comments to D4076: Add async drain from within the callout system..
Nov 3 2015, 6:58 PM
rrs added inline comments to D4076: Add async drain from within the callout system..
Nov 3 2015, 6:57 PM
rrs updated the diff for D4076: Add async drain from within the callout system..

After thinking about it, we need to move the clear of active down and
only call drain in the duplicate stop case if the caller did not
clear active (which they should have when the callout really completed).

Nov 3 2015, 6:38 PM
rrs retitled D4076: Add async drain from within the callout system. from to Add async drain from within the callout system..
Nov 3 2015, 5:34 PM
rrs added a comment to D3521: Implement callout_drain_async().

The right way to do this is so that
callout_stop_async_drain(struct callout *, drain_function)
is made.

Nov 3 2015, 4:41 PM
rrs updated the diff for D4055: First step to modularize TCP including two added tcp modules that can be played with..

Opps, I blew that by having timers defined for the default side. Lets take this
chance to re-structure so the top 3 functions are the ones that must be defined
and optional functions follow with comments.

Nov 3 2015, 4:19 PM
rrs updated the diff for D4055: First step to modularize TCP including two added tcp modules that can be played with..

Ok I think this wraps up the comments. We will want to re-address
the timer issue if we get a callout_drain_async() in the timer world since
without out it we end up adding a *bunch* of stuff to try to maintain the
rather twisty timer based callout_drain_async() that tcp is maintaining :-)

Nov 3 2015, 4:12 PM

Nov 2 2015

rrs added inline comments to D4055: First step to modularize TCP including two added tcp modules that can be played with..
Nov 2 2015, 11:37 PM
rrs added inline comments to D4055: First step to modularize TCP including two added tcp modules that can be played with..
Nov 2 2015, 10:24 PM
rrs updated the diff for D4055: First step to modularize TCP including two added tcp modules that can be played with..

Ok this wraps up the timer concern, however this does not yet address
a issue we have with the timer_stop() call.. i.e. the hookey way we stop since
a callout_drain_async() is not present in the callout system. How do we stop all
and assure the flags are set properly??

Nov 2 2015, 10:20 PM
rrs updated the diff for D4055: First step to modularize TCP including two added tcp modules that can be played with..
Nov 2 2015, 9:48 PM
rrs committed rS290276: Fix three flowtable bugs, a) one lookup issue, b) a two cleaner issue..
Fix three flowtable bugs, a) one lookup issue, b) a two cleaner issue.
Nov 2 2015, 9:21 PM
rrs closed D4014: Flowtable cleaner problems (3 bugs). by committing rS290276: Fix three flowtable bugs, a) one lookup issue, b) a two cleaner issue..
Nov 2 2015, 9:21 PM
rrs added a comment to D4014: Flowtable cleaner problems (3 bugs)..

I disagree with you imp

Nov 2 2015, 9:07 PM
rrs added a comment to D4055: First step to modularize TCP including two added tcp modules that can be played with..

Thanks for your review.. I did not expect you to look that klm.. its just a fast path copy
of something I have been playing with. I wanted to be able to show how it worked to
give folks something to play with.

Nov 2 2015, 7:15 PM

Oct 31 2015

rrs retitled D4055: First step to modularize TCP including two added tcp modules that can be played with. from to First step to modularize TCP including two added tcp modules that can be played with..
Oct 31 2015, 11:39 PM

Oct 27 2015

rrs retitled D4014: Flowtable cleaner problems (3 bugs). from to Flowtable cleaner problems (3 bugs)..
Oct 27 2015, 11:50 AM

Oct 26 2015

rrs added a comment to D3971: Follow rfc6675 and maintain sacked bytes to calculate correct inflight/pipe calculation..

To me this looks good. You are properly computing the pipe per RFC 6675, and yes
that does mean you double count (at times) some of the data as being in-flight. The
RFC actually specifically states that :-)

Oct 26 2015, 9:27 PM

Oct 15 2015

rrs added a comment to D3864: Add a safety net to reclaim mbufs when one of the mbuf zones become exhausted.

Should not the callout have some sort of lock?

Oct 15 2015, 4:59 PM · network
rrs added a comment to D3521: Implement callout_drain_async().

I don't know but as yet, I have not taken the time to think through the problem. I don't
understand why you think there is a *burning* need for this call. TCP has, as you pointed
out, used a similar method.. it can do that and *not* harm itself since it knows what it
expects the lock to return as (locked or unlocked) and take appropriate action.

Oct 15 2015, 2:00 PM
rrs added a comment to D3858: Add an ability to specify initial congestion window..

The big difference here is if I set a typical sysctl in FreeBSD I can easily shoot-myself and
thats ok. I pay the price for my stupid setting of the sysctl. The big difference with some of
the TCP settings is that not only I, but those connected to my area of the Internet also will
pay the price.

Oct 15 2015, 1:51 PM
rrs added a comment to D3858: Add an ability to specify initial congestion window..

So Lawrence,

Oct 15 2015, 1:21 PM

Oct 13 2015

rrs added a comment to D3521: Implement callout_drain_async().

This has a very very awful side effect in it. You change
the callout lock type. This means the KAPI user may have
specified to return locked, and you change it to UNLOCKED.

Oct 13 2015, 10:08 PM

Jul 24 2015

rrs committed rS285838: Fix silly syntax error emacs chugged in for me.. gesh..
Fix silly syntax error emacs chugged in for me.. gesh.
Jul 24 2015, 2:13 PM
rrs committed rS285837: Fix an issue with MAC OS locking and also optimize the case.
Fix an issue with MAC OS locking and also optimize the case
Jul 24 2015, 2:09 PM

Jul 22 2015

rrs committed rS285792: Fix several problems with Stream Reset..
Fix several problems with Stream Reset.
Jul 22 2015, 11:31 AM
rrs committed rS285788: Fix inverted logic bug that David Wolfskill found (thanks David!).
Fix inverted logic bug that David Wolfskill found (thanks David!)
Jul 22 2015, 9:29 AM

Jul 21 2015

rrs committed rS285740: When a tunneling protocol is being used with UDP we must release the.
When a tunneling protocol is being used with UDP we must release the
Jul 21 2015, 9:54 AM

Jun 17 2015

rrs abandoned D2842: Update style.9 to reflect consensus on developer's mailing list..
Jun 17 2015, 3:24 PM

May 29 2015

rrs added a comment to D2079: Fix TCP timers use-after-free old race conditions.

We don't use TOE (we use LRO though). The panic's we have are the persist timer. Lawrence
has an idea though and is investigating that. Maybe he can turn something up.

May 29 2015, 10:59 AM

May 28 2015

rrs added a comment to D2079: Fix TCP timers use-after-free old race conditions.

Hi all:

May 28 2015, 6:24 PM

Apr 27 2015

rrs committed rD46618: Update my out-of date key..
Update my out-of date key.
Apr 27 2015, 12:25 PM

Mar 28 2015

rrs closed D1711: Changes to the callout code to restore active semantics and also add a test-framework and test to validate the callout code (and potentially for use by other tests)..
Mar 28 2015, 2:54 PM

Mar 25 2015

rrs added a comment to D2079: Fix TCP timers use-after-free old race conditions.

I do still want to look at this a bit deeper though before we land this, we probably should
add lstewart to the review too.

Mar 25 2015, 9:48 PM
rrs added a comment to D2079: Fix TCP timers use-after-free old race conditions.

This is an excellent fix for a very nasty problem thats been lurking in the tcp stack for quite some time ;-)

Mar 25 2015, 9:47 PM

Mar 14 2015

rrs updated the diff for D1894: Guarding against invalid CPU or mixed mode callout_reset and callout_reset_on.

This updates us to:
a) What Hiren is running in production i.e. split the c_flags into two, and avoid a lock in callout_deactivate()
b) Take JHB's suggestion and have non-caring macro calls to the per_cpu base calls *not* pass in c->c_cpu but

instead a cookie, in this case -1, I did not want to use CPUBLOCK since that is already over-loaded.
Mar 14 2015, 10:14 AM

Mar 5 2015

rrs added a comment to D1894: Guarding against invalid CPU or mixed mode callout_reset and callout_reset_on.

Hmm well thats the one that jhb objected to, to complex to look at I think was his
reasoning. It works fine .. IMO.. of course to make it "simpler" then you have to
add the lock which is a bit more overhead but I can't measure the difference on
my systems.

Mar 5 2015, 6:30 PM
rrs added a comment to D1894: Guarding against invalid CPU or mixed mode callout_reset and callout_reset_on.

ok so it has the callout_lock() inside callout_deactivate().. perfect.. that is what
I will commit this weekend :-)
R

Mar 5 2015, 6:23 PM
rrs added a comment to D1894: Guarding against invalid CPU or mixed mode callout_reset and callout_reset_on.

Ok I have tested the former method (separate flags) that Hiren currently is using, and I
have tested the method suggested by jhb that uses a lock (shown here). There is
no detectible performance difference that I can see. The same machine with a
similar traffic load ran 40Gbps on both nights with virtually the same CPU load metrics.
Of course our load is all elephants with almost no mice, but it probably will be
the same for large numbers of mice since you most likely hope these timers
do *not* go off and you don't call deactivate unless the timer goes off...

Mar 5 2015, 11:38 AM

Mar 1 2015

rrs added inline comments to D1894: Guarding against invalid CPU or mixed mode callout_reset and callout_reset_on.
Mar 1 2015, 8:14 AM

Feb 28 2015

rrs added a comment to D1894: Guarding against invalid CPU or mixed mode callout_reset and callout_reset_on.

As of this coming Friday I will finish up my testing.. I am going to
contrast the performance penalty we get by using the lock in the deactivate
vs splitting the field.. (all my testing so far as been with a split field for the most part).

Feb 28 2015, 10:17 PM

Feb 27 2015

rrs added inline comments to D1894: Guarding against invalid CPU or mixed mode callout_reset and callout_reset_on.
Feb 27 2015, 2:34 PM

Feb 26 2015

rrs updated the diff for D1894: Guarding against invalid CPU or mixed mode callout_reset and callout_reset_on.

This addresses Han's issue with falling back to the "previous" CPU.. instead we
fall forward to the new one. The only way this occurs with CPUBLOCK in place
is if another thread holds the lock and is doing a cpu_switch.. so we just update
the lcpu to have the new value before we do the switch.

Feb 26 2015, 12:33 PM
rrs added inline comments to D1894: Guarding against invalid CPU or mixed mode callout_reset and callout_reset_on.
Feb 26 2015, 2:15 AM

Feb 24 2015

rrs added inline comments to D1894: Guarding against invalid CPU or mixed mode callout_reset and callout_reset_on.
Feb 24 2015, 10:28 PM
rrs updated the diff for D1894: Guarding against invalid CPU or mixed mode callout_reset and callout_reset_on.

This update takes JHB's suggestion and instead of splitting the
c_flags into two fields, makes callout_deallocate() be a function and it
gets the CC_LOCK for any bit twiddling.

Feb 24 2015, 5:25 PM

Feb 23 2015

rrs updated the diff for D1894: Guarding against invalid CPU or mixed mode callout_reset and callout_reset_on.

Separate the internal state keeping flags to a new c_iflags. Also fix
ng which incorrectly accesses the flags directly and was failing to use
the macros (which do the right thing).

Feb 23 2015, 2:42 PM

Feb 19 2015

rrs updated the diff for D1894: Guarding against invalid CPU or mixed mode callout_reset and callout_reset_on.

For Han's pointed out callout_stop/callout_reset issue with migration. We can't
re-order the test, since then stop would fail in the locked case.

Feb 19 2015, 6:03 PM

Feb 18 2015

rrs added a comment to D1711: Changes to the callout code to restore active semantics and also add a test-framework and test to validate the callout code (and potentially for use by other tests)..

Ok after much discussion with Hans, we *could* have an issue where the
user sends in an invalid CPU. This is *not* what I think is happening with Hiren
since the cc_cpu and lock is all sane (it would be a invalid index to cc_cpu which
would not have an init'd lock). But I have created a new review since this one
is already committed

Feb 18 2015, 1:43 PM
rrs retitled D1894: Guarding against invalid CPU or mixed mode callout_reset and callout_reset_on from to Guarding against invalid CPU or mixed mode callout_reset and callout_reset_on.
Feb 18 2015, 1:40 PM
rrs added a comment to D1711: Changes to the callout code to restore active semantics and also add a test-framework and test to validate the callout code (and potentially for use by other tests)..

I have thought long and hard about this. I don't think its a bug.
But to know for sure I will need to add some instrumentation.

Feb 18 2015, 11:37 AM

Feb 17 2015

rrs added a comment to D1711: Changes to the callout code to restore active semantics and also add a test-framework and test to validate the callout code (and potentially for use by other tests)..

I think your wrong here. The caller of callout_cpu_switch() is holding
the CC_LOCK(). Now there are only two callers of this function.

Feb 17 2015, 9:26 PM