Linux kernel network device driver.

#linux kernel#c/c++

Пришел студентом, в глаза не видел Linux, надо было написать драйвер для ядра - ну написал (правда, не помню, через сколько, может и через полгода). Сейчас он часть официального ядра ОС, хотя вряд ли осталось много еще живых устройств.

    2.2.13pre7
    o	EEPro100 for Ultrasparc			(Dave Miller)
    o	MediaGX audio bug workarounds		(me)
    o	Wavelan bug fixes			(Jean Tourrilhes)
    o	SBNI driver				(Yaroslav Polyakov)
    o	AHA1542 option fix			(Chris Faulhaber)
    o	Fix possible sync_quota race		(Jan Kara)

https://static.lwn.net/1999/0916/a/2.2.13pre8.html

Как-то в течение 2-3 недель не мог отловить баг в драйвере, будто бы ядро вело себя неправильно. Обнаглел от отчаяния, и написал напрямую Самому Алану Коксу! (он был тогда главный за сетевую часть ядра). Целый день обдумывал письмо, чтобы все правильно изложить. Получил ответ через 15 минут. Треть ответа составляло слово hard_header_len. И через 10 минут проблема была решена.

SBNI card

Из необычного - В то время еще не было EQL, а может быть я о нем не знал, и была версия драйвера, которая позволяла “подчинить” второе устройство (в качестве slave) и по двум линиям (и двум комплектам модемов) передавать данные с удвоенной скоростью!

Еще, так как устройство использовало CRC для контроля целостности, но было простым и CRC считался процессором, но код подсчета был реализован на asm’е.