Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 24 Dec 2009 17:22:15 +0000 (UTC)
From:      Pyun YongHyeon <yongari@FreeBSD.org>
To:        cvs-src-old@freebsd.org
Subject:   cvs commit: src/sys/dev/ste if_ste.c if_stereg.h
Message-ID:  <200912241722.nBOHMbQI036264@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
yongari     2009-12-24 17:22:15 UTC

  FreeBSD src repository

  Modified files:
    sys/dev/ste          if_ste.c if_stereg.h 
  Log:
  SVN rev 200950 on 2009-12-24 17:22:15Z by yongari
  
  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.
  
  Revision  Changes    Path
  1.26      +63 -26    src/sys/dev/ste/if_ste.c
  1.15      +11 -1     src/sys/dev/ste/if_stereg.h



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200912241722.nBOHMbQI036264>