Trying to passthrough Mellanox5 to qemu

I am trying to passthrough Mellanox-5 to qemu by following this article. ESPCommunity (I use RoCE)
I have confirmed that the network interface exists, the drivers are installed, and I can see the network device, but I am unable to activate the interface.

lspci -D | grep Mella
0000:04:00.0 Ethernet controller: Mellanox Technologies MT27800 Family [ConnectX-5 Virtual Function]

 lsmod | grep mlx5
mlx5_ib               413696  0
mlx5_core            1843200  1 mlx5_ib
pci_hyperv_intf        16384  1 mlx5_core
mlxdevm               172032  1 mlx5_core
auxiliary              16384  2 mlx5_ib,mlx5_core
ib_uverbs             147456  2 rdma_ucm,mlx5_ib
ib_core               331776  8 rdma_cm,ib_ipoib,iw_cm,ib_umad,rdma_ucm,ib_uverbs,mlx5_ib,ib_cm
mlx_compat             65536  12 rdma_cm,ib_ipoib,mlxdevm,iw_cm,auxiliary,ib_umad,ib_core,rdma_ucm,ib_uverbs,mlx5_ib,ib_cm,mlx5_core
tls                    73728  1 mlx5_core
mlxfw                  32768  1 mlx5_core
psample                20480  1 mlx5_core

ip addr show enp4s0np0
5: enp4s0np0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether 00:22:33:44:53:01 brd ff:ff:ff:ff:ff:ff
    inet 192.168.202.53/20 brd 192.168.207.255 scope global enp4s0np0
       valid_lft forever preferred_lft forever

Whenever I try to activate the interface, there is no error output, but the status remains Down.
I checked the /var/log/syslog and it says

Nov  1 12:10:57 vm1 systemd-networkd[621]: enp4s0np0: Link DOWN
Nov  1 12:10:59 vm1 systemd-networkd[621]: enp4s0np0: Link UP
Nov  1 12:10:59 vm1 kernel: [ 2485.158993] mlx5_core 0000:04:00.0 enp4s0np0: Link down

It seems when I set it to up and suddenly it’s set to down.
How can I fix it? Appreciate for help.