драйвер Ethernet - без использования DMA?

Пишу драйвер Ethernet. Я бы хотел сделать это в 2 шага:

  1. напишите это без DMA (простой memcpy)
  2. перепишите его, используя DMA.

Я хотел бы спросить, можно ли сначала сделать это без использования DMA (или это то, что инфраструктура ядра Ethernet настаивает на том, чтобы драйвер использовал DMA)?


person ransh    schedule 29.07.2016    source источник


Ответы (1)


Ядро вам ничего не мешает. Но, в частности, я не вижу, чтобы это мешало вам писать skbuffs или отображать память устройства.

Честно говоря, у вас могут возникнуть большие трудности, если вы захотите найти примеры кода сетевого драйвера, который не использует DMA. Если я правильно понимаю, даже netpoll (для регистрации сбоев по сети) Linux не избегает DMA в драйверы.

Я не был уверен, что memcpy() сработает ...

Вам необходимо прочитать свои документы (например, и конкретно). Похоже, вам нужно использовать memcpy_fromio() и memcpy_toio() в памяти ввода-вывода.

person sourcejedi    schedule 29.07.2016