Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/1.0/patches/2175211/?format=api
{ "id": 2175211, "url": "http://patchwork.ozlabs.org/api/1.0/patches/2175211/?format=api", "project": { "id": 28, "url": "http://patchwork.ozlabs.org/api/1.0/projects/28/?format=api", "name": "Linux PCI development", "link_name": "linux-pci", "list_id": "linux-pci.vger.kernel.org", "list_email": "linux-pci@vger.kernel.org", "web_url": null, "scm_url": null, "webscm_url": null }, "msgid": "<20251217151609.3162665-16-den@valinux.co.jp>", "date": "2025-12-17T15:15:49", "name": "[RFC,v3,15/35] NTB: ntb_transport: Move internal types to ntb_transport_internal.h", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "daf3ceb7730c48804e0d0951a2ef387120906505", "submitter": { "id": 91573, "url": "http://patchwork.ozlabs.org/api/1.0/people/91573/?format=api", "name": "Koichiro Den", "email": "den@valinux.co.jp" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/linux-pci/patch/20251217151609.3162665-16-den@valinux.co.jp/mbox/", "series": [ { "id": 485709, "url": "http://patchwork.ozlabs.org/api/1.0/series/485709/?format=api", "date": "2025-12-17T15:15:53", "name": "NTB transport backed by endpoint DW eDMA", "version": 3, "mbox": "http://patchwork.ozlabs.org/series/485709/mbox/" } ], "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2175211/checks/", "tags": {}, "headers": { "Return-Path": "\n <linux-pci+bounces-43186-incoming=patchwork.ozlabs.org@vger.kernel.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "linux-pci@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=valinux.co.jp header.i=@valinux.co.jp\n header.a=rsa-sha256 header.s=selector1 header.b=Ke3yNDkx;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=172.105.105.114; helo=tor.lore.kernel.org;\n envelope-from=linux-pci+bounces-43186-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)", "smtp.subspace.kernel.org;\n\tdkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp\n header.b=\"Ke3yNDkx\"", "smtp.subspace.kernel.org;\n arc=fail smtp.client-ip=40.107.74.52", "smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=valinux.co.jp", "smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=valinux.co.jp", "dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=valinux.co.jp;" ], "Received": [ "from tor.lore.kernel.org (tor.lore.kernel.org [172.105.105.114])\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 4dWdCn5Ytqz1xty\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 18 Dec 2025 02:35:17 +1100 (AEDT)", "from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby tor.lore.kernel.org (Postfix) with ESMTP id C795031ABB41\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 17 Dec 2025 15:21:44 +0000 (UTC)", "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id E30AC352958;\n\tWed, 17 Dec 2025 15:16:45 +0000 (UTC)", "from OS0P286CU010.outbound.protection.outlook.com\n (mail-japanwestazon11011052.outbound.protection.outlook.com [40.107.74.52])\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 B65AD337BB5;\n\tWed, 17 Dec 2025 15:16:43 +0000 (UTC)", "from TYWP286MB2697.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:24c::11)\n by OS9P286MB4633.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:2fc::12) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9434.6; Wed, 17 Dec\n 2025 15:16:27 +0000", "from TYWP286MB2697.JPNP286.PROD.OUTLOOK.COM\n ([fe80::fb7e:f4ed:a580:9d03]) by TYWP286MB2697.JPNP286.PROD.OUTLOOK.COM\n ([fe80::fb7e:f4ed:a580:9d03%5]) with mapi id 15.20.9434.001; Wed, 17 Dec 2025\n 15:16:27 +0000" ], "ARC-Seal": [ "i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1765984605; cv=fail;\n b=Z2IzcCa4QN0W4ImA3pUC+g9hmuXc13rHUHvBy513c8+MdM8NlRPqx9hCtNzRbsuE49ZSWp67FqqME+KuWVeiLL3KNPqtsqaK1Bq6digWSE/xnZCSohkJPnj8thG9nxM8XGMnOuU06SxTUjKqlTrOPL/wibNIZzHsxOIJzQf0cIA=", "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=VLxuutJ229zkLHJKcaUGfwww+oSIBSKl3dLaxFlOgVxTXDAtZ9nZ1LHr266D6WiNFWI+MzTuMMvcvG8QDo2YUh+vvI2Z9ea+H1zQdn79qHjP09OG5bD4AQSTZCNB8LiPQHspriUrvQA8WC+qSkF8yeZ9op+isHw6WIw0UU5KSEMt560whARTQt980wJodPFOdw1JfPNdhF7UIY3gDUwluK3lVH+mrSDJJr87iLKZ9dcXBwnMOcuFOx2rdblkOnkU0XL3amE6g6oP+/P4X2yvioU5ogiGenhjBOcDzVCiE2gkwGF3CGDXrsCee5oXRPBBV0ZvRoxZX2N/9wD+Adqk3A==" ], "ARC-Message-Signature": [ "i=2; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1765984605; c=relaxed/simple;\n\tbh=XxV654qT010yfLqQ99uubGh0AZS0QtmDmNC1jlPsfts=;\n\th=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:\n\t Content-Type:MIME-Version;\n b=YHmg+p4HYAsSX7XqWpgp3SNhy4QOdg5NDHVvuTImp/kmDbV1kRmAidGUFsasjN9K7gVb+dpI11b+4xSzQIYvtUCjv/IlQOaylyrNhbRiSSQA/YpZImMxGFpV8HpcE01fNp64kWTWU1QwX8txPPcSITiLxZMCpL7ffZPcKuuwZZE=", "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=VUuYeMpUK68Hba0iinbGxC+9YEVxmqsLgGgIWoMUNxA=;\n b=wCEnSw5hdeFPy9kWjvWTTYlGsLVuFtU7GnaQWT1wK4CIGsvPead+DJpFZpMWFXvbBHb+CvqcbLwz4HzbLcAgMehdWd8dxZNAS4V3Shjg3wgX/Ju2jsW7TddfhF940EhipI1PksXZq3MYDwRL4Mn8Y2d2YwKUNRDhemx14v1CfyrQzFxv4H+6BWiBuRXNOz63ta4lwvrAhyZTiYZZQMFHSYQaEhUyu7IHd9WsTZELRg1YBQ11nx8pGtu/Fw40BGD/FrJYv3g29fcbn1iPs3RDU1krAERgwH1vCdwGnYAzZHd62UqMxXqxKl6XUlhn/T9seIpqnIu31CLcu2cPrtZLug==" ], "ARC-Authentication-Results": [ "i=2; smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=valinux.co.jp;\n spf=pass smtp.mailfrom=valinux.co.jp;\n dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp\n header.b=Ke3yNDkx; arc=fail smtp.client-ip=40.107.74.52", "i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=valinux.co.jp; dmarc=pass action=none\n header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp;\n s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=VUuYeMpUK68Hba0iinbGxC+9YEVxmqsLgGgIWoMUNxA=;\n b=Ke3yNDkxqHb5w3X8UuborJdgiifu7QiS9sfAE07UplI+2Hdpc/zON3kImlF9EPtQcxFNPkEcgW62pVcQlbmx8BaossG0oSABuvpU1x7+Lj1/YuyQkAhMtSEcxNXVKeRLt3MIArOHI2Isrz47EVM4Q9s0FirHY/cSLkSmbqDJ4yQ=", "From": "Koichiro Den <den@valinux.co.jp>", "To": "Frank.Li@nxp.com,\n\tdave.jiang@intel.com,\n\tntb@lists.linux.dev,\n\tlinux-pci@vger.kernel.org,\n\tdmaengine@vger.kernel.org,\n\tlinux-renesas-soc@vger.kernel.org,\n\tnetdev@vger.kernel.org,\n\tlinux-kernel@vger.kernel.org", "Cc": "mani@kernel.org,\n\tkwilczynski@kernel.org,\n\tkishon@kernel.org,\n\tbhelgaas@google.com,\n\tcorbet@lwn.net,\n\tgeert+renesas@glider.be,\n\tmagnus.damm@gmail.com,\n\trobh@kernel.org,\n\tkrzk+dt@kernel.org,\n\tconor+dt@kernel.org,\n\tvkoul@kernel.org,\n\tjoro@8bytes.org,\n\twill@kernel.org,\n\trobin.murphy@arm.com,\n\tjdmason@kudzu.us,\n\tallenbh@gmail.com,\n\tandrew+netdev@lunn.ch,\n\tdavem@davemloft.net,\n\tedumazet@google.com,\n\tkuba@kernel.org,\n\tpabeni@redhat.com,\n\tBasavaraj.Natikar@amd.com,\n\tShyam-sundar.S-k@amd.com,\n\tkurt.schwemmer@microsemi.com,\n\tlogang@deltatee.com,\n\tjingoohan1@gmail.com,\n\tlpieralisi@kernel.org,\n\tutkarsh02t@gmail.com,\n\tjbrunet@baylibre.com,\n\tdlemoal@kernel.org,\n\tarnd@arndb.de,\n\telfring@users.sourceforge.net,\n\tden@valinux.co.jp", "Subject": "[RFC PATCH v3 15/35] NTB: ntb_transport: Move internal types to\n ntb_transport_internal.h", "Date": "Thu, 18 Dec 2025 00:15:49 +0900", "Message-ID": "<20251217151609.3162665-16-den@valinux.co.jp>", "X-Mailer": "git-send-email 2.51.0", "In-Reply-To": "<20251217151609.3162665-1-den@valinux.co.jp>", "References": "<20251217151609.3162665-1-den@valinux.co.jp>", "Content-Transfer-Encoding": "8bit", "Content-Type": "text/plain", "X-ClientProxiedBy": "TYCPR01CA0165.jpnprd01.prod.outlook.com\n (2603:1096:400:2b1::18) To TYWP286MB2697.JPNP286.PROD.OUTLOOK.COM\n (2603:1096:400:24c::11)", "Precedence": "bulk", "X-Mailing-List": "linux-pci@vger.kernel.org", "List-Id": "<linux-pci.vger.kernel.org>", "List-Subscribe": "<mailto:linux-pci+subscribe@vger.kernel.org>", "List-Unsubscribe": "<mailto:linux-pci+unsubscribe@vger.kernel.org>", "MIME-Version": "1.0", "X-MS-PublicTrafficType": "Email", "X-MS-TrafficTypeDiagnostic": "TYWP286MB2697:EE_|OS9P286MB4633:EE_", "X-MS-Office365-Filtering-Correlation-Id": "f6e9b233-bf32-446e-a025-08de3d7f3f8a", "X-MS-Exchange-SenderADCheck": "1", "X-MS-Exchange-AntiSpam-Relay": "0", "X-Microsoft-Antispam": "\n\tBCL:0;ARA:13230040|10070799003|376014|7416014|1800799024|366016;", "X-Microsoft-Antispam-Message-Info": "\n Cm37kvuiBxf0gVklDrYNYKz6BAi+pxlgoejZl4kpBVBGsdwHWjAjNgiYTc5kDrQWSuo+kY+YaT/olAVoOHsBDH9j237gZjcbj8K+pyoxMHycqwQq9blYQnRc3Wf0cGvBYOBHUBkArHeObiJiCTbiqG5mLu48A+P0EmFK0hChqU0duIyFhKIdbT2IHH3ZKiRRgq26Bomze2J/joOKVOZ6yAoIdZ+pBgCOJKjp6t6zPpdFyFQokXzBImi+jinfw8xHBvLI0EFiXo3rZTGysIh432Prv/BMUKHDdCu93iPODEM17EQDau7jLrteYu2YY2Q54dKCG9VwYPF4W6LQsgsbHfCPq646VYxFNP01AKk37xYzLrxYzayRkw3CiZDdWesH7e4RKFRKkYr8wW+OcimHwe98+wjBycSLt3JVXEvGnCGkdfGqglNey370e4VXm2dk2j6m/AtjMOHhH/YRJfnbY+nhkapFpq9xYKDmcsw94drbQim9G4TT5jr8/c5tItXoxW7UuN+kXj/I3X1YdTZ8CSOjc2oJeaSr+8LBkhMoMmUGeKp0JCUaAfjUtrRF/P8uMLkwEh/noouZKo679sXm5z2SzTsxqGb9/g2TciLgc+Xe4gLvxsnj8UQgmLQ+Xu2PDoPqaRh/2nlBL0pWdplcpCCt6ItmJbyMmrTtxV/d1ckuxlWxghR29ZsQhDQjWq1cVH1TjhzL+xgyDy0IODAAJiyHAqrVS9ajv47UKiWTn4pvdkD+zVzIODREyGm7yIfZPyHxumDjssieYfD0gl7JEVfWZhIoTC6+zOEK75JjZvfEmYGkmqePCoHtZCUjcFM1gvZ40VLhB41wuIVypoPUylr4f4VD0o1YSTZalr+S7kPRGgCsY4ejZevPruLNuKNBmtzb8lOPvDMzsWcR+8ZAwuqmNDM2LJKVTiMWbtEkyH1gwzSFzBRDDlSixKYhqBhBNTkk6IgCQHQlRse6TDah6IfxGpc38pF8ROUZmy4j9ExstWaYGYERggcPnFZyIUoujDXlNcUHM5w2vWe0IPRQhKegxdxCbBYPfNKbPQ6V3tGzfCSENYAyIn58OmEoBp8nOX/82OzwUgXREzshw8R/Am/jF1uNgI8hcLPRzoWEJNp4+n1Vch3YkGvOZ2mmnpEbZXHzql3T1sm8ni+mCjbwjvU+F0FYIaZkmrXkbmeCo9V5LaxO+n7odTqpqPzJJ7xgKDfSQ6RtW6fsAZ4KX0rLcS9E9GnMTbiV6CmZ8Rf75l6ChD5He1s0103C2dSRAnLn5TsOpJeOcDkbzcbnZD5OXSC5ay9u6KGowysKSymrCBsZStaXNQ8XTzsBd9ijPBJ970njYyg9AaXibWgiZS7dmFJ4bfH+bjiCH+q4eY16FdGr4FnT7tcFkBELPtnGn2L1NLWbS1VbsGconutk3OBX74yWvbjGGKGwds0NW11tLcutOTiPGvz71LlJFTu5RaCG", "X-Forefront-Antispam-Report": "\n\tCIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYWP286MB2697.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(10070799003)(376014)(7416014)(1800799024)(366016);DIR:OUT;SFP:1101;", "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1", "X-MS-Exchange-AntiSpam-MessageData-0": "\n 5dUJaeI7ZkY6yaWvukIdpgVxdKzhsb7SdoziadpsFD82uDFN3bLn1Cqx02Kn4Mur+B2SHO9euPfiZg3rYSMirvD/casEx7K3czcVdFa+HqAe4//VCh38zWqUaDTsDU+aPuhNNDhD6q9U8a19Tw0nxCWrbAXrImQi3OAFhsjYFTEG7P8l/nwH6YA0Dq6C5wxuWCu/3CtGfhLhYr40whjKiSziIw0+ncZsLY6rb9JcBzAfJCTwtBOUFJ9x+y7M673U84bcsyeQvBX886Iy/gdyclixKp/ssrbRzF5BYkRsRAfSDZF+RHo6zPECtaH9mT3yczyMmFjEW6mBKzq5BDg1vdWEwQMAtLDi71sSOXyXhnlaugjeRI0KF8JOS/jijud8mhWGxHS8BuIhapwpob99wRm8PUHg0KjP7nzWXj3llWkYoyPTCnlxpmSgnaUACWl9Fmj9ShpPW4vBZ7m1T00JTRUCp28wet9dE8QFVXM9ou18m95TGT06rfvQ2Pp4d7O+DhNF+QpTrtNSxPpK47JaLKSQMLOGHg6J+lrazCISqww5/7xwn4BaJI9ebel53bGT/P83ibdcNWps6tBEifdIPs0GAwXJZK1CP/lTiBTZ1RqID1LaQQNiEmWSqk/XzfpgXQwbtbc/NVHuwzDFo3zC0lwIzoPPvdOc2ShYOKXDfS9Spssbg4170cbLZlC+mbdIu1xdK1i4QZkC8wdi8pIq1EbFUqGWr9aFf+PtBiJe/h8RfHQyQftjbNDGhvchWRk3PgnoLhZWJguocXw9mzN+Zma5hJ208bKZ8n9gfkLqc9sfZf9ssJ6TFPm03V7/xmPkHWN5kXPLJrHrslxaGJOqVRVbhDoUPwi3OSzT+EPD/KXd1yU9L8r5JrXYmqSrcPoFD5Ak/TG4aAcFwUmqcW3sz/tjd5vltF7LuEgWxTzUjkOv1Ae0Ul2ej5rXSG/U5Mx2p6kE8FHAsJJaV24rkXRcu4nrbGc/N9tQoI+4NXMsRG7cfbvkyZR3/qmdCKe+llwNgONSDO2Hc/MQMSDel9Bvz7JgcWDcaKnYfnlFP4s6tecaMKmr02VDia3c/GvUiW3d40dgDDGI5GFl6AzT0hqJ1aq2vwnV4yyvVbx5kvVCZB7ZnYvfwrws/PybkpuOf6N7mbpQeEJibfsL1y2LcKn9WMdel3Uqv880TiSgLqk2Is/6HhJvkVUqprTxQPtYZDhmVoFB2JAmUJ3TvSh7kCzkzb+M7CuISnHDSqEhUXHrvUFOFSpjoriELr6EqpwNsV5AiLHAQHmNVG+VNk1OwlKkjzbZatHIEfaGCreF8jvCwu6mBcRv7NsK+wb8KLzcqp5wM7RrQ+JfTkNcekmEgxrnCIKa2lcYhlNKlh3oAiy+fauT1GECGShzL9xiLDQZaCnd1u/1BI/VEJ4BNYlG3lXY1bN/WK2l0vMNsS8BQC+2c5TNaqYPY95BczfJ0yLxs522vMaZm0BZ9WiTzeTXYYQR+qPNZkr/9g/o/H5FBmATRgq7W8dEUkHNSvIw+98pZRz2OEHRZua64g7qeS700+TtYhYUCDfN/zuPZvs9uwHHak4wV2gvCdj1zYL9ulHYhm3IVoDa8yFkp50XXzNYamfjB8GP7iX7JvEu8CUEXVwVtgk=", "X-OriginatorOrg": "valinux.co.jp", "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n f6e9b233-bf32-446e-a025-08de3d7f3f8a", "X-MS-Exchange-CrossTenant-AuthSource": "TYWP286MB2697.JPNP286.PROD.OUTLOOK.COM", "X-MS-Exchange-CrossTenant-AuthAs": "Internal", "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "17 Dec 2025 15:16:27.0034\n (UTC)", "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted", "X-MS-Exchange-CrossTenant-Id": "7a57bee8-f73d-4c5f-a4f7-d72c91c8c111", "X-MS-Exchange-CrossTenant-MailboxType": "HOSTED", "X-MS-Exchange-CrossTenant-UserPrincipalName": "\n MPD2p9BXBuxg30LzoEVEZ1lQ7+3UJTgfgR+u+RUuUkL90kTUFMVAx3fQJ3NfjPQKnblYFT13Ib2Z1LRXQBp7Vg==", "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "OS9P286MB4633" }, "content": "No functional changes intended.\n\nSigned-off-by: Koichiro Den <den@valinux.co.jp>\n---\n drivers/ntb/ntb_transport.c | 168 ++-------------------------\n drivers/ntb/ntb_transport_internal.h | 164 ++++++++++++++++++++++++++\n include/linux/ntb_transport.h | 5 +\n 3 files changed, 181 insertions(+), 156 deletions(-)\n create mode 100644 drivers/ntb/ntb_transport_internal.h", "diff": "diff --git a/drivers/ntb/ntb_transport.c b/drivers/ntb/ntb_transport.c\nindex 78d0469edbcc..3969fa29a5b9 100644\n--- a/drivers/ntb/ntb_transport.c\n+++ b/drivers/ntb/ntb_transport.c\n@@ -65,6 +65,8 @@\n #include \"linux/ntb_transport.h\"\n #include <linux/pci-epc.h>\n \n+#include \"ntb_transport_internal.h\"\n+\n #define NTB_TRANSPORT_VERSION\t4\n #define NTB_TRANSPORT_VER\t\"4\"\n #define NTB_TRANSPORT_NAME\t\"ntb_transport\"\n@@ -76,11 +78,11 @@ MODULE_VERSION(NTB_TRANSPORT_VER);\n MODULE_LICENSE(\"Dual BSD/GPL\");\n MODULE_AUTHOR(\"Intel Corporation\");\n \n-static unsigned long max_mw_size;\n+unsigned long max_mw_size;\n module_param(max_mw_size, ulong, 0644);\n MODULE_PARM_DESC(max_mw_size, \"Limit size of large memory windows\");\n \n-static unsigned int transport_mtu = 0x10000;\n+unsigned int transport_mtu = 0x10000;\n module_param(transport_mtu, uint, 0644);\n MODULE_PARM_DESC(transport_mtu, \"Maximum size of NTB transport packets\");\n \n@@ -96,7 +98,7 @@ static bool use_dma;\n module_param(use_dma, bool, 0644);\n MODULE_PARM_DESC(use_dma, \"Use DMA engine to perform large data copy\");\n \n-static bool use_msi;\n+bool use_msi;\n #ifdef CONFIG_NTB_MSI\n module_param(use_msi, bool, 0644);\n MODULE_PARM_DESC(use_msi, \"Use MSI interrupts instead of doorbells\");\n@@ -107,153 +109,12 @@ static struct dentry *nt_debugfs_dir;\n /* Only two-ports NTB devices are supported */\n #define PIDX\t\tNTB_DEF_PEER_IDX\n \n-struct ntb_queue_entry {\n-\t/* ntb_queue list reference */\n-\tstruct list_head entry;\n-\t/* pointers to data to be transferred */\n-\tvoid *cb_data;\n-\tvoid *buf;\n-\tunsigned int len;\n-\tunsigned int flags;\n-\tint retries;\n-\tint errors;\n-\tunsigned int tx_index;\n-\tunsigned int rx_index;\n-\n-\tstruct ntb_transport_qp *qp;\n-\tunion {\n-\t\tstruct ntb_payload_header __iomem *tx_hdr;\n-\t\tstruct ntb_payload_header *rx_hdr;\n-\t};\n-};\n-\n-struct ntb_rx_info {\n-\tunsigned int entry;\n-};\n-\n-struct ntb_transport_qp {\n-\tstruct ntb_transport_ctx *transport;\n-\tstruct ntb_dev *ndev;\n-\tvoid *cb_data;\n-\tstruct dma_chan *tx_dma_chan;\n-\tstruct dma_chan *rx_dma_chan;\n-\n-\tbool client_ready;\n-\tbool link_is_up;\n-\tbool active;\n-\n-\tu8 qp_num;\t/* Only 64 QP's are allowed. 0-63 */\n-\tu64 qp_bit;\n-\n-\tstruct ntb_rx_info __iomem *rx_info;\n-\tstruct ntb_rx_info *remote_rx_info;\n-\n-\tvoid (*tx_handler)(struct ntb_transport_qp *qp, void *qp_data,\n-\t\t\t void *data, int len);\n-\tstruct list_head tx_free_q;\n-\tspinlock_t ntb_tx_free_q_lock;\n-\tvoid __iomem *tx_mw;\n-\tphys_addr_t tx_mw_phys;\n-\tsize_t tx_mw_size;\n-\tdma_addr_t tx_mw_dma_addr;\n-\tunsigned int tx_index;\n-\tunsigned int tx_max_entry;\n-\tunsigned int tx_max_frame;\n-\n-\tvoid (*rx_handler)(struct ntb_transport_qp *qp, void *qp_data,\n-\t\t\t void *data, int len);\n-\tstruct list_head rx_post_q;\n-\tstruct list_head rx_pend_q;\n-\tstruct list_head rx_free_q;\n-\t/* ntb_rx_q_lock: synchronize access to rx_XXXX_q */\n-\tspinlock_t ntb_rx_q_lock;\n-\tvoid *rx_buff;\n-\tunsigned int rx_index;\n-\tunsigned int rx_max_entry;\n-\tunsigned int rx_max_frame;\n-\tunsigned int rx_alloc_entry;\n-\tdma_cookie_t last_cookie;\n-\tstruct tasklet_struct rxc_db_work;\n-\n-\tvoid (*event_handler)(void *data, int status);\n-\tstruct delayed_work link_work;\n-\tstruct work_struct link_cleanup;\n-\n-\tstruct dentry *debugfs_dir;\n-\tstruct dentry *debugfs_stats;\n-\n-\t/* Stats */\n-\tu64 rx_bytes;\n-\tu64 rx_pkts;\n-\tu64 rx_ring_empty;\n-\tu64 rx_err_no_buf;\n-\tu64 rx_err_oflow;\n-\tu64 rx_err_ver;\n-\tu64 rx_memcpy;\n-\tu64 rx_async;\n-\tu64 tx_bytes;\n-\tu64 tx_pkts;\n-\tu64 tx_ring_full;\n-\tu64 tx_err_no_buf;\n-\tu64 tx_memcpy;\n-\tu64 tx_async;\n-\n-\tbool use_msi;\n-\tint msi_irq;\n-\tstruct ntb_msi_desc msi_desc;\n-\tstruct ntb_msi_desc peer_msi_desc;\n-};\n-\n-struct ntb_transport_mw {\n-\tphys_addr_t phys_addr;\n-\tresource_size_t phys_size;\n-\tvoid __iomem *vbase;\n-\tsize_t xlat_size;\n-\tsize_t buff_size;\n-\tsize_t alloc_size;\n-\tvoid *alloc_addr;\n-\tvoid *virt_addr;\n-\tdma_addr_t dma_addr;\n-};\n-\n struct ntb_transport_client_dev {\n \tstruct list_head entry;\n \tstruct ntb_transport_ctx *nt;\n \tstruct device dev;\n };\n \n-struct ntb_transport_ctx {\n-\tstruct list_head entry;\n-\tstruct list_head client_devs;\n-\n-\tstruct ntb_dev *ndev;\n-\n-\tstruct ntb_transport_mw *mw_vec;\n-\tstruct ntb_transport_qp *qp_vec;\n-\tunsigned int mw_count;\n-\tunsigned int qp_count;\n-\tu64 qp_bitmap;\n-\tu64 qp_bitmap_free;\n-\n-\tbool use_msi;\n-\tunsigned int msi_spad_offset;\n-\tu64 msi_db_mask;\n-\n-\tbool link_is_up;\n-\tstruct delayed_work link_work;\n-\tstruct work_struct link_cleanup;\n-\n-\tstruct dentry *debugfs_node_dir;\n-\n-\t/* Make sure workq of link event be executed serially */\n-\tstruct mutex link_event_lock;\n-};\n-\n-enum {\n-\tDESC_DONE_FLAG = BIT(0),\n-\tLINK_DOWN_FLAG = BIT(1),\n-};\n-\n struct ntb_payload_header {\n \tunsigned int ver;\n \tunsigned int len;\n@@ -268,7 +129,7 @@ struct ntb_payload_header {\n * DMA capabilities and IOMMU configuration are taken from the\n * controller rather than the virtual NTB PCI function.\n */\n-static struct device *get_dma_dev(struct ntb_dev *ndev)\n+struct device *get_dma_dev(struct ntb_dev *ndev)\n {\n \tstruct device *dev = &ndev->pdev->dev;\n \tstruct pci_epc *epc;\n@@ -295,7 +156,6 @@ enum {\n #define drv_client(__drv) \\\n \tcontainer_of((__drv), struct ntb_transport_client, driver)\n \n-#define QP_TO_MW(nt, qp)\t((qp) % nt->mw_count)\n #define NTB_QP_DEF_NUM_ENTRIES\t100\n #define NTB_LINK_DOWN_TIMEOUT\t10\n \n@@ -532,8 +392,7 @@ static int ntb_qp_debugfs_stats_show(struct seq_file *s, void *v)\n }\n DEFINE_SHOW_ATTRIBUTE(ntb_qp_debugfs_stats);\n \n-static void ntb_list_add(spinlock_t *lock, struct list_head *entry,\n-\t\t\t struct list_head *list)\n+void ntb_list_add(spinlock_t *lock, struct list_head *entry, struct list_head *list)\n {\n \tunsigned long flags;\n \n@@ -542,8 +401,7 @@ static void ntb_list_add(spinlock_t *lock, struct list_head *entry,\n \tspin_unlock_irqrestore(lock, flags);\n }\n \n-static struct ntb_queue_entry *ntb_list_rm(spinlock_t *lock,\n-\t\t\t\t\t struct list_head *list)\n+struct ntb_queue_entry *ntb_list_rm(spinlock_t *lock, struct list_head *list)\n {\n \tstruct ntb_queue_entry *entry;\n \tunsigned long flags;\n@@ -562,9 +420,8 @@ static struct ntb_queue_entry *ntb_list_rm(spinlock_t *lock,\n \treturn entry;\n }\n \n-static struct ntb_queue_entry *ntb_list_mv(spinlock_t *lock,\n-\t\t\t\t\t struct list_head *list,\n-\t\t\t\t\t struct list_head *to_list)\n+struct ntb_queue_entry *ntb_list_mv(spinlock_t *lock, struct list_head *list,\n+\t\t\t\t struct list_head *to_list)\n {\n \tstruct ntb_queue_entry *entry;\n \tunsigned long flags;\n@@ -982,7 +839,7 @@ static void ntb_qp_link_cleanup_work(struct work_struct *work)\n \t\t\t\t msecs_to_jiffies(NTB_LINK_DOWN_TIMEOUT));\n }\n \n-static void ntb_qp_link_down(struct ntb_transport_qp *qp)\n+void ntb_qp_link_down(struct ntb_transport_qp *qp)\n {\n \tschedule_work(&qp->link_cleanup);\n }\n@@ -1194,8 +1051,7 @@ static void ntb_qp_link_work(struct work_struct *work)\n \t\t\t\t msecs_to_jiffies(NTB_LINK_DOWN_TIMEOUT));\n }\n \n-static int ntb_transport_init_queue(struct ntb_transport_ctx *nt,\n-\t\t\t\t unsigned int qp_num)\n+int ntb_transport_init_queue(struct ntb_transport_ctx *nt, unsigned int qp_num)\n {\n \tstruct ntb_transport_qp *qp;\n \ndiff --git a/drivers/ntb/ntb_transport_internal.h b/drivers/ntb/ntb_transport_internal.h\nnew file mode 100644\nindex 000000000000..79c7dbcf6f91\n--- /dev/null\n+++ b/drivers/ntb/ntb_transport_internal.h\n@@ -0,0 +1,164 @@\n+/* SPDX-License-Identifier: GPL-2.0-only */\n+\n+#ifndef _NTB_TRANSPORT_INTERNAL_H_\n+#define _NTB_TRANSPORT_INTERNAL_H_\n+\n+#include <linux/ntb_transport.h>\n+\n+extern unsigned long max_mw_size;\n+extern unsigned int transport_mtu;\n+extern bool use_msi;\n+\n+#define QP_TO_MW(nt, qp)\t((qp) % nt->mw_count)\n+\n+struct ntb_queue_entry {\n+\t/* ntb_queue list reference */\n+\tstruct list_head entry;\n+\t/* pointers to data to be transferred */\n+\tvoid *cb_data;\n+\tvoid *buf;\n+\tunsigned int len;\n+\tunsigned int flags;\n+\tint retries;\n+\tint errors;\n+\tunsigned int tx_index;\n+\tunsigned int rx_index;\n+\n+\tstruct ntb_transport_qp *qp;\n+\tunion {\n+\t\tstruct ntb_payload_header __iomem *tx_hdr;\n+\t\tstruct ntb_payload_header *rx_hdr;\n+\t};\n+};\n+\n+struct ntb_rx_info {\n+\tunsigned int entry;\n+};\n+\n+struct ntb_transport_qp {\n+\tstruct ntb_transport_ctx *transport;\n+\tstruct ntb_dev *ndev;\n+\tvoid *cb_data;\n+\tstruct dma_chan *tx_dma_chan;\n+\tstruct dma_chan *rx_dma_chan;\n+\n+\tbool client_ready;\n+\tbool link_is_up;\n+\tbool active;\n+\n+\tu8 qp_num;\t/* Only 64 QP's are allowed. 0-63 */\n+\tu64 qp_bit;\n+\n+\tstruct ntb_rx_info __iomem *rx_info;\n+\tstruct ntb_rx_info *remote_rx_info;\n+\n+\tvoid (*tx_handler)(struct ntb_transport_qp *qp, void *qp_data,\n+\t\t\t void *data, int len);\n+\tstruct list_head tx_free_q;\n+\tspinlock_t ntb_tx_free_q_lock;\n+\tvoid __iomem *tx_mw;\n+\tphys_addr_t tx_mw_phys;\n+\tsize_t tx_mw_size;\n+\tdma_addr_t tx_mw_dma_addr;\n+\tunsigned int tx_index;\n+\tunsigned int tx_max_entry;\n+\tunsigned int tx_max_frame;\n+\n+\tvoid (*rx_handler)(struct ntb_transport_qp *qp, void *qp_data,\n+\t\t\t void *data, int len);\n+\tstruct list_head rx_post_q;\n+\tstruct list_head rx_pend_q;\n+\tstruct list_head rx_free_q;\n+\t/* ntb_rx_q_lock: synchronize access to rx_XXXX_q */\n+\tspinlock_t ntb_rx_q_lock;\n+\tvoid *rx_buff;\n+\tunsigned int rx_index;\n+\tunsigned int rx_max_entry;\n+\tunsigned int rx_max_frame;\n+\tunsigned int rx_alloc_entry;\n+\tdma_cookie_t last_cookie;\n+\tstruct tasklet_struct rxc_db_work;\n+\n+\tvoid (*event_handler)(void *data, int status);\n+\tstruct delayed_work link_work;\n+\tstruct work_struct link_cleanup;\n+\n+\tstruct dentry *debugfs_dir;\n+\tstruct dentry *debugfs_stats;\n+\n+\t/* Stats */\n+\tu64 rx_bytes;\n+\tu64 rx_pkts;\n+\tu64 rx_ring_empty;\n+\tu64 rx_err_no_buf;\n+\tu64 rx_err_oflow;\n+\tu64 rx_err_ver;\n+\tu64 rx_memcpy;\n+\tu64 rx_async;\n+\tu64 tx_bytes;\n+\tu64 tx_pkts;\n+\tu64 tx_ring_full;\n+\tu64 tx_err_no_buf;\n+\tu64 tx_memcpy;\n+\tu64 tx_async;\n+\n+\tbool use_msi;\n+\tint msi_irq;\n+\tstruct ntb_msi_desc msi_desc;\n+\tstruct ntb_msi_desc peer_msi_desc;\n+};\n+\n+struct ntb_transport_mw {\n+\tphys_addr_t phys_addr;\n+\tresource_size_t phys_size;\n+\tvoid __iomem *vbase;\n+\tsize_t xlat_size;\n+\tsize_t buff_size;\n+\tsize_t alloc_size;\n+\tvoid *alloc_addr;\n+\tvoid *virt_addr;\n+\tdma_addr_t dma_addr;\n+};\n+\n+struct ntb_transport_ctx {\n+\tstruct list_head entry;\n+\tstruct list_head client_devs;\n+\n+\tstruct ntb_dev *ndev;\n+\n+\tstruct ntb_transport_mw *mw_vec;\n+\tstruct ntb_transport_qp *qp_vec;\n+\tunsigned int mw_count;\n+\tunsigned int qp_count;\n+\tu64 qp_bitmap;\n+\tu64 qp_bitmap_free;\n+\n+\tbool use_msi;\n+\tunsigned int msi_spad_offset;\n+\tu64 msi_db_mask;\n+\n+\tbool link_is_up;\n+\tstruct delayed_work link_work;\n+\tstruct work_struct link_cleanup;\n+\n+\tstruct dentry *debugfs_node_dir;\n+\n+\t/* Make sure workq of link event be executed serially */\n+\tstruct mutex link_event_lock;\n+};\n+\n+enum {\n+\tDESC_DONE_FLAG = BIT(0),\n+\tLINK_DOWN_FLAG = BIT(1),\n+};\n+\n+void ntb_list_add(spinlock_t *lock, struct list_head *entry, struct list_head *list);\n+struct ntb_queue_entry *ntb_list_rm(spinlock_t *lock, struct list_head *list);\n+struct ntb_queue_entry *ntb_list_mv(spinlock_t *lock, struct list_head *list,\n+\t\t\t\t struct list_head *to_list);\n+void ntb_qp_link_down(struct ntb_transport_qp *qp);\n+int ntb_transport_init_queue(struct ntb_transport_ctx *nt,\n+\t\t\t unsigned int qp_num);\n+struct device *get_dma_dev(struct ntb_dev *ndev);\n+\n+#endif /* _NTB_TRANSPORT_INTERNAL_H_ */\ndiff --git a/include/linux/ntb_transport.h b/include/linux/ntb_transport.h\nindex 7243eb98a722..b128ced77b39 100644\n--- a/include/linux/ntb_transport.h\n+++ b/include/linux/ntb_transport.h\n@@ -48,6 +48,9 @@\n * Jon Mason <jon.mason@intel.com>\n */\n \n+#ifndef __LINUX_NTB_TRANSPORT_H\n+#define __LINUX_NTB_TRANSPORT_H\n+\n struct ntb_transport_qp;\n \n struct ntb_transport_client {\n@@ -84,3 +87,5 @@ void ntb_transport_link_up(struct ntb_transport_qp *qp);\n void ntb_transport_link_down(struct ntb_transport_qp *qp);\n bool ntb_transport_link_query(struct ntb_transport_qp *qp);\n unsigned int ntb_transport_tx_free_entry(struct ntb_transport_qp *qp);\n+\n+#endif /* __LINUX_NTB_TRANSPORT_H */\n", "prefixes": [ "RFC", "v3", "15/35" ] }