get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 53445,
    "url": "http://patches.dpdk.org/api/patches/53445/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20190515180817.71523-4-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": "<20190515180817.71523-4-ajit.khaparde@broadcom.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20190515180817.71523-4-ajit.khaparde@broadcom.com",
    "date": "2019-05-15T18:08:14",
    "name": "[3/6] net/bnxt: check for some error conditions in Tx path",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "5b35c000776ea6686dab48e51b1d6d3c9956f3cf",
    "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/20190515180817.71523-4-ajit.khaparde@broadcom.com/mbox/",
    "series": [
        {
            "id": 4678,
            "url": "http://patches.dpdk.org/api/series/4678/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=4678",
            "date": "2019-05-15T18:08:11",
            "name": "bnxt patchset for Tx performance optimization",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/4678/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/53445/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/53445/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 06D875F2E;\n\tWed, 15 May 2019 20:08:32 +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 AE0CB5B2E\n\tfor <dev@dpdk.org>; Wed, 15 May 2019 20:08:24 +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 64EB330C0AB;\n\tWed, 15 May 2019 11:08:22 -0700 (PDT)",
            "from C02VPB22HTD6.wifi.broadcom.net (c02vpb22htd6.wifi.broadcom.net\n\t[10.69.74.102])\n\tby nis-sj1-27.broadcom.com (Postfix) with ESMTP id 41D52AC0798;\n\tWed, 15 May 2019 11:08:23 -0700 (PDT)"
        ],
        "DKIM-Filter": "OpenDKIM Filter v2.10.3 rnd-relay.smtp.broadcom.com 64EB330C0AB",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com;\n\ts=dkimrelay; t=1557943702;\n\tbh=Og7h7DMCpjW+uuGgPsLArnjmlC5jJjlgSDvN4wn1i2Q=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=ea3yKSP+jGI4AW/eYBf6HjSdS4XLFvZ5OWS0ca9eor120gkATxKW9A24pr+9IWcNb\n\tuFXNbu8NdyT3kMp6gCUa7jjry4Ceg1Tl7T8SXg8IyANLd15Eh6T/34cxe0V4b5xGWo\n\tMicQPdXxkD7UD9A06xZxQOgj+p6/FG96B4ERayXQ=",
        "From": "Ajit Khaparde <ajit.khaparde@broadcom.com>",
        "To": "dev@dpdk.org",
        "Cc": "ferruh.yigit@intel.com, Somnath Kotur <somnath.kotur@broadcom.com>,\n\tSriharsha Basavapatna <sriharsha.basavapatna@broadcom.com>",
        "Date": "Wed, 15 May 2019 11:08:14 -0700",
        "Message-Id": "<20190515180817.71523-4-ajit.khaparde@broadcom.com>",
        "X-Mailer": "git-send-email 2.20.1 (Apple Git-117)",
        "In-Reply-To": "<20190515180817.71523-1-ajit.khaparde@broadcom.com>",
        "References": "<20190515180817.71523-1-ajit.khaparde@broadcom.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[dpdk-dev] [PATCH 3/6] net/bnxt: check for some error conditions in\n\tTx path",
        "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": "The HW can have limits on the minimum packet size it can support,\nor the maximum number of segments it can support. Check for such\npossibilities. Also check if we are going to have a 0 length buffer.\n\nFixes: 6eb3cc2294fd (\"net/bnxt: add initial Tx code\")\nSigned-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>\nReviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>\nSigned-off-by: Sriharsha Basavapatna <sriharsha.basavapatna@broadcom.com>\n---\n drivers/net/bnxt/bnxt_txr.c | 31 ++++++++++++++++++++++++++++++-\n drivers/net/bnxt/bnxt_txr.h |  2 ++\n 2 files changed, 32 insertions(+), 1 deletion(-)",
    "diff": "diff --git a/drivers/net/bnxt/bnxt_txr.c b/drivers/net/bnxt/bnxt_txr.c\nindex 3a0d73af2..9684fb177 100644\n--- a/drivers/net/bnxt/bnxt_txr.c\n+++ b/drivers/net/bnxt/bnxt_txr.c\n@@ -143,6 +143,33 @@ static uint16_t bnxt_start_xmit(struct rte_mbuf *tx_pkt,\n \ttx_buf->mbuf = tx_pkt;\n \ttx_buf->nr_bds = long_bd + tx_pkt->nb_segs;\n \n+\t/* Check if number of Tx descriptors is above HW limit */\n+\tif (unlikely(tx_buf->nr_bds > BNXT_MAX_TSO_SEGS)) {\n+\t\tPMD_DRV_LOG(ERR,\n+\t\t\t    \"Num descriptors %d exceeds HW limit\\n\",\n+\t\t\t    tx_buf->nr_bds);\n+\t\treturn -ENOSPC;\n+\t}\n+\n+\t/* If packet length is less than minimum packet size, pad it */\n+\tif (unlikely(rte_pktmbuf_pkt_len(tx_pkt) < BNXT_MIN_PKT_SIZE)) {\n+\t\tuint8_t pad = BNXT_MIN_PKT_SIZE - rte_pktmbuf_pkt_len(tx_pkt);\n+\t\tchar *seg = rte_pktmbuf_append(tx_pkt, pad);\n+\n+\t\tif (!seg) {\n+\t\t\tPMD_DRV_LOG(ERR,\n+\t\t\t\t    \"Failed to pad mbuf by %d bytes\\n\",\n+\t\t\t\t    pad);\n+\t\t\treturn -ENOMEM;\n+\t\t}\n+\n+\t\t/* Note: data_len, pkt len are updated in rte_pktmbuf_append */\n+\t\tmemset(seg, 0, pad);\n+\t}\n+\n+\t/* Check non zero data_len */\n+\tRTE_VERIFY(tx_pkt->data_len);\n+\n \tif (unlikely(bnxt_tx_avail(txr) < tx_buf->nr_bds))\n \t\treturn -ENOMEM;\n \n@@ -203,6 +230,7 @@ static uint16_t bnxt_start_xmit(struct rte_mbuf *tx_pkt,\n \t\t\t */\n \t\t\ttxbd1->hdr_size = hdr_size >> 1;\n \t\t\ttxbd1->mss = tx_pkt->tso_segsz;\n+\t\t\tRTE_VERIFY(txbd1->mss);\n \n \t\t} else if ((tx_pkt->ol_flags & PKT_TX_OIP_IIP_TCP_UDP_CKSUM) ==\n \t\t\t   PKT_TX_OIP_IIP_TCP_UDP_CKSUM) {\n@@ -285,8 +313,9 @@ static uint16_t bnxt_start_xmit(struct rte_mbuf *tx_pkt,\n \t}\n \n \tm_seg = tx_pkt->next;\n-\t/* i is set at the end of the if(long_bd) block */\n \twhile (m_seg) {\n+\t\t/* Check non zero data_len */\n+\t\tRTE_VERIFY(m_seg->data_len);\n \t\ttxr->tx_prod = RING_NEXT(txr->tx_ring_struct, txr->tx_prod);\n \t\ttx_buf = &txr->tx_buf_ring[txr->tx_prod];\n \ndiff --git a/drivers/net/bnxt/bnxt_txr.h b/drivers/net/bnxt/bnxt_txr.h\nindex 7f3c7cdb0..f802d5080 100644\n--- a/drivers/net/bnxt/bnxt_txr.h\n+++ b/drivers/net/bnxt/bnxt_txr.h\n@@ -10,6 +10,8 @@\n \n #define MAX_TX_RINGS\t16\n #define BNXT_TX_PUSH_THRESH 92\n+#define BNXT_MAX_TSO_SEGS\t32\n+#define BNXT_MIN_PKT_SIZE\t52\n \n #define B_TX_DB(db, prod)\trte_write32((DB_KEY_TX | (prod)), db)\n \n",
    "prefixes": [
        "3/6"
    ]
}