- User Since
- Jun 22 2015, 5:21 PM (199 w, 4 d)
Thu, Apr 18
Removed redundant parens around bus_get_domain() call as pointed out by markj
Wed, Apr 17
Address kib's feedback
- remove unneeded _domainset.h include
- re-write if_alloc_dev() to be more concise
- Added if_alloc_dev() and changed example mlx5en and cxgbe code to use them, as suggested by kib.
- Added links to if_alloc_domain and if_alloc_dev for man pages
- Fixed style issues pointed out by kib
Tue, Apr 16
Mon, Apr 15
Tue, Apr 9
Thu, Mar 28
Address review feedback from marius & shurd
Wed, Mar 27
YES! Death to M_DEVBUF!
Mar 19 2019
Fixed comments, as pointed out by ejg
Mar 18 2019
Mar 16 2019
Mar 14 2019
Mar 13 2019
I think this is a mostly theoretical issue, as you'll have had a chain which was impossible to send (eg, far too large, etc) even after defrag.
Mar 10 2019
- Use new pfil_mem2mbuf() to avoid unaligned access of mbuf pointer
- Remove unneeded breaks
Feb 25 2019
Much cleaner, as usual, than the hack I gave you to start with.
Feb 21 2019
Guard against null pfil at device detach by deregistering pfil hook later. While here, check for a null pfil hook and cache it in a local to make the code easier to read.
Feb 15 2019
Feb 14 2019
I understand the missing FILTER_STRAY.
Feb 8 2019
Updated to truncate the length passed to pfil for multi-segment jumbo frames to just the length of the first segment.
Feb 7 2019
Any high performance interface will look similar to this and be similarly invasive.
The reason to have this in the driver is for performance. The plan for pfil is to eventually just use a pointer to a memory blob for filtering. The current fake mbuf stuff is a step in that direction.
Feb 6 2019
- moved rv declaration to top of function
- entered CURVNET to prevent panic from null curvnet when VIMAGE is compiled in Note placing this at the top of the rx function is a trade off between tiny overhead in the common case (nothing hooked) and a bit larger overhead in the case when something is hooked, and entering/restoring the VNET each time we call into the filter.
- Addressed all possible return values from pfil_run_hooks Note that PFIL_REALLOCED was tested by hacking pfil.c to copy packets
- Added a label to jump to when PFIL_REALLOCED is returned, and we need to send up an mbuf allocated by the filter.
Feb 2 2019
Jan 31 2019
Jan 28 2019
Jan 25 2019
Jan 22 2019
Jan 4 2019
Remove XXX as per wlosh
Jan 1 2019
Dec 30 2018
I really like collapsing all those pointers, and making the NULL checks flags. Great work.
Dec 15 2018
I like this much better; hopefully the performance tests will show that it is an improvement.
Dec 14 2018
Nov 27 2018
Nov 16 2018
I was about to say that cxgbe still uses it, but it looks like that was just changed in r340465. So yes, lets get rid of it.
Nov 10 2018
- Fixed a pre-existing bug where, when receiving small packets, rx clusters were not unmapped, yet they were re-mapped when refilling the ring. This was fixed by keeping track of the bus address in ifsd_ba, and simply re-using them rather than re-doing the virt to bus mapping
Nov 9 2018
Thanks Olivier. 5% is about what I had expected. I think I see a way to improve that though. We seem to be doing repeated virt to phys translation on clusters where we have copied out a small mbuf on the rx side in iflib_rxd_pkt_get(). We call rxd_frag_to_sd() with a FALSE arg, to prevent unmapping. Yet in _iflib_fl_refill(), we seem to always do the mapping, even when we do not re-allocate clusters. This is one bit that's going to be more expensive on low-end boxes, since it will now result in a busdma callback function being called. I think this is an actual bug that would impact systems w/IOMMUs
Nov 8 2018
Oct 26 2018
Oct 23 2018
Oct 19 2018
Oct 11 2018
Stepping back for a second, are we going to get to a point where we can make malloc() and uma_zalloc() use the current thread's domainset policy, rather than one derived from the kernel object?
Oct 10 2018
FWIW, i have patched both of these changes (this + D17492) into the upstream ck git repo, and run them through the CK regression tests for epoch in userpace on my 32-core/64-thread amd, and they passed.
Oct 8 2018
You mention kstacks. I have not gone through the rest of your reviews, but I was wondering if you were working on affinitizing kstacks. Did you plan to break the cache out by domain, or drop it for affinitized kstack allocations? The default is so undersized these days, we're mostly not getting the benefit of the cache anyway (and the cache might be pessimal, since it is protected by a global lock).
Oct 6 2018
Oct 5 2018
Do we really need a new malloc variant? Couldn't this be done with a new malloc flag that was specific to malloc_domain(). Something like M_ALTOK or something? (or maybe M_EXACT if you want the default to be the other way around, and have malloc_domain() fall back by default)
Oct 1 2018
This was committed as r339043. Due to a cut and paste error, the wrong review was linked from the commit message, so the review was not auto-closed.
Sep 24 2018
- Fixed spelling errors pointed out by alc
- Updated to account for recent VM changes:
- added empty domain guard in kmm_back()
- fixed conflict in keg_fetch_slab() after r338755
Sep 19 2018
Sep 17 2018
Added check for empty domains in uma_large_malloc_domain(), and removed added blank line, as pointed out by Mark
Sep 15 2018
Sep 13 2018
Sep 10 2018
FWIW, as I mentioned in private email, the testing went fine. I verified that there were no apparent mem leaks, and that in_pcblbgroup_free_deferred() was called when I bounced nginx several times on a heavily loaded (> 90Gb/s) box.
Sep 6 2018
We've had it in our config at Netflix for so long that I forgot that it was not in GENERIC..
Aug 29 2018
For what it is, Van's birthday might be a better choice. Eg, some non-valid pointer that would cause free or mfree to panic rather than accept it and corrupt data.
Aug 28 2018
Sorry, having the ring pointer in the ring is just so odd.. Can you explain why it is there? Maybe it would be better to just not have the ring pointer in the ring and not have to have all these special cases.
What keeps the normal, non-IFC_QFLUSH from hitting this condition? Is the txq pointer included in r->size?
Aug 27 2018
Aug 25 2018
Aug 23 2018
Thanks for the clarification on the non-offset range!
Thank you so much for the pointer to the docs!!! It is much nicer to write from real docs, rather than crib from undocumented changes in another project.