gallatin (Andrew Gallatin)
User

Projects

User Details

User Since
Jun 22 2015, 5:21 PM (134 w, 2 d)

Recent Activity

Oct 31 2017

gallatin added a comment to D12101: swfw_sync DELAY -> sleep conversion.

I think you'll get a lot less pushback if you serialize the multicast stuff in the stack, rather than the driver framework. This will allow you to put warnings / asserts into all the ioctl entry points above the drivers, so as to lock in the "you can't hold a lock while calling into a driver" rule.

Oct 31 2017, 3:47 PM · network

Oct 23 2017

gallatin added a comment to D12101: swfw_sync DELAY -> sleep conversion.

So let me try to sum up in my own words what's going on here:

Oct 23 2017, 3:40 PM · network

Oct 17 2017

gallatin added a comment to D12638: mlx5(4) rx timestamps..
In D12638#263636, @kib wrote:
Oct 17 2017, 5:19 PM
gallatin added a comment to D12638: mlx5(4) rx timestamps..

I patched this into our netflix tree. I confirmed that, even with rx timestamps enabled, the new functionality does not cause a significant performance loss in our case. There seems to be roughly one or two cache misses per mlx5e_poll_rx_cq() to check the p->priv->clbr_done > 2 condition, and roughly 8x as many for the timestamp handling itself. This pushes the cost of mlx5e_build_rx_mbuf() higher, but not horribly so.

Oct 17 2017, 1:05 PM

Oct 11 2017

gallatin accepted D12638: mlx5(4) rx timestamps..

I have not tested it yet, but this looks fantastic. Thank you for this!

Oct 11 2017, 8:56 PM

Oct 9 2017

gallatin accepted D12615: Mbuf external storage improvements..

The change doesn't affect sfbufs at all.

What is LGTM?

Oct 9 2017, 2:41 PM

Sep 25 2017

gallatin added a comment to D12487: Combine LROed mbufs for a single call to if_input().

I think this is intended to piggyback on the recent iflib change which claims a speedup from chaining the packets. However, I'm afraid that I don't understand where this speedup is coming from. The stated reason to allow chaining in ether_input() is to allow drivers to amortize the release/acquire of the rx lock. However, no decent driver even uses an rx lock anymore, certainly not iflib or mlx5. So is there a benefit? If yes, then can you explain where it is coming from?

Sep 25 2017, 1:46 PM

Sep 6 2017

gallatin accepted D12229: mlx4_en: Setup mbuf hash type properly.
Sep 6 2017, 6:54 PM

Aug 31 2017

gallatin accepted D12176: mlx4_en: Implement SIOCGIFRSS{KEY,HASH}.
Aug 31 2017, 1:15 PM
gallatin added inline comments to D12175: hyperv/hn: Implement SIOCGIFRSS{KEY,HASH}..
Aug 31 2017, 1:14 PM
gallatin accepted D12175: hyperv/hn: Implement SIOCGIFRSS{KEY,HASH}..
Aug 31 2017, 1:12 PM
gallatin accepted D12174: if: Add ioctls to get RSS key and hash type/function..
Aug 31 2017, 1:07 PM

Aug 28 2017

gallatin accepted D12137: Adaptively enable/disable entropy collection from packets.

We currently disable entropy collection (or hoarding, as you aptly describe it) for NET_ETHER. It looks like if the IFF_ NO_ENTROPY flag was present for our 100G nics, this might be slightly cheaper for us, as it will avoid the function call, and the load of the entropy mask, since if_flags will already be hot in cache from the IFF_UP check. As it is, it will be no worse .

Aug 28 2017, 12:34 PM

Aug 27 2017

gallatin added a comment to D11525: Allow distinct setting and querying of interrupt and ithread affinities.

Added my probably-weak mdoc suggestions, and added brueffer as a reviewer.

Aug 27 2017, 8:44 PM

Aug 24 2017

gallatin added a comment to D11525: Allow distinct setting and querying of interrupt and ithread affinities.

This is a bit confusing. The new -I and -X options take the same irq argument as the old -x?

Aug 24 2017, 11:41 AM

Aug 11 2017

gallatin added a comment to D11969: refactoring in support of *future* change to cope with slow configuration path on INTC and BRCM drivers.

It has been years since I've had to think about this, but I remember that the problem that all drivers fight is that you wind up being called in your ioctl routine with potentially some lock held by something that is calling you, so you cannot sleep. Is that still the issue? Can you remind me what lock is held?

Aug 11 2017, 1:19 PM

Aug 3 2017

gallatin accepted D11683: Fix mlx4en(4) to properly call m_defrag..
Aug 3 2017, 3:29 PM
gallatin added inline comments to D11683: Fix mlx4en(4) to properly call m_defrag..
Aug 3 2017, 2:01 PM

Aug 1 2017

gallatin added a comment to D11525: Allow distinct setting and querying of interrupt and ithread affinities.

Thanks for the feedback. I'll reach out to wblock about the doc changes. I'm quite weak in man page fu, and this is a slightly odd one at that..

Aug 1 2017, 2:38 PM
gallatin updated the diff for D11525: Allow distinct setting and querying of interrupt and ithread affinities.
  • Feedback from jbh regarding wording
Aug 1 2017, 2:35 PM

Jul 31 2017

gallatin committed rS321790: Don't request CTLTYPE_OPAQUE if we can't print them..
Don't request CTLTYPE_OPAQUE if we can't print them.
Jul 31 2017, 2:57 PM
gallatin closed D11461: Don't request CTLTYPE_OPAQUE if we can't print them. by committing rS321790: Don't request CTLTYPE_OPAQUE if we can't print them..
Jul 31 2017, 2:56 PM

Jul 13 2017

gallatin added a comment to D10445: Speed up NVME crashdumps.

I finally tried this, and sadly it does not seem to speed things up at all.

Jul 13 2017, 5:18 PM

Jul 10 2017

gallatin accepted D11518: Add support for generic backpressure indicator for ratelimited transmit queues aswell as non-ratelimited ones.
Jul 10 2017, 2:13 PM

Jul 7 2017

gallatin created D11525: Allow distinct setting and querying of interrupt and ithread affinities.
Jul 7 2017, 9:54 PM

Jul 6 2017

gallatin committed rS320738: Simplify UIO_SYSSPACE and UIO_NOCOPY paths in uiomove.
Simplify UIO_SYSSPACE and UIO_NOCOPY paths in uiomove
Jul 6 2017, 3:04 PM
gallatin closed D11489: Simplify UIO_SYSSPACE and UIO_NOCOPY paths in uiomove by committing rS320738: Simplify UIO_SYSSPACE and UIO_NOCOPY paths in uiomove.
Jul 6 2017, 3:04 PM

Jul 5 2017

gallatin added inline comments to D11489: Simplify UIO_SYSSPACE and UIO_NOCOPY paths in uiomove.
Jul 5 2017, 5:16 PM
gallatin added inline comments to D11489: Simplify UIO_SYSSPACE and UIO_NOCOPY paths in uiomove.
Jul 5 2017, 5:02 PM
gallatin updated the diff for D11489: Simplify UIO_SYSSPACE and UIO_NOCOPY paths in uiomove.

Address kib's feedback

Jul 5 2017, 5:00 PM
gallatin added inline comments to D11489: Simplify UIO_SYSSPACE and UIO_NOCOPY paths in uiomove.
Jul 5 2017, 4:42 PM
gallatin created D11489: Simplify UIO_SYSSPACE and UIO_NOCOPY paths in uiomove.
Jul 5 2017, 1:16 PM

Jul 4 2017

gallatin accepted D11475: Zero initialize all fields of socket structure.

This seems reasonable to me

Jul 4 2017, 1:31 PM

Jul 3 2017

gallatin created D11461: Don't request CTLTYPE_OPAQUE if we can't print them..
Jul 3 2017, 1:30 PM

May 18 2017

gallatin accepted D10681: bnxt: Enable HW LRO and Fix out-of-order updates to rxd's completely..

I really hate the idea of spreading the linux kpi, but I totally understand why you used it. We should probably move a lot of that stuff to a native interface.

May 18 2017, 6:06 PM

May 15 2017

gallatin accepted D10645: Avoid use of contiguous memory allocations in busdma.
May 15 2017, 1:07 PM

May 11 2017

gallatin accepted D10645: Avoid use of contiguous memory allocations in busdma.

I added Scott, as he's been quite involved in the busdma code. I want to make sure this looks OK to him too.

May 11 2017, 1:39 PM
gallatin added a reviewer for D10645: Avoid use of contiguous memory allocations in busdma: scottl.
May 11 2017, 1:38 PM

Apr 24 2017

gallatin accepted D10432: Flush the LRO ctrl as soon as lro_mbufs fills up..
Apr 24 2017, 10:24 PM
gallatin accepted D10430: Frames that are not considered for LRO should not be counted in LRO stats..
Apr 24 2017, 10:22 PM

Mar 28 2017

gallatin accepted D10156: use counter(9) in vmmeter.
Mar 28 2017, 9:34 PM

Feb 17 2017

gallatin added inline comments to D9307: Support for "fake" NUMA domains for scaling the page queues..
Feb 17 2017, 3:46 PM

Feb 15 2017

gallatin updated the diff for D9307: Support for "fake" NUMA domains for scaling the page queues..
  • Add sanity checking to reject bad configs.
  • Make original physical domain count available

via sysctl

Feb 15 2017, 8:47 PM
gallatin added a comment to D9307: Support for "fake" NUMA domains for scaling the page queues..

Thanks again for all the style fixes (we really need a checkpatch, a-la linux, or a c-style like opensolaris -- having hopped between OSes so much, i'm terrible at style(9). And thanks for catching the uninitialized variable.

Feb 15 2017, 4:45 PM
gallatin updated the diff for D9307: Support for "fake" NUMA domains for scaling the page queues..
  • style fixes, as well as making sure to initialize the domain.
Feb 15 2017, 4:42 PM

Feb 10 2017

gallatin added a comment to D9307: Support for "fake" NUMA domains for scaling the page queues..

Thanks for the feedback

Feb 10 2017, 7:26 PM
gallatin updated the diff for D9307: Support for "fake" NUMA domains for scaling the page queues..
  • Address Kib's feedback
Feb 10 2017, 7:22 PM

Jan 23 2017

gallatin retitled D9307: Support for "fake" NUMA domains for scaling the page queues. from to Support for "fake" NUMA domains for scaling the page queues..
Jan 23 2017, 8:26 PM

Jan 17 2017

gallatin accepted D3687: Implement kernel support for hardware rate limited sockets.
Jan 17 2017, 2:03 PM

Nov 30 2016

gallatin added inline comments to D3687: Implement kernel support for hardware rate limited sockets.
Nov 30 2016, 8:18 PM
gallatin added inline comments to D3687: Implement kernel support for hardware rate limited sockets.
Nov 30 2016, 7:38 PM

Nov 18 2016

gallatin added inline comments to D3687: Implement kernel support for hardware rate limited sockets.
Nov 18 2016, 2:31 PM

Oct 20 2016

gallatin committed rS307673: Clear mbuf hashtype on loopback when RSS is enabled..
Clear mbuf hashtype on loopback when RSS is enabled.
Oct 20 2016, 1:48 PM

Oct 19 2016

gallatin added a comment to D3687: Implement kernel support for hardware rate limited sockets.
  • we could add another 4 bytes to mbuf pkthdr and it still wouldn't fill a cacheline;
Oct 19 2016, 4:26 PM
gallatin accepted D5213: convert ixgbe to iflib.
Oct 19 2016, 2:00 PM

Oct 14 2016

gallatin added a comment to D3687: Implement kernel support for hardware rate limited sockets.

Hi Navdeep,

Oct 14 2016, 2:59 PM
gallatin accepted D8243: Reduce the number of calls to reset the keepalive timer.

This seems like a great idea. I don't see any downside.

Oct 14 2016, 2:27 PM

Oct 13 2016

gallatin added a comment to D5213: convert ixgbe to iflib.

Yep.. i missed it. So nevermind then. Darn, I was hoping this would be easy.

Oct 13 2016, 1:11 PM
gallatin added a comment to D5213: convert ixgbe to iflib.

I'm not sure where ipi_flags is initialized in the main iflib.c routine; it appears that it is used just for v4/v6 determination and those bits are OR'ed in. So having stack garbage in the flags could lead to IPI_TX_IPV4 being set, and the ixgbe driver taking the wrong offload path. Perhaps the first thing to try would be to change those OR's to simple assignments:

Oct 13 2016, 12:55 PM
gallatin added a comment to D5213: convert ixgbe to iflib.

TSO implies checksum offload. If you could reverse the order of your test, that would be helpful. Eg, does +txcsum6 -tso6 work?

Oct 13 2016, 12:46 PM

Oct 11 2016

gallatin accepted D8221: Avoid accessing the socket memory in tcp_input() for ESTABLISHED sessions.
Oct 11 2016, 11:33 PM
gallatin accepted D3687: Implement kernel support for hardware rate limited sockets.
Oct 11 2016, 1:17 PM

Oct 3 2016

gallatin committed rS306637: Conditionally move initial vfs bio alloc above 4G.
Conditionally move initial vfs bio alloc above 4G
Oct 3 2016, 1:24 PM

Sep 21 2016

gallatin accepted D7904: Make ICMPv6 hard error handling for TCP consistent with the ICMPv4 handling.
Sep 21 2016, 1:14 PM

Aug 18 2016

gallatin added inline comments to D3687: Implement kernel support for hardware rate limited sockets.
Aug 18 2016, 4:53 PM
gallatin accepted D7551: New driver for Broadcom NetXtreme-C and NetXtreme-E devices.

Mostly looks great. A few general comments:

Aug 18 2016, 4:41 PM
gallatin accepted D7564: LRO nsegs.

I can't prove my paranoia, so I think we should get this in, as it will be an improvement on balance.

Aug 18 2016, 4:12 PM

Aug 16 2016

gallatin accepted D6790: Add functionality so you can optionally change a progressed socket to a new tcp stack.
Aug 16 2016, 2:56 PM

Aug 15 2016

gallatin accepted D7499: tcp/lro: Make # of LRO entries tunable.

I tend to think type / range checking something like this is overkill.. I'm OK with it as-is..

Aug 15 2016, 6:08 PM

Aug 11 2016

gallatin committed rS303966: MFC r303457:.
MFC r303457:
Aug 11 2016, 7:05 PM
gallatin accepted D7393: Update iflib to support more NIC designs.
Aug 11 2016, 12:43 PM
gallatin added a comment to D7393: Update iflib to support more NIC designs.
In D7393#155251, @kmacy wrote:

Are there further reservations to this change?

This is the API he has been working against for the bnxt driver so he needs this to go in before bnxt does.

Aug 11 2016, 12:42 PM

Aug 4 2016

gallatin accepted D7415: tcp/lro: If timestamps mismatch or it's a FIN, force flush..
Aug 4 2016, 12:20 PM

Aug 2 2016

gallatin added inline comments to D7393: Update iflib to support more NIC designs.
Aug 2 2016, 1:08 AM
gallatin added a reviewer for D7393: Update iflib to support more NIC designs: kmacy.
Aug 2 2016, 12:18 AM

Aug 1 2016

gallatin committed rS303626: Rework IPV6 TCP path MTU discovery to match IPv4.
Rework IPV6 TCP path MTU discovery to match IPv4
Aug 1 2016, 5:02 PM
gallatin closed D7272: Rework IPv6 TCP path MTU discovery to match IPv4 by committing rS303626: Rework IPV6 TCP path MTU discovery to match IPv4.
Aug 1 2016, 5:02 PM

Jul 28 2016

gallatin committed rS303457: Call tcp_notify() directly to shoot down routes, rather than.
Call tcp_notify() directly to shoot down routes, rather than
Jul 28 2016, 7:32 PM
gallatin closed D7251: Avoid calling in_pcbnotifyall() to flush cached routes by committing rS303457: Call tcp_notify() directly to shoot down routes, rather than.
Jul 28 2016, 7:32 PM
gallatin updated the diff for D7272: Rework IPv6 TCP path MTU discovery to match IPv4.

Fix LINT-NOINET and a few line width problems

Jul 28 2016, 3:31 PM

Jul 27 2016

gallatin updated the diff for D7272: Rework IPv6 TCP path MTU discovery to match IPv4.

Update with some cleanups in reaction to comments from lstewart@

Jul 27 2016, 6:46 PM

Jul 26 2016

gallatin accepted D7136: TCP Timer cleanup.
Jul 26 2016, 3:32 PM

Jul 23 2016

gallatin added a comment to D7251: Avoid calling in_pcbnotifyall() to flush cached routes.
In D7251#151654, @mike-karels.net wrote:

I'm not sure my acceptance "counts" using mike-karels.net; if you add karels@, I can re-approve.

Jul 23 2016, 12:59 PM

Jul 22 2016

gallatin updated the diff for D7272: Rework IPv6 TCP path MTU discovery to match IPv4.
  • Address ae's feedback
Jul 22 2016, 6:26 PM
gallatin added a comment to D7251: Avoid calling in_pcbnotifyall() to flush cached routes.

OK, the diff is back to the way it should be. Now to try to make arc apply my change to the correct, dependant review.

Jul 22 2016, 6:21 PM
gallatin updated the diff for D7251: Avoid calling in_pcbnotifyall() to flush cached routes.
  • Revert other files touched in mis-placed arc diff
Jul 22 2016, 6:20 PM
gallatin updated the diff for D7251: Avoid calling in_pcbnotifyall() to flush cached routes.
  • Revert mistplaced arc diff
Jul 22 2016, 6:16 PM
gallatin added a comment to D7251: Avoid calling in_pcbnotifyall() to flush cached routes.

OK, so my attempt at properly using arc has failed miserably.

Jul 22 2016, 6:06 PM
gallatin updated the diff for D7251: Avoid calling in_pcbnotifyall() to flush cached routes.

address feedback from ae

Jul 22 2016, 6:04 PM
gallatin added a comment to D7272: Rework IPv6 TCP path MTU discovery to match IPv4.

Thanks for the valuable input. I will uprev with my fixes later today.

Jul 22 2016, 2:50 PM

Jul 21 2016

gallatin added a dependency for D7272: Rework IPv6 TCP path MTU discovery to match IPv4: D7251: Avoid calling in_pcbnotifyall() to flush cached routes.
Jul 21 2016, 3:10 PM
gallatin added a dependent revision for D7251: Avoid calling in_pcbnotifyall() to flush cached routes: D7272: Rework IPv6 TCP path MTU discovery to match IPv4.
Jul 21 2016, 3:10 PM
gallatin retitled D7272: Rework IPv6 TCP path MTU discovery to match IPv4 from to Rework IPv6 TCP path MTU discovery to match IPv4.
Jul 21 2016, 3:08 PM

Jul 20 2016

gallatin accepted D7239: Fix per-connection L2 caching in fast path.

The code looks good to me; thanks for noticing that this was not in place.

Jul 20 2016, 4:20 PM

Jul 19 2016

gallatin retitled D7251: Avoid calling in_pcbnotifyall() to flush cached routes from to Avoid calling in_pcbnotifyall() to flush cached routes.
Jul 19 2016, 3:58 PM

Jul 13 2016

gallatin accepted D7136: TCP Timer cleanup.

In addition to helping the callout correctness, this seems to improve lock contention on tcbinfo, since this lock is now taken only when needed, not when entering every routine (thereby blocking writers, or blocking when a writer has the lock).

Jul 13 2016, 8:41 PM
gallatin added a reviewer for D7136: TCP Timer cleanup: gallatin.
Jul 13 2016, 8:36 PM

Jun 29 2016

gallatin added a reviewer for D7017: Add basic wrapper for CK's EBR: gallatin.
Jun 29 2016, 3:30 PM

Jun 7 2016

gallatin accepted D6689: tcp/lro: Implement hash table for LRO entries..

Looks good in terms of not killing perf. for the sorted case, and I'm fine with it as-is. However, maybe an else would be better than a goto?

Jun 7 2016, 1:16 PM

May 31 2016

gallatin added a comment to D6619: Use insertion sort instead of bubble sort in TCP LRO.
In D6619#140530, @gnn wrote:

Why are we implementing new sorts in the TCP stack? The stack should depend on generic sorting functions placed in a library.

May 31 2016, 8:03 PM