Re: [PATCH net v2] bnxt_en: Don't keep MSI-X vectors added before FW reserves them

From: Michael Chan

Date: Fri Oct 30 2026 - 01:43:50 EST


On Wed, Oct 28, 2026 at 4:49 AM Vlad Poenaru <vlad.wing@xxxxxxxxx> wrote:
>
> When dynamic MSI-X is supported, bnxt_check_rings() grows the MSI-X
> vectors with bnxt_change_msix() once FW says the new rings would fit,
> and keeps them. FW only reserves the extra IRQs later, when
> bnxt_reserve_rings() calls __bnxt_reserve_rings(). The MSI-X table
> entries beyond the function's reserved IRQs are not backed until then:
> the MSI message written when the new vectors are activated is lost, and
> the entries read back as zero. After FW reserves them they are live but
> still zero, so the NQ rings bound to them signal address 0 and every
> completion on those rings is lost. The next ring change (for example
> ethtool -G) then times out freeing each of those rings and the TX
> watchdog fires:
>
> bnxt_en 0002:01:00.0 eth0: Resp cmpl intr err msg: 0x51
> bnxt_en 0002:01:00.0 eth0: hwrm_ring_free type 1 failed. rc:fffffff0 err:0
> ...
> bnxt_en 0002:01:00.0 eth0: NETDEV WATCHDOG: CPU: 17: transmit queue 18 timed out 5716 ms

Thanks for the patch. I'm discussing this issue with our FW team and
will provide a response tomorrow.

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature