Show a cover letter.

GET /api/1.2/covers/825813/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 825813,
    "url": "http://patchwork.ozlabs.org/api/1.2/covers/825813/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/netdev/cover/20171014114714.3694-1-natale.patriciello@gmail.com/",
    "project": {
        "id": 7,
        "url": "http://patchwork.ozlabs.org/api/1.2/projects/7/?format=api",
        "name": "Linux network development",
        "link_name": "netdev",
        "list_id": "netdev.vger.kernel.org",
        "list_email": "netdev@vger.kernel.org",
        "web_url": null,
        "scm_url": null,
        "webscm_url": null,
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20171014114714.3694-1-natale.patriciello@gmail.com>",
    "list_archive_url": null,
    "date": "2017-10-14T11:47:09",
    "name": "[RFC,v2,0/5] TCP Wave",
    "submitter": {
        "id": 72063,
        "url": "http://patchwork.ozlabs.org/api/1.2/people/72063/?format=api",
        "name": "Natale Patriciello",
        "email": "natale.patriciello@gmail.com"
    },
    "mbox": "http://patchwork.ozlabs.org/project/netdev/cover/20171014114714.3694-1-natale.patriciello@gmail.com/mbox/",
    "series": [
        {
            "id": 8182,
            "url": "http://patchwork.ozlabs.org/api/1.2/series/8182/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/netdev/list/?series=8182",
            "date": "2017-10-14T11:47:09",
            "name": "TCP Wave",
            "version": 2,
            "mbox": "http://patchwork.ozlabs.org/series/8182/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/covers/825813/comments/",
    "headers": {
        "Return-Path": "<netdev-owner@vger.kernel.org>",
        "X-Original-To": "patchwork-incoming@ozlabs.org",
        "Delivered-To": "patchwork-incoming@ozlabs.org",
        "Authentication-Results": [
            "ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=netdev-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)",
            "ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"D51kAd1N\"; dkim-atps=neutral"
        ],
        "Received": [
            "from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3yDjYz6dKVz9sNx\n\tfor <patchwork-incoming@ozlabs.org>;\n\tSat, 14 Oct 2017 22:49:59 +1100 (AEDT)",
            "(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1753119AbdJNLtm (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tSat, 14 Oct 2017 07:49:42 -0400",
            "from mail-wm0-f67.google.com ([74.125.82.67]:47911 \"EHLO\n\tmail-wm0-f67.google.com\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S1752024AbdJNLtl (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Sat, 14 Oct 2017 07:49:41 -0400",
            "by mail-wm0-f67.google.com with SMTP id t69so25628390wmt.2\n\tfor <netdev@vger.kernel.org>; Sat, 14 Oct 2017 04:49:40 -0700 (PDT)",
            "from localhost.localdomain (62.57.152.197.dyn.user.ono.com.\n\t[62.57.152.197])\n\tby smtp.gmail.com with ESMTPSA id 4sm4560337wmm.1.2017.10.14.04.49.38\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\n\tSat, 14 Oct 2017 04:49:39 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=gmail.com; s=20161025;\n\th=from:to:cc:subject:date:message-id;\n\tbh=dRCG/g8FqnKPzI0PWsTV4zh2ZAwH/8LuOLCJGsn9j0s=;\n\tb=D51kAd1N9CB14Fd8Jw8zaNUmxMbmvzlRpErWxr5MOyCEhZCNPp4rAXy4TeM1Y4kTZD\n\tFNuprrx2q7ARRSCAf5ijamTygDluN8bGXwk5D4KNWseTyv+RM2M1rRdcXnhnmjVFu6mJ\n\tmfYPY05LD+Jc8jN5MZ0qCvt4UveGdi1xENqHgBb2aDQOpp2KzSLzXJ/1treLTzFx5qAB\n\tGzO1WPXI7xf6Ypbazmtnbah70gJh3ZsFy3pq45t544+fZRrapqwzzBlnuFvL2+w4aAzK\n\tMJ/WdyZONpExPB6K0lrdcD8p/csmXdgpdozFcsitjc/C6z2kSxRqzua2Opju0Z0JDFqo\n\tekog==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:from:to:cc:subject:date:message-id;\n\tbh=dRCG/g8FqnKPzI0PWsTV4zh2ZAwH/8LuOLCJGsn9j0s=;\n\tb=RjwC7WuBZBIGtvhb3qP8MDKmkheMHoxDGgSMP1FN2+6y6fHAKkNImn7DofwK8OchgU\n\tvwGxPPx57MSjLFdaq0p5KRy6aAbhMD3obzgzWMjT4qa4hxZUKfleFfoe4zEYvFN7Gpsk\n\tBx+Gk6aX6USgwI8+Fa7nK8pqfdnTdh5l4mFjkA/cSD7g2mmtxgZgAIs1CxRQJKZRvjuF\n\tnW+1o/amtKSZzzfkoYc/9MGQaEXWklDNSBdkzHuR/lNm483YX/WlEbrWLxdN2ft+gLIz\n\tkKDUi9dQSp1KUYIlN4TzcLdFwlt/PPTIpJkXpqPJ946JH+tgpCZhB0fyEuqjSbYE9F/A\n\t8pnA==",
        "X-Gm-Message-State": "AMCzsaWEHqpFv6iCOb9ehKILR1s/gIQ969EpT5fiFW6FDi1cwWfTq0kv\n\t2jZOHBNTNyh5rYqOsMilioE=",
        "X-Google-Smtp-Source": "ABhQp+RWbSLWWmGmneh6/stbNsrxARhQxWUi2mBeTb2bT05WAdb/VpCqscqOnLSHf2FZ35BJbi+u1g==",
        "X-Received": "by 10.28.24.134 with SMTP id 128mr3822544wmy.61.1507981779959;\n\tSat, 14 Oct 2017 04:49:39 -0700 (PDT)",
        "From": "Natale Patriciello <natale.patriciello@gmail.com>",
        "To": "\"David S . Miller\" <davem@davemloft.net>,\n\tEric Dumazet <eric.dumazet@gmail.com>",
        "Cc": "netdev <netdev@vger.kernel.org>, Ahmed Said <ahmed.said@uniroma2.it>,\n\tNatale Patriciello <natale.patriciello@gmail.com>,\n\tFrancesco Zampognaro <zampognaro@ing.uniroma2.it>,\n\tCesare Roseti <roseti@ing.uniroma2.it>",
        "Subject": "[RFC PATCH v2 0/5] TCP Wave",
        "Date": "Sat, 14 Oct 2017 13:47:09 +0200",
        "Message-Id": "<20171014114714.3694-1-natale.patriciello@gmail.com>",
        "X-Mailer": "git-send-email 2.14.2",
        "Sender": "netdev-owner@vger.kernel.org",
        "Precedence": "bulk",
        "List-ID": "<netdev.vger.kernel.org>",
        "X-Mailing-List": "netdev@vger.kernel.org"
    },
    "content": "Hello,\n\nafter the round of review on our v1 patch (you can find the relevant\nthread here [1]) we have improved our code of TCP Wave, a new congestion\ncontrol algorithm.\n\nContext: TCP Wave (TCPW) replaces the window-based transmission paradigm\nof the standard TCP with a burst-based transmission, the ACK-clock\nscheduling with a self-managed timer and the RTT-based congestion\ncontrol loop with an Ack-based Capacity and Congestion Estimation (ACCE)\nmodule. In non-technical words, it sends data down the stack when a\ntimer expires, and the timing of the received ACKs contribute to\nupdating this timer regularly. We have left many debug messages to help\npeople understand what is going on inside the module. We plan to remove\nalmost all of them in the final submission.\n\nWe added this new sender paradigm without deeply touching existing code;\nwe re-used the existing infrastructure (TCP pacing timer, added with\ncommit 218af599fa635b107cfe10acf3249c4dfe5e4123), thanks to the\nsuggestion of Eric Dumazet. In fact, we only added four (optional) new\ncongestion control functions:\n\n+         /* get the expiration time for the pacing timer (optional) */\n+         u64 (*get_pacing_time)(struct sock *sk);\n+         /* the pacing timer is expired (optional) */\n+         void (*pacing_timer_expired)(struct sock *sk);\n+         /* get the # segs to send out when the timer expires (optional) */\n+         u32 (*get_segs_per_round)(struct sock *sk);\n+         /* the TCP has sent some segments (optional) */\n+         void (*segments_sent)(struct sock *sk, u32 sent);\n\nto manage the previously mentioned pacing timer. With these functions, a\ncongestion control can set the pacing time, be informed when it expires,\nindicate how many segments can leave when it expires, and know how many\nsegments really left the TCP layer after it has expired.\n\nThanks to the reviewers' suggestions we believe that the code has\nimproved in clarity and performance. David Laight, Stephen Hemminger,\nDavid Miller, Neal Cardwell, Eric Dumazet, and all others that replied\nprivately, thank you.\n\nAgain, we would greatly appreciate any feedback, comments, suggestions,\ncorrections and so on. Thank you for your attention.\n\nCesare, Francesco, Ahmed, Natale\n\n[1] http://lists.openwall.net/netdev/2017/07/28/219\n\n---\nChanges in v2:\n - Using TCP pacing timer instead of adding a new one\n - Using ktime_t instead of jiffies to measure the time\n - Avoided the use of custom debug facilities\n - Cleaned the variable declarations\n\nNatale Patriciello (5):\n  tcp: Added a function to retrieve pacing timer\n  tcp: implemented pacing_expired\n  tcp: added get_segs_per_round\n  tcp: added segment sent\n  wave: Added TCP Wave\n\n MAINTAINERS                    |    6 +\n include/net/tcp.h              |    8 +\n include/uapi/linux/inet_diag.h |   13 +\n net/ipv4/Kconfig               |   16 +\n net/ipv4/Makefile              |    1 +\n net/ipv4/tcp_output.c          |   61 ++-\n net/ipv4/tcp_wave.c            | 1035 ++++++++++++++++++++++++++++++++++++++++\n 7 files changed, 1127 insertions(+), 13 deletions(-)\n create mode 100644 net/ipv4/tcp_wave.c"
}