Tested using pktgen. cpuinfo: processor : 0 vendor_id : AuthenticAMD cpu family : 6 model : 8 model name : AMD Geode NX stepping : 1 cpu MHz : 1397.641 cache size : 256 KB fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 1 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 mmx fxsr sse syscall mp mmxext 3dnowext 3dnow ts fid vid bogomips : 2796.00 clflush size : 32 meminfo: MemTotal: 907092 kB Results in pps. Sending 400000 60-byte packets. Other than Iteration 5 and 6, there is 1 interrupt per packet. Iteration 0 (replace TxIDLE with TxOK): 62222, 62052, 62335 Iteration 1 (optimize sis900_start_xmit): 148815, 148815, 148829 Iteration 2 (convert Rx to NAPI): 148669, 148635, 148677 Iteration 3 (remove tx_full dev state variable): 148677, 148528, 148532 Iteration 4 (optimize finish_xmit): 148677, 148676, 148689 Iteration 5 (move tx completion code into NAPI poll): 147751, 147658, 147809 Interrupts: 359270, 360747, 358010 Iteration 6 (cleanup + rotting packet handling + rx optimization): 148652, 148680, 148681 Interrupts: 399927, 399841, 399835