FreeBSD на ноутбуке: приключения с iwm
Решение одной конкретной проблемы по горячим следам.
Есть такой замечательный чип от Intel: AC 9560. Отвечает за WiFi и Bluetooth. Часто встречается в новых ноутбуках, и как и все новое — порождает проблемы.
Если проще: WiFi карта нах#й отваливается.
Либо сразу при запуске, либо после suspend/resume либо в произвольный момент времени — все как мы любим.
Конечно проблема известная, уже завели баг:
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=243992
Вообщем единственным вариантом восстановления было полное отключение ноутбука из под Windows. Не засыпание и именно выключение.
Перезагрузка из-под Linux — все также зависание прошивки.
В чем проблема
MSI-X interrupt mode is enable by default
I have fix this issue in OpenIntelWireless/itlwm project: https://github.com/OpenIntelWireless/itlwm/commit/1fc63d576975d56578ce2048f00f83e7ca550d97 I am not sure if it is a hardware bug for newer intel wireless card, for 9560ac-cnvi and later Gen2 cards, MSI-X interrupt mode is enable by default, Intel wireless drivers on linux/Windows are supported and using MSI-X interrupt default, when rebooting to freebsd, iwm on freebsd only support MSI interrupt but the hardware is configure as MSI-X, so the interrupt will never happened and caused the issue. Here are two solutions: 1. Implement MSI-X interrupt mode on iwm. 2. Disable MSI-X when init the hardware, and it is the solution what I am using.
Я честно пробовал портировать эту логику в iwm драйвер — не сработало. Поэтому пришлось перейти на альтернативный драйвер iwlwifi
wlans_iwlwifi0="wlan0" ifconfig_wlan0="WPA DHCP" # отключаем iwm - он инициализируется по-умолчанию devmatch_blocklist="if_iwm"
этот же чип отвечает еще и за bluetooth, прошивка к которому точно также скачивается из сети.
Получается плохо, поэтому пришлось отключить автоматическую активацию:
Итого
Наконец-то этот цирк работает: нет затыков при большой нагрузке на сеть, нет зависаний, чип переживает suspend/resume цикл и перезагрузки из линукса: