]> git.ipfire.org Git - thirdparty/linux.git/commit
bnxt_en: Determine and store default RX ring in vnic structure
authorShravya KN <shravya.k-n@broadcom.com>
Fri, 31 Jul 2026 19:09:34 +0000 (12:09 -0700)
committerJakub Kicinski <kuba@kernel.org>
Wed, 5 Aug 2026 02:54:33 +0000 (19:54 -0700)
commit53f01cd594e223aabb538d5288e60111523c96f2
tree597c90d6e3279122170ef55e3e4832efde946d43
parent1d0fc6c7ea49994b8ff50d02979d1e4207ec6c4f
bnxt_en: Determine and store default RX ring in vnic structure

Each VNIC has a default RX ring.  The purpose of the default RX ring
is to provide a destination for any packets that cannot be parsed by
the RSS logic.  Up until now, the default RX ring is always Ring 0.

We neglected to take care of this default RX ring when adding the
queue restart feature.  If ring 0 (default ring) is re-started, it
may now have a new FW ring ID after freeing the old one and
allocating a new one.  The VNIC now may have a stale default ring
and it may generate an internal exception.  This exception may
appear in dmesg:

FW reported unknown error type 10

The best way to resolve this issue is to use a more appropriate
ring for the default ring instead of always ring 0.  Ring 0 may not
even be in the RSS table, especially on a new RSS context.

This patch adds the logic to determine and store the proper default
RX ring for a VNIC.  For an RSS VNIC, the default ring is the lowest
ring number in the RSS table.  The next patch will add proper logic
to update the VNIC if the default ring changes after queue restart.

Reviewed-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Reviewed-by: Pavan Chebbi <pavan.chebbi@broadcom.com>
Signed-off-by: Shravya KN <shravya.k-n@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Link: https://patch.msgid.link/20260731190937.807270-3-michael.chan@broadcom.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/broadcom/bnxt/bnxt.c
drivers/net/ethernet/broadcom/bnxt/bnxt.h