bnxt_en: Improve stats context resource accounting with RDMA driver loaded.
authorMichael Chan <michael.chan@broadcom.com>
Mon, 11 Jan 2021 09:26:39 +0000 (04:26 -0500)
committerJakub Kicinski <kuba@kernel.org>
Wed, 13 Jan 2021 04:05:35 +0000 (20:05 -0800)
commit869c4d5eb1e6fbda66aa790c48bdb946d71494a0
tree035fddb90ce5a790db9994a3c2c2ac5f02106843
parent2284bbd0cf3981462dc6d729c89851c66b05a66a
bnxt_en: Improve stats context resource accounting with RDMA driver loaded.

The function bnxt_get_ulp_stat_ctxs() does not count the stats contexts
used by the RDMA driver correctly when the RDMA driver is freeing the
MSIX vectors.  It assumes that if the RDMA driver is registered, the
additional stats contexts will be needed.  This is not true when the
RDMA driver is about to unregister and frees the MSIX vectors.

This slight error leads to over accouting of the stats contexts needed
after the RDMA driver has unloaded.  This will cause some firmware
warning and error messages in dmesg during subsequent config. changes
or ifdown/ifup.

Fix it by properly accouting for extra stats contexts only if the
RDMA driver is registered and MSIX vectors have been successfully
requested.

Fixes: c027c6b4e91f ("bnxt_en: get rid of num_stat_ctxs variable")
Reviewed-by: Yongping Zhang <yongping.zhang@broadcom.com>
Reviewed-by: Pavan Chebbi <pavan.chebbi@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/broadcom/bnxt/bnxt_ulp.c