net/bnxt: fix logic error when freeing RSS context

Message ID 20190710142409.5618-1-lance.richardson@broadcom.com (mailing list archive)
State Accepted, archived
Delegated to: Ferruh Yigit
Headers
Series net/bnxt: fix logic error when freeing RSS context |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/mellanox-Performance-Testing success Performance Testing PASS
ci/intel-Performance-Testing success Performance Testing PASS
ci/Intel-compilation fail Compilation issues

Commit Message

Lance Richardson July 10, 2019, 2:24 p.m. UTC
  The conditional used to determine whether freeing RSS
contexts for thor vs. non-thor controller was reversed.
Fix this, also reset number of active RSS contexts to
zero after release in the thor case.

Fixes: 38412304b50a ("net/bnxt: enable RSS for thor-based controllers")
Signed-off-by: Lance Richardson <lance.richardson@broadcom.com>
Reviewed-by: Ajit Kumar Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt_hwrm.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
  

Comments

Ferruh Yigit July 16, 2019, 4:16 p.m. UTC | #1
On 7/10/2019 3:24 PM, Lance Richardson wrote:
> The conditional used to determine whether freeing RSS
> contexts for thor vs. non-thor controller was reversed.
> Fix this, also reset number of active RSS contexts to
> zero after release in the thor case.
> 
> Fixes: 38412304b50a ("net/bnxt: enable RSS for thor-based controllers")
> Signed-off-by: Lance Richardson <lance.richardson@broadcom.com>
> Reviewed-by: Ajit Kumar Khaparde <ajit.khaparde@broadcom.com>

Applied to dpdk-next-net/master, thanks.
  

Patch

diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c
index 696974c83..71f03775a 100644
--- a/drivers/net/bnxt/bnxt_hwrm.c
+++ b/drivers/net/bnxt/bnxt_hwrm.c
@@ -2312,12 +2312,13 @@  void bnxt_free_all_hwrm_resources(struct bnxt *bp)
 
 		bnxt_clear_hwrm_vnic_filters(bp, vnic);
 
-		if (!BNXT_CHIP_THOR(bp)) {
+		if (BNXT_CHIP_THOR(bp)) {
 			for (j = 0; j < vnic->num_lb_ctxts; j++) {
 				bnxt_hwrm_vnic_ctx_free(bp, vnic,
 							vnic->fw_grp_ids[j]);
 				vnic->fw_grp_ids[j] = INVALID_HW_RING_ID;
 			}
+			vnic->num_lb_ctxts = 0;
 		} else {
 			bnxt_hwrm_vnic_ctx_free(bp, vnic, vnic->rss_rule);
 			vnic->rss_rule = INVALID_HW_RING_ID;