From f5e8e2c8fbf903328bf7b95a150365a589fe9eb4 Mon Sep 17 00:00:00 2001 From: wylovely Date: Wed, 28 Oct 2026 15:01:02 +0800 Subject: [PATCH] =?UTF-8?q?fix(docs):=20=E4=BF=AE=E6=AD=A3=20NAPI=20?= =?UTF-8?q?=E4=B8=AD=E6=96=AD=E6=81=A2=E5=A4=8D=E6=97=B6=E6=9C=BA=E6=8F=8F?= =?UTF-8?q?=E8=BF=B0=20(close=20#362)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 硬中断处理函数只屏蔽网卡中断并调度 NAPI,并不会立即恢复中断;恢复中断发生在软中断 poll 调用 napi_complete 之后。原文把“恢复中断”归到硬中断处理函数有误。 Closes #362 --- network/1_base/how_os_deal_network_package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/network/1_base/how_os_deal_network_package.md b/network/1_base/how_os_deal_network_package.md index 19d66671..6ce66004 100644 --- a/network/1_base/how_os_deal_network_package.md +++ b/network/1_base/how_os_deal_network_package.md @@ -88,7 +88,7 @@ TCP/IP 网络模型相比 OSI 网络模型简化了不少,也更加易记, 硬件中断处理函数会做如下的事情: - 需要先「暂时屏蔽中断」,表示已经知道内存中有数据了,告诉网卡下次再收到数据包直接写内存就可以了,不要再通知 CPU 了,这样可以提高效率,避免 CPU 不停的被中断。 -- 接着,发起「软中断」,然后恢复刚才屏蔽的中断。 +- 接着,发起「软中断」,但**不会在硬件中断处理函数里立刻恢复刚才屏蔽的中断** —— 在 NAPI 机制下,网卡中断会保持屏蔽,直到软中断通过轮询把 Ring Buffer 里的网络包处理完(napi_complete 收尾)才重新开启,避免软中断还在排队执行时又被硬件中断打断,退化成纯中断模式甚至引发中断风暴。 至此,硬件中断处理函数的工作就已经完成。