
hi, Fri, May 09, 2025 at 10:33:42, vsharun wrote about "[uanog] Re: NIC interrupts / IRQs / Cores":
Александр Васильевич, Современная сетевая карта - это полноценный комп, это больше не 8237, саундбластер про и десяток их регистров/портов. Драйвера для нее настолько сложны, что нет смысла даже начинать, это сотни мегабайт кода фирмвари и мегабайты кода интерфейса со стороны ОС к этой фирмвари.
Ну обычно таки поменьше:) Весь e1000 в Linux, например, это полмега, из которых, если ужать все switch до конкретной модели, останется 100kB. Сложить кадры в память, добавить описатели к ним (типа, если это TCP, то поднять флаг "подсчитай CRC сам"), слинковать в цепочку, обновить указатель хвоста в регистре сетевухи. И наоборот на приёме. Не сложно по сути, просто надо знать детали. И железо там ближе, чем PHY, это просто прямолинейный автомат — стучатель по памяти. Но то, что одна карта толще по вентилям всего IBM PC AT какого-нибудь — 100%, к гадалке не ходи.
Поезд глубокого понимания программирования PIC/DMA ушел, оно нужно тем, кто программят PIC/APIC/DMA, а тем, кто настраивает, больше это не нужно. Мало того, когда мне недавно нужен был РоС, ЧатГПТ сделал мне C/Asm код за 5 минут, т.е. *тратить время *на написание кода - тоже не надо - это дорого. Организация, в которой я сейчас работаю, подавляющее большинство кода пишется в подписочном ChatGPT (от ошибок в дизайне софта впрочем не спасает). Мало того, я вот недавно был свидетелем горя от ума на этой почве, когда желание прикрутить именно 8237 в мосте ITE к современной платформе через мост PCIe-PCI-ISA и глубокое понимание как работает DMA в современных системах привело к тому, что человек потерялся в маршрутизации этих сигналов: сделал от карты к процу возврат, а от проца к карте - нет, ну типа как-то придумаем, когда ему все говорят астанавитесь, нет возможности субстрактивного декодинга 00-FF портов, они легаси и хардвайред в PCH, нет, я найду как. Ну ок. Способа нет, кроме VM или недокументированных трапов SMM. Чел остановился на VM варианте, с которым всё остальное (сделать всё только на железе) теряет смысл.
Я удивляюсь, что 8237 для чего-то в современной платформе ещё живо. Почему его не снесли, когда исчез последний ISA разъём с материнки? -netch-