Re: [PATCH net v5 0/4] bnxt_en: Make RING FREE more robust
From: Joe Damato
Date: Tue Nov 10 2026 - 13:24:47 EST
On Mon, Nov 09, 2026 at 04:13:57PM -0800, Michael Chan wrote:
> On Mon, Nov 9, 2026 at 12:12 PM Joe Damato <joe@xxxxxxx> wrote:
>
> > - Notifying bnxt_re when DMA is stopped.
>
> I think this is probably the one item that should be added to the
> patchset. When DMA is disabled, RoCE will not work at all so adding
> this will make the series more complete. It may be as simple as
> calling bnxt_ulp_stop(), but I haven't looked into it in detail.
Hm. bnxt_stop_dma runs with rtnl and the netdev instance lock held and
bnxt_ulp_stop -> bnxt_re_suspend takes both. So, I don't think calling
bnxt_ulp_stop is going to work.
Maybe I need to make a new patch where bnxt_stop_dma queues a work item that
calls bnxt_ulp_stop without locks being held? Not sure.
Also: would you be OK with bnxt_re treating BNXT_STATE_DMA_STOPPED as
detached? I'm probably getting this wrong but I think with DMA off
bnxt_re_suspend only takes the detach path when FW_FATAL_COND is set.
LMK if I am missing something here. Just trying to limit the number of
revisions it takes to get something reasonable :)
> We have tested your patches by purposely unmapping the TX buffer early
> to simulate the IOMMU fault. When the number of rings is small, the
> fall back logic to check the HWRM_RING_FREE response during message
> timeout works most of the time. With a large number of rings, some of
> the HWRM_RING_FREE messages do not come back at all and DMA will then
> be disabled. The FW team is still looking into this to understand it
> better. Thanks.
Thanks for testing.