Show a cover letter.

GET /api/covers/53213/?format=api
Content-Type: application/json
Vary: Accept

    "id": 53213,
    "url": "",
    "web_url": "",
    "project": {
        "id": 1,
        "url": "",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "",
        "list_email": "",
        "web_url": "",
        "scm_url": "git://",
        "webscm_url": ""
    "msgid": "<>",
    "date": "2019-05-02T12:11:32",
    "name": "[v4,0/3] Add rte_eth_read_clock API",
    "submitter": {
        "id": 1155,
        "url": "",
        "name": "Tom Barbette",
        "email": ""
    "mbox": "",
    "series": [
            "id": 4541,
            "url": "",
            "web_url": "",
            "date": "2019-05-02T12:11:32",
            "name": "Add rte_eth_read_clock API",
            "version": 4,
            "mbox": ""
    "comments": "",
    "headers": {
        "X-Mailer": "git-send-email 2.17.1",
        "List-Id": "DPDK patches and discussions <>",
        "From": "Tom Barbette <>",
        "List-Help": "<>",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;; s=default;\n\tt=1556799101; bh=hrbvMB6sy2GhFyEJLZG9mmBjBSA81drNtJzcCSORSbM=;\n\th=From:To:Cc:Subject:Date;\n\tb=eC52pVt0hhjI4HpHm67SphfLCAXThk/EejK7j4e0PmY8Jzf2sm7QsrAmQRzMdfuKR\n\tl4d6a8oD0nztoMmcnbSeymz7V7iXCdyb7m74QmIP1Y0i4IDRNAxisLRhv7yKCgDzQx\n\tk44cBq6xWrFP7gRGpOfBd1dqJ8+KakExRUCZksDs=",
        "X-Mailman-Version": "2.1.15",
        "X-KTH-Auth": "barbette []",
        "Delivered-To": "",
        "List-Subscribe": "<>,\n\t<>",
        "Cc": ",,\n\tThomas Monjalon <>,\n\tFerruh Yigit <>,\n\tAndrew Rybchenko <>,\n\tShahaf Shuler <>, Yongseok Koh <>, \n\, Tom Barbette <>",
        "To": "",
        "Errors-To": "",
        "Sender": "\"dev\" <>",
        "Return-Path": "<>",
        "X-BeenThere": "",
        "X-Virus-Scanned": "by amavisd-new at",
        "List-Post": "<>",
        "Received": [
            "from [] (localhost [])\n\tby (Postfix) with ESMTP id 068C54CAB;\n\tThu,  2 May 2019 14:11:44 +0200 (CEST)",
            "from ( [])\n\tby (Postfix) with ESMTP id 48ABE4C95\n\tfor <>; Thu,  2 May 2019 14:11:42 +0200 (CEST)",
            "from (localhost.localdomain [])\n\tby (Postfix) with ESMTP id EBF4767EC;\n\tThu,  2 May 2019 14:11:41 +0200 (CEST)",
            "from ([])\n\tby ( []) (amavisd-new,\n\tport 10024)\n\twith LMTP id 10JAU8A3snCC; Thu,  2 May 2019 14:11:41 +0200 (CEST)",
            "from ( [])\n\tby (Postfix) with ESMTPSA id CBBD56792;\n\tThu,  2 May 2019 14:11:39 +0200 (CEST)"
        "Date": "Thu,  2 May 2019 14:11:32 +0200",
        "X-KTH-mail-from": "",
        "List-Archive": "<>",
        "Subject": "[dpdk-dev] [PATCH v4 0/3] Add rte_eth_read_clock API",
        "Message-Id": "<>",
        "Precedence": "list",
        "List-Unsubscribe": "<>,\n\t<>",
        "X-Original-To": ""
    "content": "Some NICs allow to timestamp packets, but do not support the full\nPTP synchronization process. Hence, the value set in the mbuf\ntimestamp field is only the raw value of an internal clock.\n\nTo make sense of this value, one at least needs to be able to query\nthe current hardware clock value. This patch series adds a new API to do\nso, rte_eth_read_clock. As with the TSC, from there\na frequency can be derieved by querying multiple time the current value of the\ninternal clock with some known delay between the queries (example\nprovided in the API doc).\n\nThis patch series adds support of read_clock for MLX5.\n\nAn example app is provided in the rxtx_callback application.\nIt has been updated to display, on top of the software latency\nin cycles, the total latency since the packet was received in hardware.\nThe API is used to compute a delta in the Tx callback. The raw amount of\nticks is converted to cycles using a variation of the technique describe above.\n\nAside from offloading timestamping, which relieve the\nsoftware from a few operations, this allows to get much more precision\nwhen studying the source of the latency in a system.\nEg. in our 100G, CX5 setup the rxtx callback application shows\nSW latency is around 74 cycles (TSC is 3.2Ghz), but the latency\nincluding NIC processing, PCIe, and queuing is around 196 cycles.\n\nOne may think at first this API is overlapping with te_eth_timesync_read_time.\nrte_eth_timesync_read_time is clearly identified as part of a set of functions\nto use PTP synchronization.\nThe device raw clock is not \"sync\" in any way. More importantly, the returned\nvalue is not a timeval, but an amount of ticks. We could have a cast-based\nsolution, but on top of being an ugly solution, some people seeing the timeval\ntype of rte_eth_timesync_read_time could use it blindly.\n\nChange in v2:\n  - Rebase on current master\n\nChange in v3:\n  - Address comments from Ferruh Yigit\n\nChanges in v4:\n  - Address comments from Keith Wiles and Andrew Rybchenko\n  - Use \"clock\" as argunment name everywhere.\n  - Expand the API description to make clear that read_clock gives an\n    amount in ticks, and that it has no unit.\n\nTom Barbette (3):\n  rte_ethdev: Add API function to read dev clock\n  mlx5: Implement support for read_clock\n  rxtx_callbacks: Add support for HW timestamp\n\n doc/guides/nics/features.rst                |  1 +\n doc/guides/sample_app_ug/rxtx_callbacks.rst |  9 ++-\n drivers/net/mlx5/mlx5.c                     |  1 +\n drivers/net/mlx5/mlx5.h                     |  1 +\n drivers/net/mlx5/mlx5_ethdev.c              | 30 +++++++\n drivers/net/mlx5/mlx5_glue.c                |  8 ++\n drivers/net/mlx5/mlx5_glue.h                |  2 +\n examples/rxtx_callbacks/Makefile            |  3 +\n examples/rxtx_callbacks/main.c              | 87 ++++++++++++++++++++-\n examples/rxtx_callbacks/         |  3 +\n lib/librte_ethdev/rte_ethdev.c              | 12 +++\n lib/librte_ethdev/rte_ethdev.h              | 47 +++++++++++\n lib/librte_ethdev/rte_ethdev_core.h         |  6 ++\n lib/librte_ethdev/    |  1 +\n lib/librte_mbuf/rte_mbuf.h                  |  2 +\n 15 files changed, 208 insertions(+), 5 deletions(-)"