e1000: Remove old itr sysctl handler

This implementation had various bugs.  bde@ reported that the unit
conversion/scaling is wrong, and it also does not handle 82574L or
igb(4) devices correctly.

With the new AIM code, it is expected most users will not need to
manually tune this.

If you do need static control:
hw.em.enable_aim=0 for all interfaces at boot or dev.em.X.enable_aim=0
for individual interfaces at runtime and they will track the
hw.em.max_interrupt_rate tunable.  That codepath has been bugfixed for
all supported chipsets.

You may view the current rate with dev.em.X.queue_rx_0.interrupt_rate
which has been bugfixed for all supported chipsets.

If you need to set different rates per interface for some reason let me
know and I will rethink how to add this back.  Otherwise you can leave
AIM on for general purpose interfaces and disable it at runtime on
special purpose low or high latency interfaces that would track
hw.em.max_interrupt_rate if you have a mix of concerns.

PR:		235031
Reported by:	Bruce Evans <bde@FreeBSD.org>
Relnotes:	yes
Sponsored by:	BBOX.io

(cherry picked from commit 4020351325)
This commit is contained in:
Kevin Bowling 2024-11-28 23:23:23 -07:00
parent 48155c983c
commit edf50670e2

View File

@ -1234,10 +1234,6 @@ em_if_attach_pre(if_ctx_t ctx)
"transmit interrupt delay limit in usecs",
&sc->tx_abs_int_delay,
E1000_REGISTER(hw, E1000_TADV), em_tx_abs_int_delay_dflt);
em_add_int_delay_sysctl(sc, "itr",
"interrupt delay limit in usecs/4", &sc->tx_itr,
E1000_REGISTER(hw, E1000_ITR),
EM_INTS_TO_ITR(em_max_interrupt_rate));
}
hw->mac.autoneg = DO_AUTO_NEG;
@ -5403,8 +5399,6 @@ em_sysctl_int_delay(SYSCTL_HANDLER_ARGS)
return (EINVAL);
info->value = usecs;
ticks = EM_USECS_TO_TICKS(usecs);
if (info->offset == E1000_ITR) /* units are 256ns here */
ticks *= 4;
sc = info->sc;