Supermicro での bnxt_re 問題

## はじめに
Supermicro には BCM57416 が搭載されている機種がありますが、Ubuntu の比較的新しいカーネルはRDMAのドライバ自動読み込みに失敗し、ZFS サービスが起動しなくなったり、動作が不安定になる等の問題が出るようです。実際に X13DAi でシャットダウンに非常に時間が掛かるなどの問題が発生したので対処法を調べました。

## 簡単な解決法
blacklist に bnxt_re を登録します。しかし、環境によっては NIC の接続が数時間で切れるということが発生する場合があるようです。

```
$ echo blacklist bnxt_re | sudo tee /etc/modprobe.d/bnxt_re.conf
$ sudo update-initramfs -u
```

## ファームウェアを書き換え、さらに RDMA を無効にする
別の方法は、修正されているであろうファームウェアに書き換え、Supermicro では RDMA がデフォルトで有効になっているらしいので、無効にします。
まず、NIC を操作するために NICCLI と Sliff Driver 、ファームウェアが必要です。下記から入手します。

https://docs.broadcom.com/docs/NXE_Linux_niccli_230.0.163.0
https://docs.broadcom.com/docs/BCM957416A4160C_FW_230.1.116.0

### インストール
それぞれをインストールします。あらかじめ DKMS が必要です。インストールしたら再起動します。
```
$ unzip niccli-230.0.163.0_linux.zip
$ cd Linux/linux_x86_64
$ sudo apt install ./niccli_230.0.163.0-1_x86_64.deb
$ cd sliff/dkms
$ sudo apt install ./sliff-dkms_230.0.163.0_all.deb
$ sudo reboot
```

### 状態の確認
```
$ sudo niccli -i 1 device_info
/opt/niccli/niccli.x86_64: /lib/x86_64-linux-gnu/libnl-3.so.200: no version information available (required by /opt/niccli/niccli.x86_64)

-------------------------------------------------------------------------------
Scrutiny NIC CLI v230.0.163.0 - Broadcom Inc. (c) 2024 (Bld-85.52.34.106.16.0) 
-------------------------------------------------------------------------------

Interface Name                      : eno1np0
MAC Address                         : 3C:EC:EF:E2:XX:XX
Base MAC Address                    : 3C:EC:EF:E2:XX:XX
Serial Number                       : 3C-EC-EF-FF-XX-XX-XX-XX
Part Number                         : BCM57416
PCI Address                         : 0000:04:00.0
Chip Number                         : BCM57416
Chip Name                           : WHITNEY+
Description                         : Supermicro 10GBASE-T Ethernet Controller
Firmware Name                       : CHIMP_FW
Firmware Version                    : 226.0.145.0
RoCE Firmware Version               : 226.0.145.0
HWRM Interface Spec                 : 1.10.2
Kong mailbox channel                : Disabled
Active Package Version              : 226.1.107.1
Package Version on NVM              : 226.1.107.1
PCI Device ID                       : 0x16D8
PCI Vendor ID                       : 0x14E4
PCI Revision ID                     : 0x1
PCI Subsys Device ID                : 0x16D8
PCI Subsys Vendor ID                : 0x15D9
Active NVM config version           : 0.0.0
NVM config version                  : 0.0.0
Reboot Required                     : No
HCRM Profile ID                     : 1
HCRM Profile Version                : 1.0.4
Firmware Reset Counter              : 0
Error Recovery Counter              : 0
Crash Dump Timestamp                : Not Available
Secure Boot                         : Enabled
Secure Firmware Update              : Enabled

$ sudo niccli -i 2 device_info
以下略
```

### ファームウェア書き換え
次のコマンドでファームウェアを書き換え、リブートします。
```
$ sudo niccli -i 1 install -rescue -force BCM957416A4160C.pkg
$ sudo reboot
```

### RDMA 無効化
```
$ sudo niccli -i 1 nvm -setoption support_rdma -scope 0 -value 0
$ sudo niccli -i 2 nvm -setoption support_rdma -scope 0 -value 0
```

## おわりに
書き換え後のファームウェアは 230.0.157.0 ですが、今のところ正常に動いています。

## 参考にしたサイト
https://utcc.utoronto.ca/~cks/space/blog/linux/BroadcomNetworkDriverAndRDMA

https://forum.proxmox.com/threads/broadcom-nics-down-after-pve-8-2-kernel-6-8.146185/