bnxt_en: Fix inconsistent BNXT_FLAG_AGG_RINGS logic.
authorMichael Chan <michael.chan@broadcom.com>
Mon, 9 Jul 2018 06:24:48 +0000 (02:24 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 24 Aug 2018 11:09:15 +0000 (13:09 +0200)
commit822bbc4c7966392501d43f9f205a6af09e492567
tree7568afd236d97713ec34366073422ce4c160ff77
parent09af6c90819d9bdd9f8ce6233308cead86625965
bnxt_en: Fix inconsistent BNXT_FLAG_AGG_RINGS logic.

[ Upstream commit 07f4fde53d12eb8d921b465bb298e964e0bdc38c ]

If there aren't enough RX rings available, the driver will attempt to
use a single RX ring without the aggregation ring.  If that also
fails, the BNXT_FLAG_AGG_RINGS flag is cleared but the other ring
parameters are not set consistently to reflect that.  If more RX
rings become available at the next open, the RX rings will be in
an inconsistent state and may crash when freeing the RX rings.

Fix it by restoring the BNXT_FLAG_AGG_RINGS if not enough RX rings are
available to run without aggregation rings.

Fixes: bdbd1eb59c56 ("bnxt_en: Handle no aggregation ring gracefully.")
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/net/ethernet/broadcom/bnxt/bnxt.c