=== Обновление LinuxKPI 802.11 и нативного беспроводного стека (Native Wireless) Ссылки: + link:https://github.com/FreeBSDFoundation/proj-laptop/issues/66[Поддержка беспроводных карт MediaTek] URL: link:https://github.com/FreeBSDFoundation/proj-laptop/issues/66[] + link:https://github.com/FreeBSDFoundation/proj-laptop/issues/99[Поддержка беспроводных карт Realtek] URL: link:https://github.com/FreeBSDFoundation/proj-laptop/issues/99[] Контакт: Bjoern A. Zeeb + Контакт: Список рассылки беспроводных технологий FreeBSD Этот отчёт посвящён усилиям по использованию драйверов беспроводных устройств Linux с пермиссивными лицензиями, в основном без изменений, во FreeBSD, а также подготовке нативного стека net80211 к поддержке более новых стандартов. ==== Обновления драйверов Все драйверы беспроводных устройств на основе LinuxKPI были обновлены до версии ядра Linux v6.19 в main и stable/15. Это включает: * поставляемые драйверы Intel man:iwlwifi[4] mvm/mld, Realtek man:rtw88[4] и man:rtw89[4], * драйвер Mediatek mt76, который находится в стадии разработки, * три драйвера Qualcomm Atheros: ath10k, ath11k и ath12k, которые требуют доработки, а также * драйвер Broadcom brcmfmac, который компилируется и загружает прошивку, но ему не хватает совместимой прослойки cfg80211 и некоторой работы над netdev. ==== Поддержка Intel iwlwifi Для того чтобы обновление драйвера man:iwlwifi[4] было применено, были сделаны несколько специфичных для FreeBSD изменений, чтобы позволить поддрайверу mld правильно загружаться. Также было исправлено несколько ошибок. ==== Поддержка Realtek rtw88 и rtw89 После обновления драйверов выяснилось, что наша эмуляция chandef должна быть более детальной. Впоследствии были обнаружены дальнейшие проблемы, связанные с тем, что некоторые драйверы rtw88 могут не выполнять аппаратное сканирование, требуя отката к программному сканированию. Наконец, два чипсета rtw88 — 8821c и 8822b — похоже, часто имеют задержку в 6 секунд при подготовке к аутентификации. Неясно, почему прошивка не работает в этих случаях, но в итоге я решил оставить эту проблему в покое и попытаться добавить обновления для 802.11n и 802.11ac в следующем (надеюсь, до 15.1-R), и только затем вернуться к этим чипсетам и посмотреть, что можно сделать. ==== Поддержка Mediatek mt76 В настоящее время основные чипсеты для работы — MT7921/7922 и MT7925. После обновления драйвера были решены некоторые проблемы с DMA32 и page_pools. Изменения в drm-kmod, подготовленные для перехода с нативного vm_page на структуру struct page из Linux, к счастью, были зафиксированы. Это позволит мне проще распространять тестовую версию среди людей. MT7925 также выявил недостаточность нашей реализации IDR в LinuxKPI, которая более или менее была задокументирована с первого дня. Это потребует полной переработки, чтобы избежать проблем с доступом к уже уничтоженным записям, что может происходить в Linux. Я также начал накапливать другие чипсеты для тестирования. Поддержка 802.11n и 802.11ac в основном будет реализована вместе с работой над Realtek. ==== Broadcom brcmfmac Драйвер Broadcom brcmfmac компилируется для PCIe и загружает прошивку (с небольшим обходным решением для arm64). Теперь нам не хватает некоторой совместимой работы по cfg80211 и netdev LinuxKPI для создания интерфейса и управления беспроводной связью. ==== Поддержка QCA В то время как ath10k в основном исправлен для режима станции, ath11k и ath12k требуют больше работы для повторной компиляции и реализации MHI и других необходимых компонентов. ==== Поддержка USB в LinuxKPI Реализация USB в LinuxKPI существует уже более десяти лет. Я уже обращался к пользователям в прошлом году и снова в этом, но не получил ответа. У меня есть переработанная версия, которая позволяет компилировать USB-чипсеты Realtek, Mediatek, QCA ath10k и Broadcom brcmfmac. Последние два в основном неактуальны из-за старых и редких USB-адаптеров. Realtek и Mediatek подключаются и передают пакеты, но требуют ещё немного работы по стабильности и корректному отключению. Есть одно препятствие: (старая и новая) реализация USB в LinuxKPI переплетена с нашим нативным стеком USB, что приводит к конфликтам. Ведётся работа по решению этой проблемы, и определены два возможных пути, но сначала необходимо понять и очистить изменение, которому 15 лет. ==== Поддержка SDIO в LinuxKPI Поддержка SDIO в LinuxKPI находится в моём дереве разработки уже около года и была сделана в основном для Realtek rtw88. Broadcom потребует заполнения ещё нескольких мест-заполнителей, но это не должно быть слишком сложно. Прерывания необходимо доработать, а поддержку повышения скорости следует взять из чужой незавершённой работы. Я планирую включить её в дерево как есть, как только USB будет готов, чтобы люди могли помочь с тестированием и завершением. ==== Нативный net80211 Спасибо Команде по управлению портами (Ports Management Team) за проведение exp-run (экспериментальной тестовой сборки). Я подготовил патч для выявления всех портов, использующих интерфейс ioctl net80211. Это необходимо для того, чтобы заранее минимизировать поломки, связанные с предстоящими изменениями интерфейса ioctl. Подробности смотрите в link:https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=293016[PR 293016]. ==== Прочее Я представил обновление по большей части этого материала во время мартовского звонка LDWG (Laptop Desktop Working Group). Для получения дополнительной информации смотрите link:https://wiki.freebsd.org/LaptopDesktopWorkingGroup[страницу LDWG в Wiki]. Спонсор: Фонд FreeBSD // // The FreeBSD Russian Documentation Project // // Original EN revision (18.04.2026): 2021088c41d765c62450d70a09a3793432c746e9 //