Issue
- マザボ Asrock H81M-ITX の Onboard LAN (AR8171)が動かない
- インストール時にDHCPとれず
- Root console で試すも Ping とか 100% Lost
- NetBSD10 と UbuntuServer24.04 では普通に通信している
のでHWは正常。故障してない。
Result/Solution
- kernel に TUNABLE_INT
hw.alc.msix_disable=1
を渡せばとりあえず動く- 性能は落ちていそうな気がするが未測定
- /boot/device.hint に
hw.alc.msix_disable=1
の行を追記で OK
- この TUNABLE_INT
hw.alc.msix_disable=1
は、release/14.1.0 でも使える- が、再Install面倒なのでしばらく 14-STABLE のまま運用
解析Memo
Patch 発見まで
- Googleで検索すると Atheros の別Chipで同様の報告が見受けられる
- で、これに行き着く
- CURRENT と 14-STABLE には投入済みに見える
14-STABLE を試す
- CURRENTは猛者すぐるので、14-STABLE を Try することにする
- NW死んでるので、Kernel image 差し替えが困難・・・・・
- 潔く FreeBSD14-STABLE の Installer USB stick を作成して再Install
- が、まだ Installer の設定中に DHCP とれない・・・・
- Reboot後に固定IP仮設定するもPingが100% Lost も相変わらず
Source 解析
-
https://github.com/freebsd/freebsd-src/blame/9e3e111d749ac83f213a36254fd0717265534e05/sys/dev/alc/if_alc.c#L1425
- このへんの処理で E2200 系列の場合 Disable にしている
-
https://github.com/freebsd/freebsd-src/blame/9e3e111d749ac83f213a36254fd0717265534e05/sys/dev/alc/if_alc.c#L1438
- AR8171 は msix_disable=2 のまま進行
-
https://github.com/freebsd/freebsd-src/blame/9e3e111d749ac83f213a36254fd0717265534e05/sys/dev/alc/if_alc.c#L103
- msix_disable は TUNABLE_INT として定義されているので、Re-compile せずとも Loader の設定いじれば行けそう
Kernel 起動パラメータを渡す
- FreeBSD Loader で止めて
set hw.alc.msix_disable=1
boot
- してみる ==> DHCP とれた!
- 永続化のためには /boot/device.hint を書き換えればよい