
  Recently i've converted eepro100 driver to use napi,in order to improve
  network performance of my poor 150M mips machine. It does eliminate
  the interrupt live lock seen before,maintaining a peak throughput under
  heavy load.

  They are 3 incremental patchs:
     eepro100-napi.patch:
       against 2.5.20 eepro100.c and provide basic napi support
       to provide a choice,it can be control via a 
         #define CONFIG_EEPRO100_NAPI
       without this definition,the driver act the old way.
     eepro100-proc.patch:
       proc file system support adapted from intel's e100 driver. I am using 
       it for debugging.
       This includes some statistics data in /proc/net/eepro100/eth?.info
       and two switches variable(set_debug & show_state) to dynamically
       change debug level and forcely show current ring buffer states
     eepro100-mips.patch:
       mips specific patch to make it work(well) for my mips platform.

  To apply them,one can use(in this order): 
       patch eepro100.c < eepro100-napi.patch
       patch eepro100.c < eepro100-proc.patch
       patch eepro100.c < eepro100-mips.patch

  Tests are mainly done on my mips machine for 2.4 kernel,though i think
it should work for at least x86 on which minimal test is performed.
but be careful anyway.

  A little pitty is that to achieve good performance under heavy load, the
/proc/sys/net/core/netdev_max_backlog value may need to be tuned.For my 150M
mips machine,it seems 32 is a good choice,too big value will cause too much
time spent in driver.

  Feedbacks are always welcome to fxzhang@ict.ac.cn

Regards,


