get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/105600/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 105600,
    "url": "http://patches.dpdk.org/api/patches/105600/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20220104083824.23001-2-kalesh-anakkur.purayil@broadcom.com/",
    "project": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20220104083824.23001-2-kalesh-anakkur.purayil@broadcom.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20220104083824.23001-2-kalesh-anakkur.purayil@broadcom.com",
    "date": "2022-01-04T08:38:07",
    "name": "[01/18] net/bnxt: fix bnxt_dev_set_mc_addr_list_op",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "ec28f1a2b60c8e40f2fa07ece13f5bef136fef3d",
    "submitter": {
        "id": 1479,
        "url": "http://patches.dpdk.org/api/people/1479/?format=api",
        "name": "Kalesh A P",
        "email": "kalesh-anakkur.purayil@broadcom.com"
    },
    "delegate": {
        "id": 1766,
        "url": "http://patches.dpdk.org/api/users/1766/?format=api",
        "username": "ajitkhaparde",
        "first_name": "Ajit",
        "last_name": "Khaparde",
        "email": "ajit.khaparde@broadcom.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20220104083824.23001-2-kalesh-anakkur.purayil@broadcom.com/mbox/",
    "series": [
        {
            "id": 21060,
            "url": "http://patches.dpdk.org/api/series/21060/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=21060",
            "date": "2022-01-04T08:38:06",
            "name": "bnxt PMD fixes",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/21060/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/105600/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/105600/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id ABAEAA00C5;\n\tTue,  4 Jan 2022 09:19:19 +0100 (CET)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id ED89341147;\n\tTue,  4 Jan 2022 09:19:13 +0100 (CET)",
            "from relay.smtp-ext.broadcom.com (lpdvsmtp11.broadcom.com\n [192.19.166.231])\n by mails.dpdk.org (Postfix) with ESMTP id E65E141145\n for <dev@dpdk.org>; Tue,  4 Jan 2022 09:19:12 +0100 (CET)",
            "from dhcp-10-123-153-22.dhcp.broadcom.net\n (bgccx-dev-host-lnx2.bec.broadcom.net [10.123.153.22])\n by relay.smtp-ext.broadcom.com (Postfix) with ESMTP id 412EAC0000F2;\n Tue,  4 Jan 2022 00:19:10 -0800 (PST)"
        ],
        "DKIM-Filter": "OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com 412EAC0000F2",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com;\n s=dkimrelay; t=1641284351;\n bh=JPbnz156Dp2Z7zqTgirVBgBuE2+JfJH+6zrffiWmKD0=;\n h=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n b=PGJAAT4lTXDlUlEPOW+4cX5gHC7nYXzPjuwINOKCo0WPxLajowLpV/vopJw399tpE\n jmIUjwq4eBHTfXwSwVRrZgDh+neYomzR4CncQJjt9ih4zEBH0UUTXpYxswWjVVjyVB\n G5DQ+yDMaxDTuHJHgryxb+q4fKus6XaIOpt9CfM4=",
        "From": "Kalesh A P <kalesh-anakkur.purayil@broadcom.com>",
        "To": "dev@dpdk.org",
        "Cc": "ferruh.yigit@intel.com,\n\tajit.khaparde@broadcom.com",
        "Subject": "[dpdk-dev] [PATCH 01/18] net/bnxt: fix bnxt_dev_set_mc_addr_list_op",
        "Date": "Tue,  4 Jan 2022 14:08:07 +0530",
        "Message-Id": "<20220104083824.23001-2-kalesh-anakkur.purayil@broadcom.com>",
        "X-Mailer": "git-send-email 2.10.1",
        "In-Reply-To": "<20220104083824.23001-1-kalesh-anakkur.purayil@broadcom.com>",
        "References": "<20220104083824.23001-1-kalesh-anakkur.purayil@broadcom.com>",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org"
    },
    "content": "From: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>\n\nFix to cache the multicast mac addresses added to the port\nto the driver private structure memory. Use this cached mc list\nto program the FW.\n\nThis fixes an issue where multicast packets reception is\nsuccessful only if the multicast mac address of the packets\nis the first one in the multicast address list of the port.\n\nThis is in preparation for another fix in the series.\n\nFixes: d69851df12b2 (\"net/bnxt: support multicast filter and set MAC addr\")\nCc: stable@dpdk.org\n\nSigned-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>\nReviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>\nReviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>\n---\n drivers/net/bnxt/bnxt.h        |  5 +++++\n drivers/net/bnxt/bnxt_ethdev.c | 34 +++++++++++++++++++++++++---------\n drivers/net/bnxt/bnxt_hwrm.c   |  4 ++--\n drivers/net/bnxt/bnxt_vnic.c   |  7 +------\n drivers/net/bnxt/bnxt_vnic.h   |  4 ----\n 5 files changed, 33 insertions(+), 21 deletions(-)",
    "diff": "diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h\nindex 2341610..521fcb7 100644\n--- a/drivers/net/bnxt/bnxt.h\n+++ b/drivers/net/bnxt/bnxt.h\n@@ -891,6 +891,11 @@ struct bnxt {\n \tuint16_t\t\ttx_cfa_action;\n \tstruct bnxt_ring_stats\t*prev_rx_ring_stats;\n \tstruct bnxt_ring_stats\t*prev_tx_ring_stats;\n+\n+#define BNXT_MAX_MC_ADDRS\t16\n+\tstruct rte_ether_addr\t*mcast_addr_list;\n+\trte_iova_t\t\tmc_list_dma_addr;\n+\tuint32_t\t\tnb_mc_addr;\n };\n \n static\ndiff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c\nindex f79f33a..50ffa30 100644\n--- a/drivers/net/bnxt/bnxt_ethdev.c\n+++ b/drivers/net/bnxt/bnxt_ethdev.c\n@@ -2831,9 +2831,8 @@ bnxt_dev_set_mc_addr_list_op(struct rte_eth_dev *eth_dev,\n \t\t\t  uint32_t nb_mc_addr)\n {\n \tstruct bnxt *bp = eth_dev->data->dev_private;\n-\tchar *mc_addr_list = (char *)mc_addr_set;\n \tstruct bnxt_vnic_info *vnic;\n-\tuint32_t off = 0, i = 0;\n+\tuint32_t i = 0;\n \tint rc;\n \n \trc = is_bnxt_in_error(bp);\n@@ -2842,6 +2841,8 @@ bnxt_dev_set_mc_addr_list_op(struct rte_eth_dev *eth_dev,\n \n \tvnic = BNXT_GET_DEFAULT_VNIC(bp);\n \n+\tbp->nb_mc_addr = nb_mc_addr;\n+\n \tif (nb_mc_addr > BNXT_MAX_MC_ADDRS) {\n \t\tvnic->flags |= BNXT_VNIC_INFO_ALLMULTI;\n \t\tgoto allmulti;\n@@ -2849,14 +2850,10 @@ bnxt_dev_set_mc_addr_list_op(struct rte_eth_dev *eth_dev,\n \n \t/* TODO Check for Duplicate mcast addresses */\n \tvnic->flags &= ~BNXT_VNIC_INFO_ALLMULTI;\n-\tfor (i = 0; i < nb_mc_addr; i++) {\n-\t\tmemcpy(vnic->mc_list + off, &mc_addr_list[i],\n-\t\t\tRTE_ETHER_ADDR_LEN);\n-\t\toff += RTE_ETHER_ADDR_LEN;\n-\t}\n+\tfor (i = 0; i < nb_mc_addr; i++)\n+\t\trte_ether_addr_copy(&mc_addr_set[i], &bp->mcast_addr_list[i]);\n \n-\tvnic->mc_addr_cnt = i;\n-\tif (vnic->mc_addr_cnt)\n+\tif (bp->nb_mc_addr)\n \t\tvnic->flags |= BNXT_VNIC_INFO_MCAST;\n \telse\n \t\tvnic->flags &= ~BNXT_VNIC_INFO_MCAST;\n@@ -5016,6 +5013,23 @@ static int bnxt_setup_mac_addr(struct rte_eth_dev *eth_dev)\n \t/* Copy the permanent MAC from the FUNC_QCAPS response */\n \tmemcpy(&eth_dev->data->mac_addrs[0], bp->mac_addr, RTE_ETHER_ADDR_LEN);\n \n+\t/*\n+\t *  Allocate memory to hold multicast mac addresses added.\n+\t *  Used to restore them during reset recovery\n+\t */\n+\tbp->mcast_addr_list = rte_zmalloc(\"bnxt_mcast_addr_tbl\",\n+\t\t\t\t\t  sizeof(struct rte_ether_addr) *\n+\t\t\t\t\t  BNXT_MAX_MC_ADDRS, 0);\n+\tif (bp->mcast_addr_list == NULL) {\n+\t\tPMD_DRV_LOG(ERR, \"Failed to allocate multicast addr table\\n\");\n+\t\treturn -ENOMEM;\n+\t}\n+\tbp->mc_list_dma_addr = rte_malloc_virt2iova(bp->mcast_addr_list);\n+\tif (bp->mc_list_dma_addr == RTE_BAD_IOVA) {\n+\t\tPMD_DRV_LOG(ERR, \"Fail to map mcast_addr_list to physical memory\\n\");\n+\t\treturn -ENOMEM;\n+\t}\n+\n \treturn rc;\n }\n \n@@ -5916,6 +5930,8 @@ bnxt_uninit_resources(struct bnxt *bp, bool reconfig_dev)\n \tif (!reconfig_dev) {\n \t\tbnxt_free_hwrm_resources(bp);\n \t\tbnxt_free_error_recovery_info(bp);\n+\t\trte_free(bp->mcast_addr_list);\n+\t\tbp->mcast_addr_list = NULL;\n \t}\n \n \tbnxt_uninit_ctx_mem(bp);\ndiff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c\nindex f53f863..fdc274c 100644\n--- a/drivers/net/bnxt/bnxt_hwrm.c\n+++ b/drivers/net/bnxt/bnxt_hwrm.c\n@@ -506,8 +506,8 @@ int bnxt_hwrm_cfa_l2_set_rx_mask(struct bnxt *bp,\n \t\tmask |= HWRM_CFA_L2_SET_RX_MASK_INPUT_MASK_ALL_MCAST;\n \t} else if (vnic->flags & BNXT_VNIC_INFO_MCAST) {\n \t\tmask |= HWRM_CFA_L2_SET_RX_MASK_INPUT_MASK_MCAST;\n-\t\treq.num_mc_entries = rte_cpu_to_le_32(vnic->mc_addr_cnt);\n-\t\treq.mc_tbl_addr = rte_cpu_to_le_64(vnic->mc_list_dma_addr);\n+\t\treq.num_mc_entries = rte_cpu_to_le_32(bp->nb_mc_addr);\n+\t\treq.mc_tbl_addr = rte_cpu_to_le_64(bp->mc_list_dma_addr);\n \t}\n \tif (vlan_table) {\n \t\tif (!(mask & HWRM_CFA_L2_SET_RX_MASK_INPUT_MASK_VLAN_NONVLAN))\ndiff --git a/drivers/net/bnxt/bnxt_vnic.c b/drivers/net/bnxt/bnxt_vnic.c\nindex c63cf4b..e05dc24 100644\n--- a/drivers/net/bnxt/bnxt_vnic.c\n+++ b/drivers/net/bnxt/bnxt_vnic.c\n@@ -126,8 +126,7 @@ int bnxt_alloc_vnic_attributes(struct bnxt *bp)\n \tint i;\n \trte_iova_t mz_phys_addr;\n \n-\tentry_length = HW_HASH_KEY_SIZE +\n-\t\t       BNXT_MAX_MC_ADDRS * RTE_ETHER_ADDR_LEN;\n+\tentry_length = HW_HASH_KEY_SIZE;\n \n \tif (BNXT_CHIP_P5(bp))\n \t\trss_table_size = BNXT_RSS_TBL_SIZE_P5 *\n@@ -169,10 +168,6 @@ int bnxt_alloc_vnic_attributes(struct bnxt *bp)\n \n \t\tvnic->rss_hash_key_dma_addr = vnic->rss_table_dma_addr +\n \t\t\t\t\t      rss_table_size;\n-\t\tvnic->mc_list = (void *)((char *)vnic->rss_hash_key +\n-\t\t\t\tHW_HASH_KEY_SIZE);\n-\t\tvnic->mc_list_dma_addr = vnic->rss_hash_key_dma_addr +\n-\t\t\t\tHW_HASH_KEY_SIZE;\n \t\tbnxt_prandom_bytes(vnic->rss_hash_key, HW_HASH_KEY_SIZE);\n \t}\n \ndiff --git a/drivers/net/bnxt/bnxt_vnic.h b/drivers/net/bnxt/bnxt_vnic.h\nindex 37b452f..af3a2dd 100644\n--- a/drivers/net/bnxt/bnxt_vnic.h\n+++ b/drivers/net/bnxt/bnxt_vnic.h\n@@ -32,10 +32,6 @@ struct bnxt_vnic_info {\n \tuint16_t\t*rss_table;\n \trte_iova_t\trss_hash_key_dma_addr;\n \tvoid\t\t*rss_hash_key;\n-\trte_iova_t\tmc_list_dma_addr;\n-\tchar\t\t*mc_list;\n-\tuint32_t\tmc_addr_cnt;\n-#define BNXT_MAX_MC_ADDRS\t\t16\n \tuint32_t\tflags;\n #define BNXT_VNIC_INFO_PROMISC\t\t\t(1 << 0)\n #define BNXT_VNIC_INFO_ALLMULTI\t\t\t(1 << 1)\n",
    "prefixes": [
        "01/18"
    ]
}