Ethernet NAPI , , CPU Ethernet ( ). , .
, ?
, . NAPI ISR.
, Ethernet . , , , , , (.. ), ?
, -
.
Ethernet .
" ".
(, ), , Ethernet.
?
, NAPI .
, .
, CPU - ,
, ""?
, ( ) (.. ) , .
, , .
, ( ). NAPI, , , , , .
snull_poll() DMA ?
NAPI " " .
, Ethernet , , .
NAPI " ".
, , .
( ), "" NAPI.
BTW
, "CPU ..." " CPU".
( ), .
, (.. ) .
, , CPU, .
/net/ethernet/smsc/smsc 911x.c Linux.
Ethernet- SMSC LAN911x , , , . MAC, PHY TX RX FIFO .
SMSCLan9118 smsc911x_irqhandler, (INT_STS) ( INT_EN), , if (likely(intsts & inten & INT_STS_RSFL_))
1627.
INT_STS
#define INT_STS 0x58
5.3 " " () 0x58
58h INT_STS Interrupt Status
, smsc911x , HW.
32- ISR, :
u32 intsts = smsc911x_reg_read(pdata, INT_STS);
, 32 ( intsts) Boolean ANDed 32 ( inten).
, . , HW , ( INT_EN).
if , (INT_STS_RSFL _), .
5.3.3 INT_STS—Interrupt Status Register
RX Status FIFO Level Interrupt (RSFL).
Generated when the RX Status FIFO reaches the programmed level
likely() CPU. (, ANDing , , ).
, .
LAN9118, .
, RX FIFO .
5.3.6 FIFO_INT—FIFO Level Interrupts
RX Status Level.
The value in this field sets the level, in number of DWORDs, at which the RX Status FIFO Level interrupt (RSFL) will be generated.
When the RX Status FIFO used space is greater than this value an RX Status FIFO Level interrupt (RSFL) will be generated.
smsc911x, -, .
FIF Status FIFO DWORD. 0x00 (.. "" ). , " ".