net/bnxt: fix RSS context cleanup

Message ID 20210318004730.24360-1-ajit.khaparde@broadcom.com (mailing list archive)
State Accepted, archived
Delegated to: Ajit Khaparde
Headers
Series net/bnxt: fix RSS context cleanup |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK
ci/intel-Testing success Testing PASS
ci/travis-robot success travis build: passed
ci/github-robot success github build: passed
ci/iol-abi-testing success Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-testing success Testing PASS
ci/iol-mellanox-Performance success Performance Testing PASS

Commit Message

Ajit Khaparde March 18, 2021, 12:47 a.m. UTC
  The PMD is allocating an extra RSS context with each port start.
But it is freeing only one RSS context during port stop. So at some point
we run out of RSS contexts when we do multiple port stop/start sequences.
bnxt_hwrm_vnic_ctx_alloc() is called by bnxt_setup_one_vnic(), but
bnxt_hwrm_vnic_ctx_free() is not called in the corresponding
bnxt_free_one_vnic().

Fix this by calling bnxt_hwrm_vnic_ctx_free() in bnxt_free_one_vnic().

Fixes: 7fe5668d2ea3 ("net/bnxt: support VLAN filter and strip")
Cc: stable@dpdk.org

Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt_ethdev.c | 4 ++++
 1 file changed, 4 insertions(+)
  

Comments

Ajit Khaparde March 19, 2021, 12:05 a.m. UTC | #1
On Wed, Mar 17, 2021 at 5:47 PM Ajit Khaparde
<ajit.khaparde@broadcom.com> wrote:
>
> The PMD is allocating an extra RSS context with each port start.
> But it is freeing only one RSS context during port stop. So at some point
> we run out of RSS contexts when we do multiple port stop/start sequences.
> bnxt_hwrm_vnic_ctx_alloc() is called by bnxt_setup_one_vnic(), but
> bnxt_hwrm_vnic_ctx_free() is not called in the corresponding
> bnxt_free_one_vnic().
>
> Fix this by calling bnxt_hwrm_vnic_ctx_free() in bnxt_free_one_vnic().
>
> Fixes: 7fe5668d2ea3 ("net/bnxt: support VLAN filter and strip")
> Cc: stable@dpdk.org
>
> Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Patch applied to dpdk-next-net-brcm.

> ---
>  drivers/net/bnxt/bnxt_ethdev.c | 4 ++++
>  1 file changed, 4 insertions(+)
>
> diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
> index 1997783a7d..ff92f999db 100644
> --- a/drivers/net/bnxt/bnxt_ethdev.c
> +++ b/drivers/net/bnxt/bnxt_ethdev.c
> @@ -2531,6 +2531,10 @@ static int bnxt_free_one_vnic(struct bnxt *bp, uint16_t vnic_id)
>         }
>         bnxt_del_dflt_mac_filter(bp, vnic);
>
> +       rc = bnxt_hwrm_vnic_ctx_free(bp, vnic);
> +       if (rc)
> +               return rc;
> +
>         rc = bnxt_hwrm_vnic_free(bp, vnic);
>         if (rc)
>                 return rc;
> --
> 2.21.1 (Apple Git-122.3)
>
  

Patch

diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
index 1997783a7d..ff92f999db 100644
--- a/drivers/net/bnxt/bnxt_ethdev.c
+++ b/drivers/net/bnxt/bnxt_ethdev.c
@@ -2531,6 +2531,10 @@  static int bnxt_free_one_vnic(struct bnxt *bp, uint16_t vnic_id)
 	}
 	bnxt_del_dflt_mac_filter(bp, vnic);
 
+	rc = bnxt_hwrm_vnic_ctx_free(bp, vnic);
+	if (rc)
+		return rc;
+
 	rc = bnxt_hwrm_vnic_free(bp, vnic);
 	if (rc)
 		return rc;