From: Ajit Khaparde <ajit.khaparde@broadcom.com>
To: Kalesh A P <kalesh-anakkur.purayil@broadcom.com>
Cc: dpdk-dev <dev@dpdk.org>, Ferruh Yigit <ferruh.yigit@intel.com>
Subject: Re: [dpdk-dev] [PATCH] net/bnxt: fix memory allocation for command response
Date: Mon, 22 Mar 2021 11:29:31 -0700 [thread overview]
Message-ID: <CACZ4nhsS5cN9Hq7ukR-iqzH5qn2njW6HhR4vEFNOfAPte3b3-w@mail.gmail.com> (raw)
In-Reply-To: <20210320064917.11740-1-kalesh-anakkur.purayil@broadcom.com>
[-- Attachment #1: Type: text/plain, Size: 4106 bytes --]
On Fri, Mar 19, 2021 at 11:27 PM Kalesh A P
<kalesh-anakkur.purayil@broadcom.com> wrote:
>
> From: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
>
> Driver re-allocates memory for the command response buffer
> when the installed firmware version is newer (and has a larger
> max response length) than the version of HWRM that was used to
> build the PMD.
>
> This change helps to avoid the re-allocation by allocating the
> memory for the command response buffer with PAGE_SIZE.
>
> Coverity issue: 366256, 366204, 366180
> Fixes: b7778e8a1c00 ("net/bnxt: refactor to properly allocate resources for PF/VF")
> Cc: stable@dpdk.org
>
> Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
> Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>
> Reviewed-by: Ajit Kumar Khaparde <ajit.khaparde@broadcom.com>
> Reviewed-by: Lance Richardson <lance.richardson@broadcom.com>
Patch applied to dpdk-next-net-brcm. Thanks
> ---
> drivers/net/bnxt/bnxt_ethdev.c | 2 +-
> drivers/net/bnxt/bnxt_hwrm.c | 27 ++++-----------------------
> 2 files changed, 5 insertions(+), 24 deletions(-)
>
> diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
> index 3724752..ed2ae45 100644
> --- a/drivers/net/bnxt/bnxt_ethdev.c
> +++ b/drivers/net/bnxt/bnxt_ethdev.c
> @@ -5608,7 +5608,7 @@ static int bnxt_drv_init(struct rte_eth_dev *eth_dev)
> rc = bnxt_alloc_hwrm_resources(bp);
> if (rc) {
> PMD_DRV_LOG(ERR,
> - "Failed to allocate hwrm resource rc: %x\n", rc);
> + "Failed to allocate response buffer rc: %x\n", rc);
> return rc;
> }
> rc = bnxt_alloc_leds_info(bp);
> diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c
> index e3a0731..6a70b6e 100644
> --- a/drivers/net/bnxt/bnxt_hwrm.c
> +++ b/drivers/net/bnxt/bnxt_hwrm.c
> @@ -1284,28 +1284,8 @@ int bnxt_hwrm_ver_get(struct bnxt *bp, uint32_t timeout)
> max_resp_len = rte_le_to_cpu_16(resp->max_resp_len);
> dev_caps_cfg = rte_le_to_cpu_32(resp->dev_caps_cfg);
>
> - if (bp->max_resp_len != max_resp_len) {
> - sprintf(type, "bnxt_hwrm_" PCI_PRI_FMT,
> - bp->pdev->addr.domain, bp->pdev->addr.bus,
> - bp->pdev->addr.devid, bp->pdev->addr.function);
> -
> - rte_free(bp->hwrm_cmd_resp_addr);
> -
> - bp->hwrm_cmd_resp_addr = rte_malloc(type, max_resp_len, 0);
> - if (bp->hwrm_cmd_resp_addr == NULL) {
> - rc = -ENOMEM;
> - goto error;
> - }
> - bp->hwrm_cmd_resp_dma_addr =
> - rte_malloc_virt2iova(bp->hwrm_cmd_resp_addr);
> - if (bp->hwrm_cmd_resp_dma_addr == RTE_BAD_IOVA) {
> - PMD_DRV_LOG(ERR,
> - "Unable to map response buffer to physical memory.\n");
> - rc = -ENOMEM;
> - goto error;
> - }
> - bp->max_resp_len = max_resp_len;
> - }
> + RTE_VERIFY(max_resp_len <= bp->max_resp_len);
> + bp->max_resp_len = max_resp_len;
>
> if ((dev_caps_cfg &
> HWRM_VER_GET_OUTPUT_DEV_CAPS_CFG_SHORT_CMD_SUPPORTED) &&
> @@ -2804,7 +2784,7 @@ int bnxt_alloc_hwrm_resources(struct bnxt *bp)
>
> sprintf(type, "bnxt_hwrm_" PCI_PRI_FMT, pdev->addr.domain,
> pdev->addr.bus, pdev->addr.devid, pdev->addr.function);
> - bp->max_resp_len = HWRM_MAX_RESP_LEN;
> + bp->max_resp_len = BNXT_PAGE_SIZE;
> bp->hwrm_cmd_resp_addr = rte_malloc(type, bp->max_resp_len, 0);
> if (bp->hwrm_cmd_resp_addr == NULL)
> return -ENOMEM;
> @@ -6057,6 +6037,7 @@ int bnxt_hwrm_poll_ver_get(struct bnxt *bp)
> int rc = 0;
>
> bp->max_req_len = HWRM_MAX_REQ_LEN;
> + bp->max_resp_len = BNXT_PAGE_SIZE;
> bp->hwrm_cmd_timeout = SHORT_HWRM_CMD_TIMEOUT;
>
> HWRM_PREP(&req, HWRM_VER_GET, BNXT_USE_CHIMP_MB);
> --
> 2.10.1
>
prev parent reply other threads:[~2021-03-22 18:29 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-20 6:49 Kalesh A P
2021-03-22 18:29 ` Ajit Khaparde [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CACZ4nhsS5cN9Hq7ukR-iqzH5qn2njW6HhR4vEFNOfAPte3b3-w@mail.gmail.com \
--to=ajit.khaparde@broadcom.com \
--cc=dev@dpdk.org \
--cc=ferruh.yigit@intel.com \
--cc=kalesh-anakkur.purayil@broadcom.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).