get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2223543,
    "url": "http://patchwork.ozlabs.org/api/1.1/patches/2223543/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/netfilter-devel/patch/tencent_7F7B107ECA750C095D05C19C3B723AFFA60A@qq.com/",
    "project": {
        "id": 26,
        "url": "http://patchwork.ozlabs.org/api/1.1/projects/26/?format=api",
        "name": "Netfilter Development",
        "link_name": "netfilter-devel",
        "list_id": "netfilter-devel.vger.kernel.org",
        "list_email": "netfilter-devel@vger.kernel.org",
        "web_url": null,
        "scm_url": null,
        "webscm_url": null
    },
    "msgid": "<tencent_7F7B107ECA750C095D05C19C3B723AFFA60A@qq.com>",
    "date": "2026-04-15T14:40:29",
    "name": "[net,v4] ipvs: fix MTU check for GSO packets in tunnel mode",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "228098543e69abdb83acda907d96bb4772fbcfb5",
    "submitter": {
        "id": 93032,
        "url": "http://patchwork.ozlabs.org/api/1.1/people/93032/?format=api",
        "name": "Yingnan Zhang",
        "email": "342144303@qq.com"
    },
    "delegate": {
        "id": 11902,
        "url": "http://patchwork.ozlabs.org/api/1.1/users/11902/?format=api",
        "username": "strlen",
        "first_name": "Florian",
        "last_name": "Westphal",
        "email": "fw@strlen.de"
    },
    "mbox": "http://patchwork.ozlabs.org/project/netfilter-devel/patch/tencent_7F7B107ECA750C095D05C19C3B723AFFA60A@qq.com/mbox/",
    "series": [
        {
            "id": 499998,
            "url": "http://patchwork.ozlabs.org/api/1.1/series/499998/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/netfilter-devel/list/?series=499998",
            "date": "2026-04-15T14:40:29",
            "name": "[net,v4] ipvs: fix MTU check for GSO packets in tunnel mode",
            "version": 4,
            "mbox": "http://patchwork.ozlabs.org/series/499998/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2223543/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2223543/checks/",
    "tags": {},
    "headers": {
        "Return-Path": "\n <netfilter-devel+bounces-11924-incoming=patchwork.ozlabs.org@vger.kernel.org>",
        "X-Original-To": [
            "incoming@patchwork.ozlabs.org",
            "netfilter-devel@vger.kernel.org"
        ],
        "Delivered-To": "patchwork-incoming@legolas.ozlabs.org",
        "Authentication-Results": [
            "legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=qq.com header.i=@qq.com header.a=rsa-sha256\n header.s=s201512 header.b=M27oVr6C;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=104.64.211.4; helo=sin.lore.kernel.org;\n envelope-from=netfilter-devel+bounces-11924-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)",
            "smtp.subspace.kernel.org;\n\tdkim=pass (1024-bit key) header.d=qq.com header.i=@qq.com header.b=\"M27oVr6C\"",
            "smtp.subspace.kernel.org;\n arc=none smtp.client-ip=162.62.57.252",
            "smtp.subspace.kernel.org;\n dmarc=pass (p=quarantine dis=none) header.from=qq.com",
            "smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=qq.com"
        ],
        "Received": [
            "from sin.lore.kernel.org (sin.lore.kernel.org [104.64.211.4])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fwkP03Hyvz1yHc\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 16 Apr 2026 00:41:40 +1000 (AEST)",
            "from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sin.lore.kernel.org (Postfix) with ESMTP id 4A13C3008D29\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 15 Apr 2026 14:41:28 +0000 (UTC)",
            "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id B1F733D5230;\n\tWed, 15 Apr 2026 14:41:23 +0000 (UTC)",
            "from out162-62-57-252.mail.qq.com (out162-62-57-252.mail.qq.com\n [162.62.57.252])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id EE956345CC0;\n\tWed, 15 Apr 2026 14:41:19 +0000 (UTC)",
            "from Lego ([2409:8a1e:9553:b2d0:d44a:f28c:2e52:3bf6])\n\tby newxmesmtplogicsvrszb51-0.qq.com (NewEsmtp) with SMTP\n\tid A44AA2FE; Wed, 15 Apr 2026 22:41:04 +0800"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1776264083; cv=none;\n b=g861w4p6f6Gln8L3AMu4GZXRQ8mvymRABek3XRYxWVMaiSA/4Mpu18vCTY+vVVmraEOHPf/vAI9Z4rjkmuSCH3YseTFJqHSpFh9DFQTK4kHIyjPtAU2GLblC5hAbs/p+kHBNBdb3tivmYQVHC2op5NMBXiHo3cdhmcjubS1SK14=",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1776264083; c=relaxed/simple;\n\tbh=NLdFmBcpcThoyIQcsmRJNRdMjiBLR4JkAP3J1LwUNLI=;\n\th=Message-ID:From:To:Cc:Subject:Date:MIME-Version;\n b=aUrqZFqb6ZPsHe0onVX+fpOrkO/h/ppBTkIL1lRXUIMIpLsM09p76cpRqd6VRSy95rWAWe7X0P1SvMQMb1quYTnUfFFIUAOM1Vl2/6aej+EmeOAb4fcSsOLHqSu7yGdL5wJyYAF9kijLhu5MFQWKLmRIV3HfbXr+QYW8p5WJMuc=",
        "ARC-Authentication-Results": "i=1; smtp.subspace.kernel.org;\n dmarc=pass (p=quarantine dis=none) header.from=qq.com;\n spf=pass smtp.mailfrom=qq.com;\n dkim=pass (1024-bit key) header.d=qq.com header.i=@qq.com header.b=M27oVr6C;\n arc=none smtp.client-ip=162.62.57.252",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=qq.com; s=s201512;\n\tt=1776264070; bh=ccKpOWW8f06p267HUyKJnI4zbqOhJE6jpn/wLRRikCE=;\n\th=From:To:Cc:Subject:Date;\n\tb=M27oVr6CBoNlysvkipCuzUimTEwpVug8SWmbz72HGcC1onmG7u8etub4oCDXgrOb0\n\t cPXuqARnNw9xjVwetIr7NLydT4mAqVfDcvLqilNqY8zojR9q94YPH2+3ClYnKUipQD\n\t eH+G0AvBcKypMxBLDI6Fp2kK5KjER3Z0kxpggKtE=",
        "X-QQ-mid": "xmsmtpt1776264064ts5m2jgd8",
        "Message-ID": "<tencent_7F7B107ECA750C095D05C19C3B723AFFA60A@qq.com>",
        "X-QQ-XMAILINFO": "NAuAIaytDrXpIaFOVq8MbWxJeDYlYBG7iDbjLUP6zeQpSH4AXQJW/jyXiHC//d\n\t 2Ru48s7GIF7Sr3foIe7x32/NA2gp+B6zHnNHWOFyr9bXdz3+7QbqEqKa/xzUiLynD6Sey+fZxUFD\n\t D7beR6o/Kvxsowq0ZjXhjULVujUzPOb4AhC7jWFEvfswRNCEdbheepAD2/p63LDt2yWn0lRhGbMD\n\t cPHNEYMHgU1jBomBdOqpnFurmD/dsCT/nftrXNUymSjN8gO5GOZD4T6WS5NNCn6117WCQnAHQfCx\n\t x2L7Iy4ieinaRE4S8iH7BYv8HTdTCiR2H+kyp72jzmh1a+ZDd3oi+bfrBwvubfuJgs4tvDDCPWoE\n\t oly7SoJ/Z4CvZJV5YyBgvCFgzTGbQtw5OVHZVxsMpbfZc2LYmcuAIgcD5fH8n2PpKqKyuTGIrb5X\n\t fNxDunRcicX6CigjksoeXG1/F1jyV+1Z+78QGSVYaB9v7cmN2l/hy+tMZ5GsHaSUzW4Zax7zwnuw\n\t y4lNHJ/nuYox9r0JUeQDUusu31YJ3OzoAOwfYPaVLlMds2puvMreF+b/bpjDaYFSD01UzWVRZIPe\n\t DShIo3FjDlmdUmkaCrLiJ2YkDK4CHhkQ9v0QemF+TLh+oQHd5eLzvcNRwJ3FKr29ReCXGPDZufn5\n\t MNq1tFCJiKR6Epi1ww04Mi3ZnbmwMl91UIff2ABLmGqLWUxSj6HUHZBB+43RwVP1/z1DQBkEHXYx\n\t qVQvsBnSpqGQnWIg4keBn7Pao7yw2VDxX0w8ARinj6AUhRPxba9v8bKrYRkunGoRCR77CHRHjygU\n\t cNtYCLZGu7kw9Lq++QjxyzVvTEWAqdm3Jv0M0taw/0s4TMiRL/CUAweeJ2qD8wetY4uJATKsc9Va\n\t LjZ3LQVtyKax5S375gqi//sjcoxmF4CSYOqhHAUj7H9+PU0z68OSsfgZQCCW6DXa1MfJicgvTyoA\n\t C+v82iTBHHmq4yGMGGdSU4tKXtFrHj8VufsllNGc5TmC3I87xzEO0pvh48+odjEYMJiuyMwCAixG\n\t ndy4C3uiuNX/xMurzceEmDXp9hEnPYVp5t3c2pb7nM5Boz8UVm",
        "X-QQ-XMRINFO": "MPJ6Tf5t3I/ylTmHUqvI8+Wpn+Gzalws3A==",
        "From": "Yingnan Zhang <342144303@qq.com>",
        "To": "ja@ssi.bg,\n\tpablo@netfilter.org",
        "Cc": "coreteam@netfilter.org,\n\tdavem@davemloft.net,\n\tedumazet@google.com,\n\tfw@strlen.de,\n\thorms@verge.net.au,\n\tkuba@kernel.org,\n\tlinux-kernel@vger.kernel.org,\n\tlvs-devel@vger.kernel.org,\n\tnetdev@vger.kernel.org,\n\tnetfilter-devel@vger.kernel.org,\n\tpabeni@redhat.com,\n\tphil@nwl.cc,\n\tYingnan Zhang <342144303@qq.com>",
        "Subject": "[PATCH net v4] ipvs: fix MTU check for GSO packets in tunnel mode",
        "Date": "Wed, 15 Apr 2026 22:40:29 +0800",
        "X-OQ-MSGID": "<20260415144030.531-1-342144303@qq.com>",
        "X-Mailer": "git-send-email 2.51.0.windows.1",
        "Precedence": "bulk",
        "X-Mailing-List": "netfilter-devel@vger.kernel.org",
        "List-Id": "<netfilter-devel.vger.kernel.org>",
        "List-Subscribe": "<mailto:netfilter-devel+subscribe@vger.kernel.org>",
        "List-Unsubscribe": "<mailto:netfilter-devel+unsubscribe@vger.kernel.org>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit"
    },
    "content": "Currently, IPVS skips MTU checks for GSO packets by excluding them with\nthe !skb_is_gso(skb) condition. This creates problems when IPVS tunnel\nmode encapsulates GSO packets with IPIP headers.\n\nThe issue manifests in two ways:\n\n1. MTU violation after encapsulation:\n   When a GSO packet passes through IPVS tunnel mode, the original MTU\n   check is bypassed. After adding the IPIP tunnel header, the packet\n   size may exceed the outgoing interface MTU, leading to unexpected\n   fragmentation at the IP layer.\n\n2. Fragmentation with problematic IP IDs:\n   When net.ipv4.vs.pmtu_disc=1 and a GSO packet with multiple segments\n   is fragmented after encapsulation, each segment gets a sequentially\n   incremented IP ID (0, 1, 2, ...). This happens because:\n\n   a) The GSO packet bypasses MTU check and gets encapsulated\n   b) At __ip_finish_output, the oversized GSO packet is split into\n      separate SKBs (one per segment), with IP IDs incrementing\n   c) Each SKB is then fragmented again based on the actual MTU\n\n   This sequential IP ID allocation differs from the expected behavior\n   and can cause issues with fragment reassembly and packet tracking.\n\nFix this by properly validating GSO packets using\nskb_gso_validate_network_len(). This function correctly validates\nwhether the GSO segments will fit within the MTU after segmentation. If\nvalidation fails, send an ICMP Fragmentation Needed message to enable\nproper PMTU discovery.\n\nFixes: 4cdd34084d53 (\"netfilter: nf_conntrack_ipv6: improve fragmentation handling\")\nSigned-off-by: Yingnan Zhang <342144303@qq.com>\n\n---\nv4:\n- Introduce a new helper function ip_vs_exceeds_mtu() to improve readability (reviewer feedback)\n\nv3: https://lore.kernel.org/netdev/tencent_73010FBD5FA1C05C3BC23A07A50B11CEC90A@qq.com/\nv2: https://lore.kernel.org/netdev/tencent_CA2C1C219C99D315086BE55E8654AF7E6009@qq.com/\nv1: https://lore.kernel.org/netdev/tencent_4A3E1C339C75D359093BE4F08648AFAA6009@qq.com/\n---\n---\n net/netfilter/ipvs/ip_vs_xmit.c | 16 ++++++++++++++--\n 1 file changed, 14 insertions(+), 2 deletions(-)",
    "diff": "diff --git a/net/netfilter/ipvs/ip_vs_xmit.c b/net/netfilter/ipvs/ip_vs_xmit.c\nindex 0fb5162992e5..64dfdf8b00c4 100644\n--- a/net/netfilter/ipvs/ip_vs_xmit.c\n+++ b/net/netfilter/ipvs/ip_vs_xmit.c\n@@ -102,6 +102,18 @@ __ip_vs_dst_check(struct ip_vs_dest *dest)\n \treturn dest_dst;\n }\n \n+/* Based on ip_exceeds_mtu(). */\n+static bool ip_vs_exceeds_mtu(const struct sk_buff *skb, unsigned int mtu)\n+{\n+\tif (skb->len <= mtu)\n+\t\treturn false;\n+\n+\tif (skb_is_gso(skb) && skb_gso_validate_network_len(skb, mtu))\n+\t\treturn false;\n+\n+\treturn true;\n+}\n+\n static inline bool\n __mtu_check_toobig_v6(const struct sk_buff *skb, u32 mtu)\n {\n@@ -112,7 +124,7 @@ __mtu_check_toobig_v6(const struct sk_buff *skb, u32 mtu)\n \t\tif (IP6CB(skb)->frag_max_size > mtu)\n \t\t\treturn true; /* largest fragment violate MTU */\n \t}\n-\telse if (skb->len > mtu && !skb_is_gso(skb)) {\n+\telse if (ip_vs_exceeds_mtu(skb, mtu)) {\n \t\treturn true; /* Packet size violate MTU size */\n \t}\n \treturn false;\n@@ -232,7 +244,7 @@ static inline bool ensure_mtu_is_adequate(struct netns_ipvs *ipvs, int skb_af,\n \t\t\treturn true;\n \n \t\tif (unlikely(ip_hdr(skb)->frag_off & htons(IP_DF) &&\n-\t\t\t     skb->len > mtu && !skb_is_gso(skb) &&\n+\t\t\t     ip_vs_exceeds_mtu(skb, mtu) &&\n \t\t\t     !ip_vs_iph_icmp(ipvsh))) {\n \t\t\ticmp_send(skb, ICMP_DEST_UNREACH, ICMP_FRAG_NEEDED,\n \t\t\t\t  htonl(mtu));\n",
    "prefixes": [
        "net",
        "v4"
    ]
}