Как сетевой драйвер Linux сигнализирует сетевой карте, что данные готовы к передаче


person S.Wan    schedule 02.04.2018    source источник


Ответы (1)


Он записывает в область ввода-вывода с отображением памяти. Я предполагаю, что это строка 1987 ( v4.16):

sky2_put_idx(hw, txqaddr[sky2->port], sky2->tx_prod);
person a3f    schedule 02.04.2018
comment
Спасибо за ответ. Я понимаю, что эта функция может обновить последний индекс буфера TX на сетевой карте. Однако мне интересно, проверяет ли NIC автоматически последний индекс после каждой записи? - person S.Wan; 02.04.2018
comment
@S.Wan Трюк с MMIO заключается в том, что для вас, ядра, это выглядит как простой доступ к памяти, но для сетевой карты это больше похоже на протокол с PDU ReadRequest и WriteRequest. Когда поступает WriteRequest на один из адресов очереди Tx, он может быть обработан немедленно. Памяти вообще не должно быть, только память-подобный интерфейс. - person a3f; 02.04.2018