From: Ajit Khaparde Date: Fri, 15 May 2020 18:07:32 +0000 (-0700) Subject: net/bnxt: fix allocation of COS queue info X-Git-Url: http://git.droids-corp.org/?p=dpdk.git;a=commitdiff_plain;h=96477b5dd5df417dd0b2e720d4c344ea1dc9ee58 net/bnxt: fix allocation of COS queue info Fixes: 698aa7e95325 ("net/bnxt: add code to determine the Tx COS queue") Cc: stable@dpdk.org Signed-off-by: Ajit Khaparde Signed-off-by: Kalesh AP Reviewed-by: Somnath Kotur --- diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h index f4b39b3458..570767253f 100644 --- a/drivers/net/bnxt/bnxt.h +++ b/drivers/net/bnxt/bnxt.h @@ -637,8 +637,8 @@ struct bnxt { uint32_t hwrm_cmd_timeout; struct bnxt_link_info link_info; - struct bnxt_cos_queue_info rx_cos_queue[BNXT_COS_QUEUE_COUNT]; - struct bnxt_cos_queue_info tx_cos_queue[BNXT_COS_QUEUE_COUNT]; + struct bnxt_cos_queue_info *rx_cos_queue; + struct bnxt_cos_queue_info *tx_cos_queue; uint8_t tx_cosq_id[BNXT_COS_QUEUE_COUNT]; uint8_t rx_cosq_cnt; uint8_t max_tc; diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index 3bd30dfa1b..fa1f84d44e 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -197,6 +197,12 @@ static void bnxt_free_leds_info(struct bnxt *bp) bp->leds = NULL; } +static void bnxt_free_cos_queues(struct bnxt *bp) +{ + rte_free(bp->rx_cos_queue); + rte_free(bp->tx_cos_queue); +} + static void bnxt_free_mem(struct bnxt *bp, bool reconfig) { bnxt_free_filter_mem(bp); @@ -230,6 +236,27 @@ static int bnxt_alloc_leds_info(struct bnxt *bp) return 0; } +static int bnxt_alloc_cos_queues(struct bnxt *bp) +{ + bp->rx_cos_queue = + rte_zmalloc("bnxt_rx_cosq", + BNXT_COS_QUEUE_COUNT * + sizeof(struct bnxt_cos_queue_info), + 0); + if (bp->rx_cos_queue == NULL) + return -ENOMEM; + + bp->tx_cos_queue = + rte_zmalloc("bnxt_tx_cosq", + BNXT_COS_QUEUE_COUNT * + sizeof(struct bnxt_cos_queue_info), + 0); + if (bp->tx_cos_queue == NULL) + return -ENOMEM; + + return 0; +} + static int bnxt_alloc_mem(struct bnxt *bp, bool reconfig) { int rc; @@ -1234,6 +1261,7 @@ static void bnxt_dev_close_op(struct rte_eth_dev *eth_dev) bnxt_uninit_resources(bp, false); bnxt_free_leds_info(bp); + bnxt_free_cos_queues(bp); eth_dev->dev_ops = NULL; eth_dev->rx_pkt_burst = NULL; @@ -5382,6 +5410,10 @@ bnxt_dev_init(struct rte_eth_dev *eth_dev) if (rc) goto error_free; + rc = bnxt_alloc_cos_queues(bp); + if (rc) + goto error_free; + rc = bnxt_init_resources(bp, false); if (rc) goto error_free;