[1/2] net/bnxt: fix context memory allocation
Checks
Commit Message
From: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
There is a bug in context memory allocation because of which
it results in reusing the context memory allocated for the first
port while allocating memory for next ports.
Fix it by passing the port id in the name field while
allocating context memory.
Fixes: f8168ca0e690 ("net/bnxt: support thor controller")
Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>
Signed-off-by: Lance Richardson <lance.richardson@broadcom.com>
---
drivers/net/bnxt/bnxt_ethdev.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
Comments
On 7/29/2019 10:28 PM, Lance Richardson wrote:
> From: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
>
> There is a bug in context memory allocation because of which
> it results in reusing the context memory allocated for the first
> port while allocating memory for next ports.
>
> Fix it by passing the port id in the name field while
> allocating context memory.
>
> Fixes: f8168ca0e690 ("net/bnxt: support thor controller")
>
> Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
> Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>
> Signed-off-by: Lance Richardson <lance.richardson@broadcom.com>
Applied to dpdk-next-net/master, thanks.
@@ -3399,8 +3399,9 @@ static int bnxt_alloc_ctx_mem_blk(__rte_unused struct bnxt *bp,
valid_bits = PTU_PTE_VALID;
if (rmem->nr_pages > 1) {
- snprintf(mz_name, RTE_MEMZONE_NAMESIZE, "bnxt_ctx_pg_tbl%s_%x",
- suffix, idx);
+ snprintf(mz_name, RTE_MEMZONE_NAMESIZE,
+ "bnxt_ctx_pg_tbl%s_%x_%d",
+ suffix, idx, bp->eth_dev->data->port_id);
mz_name[RTE_MEMZONE_NAMESIZE - 1] = 0;
mz = rte_memzone_lookup(mz_name);
if (!mz) {
@@ -3436,7 +3437,8 @@ static int bnxt_alloc_ctx_mem_blk(__rte_unused struct bnxt *bp,
rmem->pg_tbl_mz = mz;
}
- snprintf(mz_name, RTE_MEMZONE_NAMESIZE, "bnxt_ctx_%s_%x", suffix, idx);
+ snprintf(mz_name, RTE_MEMZONE_NAMESIZE, "bnxt_ctx_%s_%x_%d",
+ suffix, idx, bp->eth_dev->data->port_id);
mz = rte_memzone_lookup(mz_name);
if (!mz) {
mz = rte_memzone_reserve_aligned(mz_name,