get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 1822,
    "url": "http://patchwork.dpdk.org/api/patches/1822/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/20141208193630.7F7A18049@dpdk.org/",
    "project": {
        "id": 1,
        "url": "http://patchwork.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": "<20141208193630.7F7A18049@dpdk.org>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20141208193630.7F7A18049@dpdk.org",
    "date": "2014-12-08T19:36:30",
    "name": "[dpdk-dev] (no subject)",
    "commit_ref": null,
    "pull_url": null,
    "state": "not-applicable",
    "archived": true,
    "hash": "cfab13a637b925f31e3a656f088988941078764f",
    "submitter": {
        "id": 131,
        "url": "http://patchwork.dpdk.org/api/people/131/?format=api",
        "name": null,
        "email": "dev-bounces@dpdk.org"
    },
    "delegate": null,
    "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/20141208193630.7F7A18049@dpdk.org/mbox/",
    "series": [],
    "comments": "http://patchwork.dpdk.org/api/patches/1822/comments/",
    "check": "pending",
    "checks": "http://patchwork.dpdk.org/api/patches/1822/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 7F7A18049;\n\tMon,  8 Dec 2014 20:36:30 +0100 (CET)",
            "from mail-pd0-f171.google.com (mail-pd0-f171.google.com\n\t[209.85.192.171]) by dpdk.org (Postfix) with ESMTP id 62453CE7\n\tfor <dev@dpdk.org>; Mon,  8 Dec 2014 18:51:39 +0100 (CET)",
            "by mail-pd0-f171.google.com with SMTP id y13so5591981pdi.2\n\tfor <dev@dpdk.org>; Mon, 08 Dec 2014 09:51:38 -0800 (PST)",
            "from localhost (static-50-53-82-155.bvtn.or.frontiernet.net.\n\t[50.53.82.155]) by mx.google.com with ESMTPSA id\n\tof9sm36879682pbc.6.2014.12.08.09.51.36 for <multiple recipients>\n\t(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\n\tMon, 08 Dec 2014 09:51:38 -0800 (PST)"
        ],
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20130820;\n\th=x-gm-message-state:message-id:user-agent:date:from:to:cc:subject\n\t:references:mime-version:content-type:content-disposition;\n\tbh=7I3ObgHGlN8+8o6zsibKqpUxfLDjhcVi3Eb7wlb1JMc=;\n\tb=m2uZxiMshh2PUuXaYpzjswRccMw8hAUw7aeK/z03tUsYyP9KvBNxnMjKcEpaABpssY\n\t8HfdVlCy6a3Lx4zkJ2Zu35L0ZWPGxWRYtbTQIgMj73DY8453KtRpWD/Fo+CYXn4v6B7J\n\tU9n9MpujwRZe32hf0PEichG6U9RUuYtoaJhtVoNKO+SQiGvsbFHAIm83Ft6Wxt1fPboW\n\tRieHhBtFBAU5q8BXimExyfSRN7V9NeMQFkEJ9WjsFpZp82/N3e2vt6vuj2rU7cqFTrxX\n\ty6/vwn3oHVGETkWl1w/pF6xquUSmGassUSHpwlRxP4RiLxqRDTltWQRf7tPNd1De7YQ0\n\twqpQ==",
        "X-Gm-Message-State": "ALoCoQmWv+MthFuGtjG3Jk1p/f3whkfFxB9hDp6ZlprJjsfi3G6TYmDYyV/EPGz5e95yjGfvyz9X",
        "X-Received": "by 10.68.224.6 with SMTP id qy6mr63610302pbc.35.1418061098782;\n\tMon, 08 Dec 2014 09:51:38 -0800 (PST)",
        "X-Mailman-Approved-At": "Mon, 08 Dec 2014 20:36:25 +0100",
        "Subject": "[dpdk-dev] (no subject)",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "patches and discussions about DPDK <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>",
        "Message-Id": "<20141208193630.7F7A18049@dpdk.org>",
        "Date": "Mon,  8 Dec 2014 20:36:30 +0100 (CET)",
        "From": "dev-bounces@dpdk.org"
    },
    "content": "From stephen@networkplumber.org Mon Dec  8 09:46:51 2014\nMessage-Id: <20141208174651.232055974@networkplumber.org>\nUser-Agent: quilt/0.63-1\nDate: Mon, 08 Dec 2014 09:45:58 -0800\nFrom: Stephen Hemminger <stephen@networkplumber.org>\nTo: Thomas Monjalon <thomas.monjalon@6wind.com>\nCc: dev@dpdk.org,\n Stephen Hemminger <stephen@networkplumber.org>\nSubject: [PATCH 4/6] rte_sched: keep track of RED drops\nReferences: <20141208174554.889069531@networkplumber.org>\nMIME-Version: 1.0\nContent-Type: text/plain; charset=ISO-8859-15\nContent-Disposition: inline; filename=red-stats.patch\n\nAdd new statistic to keep track of drops due to RED.\n\nSigned-off-by: Stephen Hemminger <stephen@networkplumber.org>",
    "diff": "--- a/lib/librte_sched/rte_sched.c\t2014-12-08 09:28:37.810590895 -0800\n+++ b/lib/librte_sched/rte_sched.c\t2014-12-08 09:28:37.810590895 -0800\n@@ -1028,7 +1028,9 @@ rte_sched_port_update_subport_stats(stru\n }\n \n static inline void\n-rte_sched_port_update_subport_stats_on_drop(struct rte_sched_port *port, uint32_t qindex, struct rte_mbuf *pkt)\n+rte_sched_port_update_subport_stats_on_drop(struct rte_sched_port *port,\n+\t\t\t\t\t    uint32_t qindex,\n+\t\t\t\t\t    struct rte_mbuf *pkt, uint32_t red)\n {\n \tstruct rte_sched_subport *s = port->subport + (qindex / rte_sched_port_queues_per_subport(port));\n \tuint32_t tc_index = (qindex >> 2) & 0x3;\n@@ -1036,6 +1038,9 @@ rte_sched_port_update_subport_stats_on_d\n \n \ts->stats.n_pkts_tc_dropped[tc_index] += 1;\n \ts->stats.n_bytes_tc_dropped[tc_index] += pkt_len;\n+#ifdef RTE_SCHED_RED\n+\ts->stats.n_pkts_red_dropped[tc_index] += red;\n+#endif\n }\n \n static inline void\n@@ -1206,12 +1211,20 @@ rte_sched_port_enqueue_qwa(struct rte_sc\n \tqlen = q->qw - q->qr;\n \n \t/* Drop the packet (and update drop stats) when queue is full */\n-\tif (unlikely(rte_sched_port_red_drop(port, pkt, qindex, qlen) || (qlen >= qsize))) {\n+\tif (unlikely(rte_sched_port_red_drop(port, pkt, qindex, qlen))) {\n+#ifdef RTE_SCHED_COLLECT_STATS\n+\t\trte_sched_port_update_subport_stats_on_drop(port, qindex, pkt, 1);\n+\t\trte_sched_port_update_queue_stats_on_drop(port, qindex, pkt, 1);\n+#endif\n \t\trte_pktmbuf_free(pkt);\n+\t}\n+\n+\tif (qlen >= qsize) {\n #ifdef RTE_SCHED_COLLECT_STATS\n-\t\trte_sched_port_update_subport_stats_on_drop(port, qindex, pkt);\n-\t\trte_sched_port_update_queue_stats_on_drop(port, qindex, pkt);\n+\t\trte_sched_port_update_subport_stats_on_drop(port, qindex, pkt, 0);\n+\t\trte_sched_port_update_queue_stats_on_drop(port, qindex, pkt, 0);\n #endif\n+\t\trte_pktmbuf_free(pkt);\n \t\treturn 0;\n \t}\n \n--- a/lib/librte_sched/rte_sched.h\t2014-12-08 09:28:37.810590895 -0800\n+++ b/lib/librte_sched/rte_sched.h\t2014-12-08 09:29:11.402692026 -0800\n@@ -140,6 +140,9 @@ struct rte_sched_subport_stats {\n \t                                      subport for each traffic class*/\n \tuint32_t n_bytes_tc_dropped[RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE]; /**< Number of bytes dropped by the current\n                                           subport for each traffic class due to subport queues being full or congested */\n+#ifdef RTE_SCHED_RED\n+\tuint32_t n_pkts_red_dropped[RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE]; /**< Number of packets dropped by red */\n+#endif\n };\n \n /** Pipe configuration parameters. The period and credits_per_period parameters are measured\n@@ -168,7 +171,9 @@ struct rte_sched_queue_stats {\n \t/* Packets */\n \tuint32_t n_pkts;                 /**< Number of packets successfully written to current queue */\n \tuint32_t n_pkts_dropped;         /**< Number of packets dropped due to current queue being full or congested */\n-\n+#ifdef RTE_SCHED_RED\n+\tuint32_t n_pkts_red_dropped;\n+#endif\n \t/* Bytes */\n \tuint32_t n_bytes;                /**< Number of bytes successfully written to current queue */\n \tuint32_t n_bytes_dropped;        /**< Number of bytes dropped due to current queue being full or congested */\n",
    "prefixes": [
        "dpdk-dev"
    ]
}