Pyun YongHyeon fabbaac560 Implement RX interrupt moderation using one-shot timer interrupt.
Unlike TX interrupt, ST201 does not provide any mechanism to
suppress RX interrupts. ste(4) can generate more than 70k RX
interrupts under heavy RX traffics such that these excessive
interrupts make system useless to process other useful things.
Maybe this was the major reason why polling support code was
introduced to ste(4).
The STE_COUNTDOWN register provides a programmable counter that
will generate an interrupt upon its expiration. We program
STE_DMACTL register to use 3.2us clock rate to drive the counter
register. Whenever ste(4) serves RX interrupt, the driver rearm
the timer to expire after STE_IM_RX_TIMER_DEFAULT time and disables
further generation of RX interrupts. This trick seems to work well
and ste(4) generates less than 8k RX interrupts even under 64 bytes
UDP torture test. Combined with TX interrupts, the total number of
interrupts are less than 10k which looks reasonable on heavily
loaded controller.

The default RX interrupt moderation time is 150us. Users can change
the value at any time with dev.ste.%d.int_rx_mod sysctl node.
Setting it 0 effectively disables the RX interrupt moderation
feature. Now we have both TX/RX interrupt moderation code so remove
loop of interrupt handler which resulted in sub-optimal performance
as well as more register accesses.
2009-12-24 17:22:15 +00:00
..
2009-11-16 21:47:12 +00:00
2009-10-28 15:22:58 +00:00
2009-09-14 21:33:00 +00:00
2009-11-18 18:48:18 +00:00
2009-11-11 20:29:40 +00:00
2009-10-30 18:30:13 +00:00
2009-11-25 13:31:17 +00:00
2009-12-23 23:16:54 +00:00
2009-12-16 12:25:27 +00:00
2009-10-24 09:55:11 +00:00
2009-09-06 10:27:45 +00:00
2009-08-23 08:04:40 +00:00