Использует ли драйвер интерфейс Linux NAPI? - PullRequest
2 голосов
/ 21 декабря 2009

Есть ли способ проверить, использует ли драйвер Linux Ethernet интерфейс NAPI?

1 Ответ

6 голосов
/ 31 декабря 2009

Я знаю, что это звучит как очевидный ответ, но проверьте источник, чтобы увидеть, используется ли API NAPI.
Например :

  • В обработчике прерываний вашего драйвера использует ли он какие-либо из перечисленных ниже вызовов?
  • Реализует ли ваш драйвер метод poll () для NAPI? Если так, посмотрите, использует ли он netif_receive_skb () вместо netif_rx () .

Если оба эти вопроса приводят к «ДА», ваш драйвер использует NAPI.

Примечание: следующее было скопировано с здесь

NAPI API

netif_rx_schedule(dev) 
    Called by an IRQ handler to schedule a poll for device
netif_rx_schedule_prep(dev) 
    puts the device in a state ready to be added to the CPU polling list if it is up and running. You can look at this as the first half of netif_rx_schedule(dev).
__netif_rx_schedule(dev) 
    Add device to the poll list for this CPU; assuming that netif_schedule_prep(dev) has already been called and returned 1
__netif_rx_schedule_prep(dev) 
    similar to netif_rx_schedule_prep(dev) but no check if device is up, usually not used
netif_rx_reschedule(dev, undo) 
    Called to reschedule polling for device specifically for some deficient hardware.
netif_rx_complete(dev) 
    Remove interface from the CPU poll list: it must be in the poll list on current cpu. This primitive is called by dev->poll(), when it completes its work. The device cannot be out of poll list at this call, if it is then clearly it is a BUG().
__netif_rx_complete(dev) 
    same as netif_rx_complete but called when local interrupts are already disabled.

Прочтите эту статью в Википедии и внешние ссылки в ней для более подробной информации.

Надеюсь, это поможет.

...