get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 733,
    "url": "http://patchwork.ozlabs.org/api/patches/733/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/netdev/patch/1221933153-11874-11-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": "<1221933153-11874-11-git-send-email-ilpo.jarvinen@helsinki.fi>",
    "list_archive_url": null,
    "date": "2008-09-20T17:52:28",
    "name": "[net-next,10/15] tcp: remove tp->lost_out guard to make joining diff nicer",
    "commit_ref": null,
    "pull_url": null,
    "state": "rejected",
    "archived": true,
    "hash": "69431defab55baa098d3d573bae87133f5e4fac5",
    "submitter": {
        "id": 255,
        "url": "http://patchwork.ozlabs.org/api/people/255/?format=api",
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/netdev/patch/1221933153-11874-11-git-send-email-ilpo.jarvinen@helsinki.fi/mbox/",
    "series": [],
    "comments": "http://patchwork.ozlabs.org/api/patches/733/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/733/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 9417DDDEE7\n\tfor <patchwork-incoming@ozlabs.org>;\n\tSun, 21 Sep 2008 03:53:14 +1000 (EST)",
            "(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1751304AbYITRxB (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tSat, 20 Sep 2008 13:53:01 -0400",
            "(majordomo@vger.kernel.org) by vger.kernel.org id S1751296AbYITRxA\n\t(ORCPT <rfc822; netdev-outgoing>); Sat, 20 Sep 2008 13:53:00 -0400",
            "from courier.cs.helsinki.fi ([128.214.9.1]:37645 \"EHLO\n\tmail.cs.helsinki.fi\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S1751024AbYITRwm (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Sat, 20 Sep 2008 13:52:42 -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; Sat, 20 Sep 2008 20:52:34 +0300\n\tid 0005BEDE.48D53862.00002D7D",
            "by wrl-59.cs.helsinki.fi (Postfix, from userid 50795)\n\tid 8658BA00AA; Sat, 20 Sep 2008 20:52:34 +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": "[PATCH net-next 10/15] tcp: remove tp->lost_out guard to make\n\tjoining diff nicer",
        "Date": "Sat, 20 Sep 2008 20:52:28 +0300",
        "Message-Id": "<1221933153-11874-11-git-send-email-ilpo.jarvinen@helsinki.fi>",
        "X-Mailer": "git-send-email 1.5.4.2.156.ge3c5",
        "In-Reply-To": "<1221933153-11874-10-git-send-email-ilpo.jarvinen@helsinki.fi>",
        "References": "<1221933153-11874-1-git-send-email-ilpo.jarvinen@helsinki.fi>\n\t<1221933153-11874-2-git-send-email-ilpo.jarvinen@helsinki.fi>\n\t<1221933153-11874-3-git-send-email-ilpo.jarvinen@helsinki.fi>\n\t<1221933153-11874-4-git-send-email-ilpo.jarvinen@helsinki.fi>\n\t<1221933153-11874-5-git-send-email-ilpo.jarvinen@helsinki.fi>\n\t<1221933153-11874-6-git-send-email-ilpo.jarvinen@helsinki.fi>\n\t<1221933153-11874-7-git-send-email-ilpo.jarvinen@helsinki.fi>\n\t<1221933153-11874-8-git-send-email-ilpo.jarvinen@helsinki.fi>\n\t<1221933153-11874-9-git-send-email-ilpo.jarvinen@helsinki.fi>\n\t<1221933153-11874-10-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": "The validity of the retransmit_high must then be ensured\nif no L'ed skb exits!\n\nThis makes only minor change to behavior, we now have to\niterate the head to find out that the loop terminates.\nAnd it's anyway quite unlikely scenario to have\n!tp->lost_out in here...\n\nSigned-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>\n---\n net/ipv4/tcp_output.c |   75 +++++++++++++++++++++++++------------------------\n 1 files changed, 38 insertions(+), 37 deletions(-)",
    "diff": "diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c\nindex d5f53f8..fc7bfd6 100644\n--- a/net/ipv4/tcp_output.c\n+++ b/net/ipv4/tcp_output.c\n@@ -2036,53 +2036,54 @@ void tcp_xmit_retransmit_queue(struct sock *sk)\n \tstruct sk_buff *skb;\n \tint mib_idx;\n \n+\tif (!tp->lost_out)\n+\t\ttp->retransmit_high = tp->snd_una;\n+\n \tif (tp->retransmit_skb_hint)\n \t\tskb = tp->retransmit_skb_hint;\n \telse\n \t\tskb = tcp_write_queue_head(sk);\n \n \t/* First pass: retransmit lost packets. */\n-\tif (tp->lost_out) {\n-\t\ttcp_for_write_queue_from(skb, sk) {\n-\t\t\t__u8 sacked = TCP_SKB_CB(skb)->sacked;\n+\ttcp_for_write_queue_from(skb, sk) {\n+\t\t__u8 sacked = TCP_SKB_CB(skb)->sacked;\n \n-\t\t\tif (skb == tcp_send_head(sk))\n-\t\t\t\tbreak;\n-\t\t\t/* we could do better than to assign each time */\n-\t\t\ttp->retransmit_skb_hint = skb;\n-\n-\t\t\t/* Assume this retransmit will generate\n-\t\t\t * only one packet for congestion window\n-\t\t\t * calculation purposes.  This works because\n-\t\t\t * tcp_retransmit_skb() will chop up the\n-\t\t\t * packet to be MSS sized and all the\n-\t\t\t * packet counting works out.\n-\t\t\t */\n-\t\t\tif (tcp_packets_in_flight(tp) >= tp->snd_cwnd)\n-\t\t\t\treturn;\n-\t\t\tif (!before(TCP_SKB_CB(skb)->seq, tp->retransmit_high))\n-\t\t\t\tbreak;\n-\t\t\tif (sacked & (TCPCB_SACKED_ACKED|TCPCB_SACKED_RETRANS))\n-\t\t\t\tcontinue;\n+\t\tif (skb == tcp_send_head(sk))\n+\t\t\tbreak;\n+\t\t/* we could do better than to assign each time */\n+\t\ttp->retransmit_skb_hint = skb;\n+\n+\t\t/* Assume this retransmit will generate\n+\t\t * only one packet for congestion window\n+\t\t * calculation purposes.  This works because\n+\t\t * tcp_retransmit_skb() will chop up the\n+\t\t * packet to be MSS sized and all the\n+\t\t * packet counting works out.\n+\t\t */\n+\t\tif (tcp_packets_in_flight(tp) >= tp->snd_cwnd)\n+\t\t\treturn;\n+\t\tif (!before(TCP_SKB_CB(skb)->seq, tp->retransmit_high))\n+\t\t\tbreak;\n+\t\tif (sacked & (TCPCB_SACKED_ACKED|TCPCB_SACKED_RETRANS))\n+\t\t\tcontinue;\n \n-\t\t\tif (!(sacked & TCPCB_LOST))\n-\t\t\t\tcontinue;\n+\t\tif (!(sacked & TCPCB_LOST))\n+\t\t\tcontinue;\n \n-\t\t\tif (tcp_retransmit_skb(sk, skb)) {\n-\t\t\t\ttp->retransmit_skb_hint = NULL;\n-\t\t\t\treturn;\n-\t\t\t}\n-\t\t\tif (icsk->icsk_ca_state != TCP_CA_Loss)\n-\t\t\t\tmib_idx = LINUX_MIB_TCPFASTRETRANS;\n-\t\t\telse\n-\t\t\t\tmib_idx = LINUX_MIB_TCPSLOWSTARTRETRANS;\n-\t\t\tNET_INC_STATS_BH(sock_net(sk), mib_idx);\n-\n-\t\t\tif (skb == tcp_write_queue_head(sk))\n-\t\t\t\tinet_csk_reset_xmit_timer(sk, ICSK_TIME_RETRANS,\n-\t\t\t\t\t\t\t  inet_csk(sk)->icsk_rto,\n-\t\t\t\t\t\t\t  TCP_RTO_MAX);\n+\t\tif (tcp_retransmit_skb(sk, skb)) {\n+\t\t\ttp->retransmit_skb_hint = NULL;\n+\t\t\treturn;\n \t\t}\n+\t\tif (icsk->icsk_ca_state != TCP_CA_Loss)\n+\t\t\tmib_idx = LINUX_MIB_TCPFASTRETRANS;\n+\t\telse\n+\t\t\tmib_idx = LINUX_MIB_TCPSLOWSTARTRETRANS;\n+\t\tNET_INC_STATS_BH(sock_net(sk), mib_idx);\n+\n+\t\tif (skb == tcp_write_queue_head(sk))\n+\t\t\tinet_csk_reset_xmit_timer(sk, ICSK_TIME_RETRANS,\n+\t\t\t\t\t\t  inet_csk(sk)->icsk_rto,\n+\t\t\t\t\t\t  TCP_RTO_MAX);\n \t}\n \n \t/* OK, demanded retransmission is finished. */\n",
    "prefixes": [
        "net-next",
        "10/15"
    ]
}