get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2218092,
    "url": "http://patchwork.ozlabs.org/api/patches/2218092/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/linuxppc-dev/patch/20260331113025.1566878-10-wei.fang@nxp.com/",
    "project": {
        "id": 2,
        "url": "http://patchwork.ozlabs.org/api/projects/2/?format=api",
        "name": "Linux PPC development",
        "link_name": "linuxppc-dev",
        "list_id": "linuxppc-dev.lists.ozlabs.org",
        "list_email": "linuxppc-dev@lists.ozlabs.org",
        "web_url": "https://github.com/linuxppc/wiki/wiki",
        "scm_url": "https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git",
        "webscm_url": "https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git/",
        "list_archive_url": "https://lore.kernel.org/linuxppc-dev/",
        "list_archive_url_format": "https://lore.kernel.org/linuxppc-dev/{}/",
        "commit_url_format": "https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git/commit/?id={}"
    },
    "msgid": "<20260331113025.1566878-10-wei.fang@nxp.com>",
    "list_archive_url": "https://lore.kernel.org/linuxppc-dev/20260331113025.1566878-10-wei.fang@nxp.com/",
    "date": "2026-03-31T11:30:20",
    "name": "[v4,net-next,09/14] net: dsa: add NETC switch tag support",
    "commit_ref": null,
    "pull_url": null,
    "state": "handled-elsewhere",
    "archived": false,
    "hash": "7ff4b6e563979641e4044f3ebee4ab08f849404c",
    "submitter": {
        "id": 84380,
        "url": "http://patchwork.ozlabs.org/api/people/84380/?format=api",
        "name": "Wei Fang",
        "email": "wei.fang@nxp.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/linuxppc-dev/patch/20260331113025.1566878-10-wei.fang@nxp.com/mbox/",
    "series": [
        {
            "id": 498181,
            "url": "http://patchwork.ozlabs.org/api/series/498181/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/linuxppc-dev/list/?series=498181",
            "date": "2026-03-31T11:30:11",
            "name": "Add preliminary NETC switch support for i.MX94",
            "version": 4,
            "mbox": "http://patchwork.ozlabs.org/series/498181/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2218092/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2218092/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "\n <linuxppc-dev+bounces-19074-incoming=patchwork.ozlabs.org@lists.ozlabs.org>",
        "X-Original-To": [
            "incoming@patchwork.ozlabs.org",
            "linuxppc-dev@lists.ozlabs.org"
        ],
        "Delivered-To": "patchwork-incoming@legolas.ozlabs.org",
        "Authentication-Results": [
            "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=nxp.com header.i=@nxp.com header.a=rsa-sha256\n header.s=selector1 header.b=KI53ofRu;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org\n (client-ip=112.213.38.117; helo=lists.ozlabs.org;\n envelope-from=linuxppc-dev+bounces-19074-incoming=patchwork.ozlabs.org@lists.ozlabs.org;\n receiver=patchwork.ozlabs.org)",
            "lists.ozlabs.org;\n arc=pass smtp.remote-ip=\"2a01:111:f403:c20a::7\" arc.chain=microsoft.com",
            "lists.ozlabs.org;\n dmarc=pass (p=none dis=none) header.from=nxp.com",
            "lists.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=nxp.com header.i=@nxp.com header.a=rsa-sha256\n header.s=selector1 header.b=KI53ofRu;\n\tdkim-atps=neutral",
            "lists.ozlabs.org;\n spf=permerror (SPF Permanent Error: Void lookup limit of 2 exceeded)\n smtp.mailfrom=nxp.com (client-ip=2a01:111:f403:c20a::7;\n helo=pa4pr04cu001.outbound.protection.outlook.com;\n envelope-from=wei.fang@nxp.com; receiver=lists.ozlabs.org)",
            "dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=nxp.com;"
        ],
        "Received": [
            "from lists.ozlabs.org (lists.ozlabs.org [112.213.38.117])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4flQrq3HNZz1y1q\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 31 Mar 2026 22:30:03 +1100 (AEDT)",
            "from boromir.ozlabs.org (localhost [127.0.0.1])\n\tby lists.ozlabs.org (Postfix) with ESMTP id 4flQrP0knbz2yx7;\n\tTue, 31 Mar 2026 22:29:41 +1100 (AEDT)",
            "from PA4PR04CU001.outbound.protection.outlook.com\n (mail-francecentralazlp170130007.outbound.protection.outlook.com\n [IPv6:2a01:111:f403:c20a::7])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange secp256r1 server-signature RSA-PSS (2048 bits) server-digest\n SHA256)\n\t(No client certificate requested)\n\tby lists.ozlabs.org (Postfix) with ESMTPS id 4flQrN0gxNz2yft\n\tfor <linuxppc-dev@lists.ozlabs.org>; Tue, 31 Mar 2026 22:29:40 +1100 (AEDT)",
            "from AM8PR04MB7284.eurprd04.prod.outlook.com (2603:10a6:20b:1dc::8)\n by PA1PR04MB11406.eurprd04.prod.outlook.com (2603:10a6:102:4f1::22) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.15; Tue, 31 Mar\n 2026 11:29:35 +0000",
            "from AM8PR04MB7284.eurprd04.prod.outlook.com\n ([fe80::9cd6:51bd:82b:98dc]) by AM8PR04MB7284.eurprd04.prod.outlook.com\n ([fe80::9cd6:51bd:82b:98dc%5]) with mapi id 15.20.9745.027; Tue, 31 Mar 2026\n 11:29:35 +0000"
        ],
        "ARC-Seal": [
            "i=2; a=rsa-sha256; d=lists.ozlabs.org; s=201707; t=1774956580;\n\tcv=pass;\n b=gJyV8yAmNNQ/Zdlfu3IOhPaGNab/a6ZTtHeZ8AioAI+Efrx+8ZAMI5KqNYpzklK7UVHFOse9NWqYeTuJ0lNQ5bqr0HeN0+J4MHZ3Gi1Uh1WQSw0yTxqkYlRPal4+J2MtU7j7DTajUhwLwiWcLXX+jmqoJo/+/fq9gLUkPeukOpaAU3X8AKa6wsj6T1trlYkhXBHAKUFBZqcG3WaVoYoU3A+2pYNrQ/r1v9cpWBQVoNvVtbhhry/vRa2ezimpe5b+dn9H3XqcbR/7zkIcb/ERsjOqoF2Iu/odnS/0uEDxw4znsW1jYOcWSkNoT2EhNhVWQE61xbzf1pHciGioUXPl2Q==",
            "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=Sh/f/l5TExl0S6wdXTER+p3ESVBurAnDN/4xvEGIgscSpD8krbC9BEoy8hL7iO6M8dBHP8LW2wCzGpNvFlG0Yj4bFBPqLDvzjOtABtWNoOOEcfut1HzMV9sXYsI1FMgWDn88fJFQ0MfFkwuyqs4LQI7NGf4H0/ZUTgzox2YstnxjHKshBti+t3q82h8sVfZ915n51P/kQwwHyaojwCs1trPxa5n4vLTTGtXjobZIKHkyvk3UDrkPPLPr0+h+3Xafs8qZ+IJGCvqUE8M3vffcodFaa3cgkMiuqAGZvHspAYNtQ12IEvcyEjd9gNMib7uPSVrYSFoTANBVpty64WM3SQ=="
        ],
        "ARC-Message-Signature": [
            "i=2; a=rsa-sha256; d=lists.ozlabs.org; s=201707;\n\tt=1774956580; c=relaxed/relaxed;\n\tbh=enC+UQAaNN7bbyUaQSWZ4TmvKi8/JoljnoJJAwDPrrw=;\n\th=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:\n\t Content-Type:MIME-Version;\n b=PUYWvcVzpQWeM7FFuAMLjQOtigNhCUK9fEUPJnSDU2QOPoYL6TTz6hH1kMODBy8sCx6jCFQOvIXgfRjV8AsVwbSJ+zd99Huw7HAZ1lOaPd4Jm4RohCFmPLOwpgpCli8Dpl6P1xHpPE602bAVH2Fh23p2RzNZTKqtYZdL1EsBWTAWPdhXA+z8n7BKtnX4Stg7yLXIiqZw+eh85Q6gZRUj78ukP5jJE3qV4jY5i7nnGfUqQAZbm0LhKpKMyRGb9bJhhofkeAnCkVwSkTR2DiOKxA2Q1hUwSTpncTfTwcS1nbhDSsVS5iBKitUFmHkLXRi+4XanavWDsiiTjdGXSM3oCQ==",
            "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=enC+UQAaNN7bbyUaQSWZ4TmvKi8/JoljnoJJAwDPrrw=;\n b=OXFB8wdOEWjD7TaJR08k2trF6lyGwzCL0vpsotDB3uLF4xyCkJ53c7vcgYPZBAI3al95arGMmax63FBbnMPuBdzGLq8BiUuST+TBHZYElrmCySVUKqhl5YNBBvNgLgXZ0c+Ea0VMlpzxfHm+XLiDo6piSzxKDYt5nCYIlQ6XxTca12vm5eVXLCW9uHsv0i9tCUJG2zISTeznjHlCZmsbD9BzFC0+QZLeeBNDYrvoRLdhJGVcGS51tegFq/zZaUPHFkRTGXQnFYGwqWxFLcJiiehHoTqERnsWUgPp+MJgLH0b0S+uQbrwNq6XrTycuKSWzywLTNwGYGco/8VILYHIkQ=="
        ],
        "ARC-Authentication-Results": [
            "i=2; lists.ozlabs.org;\n dmarc=pass (p=none dis=none) header.from=nxp.com; dkim=pass (2048-bit key;\n unprotected) header.d=nxp.com header.i=@nxp.com header.a=rsa-sha256\n header.s=selector1 header.b=KI53ofRu; dkim-atps=neutral;\n spf=permerror (client-ip=2a01:111:f403:c20a::7;\n helo=pa4pr04cu001.outbound.protection.outlook.com;\n envelope-from=wei.fang@nxp.com;\n receiver=lists.ozlabs.org) smtp.mailfrom=nxp.com",
            "i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass\n header.d=nxp.com; arc=none"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=enC+UQAaNN7bbyUaQSWZ4TmvKi8/JoljnoJJAwDPrrw=;\n b=KI53ofRuVqLXC98y9fu9voGthFcDubsTxQjYsTK2Ga4r4fNL7OmRPRJcucTL5LyhwW0JQ9r6NsjHBnApSQV5X9HH1IcxQqt001+VnASFaz0fBq8YOGrF2yndM19fwoZo4NalPJNOMFNtn24rKfv1ZKhkGQg9fjL+hPPNcvo56w9wzE53E+6nVBJdFT5GK6ZW/0UfzpsOoBhdGZ2gE3UkylaXXXqjvvDwmTMwzip2RM2X3koQ9qzTEFDsvEoT1LdPDtAArq0FmWJrWagodj1Vex66tGVyENQlJzqAOGZCrgImaQ4DZvyVKmNa7PSlnWKimsdT5OzootxxgZpTXDT3+Q==",
        "From": "Wei Fang <wei.fang@nxp.com>",
        "To": "claudiu.manoil@nxp.com,\n\tvladimir.oltean@nxp.com,\n\txiaoning.wang@nxp.com,\n\tandrew+netdev@lunn.ch,\n\tdavem@davemloft.net,\n\tedumazet@google.com,\n\tkuba@kernel.org,\n\tpabeni@redhat.com,\n\trobh@kernel.org,\n\tkrzk+dt@kernel.org,\n\tconor+dt@kernel.org,\n\tf.fainelli@gmail.com,\n\tfrank.li@nxp.com,\n\tchleroy@kernel.org,\n\thorms@kernel.org,\n\tlinux@armlinux.org.uk,\n\tandrew@lunn.ch",
        "Cc": "netdev@vger.kernel.org,\n\tlinux-kernel@vger.kernel.org,\n\tdevicetree@vger.kernel.org,\n\tlinuxppc-dev@lists.ozlabs.org,\n\tlinux-arm-kernel@lists.infradead.org,\n\timx@lists.linux.dev",
        "Subject": "[PATCH v4 net-next 09/14] net: dsa: add NETC switch tag support",
        "Date": "Tue, 31 Mar 2026 19:30:20 +0800",
        "Message-Id": "<20260331113025.1566878-10-wei.fang@nxp.com>",
        "X-Mailer": "git-send-email 2.34.1",
        "In-Reply-To": "<20260331113025.1566878-1-wei.fang@nxp.com>",
        "References": "<20260331113025.1566878-1-wei.fang@nxp.com>",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-ClientProxiedBy": "MA5P287CA0151.INDP287.PROD.OUTLOOK.COM\n (2603:1096:a01:1d7::14) To AM8PR04MB7284.eurprd04.prod.outlook.com\n (2603:10a6:20b:1dc::8)",
        "X-Mailing-List": "linuxppc-dev@lists.ozlabs.org",
        "List-Id": "<linuxppc-dev.lists.ozlabs.org>",
        "List-Help": "<mailto:linuxppc-dev+help@lists.ozlabs.org>",
        "List-Owner": "<mailto:linuxppc-dev+owner@lists.ozlabs.org>",
        "List-Post": "<mailto:linuxppc-dev@lists.ozlabs.org>",
        "List-Archive": "<https://lore.kernel.org/linuxppc-dev/>,\n  <https://lists.ozlabs.org/pipermail/linuxppc-dev/>",
        "List-Subscribe": "<mailto:linuxppc-dev+subscribe@lists.ozlabs.org>,\n  <mailto:linuxppc-dev+subscribe-digest@lists.ozlabs.org>,\n  <mailto:linuxppc-dev+subscribe-nomail@lists.ozlabs.org>",
        "List-Unsubscribe": "<mailto:linuxppc-dev+unsubscribe@lists.ozlabs.org>",
        "Precedence": "list",
        "MIME-Version": "1.0",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-TrafficTypeDiagnostic": "AM8PR04MB7284:EE_|PA1PR04MB11406:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "8dc86f70-b6c3-47d2-53e6-08de8f18c96d",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "\n\tBCL:0;ARA:13230040|19092799006|376014|52116014|366016|7416014|1800799024|18002099003|56012099003|22082099003|38350700014|921020;",
        "X-Microsoft-Antispam-Message-Info": "\n\tTWvCn0/K+6gUoDTFut9F0N5p7OEM+0jO71p/euMe5NZ80GXJt2Rt6QcYKmyUInpj1Uu74Zq79kHsqEBKA7iCE1ljS2rZed0Zlid2z+ZXtN4P53PFfkV+Fx12Kt2kznlZiRmD49lQ9f99EH7sk2NUkyWMfMI5xFSAzUSTa6xDLGj4CXK6LxeVEF2eSzUhDVpVGp8fcsFQZpKqYoxmPS57xPbJKGZKPZqnQ47GjstnhFvEyf0z6oYpiaiXqO/tRrWhXmaxXy/83X37E2mBeOusYCJKR1YC0CE7xIFF87gWvHG4V7W64AmtSAI8Mz2f95puEjzA/kfDeGG/E3TXFF+uX1STgi8jzQLx5dnZUrH3GpJkJwocM4L3nRgQDbSKiwMDzoXWy3Ss4JRfh1a3S0Zvx/TbOasY5yT3ZzcE742f8eeuQ/MM4efN0JShuzTc768aMhXmD8J0PdGUw9CvimhWIze2O3CNAUGvCxAVsCBxNSa1W6lhMC6LsuQcwJz83fix1BRL+PG+m98CcyFFo5dqFDirfkTCxIGIe0BLAWYnx13gaJ6yyGYTy7+B1kCP7H+34UiNkbRCPEzkLqamj3/ux+gyeyZf7V/4mzWpDFKkEUAwJQEpHxWfX765znGbDzPfcfd5UC1hj54sN01KvZZs6lKCrWNMH+CDuseln612NJD7DMeAAn/ynI25EEdbc35xlyqOXJYi4LLX4u7x/5d2HJLYp1Ua3+tJziBhdzgUGCMkVsYw2UjuS8mWSb3sKIeJG+Xs3xk/rxWSAviTlG+UPekk1QDNbatf+1ov7IBmSGo8APuH2Bgu21fZEl9QRj7S",
        "X-Forefront-Antispam-Report": "\n\tCIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM8PR04MB7284.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(376014)(52116014)(366016)(7416014)(1800799024)(18002099003)(56012099003)(22082099003)(38350700014)(921020);DIR:OUT;SFP:1101;",
        "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1",
        "X-MS-Exchange-AntiSpam-MessageData-0": "\n 9PAVgsIc2QlOTRDEhXKlumBTVa7T2Cl4y1UdCcRThpISBUwFkg7/w+f1oV1O+W+ow3iZC8akMCJhBRzby9g42ofHWkaLdcSoZZ27rQ+CeMY2WVx2SjbohGy9pjSv4ju3zBzxd3MxP9xCop2COoiseHAu/IxFiexp3ym5phrtndb/e3DXp77nhVwR5uTYP9qpOKLc67QRSEaoXxNtxYfO6wR5c6wehaaXBSbNGD9y0PyK0G9mpY/+aXSuFu4NIfeGBCekzjoxq6vC1dYOL7Yd+dYgHOCkTcoVJyiozhXL9Kr0K/VJ3IoP5ONX6IMFF857FuK8gQlyJRhCAJOMduEMlq41yUgWEYVnwqHis1Vg5tdat5XpjxuwZI9kiedAQm6mDd1yPOOjyv1TFJLnJW6tB4xrVkni1Qa4AlAkcKvYe95BP3TEfQfbfG41KEC0Ud2jCqQd37uwB7jdT0sZkux7uSUUDp8OOrgw2Hu/y8oRwgihsD+EFe5l6NvPlknWhYWMzH2IbNV2GWodT5wuzC/LFvX6kLjbxGTA6oPMSSqwGHFI0uwQdvgjSiC6Ltc61TBA3SgrKh+wSRs49ifUQVye0IWkcmZx9NFL+DlyrPCmuEr+OOtiG5sw90AIIcF+wLeNiGt3Dix7b9M0OTyCvmgoXwZrIhdBZ09fKzpRWyUjVu5x1F8K++v/MMth5Ze2/hZHIaDs0HTabPyfDUhB5CipitzB1prtqxn33ILq2oLIODp1tnMZ53QbgmtGsBJnkw6vmDDhhf2Ze7z80R7KzSuXfiADHQc/nt/8eGxV5bJLaMSm73+AHy4ZMR70wcXZsLWzd4Ojb3sjzajdXSclUiJtRKSTWRDUtJL+roBu5pW/YcWqTEoTNVnH63K3IO1VRz8UBBm6Z9dShhIqaXTzhNLjVpjQLfCoRTZ378LHp/Ay+ND4FKso2D19DZJMVHvbz73bHQcf/QR0t/hcEUxga4vkQAW1zCLSwF+wWPJDS6ujsLMY4vbycbOBQ6NphMuYazPnIzILqAAC89Nn5vjYiFXXmbIZ/gQ4eavIOTEkJA2O1fxz3zYeOJE8uorTK0KON1kv/QRoF/Sbveo+zXUHrLNKvzpnDupMbavit7mgKbg+Br+7yRBMzYXwHJsGP0Vl2jTWoGGUpmfr0PvGvkrnDkBeLTOPrjPRKH0Q7JSSTPo/qByrhRCd3vV60h2bbeTvqfvgrAuigf8fLTO1WX04/MMmFOcTi5AzHi6Lor83ne9kXkQXk51ESQuQbMvy8hQidGY8FE13nLihK5KvusAndeCca0KKI39pTmebeOjwsfdW5sWiWJx5XwPZE7OwZI2g38Y0oG+o4fx3rI6XjQNxFAyFns2v5Gui3XChA8sN1TFxYANvcZR06gP6JAWaq/ih50+mzuwzppq4G8SXR7RzNvkqARNYcn4nxEezjIbInHwAe8IKV3Hv78QgubZw4QvueqQ4hMdZkzPzorw7/gCyfisjlvPhK29glx+NMy/WoF/CYSqlDbI95+ED0wg27EWQ2T0OsYazHy0gRzsd+DWc8bIlJ4lSPmT7MVQRdb9lKkXApDb3KG/9zMSGRkoYj9QUvOptJ09LDpDegSldHnY4ZP1wx5HBZGkuq0o2jB2jQWnXzEpT/2CJGJbRQuphz/hNk42w65hzs0xjs3ClZBjkpp9ru2oNrBeUeO1FRnCi3DHmEoPODD9WTtlbhkDT2cwvB53fj4J3d4LHyRAUHRXdSlTGDw==",
        "X-OriginatorOrg": "nxp.com",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 8dc86f70-b6c3-47d2-53e6-08de8f18c96d",
        "X-MS-Exchange-CrossTenant-AuthSource": "AM8PR04MB7284.eurprd04.prod.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Internal",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "31 Mar 2026 11:29:35.6056\n (UTC)",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-CrossTenant-Id": "686ea1d3-bc2b-4c6f-a92c-d99c5c301635",
        "X-MS-Exchange-CrossTenant-MailboxType": "HOSTED",
        "X-MS-Exchange-CrossTenant-UserPrincipalName": "\n l1jaKyPsSvknH8JUnkYxJ+4O7+n/vFToxE2J94qoBXcgVcbwidsCOFmnW1mcN2U5YPoxM1/oeD4f4qX45YWpvw==",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "PA1PR04MB11406",
        "X-Spam-Status": "No, score=0.8 required=3.0 tests=ARC_SIGNED,ARC_VALID,\n\tDKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FORGED_SPF_HELO,\n\tRCVD_IN_DNSWL_NONE,SPF_HELO_PASS,T_SPF_PERMERROR autolearn=disabled\n\tversion=4.0.1 OzLabs 8",
        "X-Spam-Checker-Version": "SpamAssassin 4.0.1 (2024-03-25) on lists.ozlabs.org"
    },
    "content": "The NXP NETC switch tag is a proprietary header added to frames after the\nsource MAC address. The switch tag has 3 types, and each type has 1 ~ 4\nsubtypes, the details are as follows.\n\nForward NXP switch tag (Type=0): Represents forwarded frames.\n  - SubType = 0 - Normal frame processing.\n\nTo_Port NXP switch tag (Type=1): Represents frames that are to be sent\nto a specific switch port.\n  - SubType = 0. No request to perform timestamping.\n  - SubType = 1. Request to perform one-step timestamping.\n  - SubType = 2. Request to perform two-step timestamping.\n  - SubType = 3. Request to perform both one-step timestamping and\n    two-step timestamping.\n\nTo_Host NXP switch tag (Type=2): Represents frames redirected or copied\nto the switch management port.\n  - SubType = 0. Received frames redirected or copied to the switch\n    management port.\n  - SubType = 1. Received frames redirected or copied to the switch\n    management port with captured timestamp at the switch port where\n    the frame was received.\n  - SubType = 2. Transmit timestamp response (two-step timestamping).\n\nIn addition, the length of different type switch tag is different, the\nminimum length is 6 bytes, the maximum length is 14 bytes. Currently,\nForward tag, SubType 0 of To_Port tag and Subtype 0 of To_Host tag are\nsupported. More tags will be supported in the future.\n\nSigned-off-by: Wei Fang <wei.fang@nxp.com>\n---\n include/linux/dsa/tag_netc.h  |  14 +++\n include/net/dsa.h             |   2 +\n include/uapi/linux/if_ether.h |   1 +\n net/dsa/Kconfig               |  10 ++\n net/dsa/Makefile              |   1 +\n net/dsa/tag_netc.c            | 185 ++++++++++++++++++++++++++++++++++\n 6 files changed, 213 insertions(+)\n create mode 100644 include/linux/dsa/tag_netc.h\n create mode 100644 net/dsa/tag_netc.c",
    "diff": "diff --git a/include/linux/dsa/tag_netc.h b/include/linux/dsa/tag_netc.h\nnew file mode 100644\nindex 000000000000..fe964722e5b0\n--- /dev/null\n+++ b/include/linux/dsa/tag_netc.h\n@@ -0,0 +1,14 @@\n+/* SPDX-License-Identifier: GPL-2.0\n+ *\n+ * Copyright 2025-2026 NXP\n+ */\n+\n+#ifndef __NET_DSA_TAG_NETC_H\n+#define __NET_DSA_TAG_NETC_H\n+\n+#include <linux/skbuff.h>\n+#include <net/dsa.h>\n+\n+#define NETC_TAG_MAX_LEN\t\t\t14\n+\n+#endif\ndiff --git a/include/net/dsa.h b/include/net/dsa.h\nindex 6c17446f3dcc..6bed824d1f07 100644\n--- a/include/net/dsa.h\n+++ b/include/net/dsa.h\n@@ -58,6 +58,7 @@ struct tc_action;\n #define DSA_TAG_PROTO_YT921X_VALUE\t\t30\n #define DSA_TAG_PROTO_MXL_GSW1XX_VALUE\t\t31\n #define DSA_TAG_PROTO_MXL862_VALUE\t\t32\n+#define DSA_TAG_PROTO_NETC_VALUE\t\t33\n \n enum dsa_tag_protocol {\n \tDSA_TAG_PROTO_NONE\t\t= DSA_TAG_PROTO_NONE_VALUE,\n@@ -93,6 +94,7 @@ enum dsa_tag_protocol {\n \tDSA_TAG_PROTO_YT921X\t\t= DSA_TAG_PROTO_YT921X_VALUE,\n \tDSA_TAG_PROTO_MXL_GSW1XX\t= DSA_TAG_PROTO_MXL_GSW1XX_VALUE,\n \tDSA_TAG_PROTO_MXL862\t\t= DSA_TAG_PROTO_MXL862_VALUE,\n+\tDSA_TAG_PROTO_NETC\t\t= DSA_TAG_PROTO_NETC_VALUE,\n };\n \n struct dsa_switch;\ndiff --git a/include/uapi/linux/if_ether.h b/include/uapi/linux/if_ether.h\nindex df9d44a11540..fb5efc8e06cc 100644\n--- a/include/uapi/linux/if_ether.h\n+++ b/include/uapi/linux/if_ether.h\n@@ -123,6 +123,7 @@\n #define ETH_P_DSA_A5PSW\t0xE001\t\t/* A5PSW Tag Value [ NOT AN OFFICIALLY REGISTERED ID ] */\n #define ETH_P_IFE\t0xED3E\t\t/* ForCES inter-FE LFB type */\n #define ETH_P_AF_IUCV   0xFBFB\t\t/* IBM af_iucv [ NOT AN OFFICIALLY REGISTERED ID ] */\n+#define ETH_P_NXP_NETC  0xFD3A\t\t/* NXP NETC DSA [ NOT AN OFFICIALLY REGISTERED ID ] */\n \n #define ETH_P_802_3_MIN\t0x0600\t\t/* If the value in the ethernet type is more than this value\n \t\t\t\t\t * then the frame is Ethernet II. Else it is 802.3 */\ndiff --git a/net/dsa/Kconfig b/net/dsa/Kconfig\nindex 5ed8c704636d..d5e725b90d78 100644\n--- a/net/dsa/Kconfig\n+++ b/net/dsa/Kconfig\n@@ -125,6 +125,16 @@ config NET_DSA_TAG_KSZ\n \t  Say Y if you want to enable support for tagging frames for the\n \t  Microchip 8795/937x/9477/9893 families of switches.\n \n+config NET_DSA_TAG_NETC\n+\ttristate \"Tag driver for NXP NETC switches\"\n+\thelp\n+\t  Say Y or M if you want to enable support for the NXP Switch Tag (NST),\n+\t  as implemented by NXP NETC switches having version 4.3 or later. The\n+\t  switch tag is a proprietary header added to frames after the source\n+\t  MAC address, it has 3 types and each type has different subtypes, so\n+\t  its length depends on the type and subtype of the tag, the maximum\n+\t  length is 14 bytes.\n+\n config NET_DSA_TAG_OCELOT\n \ttristate \"Tag driver for Ocelot family of switches, using NPI port\"\n \tselect PACKING\ndiff --git a/net/dsa/Makefile b/net/dsa/Makefile\nindex bf7247759a64..b8c2667cd14a 100644\n--- a/net/dsa/Makefile\n+++ b/net/dsa/Makefile\n@@ -30,6 +30,7 @@ obj-$(CONFIG_NET_DSA_TAG_LAN9303) += tag_lan9303.o\n obj-$(CONFIG_NET_DSA_TAG_MTK) += tag_mtk.o\n obj-$(CONFIG_NET_DSA_TAG_MXL_862XX) += tag_mxl862xx.o\n obj-$(CONFIG_NET_DSA_TAG_MXL_GSW1XX) += tag_mxl-gsw1xx.o\n+obj-$(CONFIG_NET_DSA_TAG_NETC) += tag_netc.o\n obj-$(CONFIG_NET_DSA_TAG_NONE) += tag_none.o\n obj-$(CONFIG_NET_DSA_TAG_OCELOT) += tag_ocelot.o\n obj-$(CONFIG_NET_DSA_TAG_OCELOT_8021Q) += tag_ocelot_8021q.o\ndiff --git a/net/dsa/tag_netc.c b/net/dsa/tag_netc.c\nnew file mode 100644\nindex 000000000000..addd41f7f1b6\n--- /dev/null\n+++ b/net/dsa/tag_netc.c\n@@ -0,0 +1,185 @@\n+// SPDX-License-Identifier: GPL-2.0\n+/*\n+ * Copyright 2025-2026 NXP\n+ */\n+\n+#include <linux/dsa/tag_netc.h>\n+\n+#include \"tag.h\"\n+\n+#define NETC_NAME\t\t\t\"nxp_netc\"\n+\n+/* Forward NXP switch tag */\n+#define NETC_TAG_FORWARD\t\t0\n+\n+/* To_Port NXP switch tag */\n+#define NETC_TAG_TO_PORT\t\t1\n+/* SubType0: No request to perform timestamping */\n+#define NETC_TAG_TP_SUBTYPE0\t\t0\n+\n+/* To_Host NXP switch tag */\n+#define NETC_TAG_TO_HOST\t\t2\n+/* SubType0: frames redirected or copied to CPU port */\n+#define NETC_TAG_TH_SUBTYPE0\t\t0\n+/* SubType1: frames redirected or copied to CPU port with timestamp */\n+#define NETC_TAG_TH_SUBTYPE1\t\t1\n+/* SubType2: Transmit timestamp response (two-step timestamping) */\n+#define NETC_TAG_TH_SUBTYPE2\t\t2\n+\n+/* NETC switch tag lengths */\n+#define NETC_TAG_FORWARD_LEN\t\t6\n+#define NETC_TAG_TP_SUBTYPE0_LEN\t6\n+#define NETC_TAG_TH_SUBTYPE0_LEN\t6\n+#define NETC_TAG_TH_SUBTYPE1_LEN\t14\n+#define NETC_TAG_TH_SUBTYPE2_LEN\t14\n+#define NETC_TAG_CMN_LEN\t\t5\n+\n+#define NETC_TAG_SUBTYPE\t\tGENMASK(3, 0)\n+#define NETC_TAG_TYPE\t\t\tGENMASK(7, 4)\n+#define NETC_TAG_QV\t\t\tBIT(0)\n+#define NETC_TAG_IPV\t\t\tGENMASK(4, 2)\n+#define NETC_TAG_SWITCH\t\t\tGENMASK(2, 0)\n+#define NETC_TAG_PORT\t\t\tGENMASK(7, 3)\n+\n+struct netc_tag_cmn {\n+\t__be16 tpid;\n+\tu8 type;\n+\tu8 qos;\n+\tu8 switch_port;\n+} __packed;\n+\n+static void netc_fill_common_tag(struct netc_tag_cmn *tag, u8 type,\n+\t\t\t\t u8 subtype, u8 sw_id, u8 port, u8 ipv)\n+{\n+\ttag->tpid = htons(ETH_P_NXP_NETC);\n+\ttag->type = FIELD_PREP(NETC_TAG_TYPE, type) |\n+\t\t    FIELD_PREP(NETC_TAG_SUBTYPE, subtype);\n+\ttag->qos = NETC_TAG_QV | FIELD_PREP(NETC_TAG_IPV, ipv);\n+\ttag->switch_port = FIELD_PREP(NETC_TAG_SWITCH, sw_id) |\n+\t\t\t   FIELD_PREP(NETC_TAG_PORT, port);\n+}\n+\n+static void *netc_fill_common_tp_tag(struct sk_buff *skb,\n+\t\t\t\t     struct net_device *ndev,\n+\t\t\t\t     u8 subtype, int tag_len)\n+{\n+\tstruct dsa_port *dp = dsa_user_to_port(ndev);\n+\tu16 queue = skb_get_queue_mapping(skb);\n+\tu8 ipv = netdev_txq_to_tc(ndev, queue);\n+\tvoid *tag;\n+\n+\tskb_push(skb, tag_len);\n+\tdsa_alloc_etype_header(skb, tag_len);\n+\n+\ttag = dsa_etype_header_pos_tx(skb);\n+\tmemset(tag + NETC_TAG_CMN_LEN, 0, tag_len - NETC_TAG_CMN_LEN);\n+\tnetc_fill_common_tag(tag, NETC_TAG_TO_PORT, subtype,\n+\t\t\t     dp->ds->index, dp->index, ipv);\n+\n+\treturn tag;\n+}\n+\n+static void netc_fill_tp_tag_subtype0(struct sk_buff *skb,\n+\t\t\t\t      struct net_device *ndev)\n+{\n+\tnetc_fill_common_tp_tag(skb, ndev, NETC_TAG_TP_SUBTYPE0,\n+\t\t\t\tNETC_TAG_TP_SUBTYPE0_LEN);\n+}\n+\n+/* Currently only support To_Port tag, subtype 0 */\n+static struct sk_buff *netc_xmit(struct sk_buff *skb,\n+\t\t\t\t struct net_device *ndev)\n+{\n+\tnetc_fill_tp_tag_subtype0(skb, ndev);\n+\n+\treturn skb;\n+}\n+\n+static int netc_get_rx_tag_len(int rx_type)\n+{\n+\tint type = FIELD_GET(NETC_TAG_TYPE, rx_type);\n+\n+\tif (type == NETC_TAG_TO_HOST) {\n+\t\tu8 subtype = rx_type & NETC_TAG_SUBTYPE;\n+\n+\t\tif (subtype == NETC_TAG_TH_SUBTYPE1)\n+\t\t\treturn NETC_TAG_TH_SUBTYPE1_LEN;\n+\t\telse if (subtype == NETC_TAG_TH_SUBTYPE2)\n+\t\t\treturn NETC_TAG_TH_SUBTYPE2_LEN;\n+\t\telse\n+\t\t\treturn NETC_TAG_TH_SUBTYPE0_LEN;\n+\t}\n+\n+\treturn NETC_TAG_FORWARD_LEN;\n+}\n+\n+static struct sk_buff *netc_rcv(struct sk_buff *skb,\n+\t\t\t\tstruct net_device *ndev)\n+{\n+\tstruct netc_tag_cmn *tag_cmn;\n+\tint tag_len, sw_id, port;\n+\n+\tif (unlikely(!pskb_may_pull(skb, NETC_TAG_MAX_LEN)))\n+\t\treturn NULL;\n+\n+\ttag_cmn = dsa_etype_header_pos_rx(skb);\n+\ttag_len = netc_get_rx_tag_len(tag_cmn->type);\n+\n+\tif (ntohs(tag_cmn->tpid) != ETH_P_NXP_NETC) {\n+\t\tdev_warn_ratelimited(&ndev->dev, \"Unknown TPID 0x%04x\\n\",\n+\t\t\t\t     ntohs(tag_cmn->tpid));\n+\n+\t\treturn NULL;\n+\t}\n+\n+\tif (tag_cmn->qos & NETC_TAG_QV)\n+\t\tskb->priority = FIELD_GET(NETC_TAG_IPV, tag_cmn->qos);\n+\n+\tsw_id = NETC_TAG_SWITCH & tag_cmn->switch_port;\n+\t/* ENETC VEPA switch ID (0) is not supported yet */\n+\tif (!sw_id) {\n+\t\tdev_warn_ratelimited(&ndev->dev,\n+\t\t\t\t     \"VEPA switch ID is not supported yet\\n\");\n+\n+\t\treturn NULL;\n+\t}\n+\n+\tport = FIELD_GET(NETC_TAG_PORT, tag_cmn->switch_port);\n+\tskb->dev = dsa_conduit_find_user(ndev, sw_id, port);\n+\tif (!skb->dev)\n+\t\treturn NULL;\n+\n+\tif (tag_cmn->type == NETC_TAG_FORWARD)\n+\t\tdsa_default_offload_fwd_mark(skb);\n+\n+\t/* Remove Switch tag from the frame */\n+\tskb_pull_rcsum(skb, tag_len);\n+\tdsa_strip_etype_header(skb, tag_len);\n+\n+\treturn skb;\n+}\n+\n+static void netc_flow_dissect(const struct sk_buff *skb, __be16 *proto,\n+\t\t\t      int *offset)\n+{\n+\tstruct netc_tag_cmn *tag_cmn = (struct netc_tag_cmn *)(skb->data - 2);\n+\tint tag_len = netc_get_rx_tag_len(tag_cmn->type);\n+\n+\t*offset = tag_len;\n+\t*proto = ((__be16 *)skb->data)[(tag_len / 2) - 1];\n+}\n+\n+static const struct dsa_device_ops netc_netdev_ops = {\n+\t.name\t\t\t= NETC_NAME,\n+\t.proto\t\t\t= DSA_TAG_PROTO_NETC,\n+\t.xmit\t\t\t= netc_xmit,\n+\t.rcv\t\t\t= netc_rcv,\n+\t.needed_headroom\t= NETC_TAG_MAX_LEN,\n+\t.flow_dissect\t\t= netc_flow_dissect,\n+};\n+\n+MODULE_DESCRIPTION(\"DSA tag driver for NXP NETC switch family\");\n+MODULE_LICENSE(\"GPL\");\n+\n+MODULE_ALIAS_DSA_TAG_DRIVER(DSA_TAG_PROTO_NETC, NETC_NAME);\n+module_dsa_tag_driver(netc_netdev_ops);\n",
    "prefixes": [
        "v4",
        "net-next",
        "09/14"
    ]
}