User Details
- User Since
- Jun 19 2014, 6:57 AM (545 w, 11 h)
Jul 27 2023
So yeah, looks fine to me, but I'm very out of touch with current iflib, so I'm inclined to not approve with my iflib hat on. My biggest concern was that someone may think it's the right way to handle the bits.
Yeah, looks like em_if_update_admin_status() sets speed to zero when link is lost, so just not turning off TSO when speed == 0 would do the trick.
Wouldn't it also whack TSO on a flap for 1G? It seems like if you want TSO, you'll have to explicitly re-enable it every time a 1G link is established.
Ah yes, makes more sense to enable then... not sure how you'll manage to keep the admin preferences though. It looks like if I have TSO enabled and unplug the cable then plug it back in, TSO will become disabled?
Oh wow, so TSO works at 100Mbbs, but fails at 1Gbps? Crazy. I would personally be inclined to just disable TSO unconditionally in attach_pre(), but if someone *really* wants TSO for their "Fast" Ethernet connections, you may as well give it to them.
Jul 26 2023
Add SOC_IMX6 to GENERIC since it's used in if_ffec.c now
I understand this will need to be split up, just wanted to get initial feedback in case I'm heading in terrible directions.
Clean up my cruft
Clean up my cruft
Clean up my cruft
Curious why the driver would need to change it in init... can devices actually change their supported offloads after attach? Aside from the initial setup, I would expect control of which offloads to use would be under the control of the user, not the driver... I would be very surprised if taking an interface down then up changed the offload flags.
Apr 10 2020
Sep 20 2019
Excellent news, and it looks like there's still some performance left on the table there. I guess the question now is if I consider the theory that getting rid of the mp ring improves performance proven and start gutting it, or if I finish separating the TX path from the reclaim path and clean this hack up more so further testing can be done.
So two things jump out at me here... first, a quick look suggests _task_fn_tx() -> iflib_txq_drain() is recursing on the mutex, and second the interrupt handler is contending with tx for no good reason.
Sep 17 2019
Create a iflib_txq_drain_bypass() function called only from
iflib_if_transmit_bypass() which doesn't have the loop,
volatile/devolatile casts, conditional prefetching, txq-cast-to-mbuf,
etc overhead and only locks/unlocks once.
I assume the two piles in the bypass flamegraphs which don't start at fork_exit() are just because the stack sample isn't deep enough to correlate them over and that the iflib_txq_drain() samples in the wide peak are actually the ones that are directly in iflib_txq_drain?
Sep 16 2019
For the bypass disabled results, is tx_abdicate set?
Sep 11 2019
Use a tunable instead of a sysctl to toggle mp_ring bypass.
Aug 29 2019
Wait... why is iflib_if_transmit() being called in both? It should be using iflib_if_transmit_bypass() instead.
Aug 14 2019
Jul 30 2019
Jul 22 2019
Jul 9 2019
Cannot reproduce with D20834 appplied.
Jun 23 2019
Jun 19 2019
Jun 18 2019
Jun 12 2019
Jun 5 2019
May 13 2019
May 8 2019
May 6 2019
Ok, I didn't think these functions were hot enough to be worth optimizing, and I'm not sure anything can be optimized around E1000_WRITE_*
Phew, great job. I've always been a bit uneasy about the MSI/INTx stuff, but this seems to have cleared everything up.
May 2 2019
Makes sense.
Apr 30 2019
Apr 29 2019
Use rtsdtr as the stty argument to set the default mode, and -rtsdtr to
disable automatically asserting them on open().
Apr 26 2019
Address feedback, add support to umcs.
Apr 25 2019
"Reference" count core offsets and free() when all drivers unloaded.
Apr 24 2019
Fix style(), clean up default sysctl values, log message on malloc() failure.
Apr 23 2019
Apr 22 2019
Apr 19 2019
I'd really like to see this part split out into a separate review and committed soon, because it shouldn't see any contention- it adds control that is desirable to the people that know they need it, and doesn't really affect anyone else.
Apr 17 2019
Apr 15 2019
Mar 27 2019
Looks good to me.
Mar 14 2019
And again now that I've joined iflib...
Accepted. (derp)
Feb 28 2019
LGTM
Feb 22 2019
Feb 15 2019
Feb 14 2019
style(9) nits.
FILTER_SCHEDULE_THREAD is a flag, not a discrete value. If it's set, schedule the
gtask and return FILTER_HANDLED.
Return FILTER_HANDLED rather than FILTER_SCHEDULE_THREAD when gtask (potentially) scheduled
per @waddlesplash_gmail.com.
Some bits of the upstream patch didn't paply cleanly... added manually.
Put the result variable back in. *facepalm*
Unpack the conditional for easier reading.
Remove unrelated stuff.
Looks good to me.
Feb 5 2019
Feb 4 2019
I love everything about this. If you plan to use the summary as the commit message though you should modify "change the M_NOWAIT from malloc(9) calls into M_NOWAIT." bit to mention M_WAITOK.
Jan 28 2019
Looks good. This may also fix where bar == -1 && pci_msix_count(dev) == 0 (or break it less... or something)
I think that the inability to map an MSI-X table should likely not be bootverbose... this is an allocation failure which will significantly impact device performance. While the user should know that MSI-X is disabled, I'm not sure the user should be expected to know that the allocation will fail.
Jan 25 2019
No objections, though I do agree with cem@ in principle regarding putting it in the GENERICs. When 3rd-party drivers start relying on it, it would violate POLA removing Intel NICs from the kernel would break a 3rd-party driver. For now it's likely "fine".
Jan 18 2019
Jan 17 2019
So the basic goal is to have the test at sys/net/if_ethersubr.c:583 see a consistent state of the changes from the /* Change the interface type */ line to the lagg_proto_addport() line.
Jan 16 2019
RLOCK() before setting ifp->if_type