get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 41869,
    "url": "http://patches.dpdk.org/api/patches/41869/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20180628201549.3507-7-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": "<20180628201549.3507-7-ajit.khaparde@broadcom.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20180628201549.3507-7-ajit.khaparde@broadcom.com",
    "date": "2018-06-28T20:15:32",
    "name": "[v2,06/23] net/bnxt: set ring coalesce parameters for Stratus NIC",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "fe01bb1f80dcbe509ee1bfdc4d13de03fb011160",
    "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/20180628201549.3507-7-ajit.khaparde@broadcom.com/mbox/",
    "series": [
        {
            "id": 300,
            "url": "http://patches.dpdk.org/api/series/300/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=300",
            "date": "2018-06-28T20:15:29",
            "name": "bnxt patchset",
            "version": 2,
            "mbox": "http://patches.dpdk.org/series/300/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/41869/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/41869/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 [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id D3BB21B536;\n\tThu, 28 Jun 2018 22:16:17 +0200 (CEST)",
            "from rnd-relay.smtp.broadcom.com (rnd-relay.smtp.broadcom.com\n\t[192.19.229.170]) by dpdk.org (Postfix) with ESMTP id 900E31B4F3\n\tfor <dev@dpdk.org>; Thu, 28 Jun 2018 22:15:58 +0200 (CEST)",
            "from nis-sj1-27.broadcom.com (nis-sj1-27.lvn.broadcom.net\n\t[10.75.144.136])\n\tby rnd-relay.smtp.broadcom.com (Postfix) with ESMTP id 60C4430C025;\n\tThu, 28 Jun 2018 13:15:54 -0700 (PDT)",
            "from C02VPB22HTD6.dhcp.broadcom.net (c02vpb22htd6.dhcp.broadcom.net\n\t[10.136.50.120])\n\tby nis-sj1-27.broadcom.com (Postfix) with ESMTP id E6447AC0745;\n\tThu, 28 Jun 2018 13:15:53 -0700 (PDT)"
        ],
        "DKIM-Filter": "OpenDKIM Filter v2.10.3 rnd-relay.smtp.broadcom.com 60C4430C025",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com;\n\ts=dkimrelay; t=1530216954;\n\tbh=LGXg+VR2CO5zmrDX3On9uFzx6ZggGxRsVik/34cVgk8=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=QA3k7zQA57GpdBTkcAQRA2pl8chbF+IUUAzv7QK71jizNGghNAXT3WxTIHn6isfIN\n\tP1Pm3DP8ovyl5U+O+JFJc14+Qubrg2mRx/g4YylOymqMUkrKT6AihGXjxwSNfthuDK\n\tWPhPmj7R66q+d866rhcR6NbdaVyjSjjTY4AzUsmA=",
        "From": "Ajit Khaparde <ajit.khaparde@broadcom.com>",
        "To": "dev@dpdk.org",
        "Cc": "ferruh.yigit@intel.com",
        "Date": "Thu, 28 Jun 2018 13:15:32 -0700",
        "Message-Id": "<20180628201549.3507-7-ajit.khaparde@broadcom.com>",
        "X-Mailer": "git-send-email 2.15.2 (Apple Git-101.1)",
        "In-Reply-To": "<20180628201549.3507-1-ajit.khaparde@broadcom.com>",
        "References": "<f02289d7-4111-ab00-9ce9-00dd5c8b3c18@intel.com>\n\t<20180628201549.3507-1-ajit.khaparde@broadcom.com>",
        "Subject": "[dpdk-dev] [PATCH v2 06/23] net/bnxt: set ring coalesce parameters\n\tfor Stratus NIC",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n\t<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\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "Set ring coalesce parameters for Stratus NIC.\nOther skews don't necessarily need this.\n\nSigned-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>\n---\n drivers/net/bnxt/bnxt.h        | 19 ++++++++++++++++\n drivers/net/bnxt/bnxt_ethdev.c | 11 +++++++++\n drivers/net/bnxt/bnxt_hwrm.c   | 51 ++++++++++++++++++++++++++++++++++++++++++\n drivers/net/bnxt/bnxt_hwrm.h   |  2 ++\n drivers/net/bnxt/bnxt_ring.c   | 23 +++++++++++++++++++\n 5 files changed, 106 insertions(+)",
    "diff": "diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h\nindex 9a70617fc..1a746097b 100644\n--- a/drivers/net/bnxt/bnxt.h\n+++ b/drivers/net/bnxt/bnxt.h\n@@ -28,6 +28,14 @@\n #define BNXT_MAX_TX_RING_DESC\t4096\n #define BNXT_MAX_RX_RING_DESC\t8192\n \n+#define BNXT_INT_LAT_TMR_MIN\t\t\t75\n+#define BNXT_INT_LAT_TMR_MAX\t\t\t150\n+#define BNXT_NUM_CMPL_AGGR_INT\t\t\t36\n+#define BNXT_CMPL_AGGR_DMA_TMR\t\t\t37\n+#define BNXT_NUM_CMPL_DMA_AGGR\t\t\t36\n+#define BNXT_CMPL_AGGR_DMA_TMR_DURING_INT\t50\n+#define BNXT_NUM_CMPL_DMA_AGGR_DURING_INT\t12\n+\n struct bnxt_led_info {\n \tuint8_t      led_id;\n \tuint8_t      led_type;\n@@ -209,6 +217,16 @@ struct bnxt_ptp_cfg {\n \tuint32_t\t\t\ttx_mapped_regs[BNXT_PTP_TX_REGS];\n };\n \n+struct bnxt_coal {\n+\tuint16_t\t\t\tnum_cmpl_aggr_int;\n+\tuint16_t\t\t\tnum_cmpl_dma_aggr;\n+\tuint16_t\t\t\tnum_cmpl_dma_aggr_during_int;\n+\tuint16_t\t\t\tint_lat_tmr_max;\n+\tuint16_t\t\t\tint_lat_tmr_min;\n+\tuint16_t\t\t\tcmpl_aggr_dma_tmr;\n+\tuint16_t\t\t\tcmpl_aggr_dma_tmr_during_int;\n+};\n+\n #define BNXT_HWRM_SHORT_REQ_LEN\t\tsizeof(struct hwrm_short_input)\n struct bnxt {\n \tvoid\t\t\t\t*bar0;\n@@ -315,6 +333,7 @@ int bnxt_link_update_op(struct rte_eth_dev *eth_dev, int wait_to_complete);\n int bnxt_rcv_msg_from_vf(struct bnxt *bp, uint16_t vf_id, void *msg);\n \n bool is_bnxt_supported(struct rte_eth_dev *dev);\n+bool bnxt_stratus_device(struct bnxt *bp);\n extern const struct rte_flow_ops bnxt_flow_ops;\n \n extern int bnxt_logtype_driver;\ndiff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c\nindex 233a7c312..15dab10bb 100644\n--- a/drivers/net/bnxt/bnxt_ethdev.c\n+++ b/drivers/net/bnxt/bnxt_ethdev.c\n@@ -3073,6 +3073,17 @@ static bool bnxt_vf_pciid(uint16_t id)\n \treturn false;\n }\n \n+bool bnxt_stratus_device(struct bnxt *bp)\n+{\n+\tuint16_t id = bp->pdev->id.device_id;\n+\n+\tif (id == BROADCOM_DEV_ID_STRATUS_NIC ||\n+\t    id == BROADCOM_DEV_ID_STRATUS_NIC_VF1 ||\n+\t    id == BROADCOM_DEV_ID_STRATUS_NIC_VF2)\n+\t\treturn true;\n+\treturn false;\n+}\n+\n static int bnxt_init_board(struct rte_eth_dev *eth_dev)\n {\n \tstruct bnxt *bp = eth_dev->data->dev_private;\ndiff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c\nindex f441d4610..707ee62e0 100644\n--- a/drivers/net/bnxt/bnxt_hwrm.c\n+++ b/drivers/net/bnxt/bnxt_hwrm.c\n@@ -3835,3 +3835,54 @@ int bnxt_vnic_rss_configure(struct bnxt *bp, struct bnxt_vnic_info *vnic)\n \t}\n \treturn 0;\n }\n+\n+static void bnxt_hwrm_set_coal_params(struct bnxt_coal *hw_coal,\n+\tstruct hwrm_ring_cmpl_ring_cfg_aggint_params_input *req)\n+{\n+\tuint16_t flags;\n+\n+\treq->num_cmpl_aggr_int = rte_cpu_to_le_16(hw_coal->num_cmpl_aggr_int);\n+\n+\t/* This is a 6-bit value and must not be 0, or we'll get non stop IRQ */\n+\treq->num_cmpl_dma_aggr = rte_cpu_to_le_16(hw_coal->num_cmpl_dma_aggr);\n+\n+\t/* This is a 6-bit value and must not be 0, or we'll get non stop IRQ */\n+\treq->num_cmpl_dma_aggr_during_int =\n+\t\trte_cpu_to_le_16(hw_coal->num_cmpl_dma_aggr_during_int);\n+\n+\treq->int_lat_tmr_max = rte_cpu_to_le_16(hw_coal->int_lat_tmr_max);\n+\n+\t/* min timer set to 1/2 of interrupt timer */\n+\treq->int_lat_tmr_min = rte_cpu_to_le_16(hw_coal->int_lat_tmr_min);\n+\n+\t/* buf timer set to 1/4 of interrupt timer */\n+\treq->cmpl_aggr_dma_tmr = rte_cpu_to_le_16(hw_coal->cmpl_aggr_dma_tmr);\n+\n+\treq->cmpl_aggr_dma_tmr_during_int =\n+\t\trte_cpu_to_le_16(hw_coal->cmpl_aggr_dma_tmr_during_int);\n+\n+\tflags = HWRM_RING_CMPL_RING_CFG_AGGINT_PARAMS_INPUT_FLAGS_TIMER_RESET |\n+\t\tHWRM_RING_CMPL_RING_CFG_AGGINT_PARAMS_INPUT_FLAGS_RING_IDLE;\n+\treq->flags = rte_cpu_to_le_16(flags);\n+}\n+\n+int bnxt_hwrm_set_ring_coal(struct bnxt *bp,\n+\t\t\tstruct bnxt_coal *coal, uint16_t ring_id)\n+{\n+\tstruct hwrm_ring_cmpl_ring_cfg_aggint_params_input req = {0};\n+\tstruct hwrm_ring_cmpl_ring_cfg_aggint_params_output *resp =\n+\t\t\t\t\t\tbp->hwrm_cmd_resp_addr;\n+\tint rc;\n+\n+\t/* Set ring coalesce parameters only for Stratus 100G NIC */\n+\tif (!bnxt_stratus_device(bp))\n+\t\treturn 0;\n+\n+\tHWRM_PREP(req, RING_CMPL_RING_CFG_AGGINT_PARAMS);\n+\tbnxt_hwrm_set_coal_params(coal, &req);\n+\treq.ring_id = rte_cpu_to_le_16(ring_id);\n+\trc = bnxt_hwrm_send_message(bp, &req, sizeof(req));\n+\tHWRM_CHECK_RESULT();\n+\tHWRM_UNLOCK();\n+\treturn 0;\n+}\ndiff --git a/drivers/net/bnxt/bnxt_hwrm.h b/drivers/net/bnxt/bnxt_hwrm.h\nindex 60a4ab16a..b83aab306 100644\n--- a/drivers/net/bnxt/bnxt_hwrm.h\n+++ b/drivers/net/bnxt/bnxt_hwrm.h\n@@ -167,4 +167,6 @@ int bnxt_hwrm_flash_nvram(struct bnxt *bp, uint16_t dir_type,\n int bnxt_hwrm_ptp_cfg(struct bnxt *bp);\n int bnxt_vnic_rss_configure(struct bnxt *bp,\n \t\t\t    struct bnxt_vnic_info *vnic);\n+int bnxt_hwrm_set_ring_coal(struct bnxt *bp,\n+\t\t\tstruct bnxt_coal *coal, uint16_t ring_id);\n #endif\ndiff --git a/drivers/net/bnxt/bnxt_ring.c b/drivers/net/bnxt/bnxt_ring.c\nindex bb9f6d1c0..81eb89d74 100644\n--- a/drivers/net/bnxt/bnxt_ring.c\n+++ b/drivers/net/bnxt/bnxt_ring.c\n@@ -258,6 +258,24 @@ int bnxt_alloc_rings(struct bnxt *bp, uint16_t qidx,\n \treturn 0;\n }\n \n+static void bnxt_init_dflt_coal(struct bnxt_coal *coal)\n+{\n+\t/* Tick values in micro seconds.\n+\t * 1 coal_buf x bufs_per_record = 1 completion record.\n+\t */\n+\tcoal->num_cmpl_aggr_int = BNXT_NUM_CMPL_AGGR_INT;\n+\t/* This is a 6-bit value and must not be 0, or we'll get non stop IRQ */\n+\tcoal->num_cmpl_dma_aggr = BNXT_NUM_CMPL_DMA_AGGR;\n+\t/* This is a 6-bit value and must not be 0, or we'll get non stop IRQ */\n+\tcoal->num_cmpl_dma_aggr_during_int = BNXT_NUM_CMPL_DMA_AGGR_DURING_INT;\n+\tcoal->int_lat_tmr_max = BNXT_INT_LAT_TMR_MAX;\n+\t/* min timer set to 1/2 of interrupt timer */\n+\tcoal->int_lat_tmr_min = BNXT_INT_LAT_TMR_MIN;\n+\t/* buf timer set to 1/4 of interrupt timer */\n+\tcoal->cmpl_aggr_dma_tmr = BNXT_CMPL_AGGR_DMA_TMR;\n+\tcoal->cmpl_aggr_dma_tmr_during_int = BNXT_CMPL_AGGR_DMA_TMR_DURING_INT;\n+}\n+\n /* ring_grp usage:\n  * [0] = default completion ring\n  * [1 -> +rx_cp_nr_rings] = rx_cp, rx rings\n@@ -265,9 +283,12 @@ int bnxt_alloc_rings(struct bnxt *bp, uint16_t qidx,\n  */\n int bnxt_alloc_hwrm_rings(struct bnxt *bp)\n {\n+\tstruct bnxt_coal coal;\n \tunsigned int i;\n \tint rc = 0;\n \n+\tbnxt_init_dflt_coal(&coal);\n+\n \tfor (i = 0; i < bp->rx_cp_nr_rings; i++) {\n \t\tstruct bnxt_rx_queue *rxq = bp->rx_queues[i];\n \t\tstruct bnxt_cp_ring_info *cpr = rxq->cp_ring;\n@@ -291,6 +312,7 @@ int bnxt_alloc_hwrm_rings(struct bnxt *bp)\n \t\tcpr->cp_doorbell = (char *)bp->doorbell_base + i * 0x80;\n \t\tbp->grp_info[i].cp_fw_ring_id = cp_ring->fw_ring_id;\n \t\tB_CP_DIS_DB(cpr, cpr->cp_raw_cons);\n+\t\tbnxt_hwrm_set_ring_coal(bp, &coal, cp_ring->fw_ring_id);\n \n \t\tif (!i) {\n \t\t\t/*\n@@ -379,6 +401,7 @@ int bnxt_alloc_hwrm_rings(struct bnxt *bp)\n \n \t\ttxr->tx_doorbell = (char *)bp->doorbell_base + idx * 0x80;\n \t\ttxq->index = idx;\n+\t\tbnxt_hwrm_set_ring_coal(bp, &coal, cp_ring->fw_ring_id);\n \t}\n \n err_out:\n",
    "prefixes": [
        "v2",
        "06/23"
    ]
}