Page MenuHomeVyOS Platform

Add 2.5Gbit/s support in bnx2x kernel module (Broadcom BCM57810S NICs)
Closed, ResolvedPublicFEATURE REQUEST

Description

Summary

Add the well-known kernel module patch by JAMESMTL for the bnx2x kernel module to allow the NIC to use 2.5G pluggables.

Use case

2.5Gbit/s pluggables are commonly used by ISPs providing GPON access, offering up to 2.5Gbit/s downstream bandwidth. This patch allows the bnx2x module to properly advertise 2.5Gbit/s capabilities on Broadcom NetXtreme2-X cards with a BCM57810S chipset.

This card/chipset is well-known for being able to offer 2.5Gbit/s capabilities.
One example being Deutsche Telekom in Germany, offering a 1G service with a provisioned bandwidth of 1.1G. This overprovisioned line would only offer 940Mbit/s usable, when the pluggable is advertised as 1000baseT/Full.

Additional information

https://hack-gpon.org/broadcom-57810s/
https://github.com/JAMESMTL/snippets/blob/master/bnx2x/patches/bnx2x_warpcore_8727_2_5g_sgmii_txfault.patch

I've successfully applied this patch to a recent Debian 13 installation, but I was unable to compile a working kernel module using the vyos-build toolchain and documentation.

Details

Version
-
Is it a breaking change?
Unspecified (possibly destroys the router)
Issue type
Feature (new functionality)

Event Timeline

_mrplow created this object in space S1 VyOS Public.
c-po triaged this task as Low priority.

To add some more context:
To make this work, the NVRAM config of the NIC has to be changed, so the 2,5G / HSGMII mode is activated and advertised.

A properly configured NIC port with a GPON SFP (Zyxel PMG3000-D20B) and the kernel module patch applied looks like this when checking with ethtool:

# ethtool ens16f1
Settings for ens16f1:
        Supported ports: [ FIBRE ]
        Supported link modes:   1000baseT/Full
                                2500baseX/Full
        Supported pause frame use: Symmetric Receive-only
        Supports auto-negotiation: No
        Supported FEC modes: Not reported
        Advertised link modes:  2500baseX/Full
        Advertised pause frame use: No
        Advertised auto-negotiation: No
        Advertised FEC modes: Not reported
        Speed: 2500Mb/s
        Duplex: Full
        Auto-negotiation: off
        Port: FIBRE
        PHYAD: 1
        Transceiver: internal
        Supports Wake-on: d
        Wake-on: d
        Current message level: 0x00000000 (0)
# speedtest

   Speedtest by Ookla

      Server: Some Server
         ISP: Some ISP
Idle Latency:     0.94 ms   (jitter: 0.12ms, low: 0.82ms, high: 1.08ms)
    Download:  2281.39 Mbps (data used: 1.0 GB)
                  3.71 ms   (jitter: 0.25ms, low: 0.57ms, high: 4.26ms)
      Upload:   907.70 Mbps (data used: 962.6 MB)
                  0.82 ms   (jitter: 0.40ms, low: 0.54ms, high: 2.75ms)

From what I've seen in the vyos-build toolchain without any proper understanding, shouldn't it be enough to place the patch file in the .../patches/kernel/ directory and let the nightly build process do it's thing? I'd be happy to test an image with the patch applied since I have a working setup.