Failed to Start virtio-net-controller.service
The problem can be verified using the following commands:
# virtnet list
ERR: Can't connect to virtnet controller: [Errno 111] Connection refused
Check 'systemctl status virtio-net-controller'
Or controller is not ready to accept commands
# systemctl status virtio-net-controller
● virtio-net-controller.service - Nvidia VirtIO Net Controller Daemon
Loaded: loaded (/etc/systemd/system/virtio-net-controller.service; enabled; vendor preset: disabled)
Active: inactive (dead) since Fri 2023-10-27 17:46:59 CDT; 2min 26s ago
Docs: file:/opt/mellanox/mlnx_virtnet/README.md
Process: 29652 ExecStart=/usr/sbin/virtio_net_manager (code=exited, status=0/SUCCESS)
Main PID: 29652 (code=exited, status=0/SUCCESS)
The problem may happen due to the following reasons.
Virtio-net Not Enabled
Check if mlxconfig has VIRTIO_NET_EMULATION_ENABLE enabled:
# mlxconfig -d
03:00.0-e q | grep -i VIRTIO_NET_EMULATION_ENABLE * VIRTIO_NET_EMULATION_ENABLE False(0) True(1) True(1)Both 2 and 3 columns should appear as true.
If they are not, perform the following from the BlueField Arm side:
# mlxconfig -d
03:00.0s VIRTIO_NET_EMULATION_ENABLE=1Perform a BlueField system-level reset as documented in the BlueField software documentation.
Not Enough SFs Reserved
This can happen when more VIRTIO_NET_EMULATION_NUM_PF are reserved than PF_TOTAL_SF, as each virtio-net PF/VF requires a corresponding SF created:
# mlxconfig -d 03:00.0 -e q | grep -iE 'PF_TOTAL_SF|VIRTIO_NET_EMULATION_NUM_PF'
* VIRTIO_NET_EMULATION_NUM_PF 0 4 4
* PF_TOTAL_SF 0 8 8
By default, the BlueField creates an SF for each PF. Take this into consideration when reserving PF_TOTAL_SF.