Index | Thread | Search

From:
Stefan Sperling <stsp@stsp.name>
Subject:
Re: bnxt: bcm5750x support
To:
Jonathan Matthew <jonathan@d14n.org>
Cc:
tech@openbsd.org
Date:
Mon, 15 Dec 2025 17:06:02 +0100

Download raw body.

Thread
  • Jonathan Matthew:

    bnxt: bcm5750x support

    • Stefan Sperling:

      bnxt: bcm5750x support

On Wed, Nov 26, 2025 at 05:35:45PM +1000, Jonathan Matthew wrote:
> The diff below adds support for BCM5750x devices, also called Phase 5
> and Thor in various places, to bnxt(4).  These are showing up in new
> servers from Dell and others, particularly if you want a 200GbE
> OCP 3.0 nic for some reason, or 4x 25GbE.
> 
> There are a couple of significant differences to earlier generation
> bnxt hardware.  Instead of completion queues generating interrupts,
> they now generate events that feed into notification queues, which
> generate interrupts.  Notification queues are very similar to
> completion queues, so this isn't overly difficult to deal with.
> 
> The host is also required to allocate some memory as backing store for
> the nic (on the order of a few MB) before it can do anything useful.
> This required some changes to the initial setup process - in particular,
> I had to move the function reset call earlier because it was clearing
> the backing store config, which made the whole thing useless.
> This version of the diff probably allocates a bit more backing store than
> strictly needed, so I'll try to cut it down later.
> 
> Support for BCM5760x (Phase 7, or Thor2) is another set of incremental
> changes on top of this, but I don't have any hardware to work on that.
> 
> I'll break this up into some smaller pieces to commit, but in case
> anyone wants to try this against new or old bnxt, here it is.

This device still is working fine with your diff:

bnxt0 at pci14 dev 0 function 0 "Broadcom BCM57414" rev 0x01: fw ver 234.0.150, msix, 8 queues, address xx:xx:xx:xx:xx:xx

The diff reads fine, too. Though I noticed that bnxt_backing_store_cfg()
contains 7 calls to bnxt_dmamem_alloc() all of which lack NULL return checks
and corresponding cleanup in bnxt_attach() on failure.

I do see the following during 'ifconfig bnxt0 down up' while tcpbench
is running:

bnxt0: unexpected completion type 3
bnxt0: unexpected completion type 18

But I doubt that is a new problem.

18 decimal corresponds to CMPL_BASE_TYPE_RX_AGG.
Not sure which event type 3 is supposed to be.