get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 22486,
    "url": "http://patches.dpdk.org/api/patches/22486/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20170328034903.41482-28-ajit.khaparde@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": "<20170328034903.41482-28-ajit.khaparde@broadcom.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20170328034903.41482-28-ajit.khaparde@broadcom.com",
    "date": "2017-03-28T03:49:02",
    "name": "[dpdk-dev,27/28] bnxt: add support for set_mc_addr_list dev_op",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": true,
    "hash": "a49d27641ed8a609631d9176611c7c438747a3c8",
    "submitter": {
        "id": 501,
        "url": "http://patches.dpdk.org/api/people/501/?format=api",
        "name": "Ajit Khaparde",
        "email": "ajit.khaparde@broadcom.com"
    },
    "delegate": {
        "id": 319,
        "url": "http://patches.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20170328034903.41482-28-ajit.khaparde@broadcom.com/mbox/",
    "series": [],
    "comments": "http://patches.dpdk.org/api/patches/22486/comments/",
    "check": "fail",
    "checks": "http://patches.dpdk.org/api/patches/22486/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [IPv6:::1])\n\tby dpdk.org (Postfix) with ESMTP id 0454AD2D8;\n\tTue, 28 Mar 2017 05:50:23 +0200 (CEST)",
            "from rnd-relay.smtp.broadcom.com (lpdvrndsmtp01.broadcom.com\n\t[192.19.229.170]) by dpdk.org (Postfix) with ESMTP id 60BAD2C1A\n\tfor <dev@dpdk.org>; Tue, 28 Mar 2017 05:49:23 +0200 (CEST)",
            "from mail-irv-17.broadcom.com (mail-irv-17.lvn.broadcom.net\n\t[10.75.224.233])\n\tby rnd-relay.smtp.broadcom.com (Postfix) with ESMTP id 66E7230D2BD\n\tfor <dev@dpdk.org>; Mon, 27 Mar 2017 20:49:22 -0700 (PDT)",
            "from C02PT1RBG8WP.vpn.broadcom.net (unknown [10.10.115.230])\n\tby mail-irv-17.broadcom.com (Postfix) with ESMTP id 31C0781EA0\n\tfor <dev@dpdk.org>; Mon, 27 Mar 2017 20:49:22 -0700 (PDT)"
        ],
        "From": "Ajit Khaparde <ajit.khaparde@broadcom.com>",
        "To": "dev@dpdk.org",
        "Date": "Mon, 27 Mar 2017 22:49:02 -0500",
        "Message-Id": "<20170328034903.41482-28-ajit.khaparde@broadcom.com>",
        "X-Mailer": "git-send-email 2.10.1 (Apple Git-78)",
        "In-Reply-To": "<20170328034903.41482-1-ajit.khaparde@broadcom.com>",
        "References": "<20170328034903.41482-1-ajit.khaparde@broadcom.com>",
        "Subject": "[dpdk-dev] [PATCH 27/28] bnxt: add support for set_mc_addr_list\n\tdev_op",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<http://dpdk.org/ml/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://dpdk.org/ml/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<http://dpdk.org/ml/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "This patch adds set_mc_addr_list dev_ops to support adding Multicast addr.\nIf the number of Multicast addresses is more than the maximum number of\nMulticast addresses that the hardware supports, the PMD will enable\nMulticast Promiscuous mode for the specified function.\n\nSigned-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>\n---\n drivers/net/bnxt/bnxt_ethdev.c | 31 +++++++++++++++++++++++++++++++\n drivers/net/bnxt/bnxt_hwrm.c   | 13 +++++++++----\n drivers/net/bnxt/bnxt_vnic.c   |  7 ++++++-\n drivers/net/bnxt/bnxt_vnic.h   |  6 +++++-\n 4 files changed, 51 insertions(+), 6 deletions(-)",
    "diff": "diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c\nindex b41088f..25b8959 100644\n--- a/drivers/net/bnxt/bnxt_ethdev.c\n+++ b/drivers/net/bnxt/bnxt_ethdev.c\n@@ -1373,6 +1373,36 @@ bnxt_set_default_mac_addr_op(struct rte_eth_dev *dev, struct ether_addr *addr)\n \t}\n }\n \n+static int\n+bnxt_dev_set_mc_addr_list_op(struct rte_eth_dev *eth_dev,\n+\t\t\t  struct ether_addr *mc_addr_set,\n+\t\t\t  uint32_t nb_mc_addr)\n+{\n+\tstruct bnxt *bp = (struct bnxt *)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+\n+\tvnic = &bp->vnic_info[0];\n+\n+\tif (nb_mc_addr > BNXT_MAX_MC_ADDRS) {\n+\t\tvnic->flags |= BNXT_VNIC_INFO_ALLMULTI;\n+\t\tgoto allmulti;\n+\t}\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], ETHER_ADDR_LEN);\n+\t\toff += ETHER_ADDR_LEN;\n+\t}\n+\n+\tvnic->mc_addr_cnt = i;\n+\n+allmulti:\n+\treturn bnxt_hwrm_cfa_l2_set_rx_mask(bp, vnic);\n+}\n+\n /*\n  * Initialization\n  */\n@@ -1413,6 +1443,7 @@ static const struct eth_dev_ops bnxt_dev_ops = {\n \t.xstats_get = bnxt_dev_xstats_get_op,\n \t.xstats_get_names = bnxt_dev_xstats_get_names_op,\n \t.xstats_reset = bnxt_dev_xstats_reset_op,\n+\t.set_mc_addr_list = bnxt_dev_set_mc_addr_list_op,\n };\n \n static bool bnxt_vf_pciid(uint16_t id)\ndiff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c\nindex 894ea79..c7cc5a0 100644\n--- a/drivers/net/bnxt/bnxt_hwrm.c\n+++ b/drivers/net/bnxt/bnxt_hwrm.c\n@@ -192,7 +192,7 @@ int bnxt_hwrm_cfa_l2_clear_rx_mask(struct bnxt *bp, struct bnxt_vnic_info *vnic)\n \tstruct hwrm_cfa_l2_set_rx_mask_output *resp = bp->hwrm_cmd_resp_addr;\n \n \tHWRM_PREP(req, CFA_L2_SET_RX_MASK, -1, resp);\n-\treq.vnic_id = rte_cpu_to_le_16(vnic->fw_vnic_id);\n+\treq.vnic_id = rte_cpu_to_le_32(vnic->fw_vnic_id);\n \treq.mask = 0;\n \n \trc = bnxt_hwrm_send_message(bp, &req, sizeof(req));\n@@ -226,6 +226,11 @@ int bnxt_hwrm_cfa_l2_set_rx_mask(struct bnxt *bp, struct bnxt_vnic_info *vnic)\n \t\tmask |= HWRM_CFA_L2_SET_RX_MASK_INPUT_MASK_ALL_MCAST;\n \tif (vnic->flags & BNXT_VNIC_INFO_MCAST)\n \t\tmask |= HWRM_CFA_L2_SET_RX_MASK_INPUT_MASK_MCAST;\n+\tif (vnic->mc_addr_cnt) {\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}\n \n \treq.mask = rte_cpu_to_le_32(mask);\n \n@@ -886,7 +891,7 @@ int bnxt_hwrm_vnic_alloc(struct bnxt *bp, struct bnxt_vnic_info *vnic)\n \n \tHWRM_CHECK_RESULT;\n \n-\tvnic->fw_vnic_id = rte_le_to_cpu_16(resp->vnic_id);\n+\tvnic->fw_vnic_id = rte_le_to_cpu_32(resp->vnic_id);\n \treturn rc;\n }\n \n@@ -903,7 +908,7 @@ int bnxt_hwrm_vnic_cfg(struct bnxt *bp, struct bnxt_vnic_info *vnic)\n \t    rte_cpu_to_le_32(HWRM_VNIC_CFG_INPUT_ENABLES_DFLT_RING_GRP |\n \t\t\t     HWRM_VNIC_CFG_INPUT_ENABLES_RSS_RULE |\n \t\t\t     HWRM_VNIC_CFG_INPUT_ENABLES_MRU);\n-\treq.vnic_id = rte_cpu_to_le_16(vnic->fw_vnic_id);\n+\treq.vnic_id = rte_cpu_to_le_32(vnic->fw_vnic_id);\n \treq.dflt_ring_grp =\n \t\trte_cpu_to_le_16(bp->grp_info[vnic->start_grp_id].fw_grp_id);\n \treq.rss_rule = rte_cpu_to_le_16(vnic->fw_rss_cos_lb_ctx);\n@@ -1010,7 +1015,7 @@ int bnxt_hwrm_vnic_free(struct bnxt *bp, struct bnxt_vnic_info *vnic)\n \n \tHWRM_PREP(req, VNIC_FREE, -1, resp);\n \n-\treq.vnic_id = rte_cpu_to_le_16(vnic->fw_vnic_id);\n+\treq.vnic_id = rte_cpu_to_le_32(vnic->fw_vnic_id);\n \n \trc = bnxt_hwrm_send_message(bp, &req, sizeof(req));\n \ndiff --git a/drivers/net/bnxt/bnxt_vnic.c b/drivers/net/bnxt/bnxt_vnic.c\nindex 1f9e152..e6fc500 100644\n--- a/drivers/net/bnxt/bnxt_vnic.c\n+++ b/drivers/net/bnxt/bnxt_vnic.c\n@@ -169,7 +169,8 @@ int bnxt_alloc_vnic_attributes(struct bnxt *bp)\n \tchar mz_name[RTE_MEMZONE_NAMESIZE];\n \tuint32_t entry_length = RTE_CACHE_LINE_ROUNDUP(\n \t\t\t\tHW_HASH_INDEX_SIZE * sizeof(*vnic->rss_table) +\n-\t\t\t\tHW_HASH_KEY_SIZE);\n+\t\t\t\tHW_HASH_KEY_SIZE +\n+\t\t\t\tBNXT_MAX_MC_ADDRS * ETHER_ADDR_LEN);\n \tuint16_t max_vnics;\n \tint i;\n \tphys_addr_t mz_phys_addr;\n@@ -217,6 +218,10 @@ 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     HW_HASH_INDEX_SIZE * sizeof(*vnic->rss_table);\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}\n \n \treturn 0;\ndiff --git a/drivers/net/bnxt/bnxt_vnic.h b/drivers/net/bnxt/bnxt_vnic.h\nindex 5695240..bc90b74 100644\n--- a/drivers/net/bnxt/bnxt_vnic.h\n+++ b/drivers/net/bnxt/bnxt_vnic.h\n@@ -41,7 +41,7 @@ struct bnxt_vnic_info {\n \tSTAILQ_ENTRY(bnxt_vnic_info)\tnext;\n \tuint8_t\t\tff_pool_idx;\n \n-\tuint16_t\tfw_vnic_id; /* returned by Chimp during alloc */\n+\tuint32_t\tfw_vnic_id; /* returned by Chimp during alloc */\n \tuint16_t\tfw_rss_cos_lb_ctx;\n \tuint16_t\tctx_is_rss_cos_lb;\n #define MAX_NUM_TRAFFIC_CLASSES\t\t8\n@@ -58,6 +58,10 @@ struct bnxt_vnic_info {\n \tuint16_t\t*rss_table;\n \tphys_addr_t\trss_hash_key_dma_addr;\n \tvoid\t\t*rss_hash_key;\n+\tphys_addr_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": [
        "dpdk-dev",
        "27/28"
    ]
}