intixgbe_poll(structnapi_struct*napi,intbudget){intper_ring_budget,work_done=0;boolclean_complete=true;/* 清除当前中断绑定所有 TX ring的 DMA memory和 skb buffer,* 如果清除的TX ring buffers超过了额度值 (budget = 64),则 wd = false* 故 clean_complete = false*/ixgbe_for_each_ring(ring,q...
if (work\_done budget) { netif\_rx\_complete(netdev, napi);hcard\_reenable\_irq(nic);} return work\_done;} ```poll函数处理网络数据包,IRQ处理程序适应轮询模型。在从 napi\_struct 的容器中获取特定于设备的信息后,我们调用一个特定于硬件的方法来执行必要的底层操作。在了解了为支持NAPI驱动程序...
ndo_change_mtu函数,更改 MTU 大小。 ndo_tx_timeout函数,当发送超时的时候产生会执行,一般都是网络出问题了导致发送超时。一般可能会重启 MAC 和 PHY,重新开始数据发送等。 ndo_poll_controller函数,使用查询方式来处理网卡数据的收发。 ndo_set_features函数,修改 net_device 的 features 属性,设置相应的硬件属性。
napi_complete(napi);iow(db, DM9000_IMR, db->imr_all);writeb(reg_save, db->io_addr);spin_unlock_irqrestore(&db->lock, flags);return 0; }step3:在dm9000_open函数中增加napi_enable(&db->napi);//使能 NAPI在dm9000_stop函数中增加napi_disable(&db->napi);//禁止 NAPIstep4:修改dm9000_...
napi_complete(napi); /* enable all IRQs */ d_can_interrupts(priv, ENABLE_ALL_INTERRUPTS); } return work_done; } 在中断处理函数中,先禁止接收中断,且告诉网络子系统,将以轮询方式快速收包,其中禁止接收中断完全由硬件功能决定,而告诉内核将以轮询方式处理包则是使用函数napi_schedule()。
netif_rx_complete(netdev); e1000_irq_enable(adapter); } /*如果完成的工作大于预期要完成的工作,则表明存在问题,返回1,否则正常返回0。*/ return (work_done >= work_to_do); } 设备轮询接收机制中最重要的函数就是下面这个函数,当然它同时也可以为中断接收机制所用,只不过处理过程有一定的差别。
net_dev_init分别为接收和发送数据注册了一个软中断处理函数。 staticint__initnet_dev_init(void){/* ... */open_softirq(NET_TX_SOFTIRQ,net_tx_action);open_softirq(NET_RX_SOFTIRQ,net_rx_action);/* ... */} 驱动的中断处理函数触发net_rx_action这个为NET_RX_SOFTIRQ软中断注册的中断处理函数。
问如何使用napi_threadsafe_function实现NodeJS本机加注EN在进行技术操作之前,让我们考虑一个场景,即我们...
*budget -= work_done;netdev->quota -= work_done;/*如果函数返回时,完成的工作没有达到预期的数量,表明接收的数据包并不多,很快就全部处理完成了,我们就彻底完成了这次轮询任务,调用netif_rx_complete(),把当前指定的设备从 POLL 队列中清除(注意如果在 POLL 队列处于工作状态的时候是不能把指定设备清除的,...
netif_rx_complete(poll_dev,napi); //__napi_complete()的包装函数 e1000_irq_enable(adapter); //开中断 } return work_done; } static inline void netif_rx_complete(struct net_device *dev,struct napi_struct *napi){ unsigned long flags; ...