get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 74792,
    "url": "http://patches.dpdk.org/api/patches/74792/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20200724202315.19533-4-patrick.keroulas@radio-canada.ca/",
    "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": "<20200724202315.19533-4-patrick.keroulas@radio-canada.ca>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20200724202315.19533-4-patrick.keroulas@radio-canada.ca",
    "date": "2020-07-24T20:23:14",
    "name": "[[PATCH,v3,3/4] pdump: convert timestamp to nanoseconds on Rx path",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": true,
    "hash": "7b44c1374223b907c704052e6abe5fc455d4a733",
    "submitter": {
        "id": 1776,
        "url": "http://patches.dpdk.org/api/people/1776/?format=api",
        "name": "Patrick Keroulas",
        "email": "patrick.keroulas@radio-canada.ca"
    },
    "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/20200724202315.19533-4-patrick.keroulas@radio-canada.ca/mbox/",
    "series": [
        {
            "id": 11294,
            "url": "http://patches.dpdk.org/api/series/11294/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=11294",
            "date": "2020-07-24T20:23:11",
            "name": "pdump HW Rx timestamps for mlx5",
            "version": 3,
            "mbox": "http://patches.dpdk.org/series/11294/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/74792/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/74792/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 dpdk.org (dpdk.org [92.243.14.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id A7AF3A0526;\n\tFri, 24 Jul 2020 22:24:03 +0200 (CEST)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 88B4D1C0AC;\n\tFri, 24 Jul 2020 22:23:41 +0200 (CEST)",
            "from mail-qk1-f195.google.com (mail-qk1-f195.google.com\n [209.85.222.195]) by dpdk.org (Postfix) with ESMTP id 16F681C036\n for <dev@dpdk.org>; Fri, 24 Jul 2020 22:23:35 +0200 (CEST)",
            "by mail-qk1-f195.google.com with SMTP id h7so9833436qkk.7\n for <dev@dpdk.org>; Fri, 24 Jul 2020 13:23:35 -0700 (PDT)",
            "from localhost.localdomain\n (modemcable246.10-73-45.static.videotron.ca. [45.73.10.246])\n by smtp.gmail.com with ESMTPSA id f7sm5216089qkj.32.2020.07.24.13.23.33\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Fri, 24 Jul 2020 13:23:34 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=radio-canada-ca.20150623.gappssmtp.com; s=20150623;\n h=from:to:cc:subject:date:message-id:in-reply-to:references;\n bh=d4J8GL2P60emupUK6J06ILs+5iZkXAkCw+Y77iftfbc=;\n b=Vl0FVSnCwuekofc0OTXaRjOOmOwcSR+BHZrK7kwP2paHA7UDkCFXUmNoKvc1yU9gRw\n 1IhoMaJCuv3n1cv9ovi+GqQuFtbGW1tM6v0ZzbGCGR8d3L58WLyA/wMw7tkCsOj/ysGb\n CCmgoBEWbeHh23zfuhVKbiva+Z3vvITpNXF3w/+Rx93v0gw6EggZlFH1V7iK8lJeWJZe\n IH6yJYw4NYZsZ0znvK4/AKoIejW9R3qvnveLAIvQSF/UqG7O88+iUoA+6CtNrSm2qqvY\n nD+VafGWxPumVc/wG+kAP6xyJX2dpU+B3egJHy8P14pKvbAFkx1fQIRBTuLH0mDgTkK7\n 0BaQ==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20161025;\n h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to\n :references;\n bh=d4J8GL2P60emupUK6J06ILs+5iZkXAkCw+Y77iftfbc=;\n b=XYdXey8oq/8PtoPoDGmwINEs8awgpFkl1zfaDEpO+gJdCYAcEdfHLpOO0wFrlhDBUw\n ywtdoSW5AQzgEIJLKxaFN09ZXymN82q5xg4Ax6t/t5eAxgtkgBT6CMIaGQFc2GUV7NBH\n BYDg6EFS9Rc7caAz5FkCYn2vJHWgg4i91Im2JSLVZqFAO3/f7mzP1pB4KTPXbGnOsv8+\n y1arOd1hB39/hsBuotqyUp1dm+kXmcLOBUKV6XLBDDuSUqn4Xrg2fBQRT2+kAB/dc/YS\n K2HprtoSL81/vmb5XLkd+YcdNM6bX5h/Z2KB3+d0+UQ4LQGQkxTtaJNI3PFnQu5BkTpK\n Ui0A==",
        "X-Gm-Message-State": "AOAM531IMV60M13lXUngM+/QKL2f2Cn+WFUZssX0vBaGJyga+y+Or1er\n aj+LGitfiRhe23tqq+mDCDwT3BcH5kQ=",
        "X-Google-Smtp-Source": "\n ABdhPJw5Sa2sWoE2/ab5lBJB0Pd1aAd8tGdRnnCkWgWsAIQY78FzJza9DAoMK7ybMT3KJnYPsbsd2w==",
        "X-Received": "by 2002:a37:a4c2:: with SMTP id\n n185mr12931878qke.373.1595622214392;\n Fri, 24 Jul 2020 13:23:34 -0700 (PDT)",
        "From": "Patrick Keroulas <patrick.keroulas@radio-canada.ca>",
        "To": "dev@dpdk.org",
        "Cc": "Patrick Keroulas <patrick.keroulas@radio-canada.ca>",
        "Date": "Fri, 24 Jul 2020 16:23:14 -0400",
        "Message-Id": "<20200724202315.19533-4-patrick.keroulas@radio-canada.ca>",
        "X-Mailer": "git-send-email 2.17.1",
        "In-Reply-To": "<20200724202315.19533-1-patrick.keroulas@radio-canada.ca>",
        "References": "<20200724202315.19533-1-patrick.keroulas@radio-canada.ca>",
        "Subject": "[dpdk-dev] [[PATCH v3 3/4] pdump: convert timestamp to nanoseconds\n\ton Rx 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 <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",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "Use start time and device frequency to translate raw Rx hardware\ntimestamps into nanoseconds.\n\nSigned-off-by: Patrick Keroulas <patrick.keroulas@radio-canada.ca>\n---\n lib/librte_pdump/rte_pdump.c | 25 +++++++++++++++++++++++++\n 1 file changed, 25 insertions(+)",
    "diff": "diff --git a/lib/librte_pdump/rte_pdump.c b/lib/librte_pdump/rte_pdump.c\nindex b3c8d5ce43..8fd7e13af5 100644\n--- a/lib/librte_pdump/rte_pdump.c\n+++ b/lib/librte_pdump/rte_pdump.c\n@@ -2,6 +2,8 @@\n  * Copyright(c) 2016-2018 Intel Corporation\n  */\n \n+#include <sys/time.h>\n+\n #include <rte_memcpy.h>\n #include <rte_mbuf.h>\n #include <rte_ethdev.h>\n@@ -69,6 +71,21 @@ static struct pdump_rxtx_cbs {\n } rx_cbs[RTE_MAX_ETHPORTS][RTE_MAX_QUEUES_PER_PORT],\n tx_cbs[RTE_MAX_ETHPORTS][RTE_MAX_QUEUES_PER_PORT];\n \n+static uint64_t hz;\n+static uint64_t start_time;\n+static uint64_t start_cycles;\n+\n+static inline void\n+pdump_ts_to_ns(struct rte_mbuf **pkts, uint16_t nb_pkts)\n+{\n+\tunsigned int i;\n+\n+\tfor (i = 0; i < nb_pkts; i++) {\n+\t\tif ((pkts[i]->ol_flags & PKT_RX_TIMESTAMP) && hz)\n+\t\t\tpkts[i]->timestamp = start_time +\n+\t\t\t\t (pkts[i]->timestamp - start_cycles) * NS_PER_S / hz;\n+\t}\n+}\n \n static inline void\n pdump_copy(struct rte_mbuf **pkts, uint16_t nb_pkts, void *user_params)\n@@ -107,6 +124,7 @@ pdump_rx(uint16_t port __rte_unused, uint16_t qidx __rte_unused,\n \tuint16_t max_pkts __rte_unused,\n \tvoid *user_params)\n {\n+\tpdump_ts_to_ns(pkts, nb_pkts);\n \tpdump_copy(pkts, nb_pkts, user_params);\n \treturn nb_pkts;\n }\n@@ -131,6 +149,13 @@ pdump_register_rx_callbacks(uint16_t end_q, uint16_t port, uint16_t queue,\n \tfor (; qid < end_q; qid++) {\n \t\tcbs = &rx_cbs[port][qid];\n \t\tif (cbs && operation == ENABLE) {\n+\t\t\tstruct timeval now;\n+\n+\t\t\trte_eth_read_clock(port, &start_cycles);\n+\t\t\trte_eth_get_clock_freq(port, &hz);\n+\t\t\tgettimeofday(&now, NULL);\n+\t\t\tstart_time = now.tv_sec * NS_PER_S + now.tv_usec * 1000;\n+\n \t\t\tif (cbs->cb) {\n \t\t\t\tPDUMP_LOG(ERR,\n \t\t\t\t\t\"failed to add rx callback for port=%d \"\n",
    "prefixes": [
        "[PATCH",
        "v3",
        "3/4"
    ]
}