get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2216218,
    "url": "http://patchwork.ozlabs.org/api/patches/2216218/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/linuxppc-dev/patch/20260326062917.3552334-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": "<20260326062917.3552334-10-wei.fang@nxp.com>",
    "list_archive_url": "https://lore.kernel.org/linuxppc-dev/20260326062917.3552334-10-wei.fang@nxp.com/",
    "date": "2026-03-26T06:29:12",
    "name": "[v3,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/20260326062917.3552334-10-wei.fang@nxp.com/mbox/",
    "series": [
        {
            "id": 497537,
            "url": "http://patchwork.ozlabs.org/api/series/497537/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/linuxppc-dev/list/?series=497537",
            "date": "2026-03-26T06:29:03",
            "name": "Add preliminary NETC switch support for i.MX94",
            "version": 3,
            "mbox": "http://patchwork.ozlabs.org/series/497537/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2216218/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2216218/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "\n <linuxppc-dev+bounces-18804-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=g9EDShdW;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org\n (client-ip=2404:9400:21b9:f100::1; helo=lists.ozlabs.org;\n envelope-from=linuxppc-dev+bounces-18804-incoming=patchwork.ozlabs.org@lists.ozlabs.org;\n receiver=patchwork.ozlabs.org)",
            "lists.ozlabs.org;\n arc=pass smtp.remote-ip=\"2a01:111:f403:c200::1\" 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=g9EDShdW;\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:c200::1;\n helo=db3pr0202cu003.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\n [IPv6:2404:9400:21b9:f100::1])\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 4fhDPd2C6lz1y1G\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 26 Mar 2026 17:28:53 +1100 (AEDT)",
            "from boromir.ozlabs.org (localhost [127.0.0.1])\n\tby lists.ozlabs.org (Postfix) with ESMTP id 4fhDPP2tgbz2yjw;\n\tThu, 26 Mar 2026 17:28:41 +1100 (AEDT)",
            "from DB3PR0202CU003.outbound.protection.outlook.com\n (mail-northeuropeazlp170100001.outbound.protection.outlook.com\n [IPv6:2a01:111:f403:c200::1])\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 4fhDPN2zmXz2yvc\n\tfor <linuxppc-dev@lists.ozlabs.org>; Thu, 26 Mar 2026 17:28:40 +1100 (AEDT)",
            "from PAXPR04MB8510.eurprd04.prod.outlook.com (2603:10a6:102:211::7)\n by AM9PR04MB8355.eurprd04.prod.outlook.com (2603:10a6:20b:3b7::20) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.20; Thu, 26 Mar\n 2026 06:28:26 +0000",
            "from PAXPR04MB8510.eurprd04.prod.outlook.com\n ([fe80::b476:c19a:24cd:3694]) by PAXPR04MB8510.eurprd04.prod.outlook.com\n ([fe80::b476:c19a:24cd:3694%3]) with mapi id 15.20.9745.019; Thu, 26 Mar 2026\n 06:28:26 +0000"
        ],
        "ARC-Seal": [
            "i=2; a=rsa-sha256; d=lists.ozlabs.org; s=201707; t=1774506521;\n\tcv=pass;\n b=oNttRq3Ozhi1h+jQhpAvBJD0hiATwlkjWzn4dzN4lgI7XEs4hQ9avYRj+X4GdJucZokp+CvPge+6neDpy/qJPAYUOfGJeic5TQdkClUBK4/8HvOUYQIefOBTYrwOyllOdFVxcqe2xbmg0wF5HIOsuS8Rk/ZKGj1RO1Y0sjXauAgXp0WIBr0Y7/FKMnol4EZsLpBBql0OahEhtNkbATRd/HgiIoLmFGqNMThrFmAkfyw7oAlppnspYIuCkJ+DjpJkBux3/tJQiUwG8AmVALNN6OIpleVnQ9a39gQdXFCu0rhb0KJWt2WeChCUaRnZNjv3qXoZRGtIylusA2POJBNKLw==",
            "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=isftSmAaxKCSxlwsx88lpmgOSzvRpJG3V7HCjbEyp52LzmB0VBWcSmjmZdtQk/1E51SupdRfW8Ampc9wAUnCaOAwb4G8RR1fWgBDMfx//BjFKKun4VyvEoCNQrZXiepBUDqsGCAdOnSMthMl23+XZhFNoqxBWCIlIBj0Equ8rD8dgwjOs8KQ6v5m8yBOTeHOEOFdM6+TKc8Qibb5EEFu8QIYE2ohW+U/IcFPxt3fqnPIygkSHQYMHTsO5u0zVzZIhs1AxdopiJEI5zcdLXfydVBblsM1F61Kdp6msaFvimbPbMoB0Hf6pj3A+mvLl//BCjhWQ78AUfUvVGhKk/kvqw=="
        ],
        "ARC-Message-Signature": [
            "i=2; a=rsa-sha256; d=lists.ozlabs.org; s=201707;\n\tt=1774506521; 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=Es0hf8sMiI6klH8TToT2rMlhDzPlF2Fu01A1nAKvGWdHL+tyZ+JrlqT0vGKJutpMHghV6KlIX78uAAM+7Tk0NPZtqABpLN5+veql8JO4ltoRhJhxi/SWRp/BXMPtDfNxfs5KGw3k5rVXLdeRZXJUsG0t+DVdOwQPoVwA9vZsXiMh/dAiVfhzFcy6UBp7zR0qFtJ1ZgIQ5AW9NTDQU7s5qdF3muMLGeklp1WUqJAKag3daufh3TJVkaXzkXUsqwZx5EYKZ2oLoWpOsCO5HBIl8e7K92bDBDXIMAZzJLitXd/i5hnGXKk3vNZreRttbrOI/toMuAt821fvdRE8rAjYuA==",
            "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=wIZJtVXAuJLGBRr9YRtTWAy3KlsUW/+kY0dkf74qx716+VXGB/otlBpGQabCLCInKiGXBVRZ8/o/CnxdKuG1mW1NBSREiwoF/EkVZZM4mZs9O1l8/fVnG5Icj1qOBI3PlPRPnf/o+mChY1UsD8vYBKuFJ9EILni8Hft5OtL6/lMiqIB1YeSp14Dscrobpbrzb+kelOv2NMOX/280qVZYj4p+3m19gaL0WtvxeKmuLkwEz5w29xK5IWH21SWN0i/pv20BUDB+gNXXaNNxZWS30sNAfgz17AVij9OoDzT8Ohpq6UbAm7Byjs9/wfdVsF114FO4zYTT8tMfPskZ2Mp0xw=="
        ],
        "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=g9EDShdW; dkim-atps=neutral;\n spf=permerror (client-ip=2a01:111:f403:c200::1;\n helo=db3pr0202cu003.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=g9EDShdW8vsihVXFAGxcmUzT7V9ElF0pFylCYOclxTyzY5DSF5s1uzEyT9xDdGMhwWU3cvcIzsFQNIKDR1Fc4+D6Ui7PqiToMrczkQsa8TghFmM4lEEU7AMxDOIAXYzKf9SpEBcJpAZQ9zN9/KhYyrunPePWa2FsHpWww2ww8m3F/Jxln2jV6gyqgoGqPJBYxAtaTHksJML9zDWUBP87xjOdVd7vMrzZKut4sZEm7ptQ58RTvWpcSM7n1/EbC+YOSMCoWRCgmWV6QH5r8Mx214I7oi0pm9GNXdoD7BFX3zzYMNEn7H+EP5f/VNLNOs8rbOvEK417x6xsU6YKQBnHjw==",
        "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 v3 net-next 09/14] net: dsa: add NETC switch tag support",
        "Date": "Thu, 26 Mar 2026 14:29:12 +0800",
        "Message-Id": "<20260326062917.3552334-10-wei.fang@nxp.com>",
        "X-Mailer": "git-send-email 2.34.1",
        "In-Reply-To": "<20260326062917.3552334-1-wei.fang@nxp.com>",
        "References": "<20260326062917.3552334-1-wei.fang@nxp.com>",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-ClientProxiedBy": "MA5PR01CA0046.INDPRD01.PROD.OUTLOOK.COM\n (2603:1096:a01:1d6::15) To PAXPR04MB8510.eurprd04.prod.outlook.com\n (2603:10a6:102:211::7)",
        "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": "PAXPR04MB8510:EE_|AM9PR04MB8355:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "e953aa2b-bbd1-48c5-aea9-08de8b00e33c",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "\n\tBCL:0;ARA:13230040|1800799024|366016|19092799006|376014|7416014|52116014|38350700014|921020|22082099003|56012099003|18002099003;",
        "X-Microsoft-Antispam-Message-Info": "\n\twXOPhC7QP9ucYyUftsdzY09WXhby6XbFEuSbE6MMX83xfkD0IZHr6h+LZyVnlnI6IQYLstUWddQhNs1TtVoqIaDZcxAS+QFXLCwAtPofAtEUYq8kJKlPzq+HlDc0e55B2dp4ePKfXKWZAWTqM/3r7ygbopnQq8GafDdH9VPuWJvvQwA3RhVr0yk4T9/SqEE3rUI9BVknzwtor1tCoPHJLKzfHth/JTfyJ83I3u9xfm676x2mL9bq+xCMv2Fq/M8VbLPtskk3ZCeqqNcmVbRZDS32GyNKAqd79+idljjZutKU2YkbzJAzbK4S9PwotAQjfIAkcFj6zxArbqdP/4o67rQ0rZg4HR6hkxXKTevrFwlWtS/kHPLlrOEhhPOxyotVwp/IgbKC8lIxQdO7u6EOm+poCBMgMHa3m13BnnYhoQpktVVOn6kjADjEoXwz4CUhfZDuVibY1F9nvpYD9XmkGGOFE9OOkoklYT7bEw+4bauzeFbvPiDq3jRxMBfeMZRpH0IRKxod4+qOAiPWbQxp0cTbbnPbwIVLPHUsYX+3+M8wZ+sBgdpfIJwErtxFASiwKP89PMp9xORjFziINZr8BtmX2Ho21xtlGTvrAUy/LPNG3DIe7uXqF25U81QMpmYgEqH5JFAVX3GRxH3/z4USS+3FmVfJdI/twIPMeCpBmXmtdkcSn7I4UNujZ3D+otiXgXEoSH2FcEx6lIA+NOlNP938x3tOKmLvUFySe4HvebFhmR5BeV+MUpeqxLdrXKCICZQklzea+sRMv1CjGGb/tKOX+CVQpckAO1Hrir8s7VxHx+ybFxK2AifBQo/UtaVC",
        "X-Forefront-Antispam-Report": "\n\tCIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB8510.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(19092799006)(376014)(7416014)(52116014)(38350700014)(921020)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;",
        "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1",
        "X-MS-Exchange-AntiSpam-MessageData-0": "\n 123a8Y/jVrPtZynDhYEdGUf80ql2FgnXwwRQNHHXyTZ7Ye8MZ4Ia0lY5UfEbFdanr3q0kFMq4DV98uKU9ivSxWvJnkMMStArG4tg9v2tVvdSS7EymV0IHpZXeRw9LwxPcL0bArQHAlQOo0+0XQIVwKZXlmectsK61Mg2VLAM7TzreVqeQmvsgX4yGdmCO88x8nK6jR7YJRBx2L57eIV55ZRnM+0SLa78OtNS+1mR8/KWTvax5wYG+dSdHXaMMJpyh/ouX0fyeuM/3JuILX5vk/IJ+7GiNC8raukzfrVk4XOkj4lZYxmBvccQCAk4BXyvMpGQpNpZI9hnAkmxvbF3Oq+Svu7bgh3enm3whT3qBn2OhuIyX6FeFEiWjmCuO5fwHkmBG/NVPv6oRVR/TZnsQqWDYA+G4VYY8GOIWNWV6um3GvMotqcMkCzUDZVxugxNNIG2qwpDkpURHHnVoDH97pxbMDr2WkAjsWuC7n/5sbX0DkgChTQBW7MXyZCfpARxeYKJz1rmSsj3iLnTnmepqFg5eQFDU0/SSOoQwQJYXmzkJVstTwM9fWD7qUi8xSypq+i9zHQlV4yfKvbEXvfbw8e5uKjtdyF1YEd6g/DQP1s4O2yXsn4s9nLv9pGndEvJqF0rUkE0pn0oQN23E7SLCXDyq/V6q2Bf2RYXJyu1FpxKK9tGV3ovnFCcADaps/QeTafK1xdzG2TWdhz/78DBeCwEeGQh0L8kAGRzvwU1yYeM238YV+4Kvc6VZhn4rzGspn9S7TqVxYXl5FUxOO82ORLlriOwsRklqMZlZ3sKykECano88VTYl+vHiUofaIQ8Ulzts3pBgcBDsYJS/7O/y29hHvtkqFIC90n93ne8i3goLX3E1KF7Y7V/EeUTpX7abH5DitiT2COftyJYtuxSllVJSBdIwL3CiT4jCleZqyA6FddPJ2/hpTTqQgCKCE8b8vrGxX2GnhtCXhPwP2kppTJsqT6lhdZasgMjZcQnW4Q8oJT54kiVN/3oujD4Z+3w9nX7Gvufe5tZOUWaPaFn2SXOweJxaYF6Yz37TqDzTo8rRx8VVW9HQTTRnChxzoun2zjC30QtTOh4Mo3pLY/sCUGVjl/8iyhxdTyJO/Rv20obVtmoPJZ1GDMAo+N5imJXo2VOtI3SVsTX+CsezMKnmFfoZApkYwthz6J+VfoGnBoO9Np7Fhhn4JS0N/k54GpzAJI9l9OVFTkHAhiaFOXu6RMVtDmCeU4Q7XRCvB9/c1BpUTbdSN0OZEVs91LW+ueCMxpOWnSqHj9P3CKCDR9ymtYwRx2ZGFA27/zlCTjF/7mW54/l2AfBaPFxQ3paU0h2OdlhaMV85FXqZZtzG9nPw7DewnALwdnS7sq0nIhh8tdPrRVysrKtmTpzk++0o8EM38EguZWaD78oS6higmuUReYlj5ZJxEZTCCLAhgxEwqSk/Ow2Z0wMZQlI0T1z+gwEkayMAEl6vgruDtxrMPo3TYAkJ2R0YtOoVzMab/1PA+JQDPX2i/rVXDDQzgbtweFh5Pn3I7KXPnOIyfHqvFN9dnQSh+Ht6yr0kYdglQkQ3kh4iby6BD0hfTEB3IHE5QmlbqRNeK/YDpsrxcqOa2UDP9xItxGxfGnt1x4Sq1E6gcOoMyAoh9IJ7b13QBLlPeFPNDkxt/tdHm+to6xwkb/tTSYHGRQtzcXt7K9VHweYF7zwTx4HrwRHn6UX0fAF31X2tyj//dGfuUzmLGuJ22FYVw==",
        "X-OriginatorOrg": "nxp.com",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n e953aa2b-bbd1-48c5-aea9-08de8b00e33c",
        "X-MS-Exchange-CrossTenant-AuthSource": "PAXPR04MB8510.eurprd04.prod.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Internal",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "26 Mar 2026 06:28:26.2900\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 6XqZ91Kh6chw3k6h6G8m5FZg8MkoHyZa1X7B/TS2H7goP9+7hhiJHTI5lCYVDKMH2vTWLnwMEZTKKaRcTrm9jg==",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "AM9PR04MB8355",
        "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\tSPF_HELO_PASS,T_SPF_PERMERROR autolearn=disabled version=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": [
        "v3",
        "net-next",
        "09/14"
    ]
}