get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 751,
    "url": "http://patchwork.ozlabs.org/api/patches/751/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/netdev/patch/1221947278-16715-15-git-send-email-ilpo.jarvinen@helsinki.fi/",
    "project": {
        "id": 7,
        "url": "http://patchwork.ozlabs.org/api/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": "<1221947278-16715-15-git-send-email-ilpo.jarvinen@helsinki.fi>",
    "list_archive_url": null,
    "date": "2008-09-20T21:47:57",
    "name": "[PATCHv2,net-next,14/15] tcp: don't clear lost_skb_hint when not necessary",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "2b9b842e8141f8bbc6b8f209e1668ce4d07a7583",
    "submitter": {
        "id": 255,
        "url": "http://patchwork.ozlabs.org/api/people/255/?format=api",
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi"
    },
    "delegate": {
        "id": 34,
        "url": "http://patchwork.ozlabs.org/api/users/34/?format=api",
        "username": "davem",
        "first_name": "David",
        "last_name": "Miller",
        "email": "davem@davemloft.net"
    },
    "mbox": "http://patchwork.ozlabs.org/project/netdev/patch/1221947278-16715-15-git-send-email-ilpo.jarvinen@helsinki.fi/mbox/",
    "series": [],
    "comments": "http://patchwork.ozlabs.org/api/patches/751/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/751/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<netdev-owner@vger.kernel.org>",
        "X-Original-To": "patchwork-incoming@ozlabs.org",
        "Delivered-To": "patchwork-incoming@ozlabs.org",
        "Received": [
            "from vger.kernel.org (vger.kernel.org [209.132.176.167])\n\tby ozlabs.org (Postfix) with ESMTP id 8115EDDEDE\n\tfor <patchwork-incoming@ozlabs.org>;\n\tSun, 21 Sep 2008 07:48:49 +1000 (EST)",
            "(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1754123AbYITVsi (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tSat, 20 Sep 2008 17:48:38 -0400",
            "(majordomo@vger.kernel.org) by vger.kernel.org id S1754106AbYITVsh\n\t(ORCPT <rfc822; netdev-outgoing>); Sat, 20 Sep 2008 17:48:37 -0400",
            "from courier.cs.helsinki.fi ([128.214.9.1]:56256 \"EHLO\n\tmail.cs.helsinki.fi\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S1751931AbYITVsI (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Sat, 20 Sep 2008 17:48:08 -0400",
            "from wrl-59.cs.helsinki.fi (wrl-59.cs.helsinki.fi\n\t[128.214.166.179])\n\t(AUTH: PLAIN cs-relay, TLS: TLSv1/SSLv3,256bits,AES256-SHA)\n\tby mail.cs.helsinki.fi with esmtp; Sun, 21 Sep 2008 00:47:59 +0300\n\tid 0005BEF2.48D56F8F.0000546E",
            "by wrl-59.cs.helsinki.fi (Postfix, from userid 50795)\n\tid 197D1A00A4; Sun, 21 Sep 2008 00:47:59 +0300 (EEST)"
        ],
        "From": "\"=?ISO-8859-1?Q?Ilpo_J=E4rvinen?=\" <ilpo.jarvinen@helsinki.fi>",
        "To": "David Miller <davem@davemloft.net>",
        "Cc": "netdev@vger.kernel.org,\n\t\"=?utf-8?q?Ilpo=20J=E4rvinen?=\" <ilpo.jarvinen@helsinki.fi>",
        "Subject": "[PATCHv2 net-next 14/15] tcp: don't clear lost_skb_hint when not\n\tnecessary",
        "Date": "Sun, 21 Sep 2008 00:47:57 +0300",
        "Message-Id": "<1221947278-16715-15-git-send-email-ilpo.jarvinen@helsinki.fi>",
        "X-Mailer": "git-send-email 1.5.4.2.156.ge3c5",
        "In-Reply-To": "<1221947278-16715-14-git-send-email-ilpo.jarvinen@helsinki.fi>",
        "References": "<1221947278-16715-1-git-send-email-ilpo.jarvinen@helsinki.fi>\n\t<1221947278-16715-2-git-send-email-ilpo.jarvinen@helsinki.fi>\n\t<1221947278-16715-3-git-send-email-ilpo.jarvinen@helsinki.fi>\n\t<1221947278-16715-4-git-send-email-ilpo.jarvinen@helsinki.fi>\n\t<1221947278-16715-5-git-send-email-ilpo.jarvinen@helsinki.fi>\n\t<1221947278-16715-6-git-send-email-ilpo.jarvinen@helsinki.fi>\n\t<1221947278-16715-7-git-send-email-ilpo.jarvinen@helsinki.fi>\n\t<1221947278-16715-8-git-send-email-ilpo.jarvinen@helsinki.fi>\n\t<1221947278-16715-9-git-send-email-ilpo.jarvinen@helsinki.fi>\n\t<1221947278-16715-10-git-send-email-ilpo.jarvinen@helsinki.fi>\n\t<1221947278-16715-11-git-send-email-ilpo.jarvinen@helsinki.fi>\n\t<1221947278-16715-12-git-send-email-ilpo.jarvinen@helsinki.fi>\n\t<1221947278-16715-13-git-send-email-ilpo.jarvinen@helsinki.fi>\n\t<1221947278-16715-14-git-send-email-ilpo.jarvinen@helsinki.fi>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=ISO-8859-1",
        "Content-Transfer-Encoding": "8bit",
        "Sender": "netdev-owner@vger.kernel.org",
        "Precedence": "bulk",
        "List-ID": "<netdev.vger.kernel.org>",
        "X-Mailing-List": "netdev@vger.kernel.org"
    },
    "content": "Most importantly avoid doing it with cumulative ACK. However,\nsince we have lost_cnt_hint in the picture as well needing\nadjustments, it's not as trivial as dealing with\nretransmit_skb_hint (and cannot be done in the all place we\ncould trivially leave retransmit_skb_hint untouched).\n\nWith the previous patch, this should mostly remove O(n^2)\nbehavior while cumulative ACKs start flowing once rexmit\nafter a lossy round-trip made it through.\n\nSigned-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>\n---\n net/ipv4/tcp_input.c |   14 +++++++++++++-\n 1 files changed, 13 insertions(+), 1 deletions(-)",
    "diff": "diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c\nindex 44a4fff..85627f8 100644\n--- a/net/ipv4/tcp_input.c\n+++ b/net/ipv4/tcp_input.c\n@@ -2844,6 +2844,7 @@ static int tcp_clean_rtx_queue(struct sock *sk, int prior_fackets)\n \tint flag = 0;\n \tu32 pkts_acked = 0;\n \tu32 reord = tp->packets_out;\n+\tu32 prior_sacked = tp->sacked_out;\n \ts32 seq_rtt = -1;\n \ts32 ca_seq_rtt = -1;\n \tktime_t last_ackt = net_invalid_timestamp();\n@@ -2925,9 +2926,11 @@ static int tcp_clean_rtx_queue(struct sock *sk, int prior_fackets)\n \n \t\ttcp_unlink_write_queue(skb, sk);\n \t\tsk_wmem_free_skb(sk, skb);\n-\t\ttcp_clear_retrans_hints_partial(tp);\n+\t\ttp->scoreboard_skb_hint = NULL;\n \t\tif (skb == tp->retransmit_skb_hint)\n \t\t\ttp->retransmit_skb_hint = NULL;\n+\t\tif (skb == tp->lost_skb_hint)\n+\t\t\ttp->lost_skb_hint = NULL;\n \t}\n \n \tif (skb && (TCP_SKB_CB(skb)->sacked & TCPCB_SACKED_ACKED))\n@@ -2946,6 +2949,15 @@ static int tcp_clean_rtx_queue(struct sock *sk, int prior_fackets)\n \t\t\t/* Non-retransmitted hole got filled? That's reordering */\n \t\t\tif (reord < prior_fackets)\n \t\t\t\ttcp_update_reordering(sk, tp->fackets_out - reord, 0);\n+\n+\t\t\t/* No need to care for underflows here because\n+\t\t\t * the lost_skb_hint gets NULLed if we're past it\n+\t\t\t * (or something non-trivial happened)\n+\t\t\t */\n+\t\t\tif (tcp_is_fack(tp))\n+\t\t\t\ttp->lost_cnt_hint -= pkts_acked;\n+\t\t\telse\n+\t\t\t\ttp->lost_cnt_hint -= prior_sacked - tp->sacked_out;\n \t\t}\n \n \t\ttp->fackets_out -= min(pkts_acked, tp->fackets_out);\n",
    "prefixes": [
        "PATCHv2",
        "net-next",
        "14/15"
    ]
}