Updated 2023-09-05
What is Proxmox? see https://www.proxmox.com/en/proxmox-ve
What is DKMS (Dynamic Kernel Module Support)? see https://help.ubuntu.com/community/DKMS
For the Proxmox bnx2x kernel module build instruction via standard Proxmox build environment see: https://github.com/JAMESMTL/snippets/blob/master/bnx2x/proxmox/README.md
Note: I have literraly zero experience with Proxmox other than building the kernel module. I can't help anyone with any questions regarding configuration or running a proxmox host
This WILL be preformed on the production host.
Step 1. Get the Debian release used to build Proxmox
DEBIANVER=$(awk '{print $3}' /etc/apt/sources.list.d/pve-enterprise.list) && echo $DEBIANVER
Step 2. If you are not using Proxmox with an enterprise subscription then you will need to remove the default enterprise repo and replace it with either the pve-no-subscription repo (recommended) or pvetest repo.
rm /etc/apt/sources.list.d/pve-enterprise.list
then
echo "deb http://download.proxmox.com/debian/pve ${DEBIANVER} pve-no-subscription" > /etc/apt/sources.list.d/pve.list
or
echo "deb http://download.proxmox.com/debian/pve ${DEBIANVER} pvetest" > /etc/apt/sources.list.d/pve.list
Step 3. Update apt sources
apt update
Step 4. Install dkms, git, ettool, and dependencies
apt install -y dkms git ethtool pve-headers pve-headers-$(uname -r)
Step 5. Run dkms init script (https://github.com/JAMESMTL/snippets/blob/master/bnx2x/patches/dkms-init.sh)
curl https://raw.githubusercontent.com/JAMESMTL/snippets/master/bnx2x/patches/dkms-init.sh | sh | tee /usr/src/dkms-init.log
Step 6. Verify bnx2x module has been patched then Reboot
modinfo -p bnx2x | grep -q mask_tx_fault && echo PATCHED || echo NOT PATCHED
reboot
Done!
To set these parameters, create a file in /etc/modprobe.d and include the required options
To enable debug mode
options bnx2x debug=0x4102034
To disable SFP TX fault detection
options bnx2x mask_tx_fault=1
where :
0 = SFP TX fault detection enabled on both ports (default)
1 = SFP TX fault detection disabled on port 0
2 = SFP TX fault detection disabled on port 1
3 = SFP TX fault detection disabled on both ports
After adding, modifying, or removing kernel module options update the initramfs image by running the following as root
update-initramfs -u -k all
modinfo -p bnx2x | grep -q mask_tx_fault && echo PATCHED || echo NOT PATCHED
Use ethtool to verify the wan interface (ex. ens224f0)
ethtool ens224f0
DKMS will try and rebuild the kernel module whenever the kernel is updated. If for some reason you are missing the proper headers the build will fail and the system will fall back to the distribution kernel module and the link will be limited to 1G on the Huawei and Alcatel ONTs.
If this happens and you have the nokia ONT, you will lose connectivity and you will required to install the headers manually either via a secondary network adapter or via USB thumb drive
Run dkms update script (https://github.com/JAMESMTL/snippets/blob/master/bnx2x/patches/dkms-update.sh)
curl https://raw.githubusercontent.com/JAMESMTL/snippets/master/bnx2x/patches/dkms-update.sh | sh | tee /usr/src/dkms-init.log
This should only be required if there has been a major update to the underlying kernel branch.
These instructions are in support of the work done by upnatom to enable 2.5G link speeds needed for GPON SFP ONTs used by providers such Bell Canada for their FTTH services.
Special thanks zinc/severnt for the original dkms instructions based on the 4.19 kernel found here: https://github.com/severnt/bnx2x-2_5g-dkms
If you have any questiopns or need support please visit the CPE Bypass discord server found here:
https://discord.com/servers/8311-886329492438671420