From nobody Sun Dec 14 06:37:03 2025 Received: from mx0a-0024c301.pphosted.com (mx0a-0024c301.pphosted.com [148.163.149.154]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 65E0E32ED32 for ; Fri, 14 Nov 2025 15:33:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=148.163.149.154 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763134392; cv=fail; b=Nimneryg4Zu2eYJUITSUzKbRfnDfgV8nCTsCqs9hLYl+rdzl8sPPy7d/K9R+dMXcrYY5iEb5gKMbT59pFkjQ/7lEgZWcMBJskWKVt0eHD8osDlDvoatu4402EXUsP+dtRcjfUREjyDIzLAhkEOZlQhy4w1h4fKGA2qS9Hio4P0M= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763134392; c=relaxed/simple; bh=NlFgqngw/wpUXZ1C1MvRdj+8FhCV+F3MqgjbnF/ll2s=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=orbVw6xzwB/cqoYl6N4wgvJBDad1tckDYMyX09DSfuUTlM8ioX6kzvbaqSj0+KkJaTnzmr3LjMUbpPjuWbAu5SHxYcTJHqi5JsjPINW/0GrfNDr2PUIaWnRV2e2Gd+MQk5DoRpcSpNizy4WKbDj5kC8s6Bpz9tt5YvA+zfYlirY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=silabs.com; spf=pass smtp.mailfrom=silabs.com; dkim=pass (2048-bit key) header.d=silabs.com header.i=@silabs.com header.b=VIclOvS5; dkim=pass (1024-bit key) header.d=silabs.com header.i=@silabs.com header.b=MAFKaDpy; arc=fail smtp.client-ip=148.163.149.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=silabs.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=silabs.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=silabs.com header.i=@silabs.com header.b="VIclOvS5"; dkim=pass (1024-bit key) header.d=silabs.com header.i=@silabs.com header.b="MAFKaDpy" Received: from pps.filterd (m0101743.ppops.net [127.0.0.1]) by mx0a-0024c301.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5AE9uiJY2132830; Fri, 14 Nov 2025 09:08:10 -0600 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silabs.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pps12202023; bh=rcD16d09g6Ybw8axric/7jOIu/Wn3wWxsvgHlW/Ii2A=; b=VIclOvS5xFUX tgLBZED4zy50/gmIhXrsTpiE0H4sFYiC9qkksKc1pRwZ05Uu5PHqYwWkK9/Mz2/w KqXuzfezD0LxK/f4gNus2582bpb9qKltPpvwy4WDZRlrdfq3FwJBn23oL4Cg7bhC wIfxRkz9o5ie+gjFgbx+VUwP/9Uu2QHBK3SDVXhND+dVT10r/WmEXKf4xkgedfIE uYu0xG05Juk4tTCL/9HP+usSOYAfz084UCf67eLT+5NiYOilKLUtTzaFTEfCB5XO fn/zNTt9x9CqBqI3yPP0aMDz6YxWEpJGCpsEI7V2YkDeUPDto3+bzPaGD4KQu/lG PXXrHmZnYg== Received: from dm5pr21cu001.outbound.protection.outlook.com (mail-centralusazon11021143.outbound.protection.outlook.com [52.101.62.143]) by mx0a-0024c301.pphosted.com (PPS) with ESMTPS id 4ae285rk08-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 14 Nov 2025 09:08:10 -0600 (CST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=MEMgryjAXwYFJVACjDW4vfWMDPFrv5IvFLXSEppOwGXdI9dIATvtWWGSLUn6UyXzZp2FD5ceuMjWRACHwjCWKKEr15FgOkaSlC358/NBLsRkbBRRPn394vHac+VpYkeDm0AdYBd2HWlV5Q5kPbgNpTEvsv0TANsVkJzIVtpgRJTtDM1EFdxG8T44evFnRwB22xEa1Hzgzzb2JAwpFez3sOEjSyZDqyuLkbEZu4EuurPr1/xJFUXjQjoW9N9K0ULLZMvNzBRI30nga2f5ishCi8LNkyuO0cAn9Q/1qUDo63a+a1MUJgc2yk/yQr2KQK+BQed7jQ2bgzO3af1kLzgpGw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=rcD16d09g6Ybw8axric/7jOIu/Wn3wWxsvgHlW/Ii2A=; b=VLes3k7KjgM1h3A1d9HjbPp/cnhRFVC3HoUn92zC0ND3hp3g5s5EI/qS3BmHyhthYKy/y76SV8u0nF1U6VHNJN29Tzk/JH3xvncSgB1Iisom9F4kEbWW3Fd2TaNzsOCdL+x2s9VBKrsdbxGsb8VrOwgMUA+WpBzztOtFy7jvCIxXF5EnkV/eM7CLfCtGcgUOKMKRSFU2QJs/6zxo6k90RR37Ak0kpS6CHwRdwp5tw1jGPSGIcFYRtg2l20nIFEVTzV3rDxbkQj/8LrjISpVkx9kEF23G9XlXEFlN1nQHBbka5/6Vs4LqtXoOp5rAhzED3dDhlXXb3RawksmwuppZWA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=silabs.com; dmarc=pass action=none header.from=silabs.com; dkim=pass header.d=silabs.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silabs.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=rcD16d09g6Ybw8axric/7jOIu/Wn3wWxsvgHlW/Ii2A=; b=MAFKaDpyQVBkyKmkF+kINTDD23b/3TNcfEcOkJT7SEy8qBxdMN1/Qpjca/TeDzPTa3tmxFqn5N8J+Ip5M5pk6eRUofKCuruMbeOB5q6avmqVOhXhinmkqS+IeUwwf2VZT7zonOYnbUuI3T40s86ntFrC5zVMm9HK7LazfGu7bFY= Received: from DS0PR11MB8205.namprd11.prod.outlook.com (2603:10b6:8:162::17) by MW4PR11MB7005.namprd11.prod.outlook.com (2603:10b6:303:22e::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9320.18; Fri, 14 Nov 2025 15:08:05 +0000 Received: from DS0PR11MB8205.namprd11.prod.outlook.com ([fe80::c508:9b04:3351:524a]) by DS0PR11MB8205.namprd11.prod.outlook.com ([fe80::c508:9b04:3351:524a%5]) with mapi id 15.20.9320.018; Fri, 14 Nov 2025 15:08:05 +0000 From: =?UTF-8?q?Damien=20Ri=C3=A9gel?= To: greybus-dev@lists.linaro.org, Johan Hovold , Alex Elder , Greg Kroah-Hartman , linux-kernel@vger.kernel.org Cc: Silicon Labs Kernel Team , =?UTF-8?q?Damien=20Ri=C3=A9gel?= Subject: [RFC PATCH v2 01/12] greybus: cpc: add minimal CPC Host Device infrastructure Date: Fri, 14 Nov 2025 10:07:27 -0500 Message-ID: <20251114150738.32426-2-damien.riegel@silabs.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251114150738.32426-1-damien.riegel@silabs.com> References: <20251114150738.32426-1-damien.riegel@silabs.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MA5P287CA0046.INDP287.PROD.OUTLOOK.COM (2603:1096:a01:175::12) To DS0PR11MB8205.namprd11.prod.outlook.com (2603:10b6:8:162::17) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS0PR11MB8205:EE_|MW4PR11MB7005:EE_ X-MS-Office365-Filtering-Correlation-Id: a02ad09d-4981-41b3-9f0a-08de238f9cfb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|52116014|366016|376014|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?Wi9Bamh1NVYyUk1jaFpDem42K3RzMStFT0sxaCs2ODc2MFlEL2R4T1ZpQUZ3?= =?utf-8?B?aTVOWFU2dEhjbytXWFFHNTJYL0dIOEptRStBWmRORzl0dGpkRzFLMjEyVXlz?= =?utf-8?B?VHNqNjRDWVlreDM1bFM5OFFreWZXaFY1eVlERjUvWXFqQmVPK0hhaG9xVjcw?= =?utf-8?B?VGd2ZXBEQ0c0NW1FY3NhaGFPYXlIR0tnNGV6dTVYOFU2c0NKWXQzTG1qVUU1?= =?utf-8?B?RldqUnBtMGNSVVhEMUltSDVodnRjVmFzWlhRVTcySUtWcVRiM1dDcXFxQ0Vi?= =?utf-8?B?TGZnZVM2U3VqZGY5MC82U2oxU1RpTThmRlpyN3ZERS9YQmpuZU5SM2hzY3JI?= =?utf-8?B?RlYzQjZPSEVXempLejdkeFk2akQrUHNiVEhoeVVQeDRSU1ZUSHloR296NDQ1?= =?utf-8?B?dlpnRXJNS1I2Z3VBdkhhendvSERvUm1CL1R1MUNrdzB1SnZDRFNXSTRBU1Vz?= =?utf-8?B?b283TTEzeThOTDJidXIvSkRWWndXRkx1bmFwdGZkajBzdG4rc0NNWTB6QU9o?= =?utf-8?B?UXhicWU1R0tnckJ2Zlo4RXAvdVVqWkhKM1dKNU1Scnl0U1BYaE9HVHRrZlNW?= =?utf-8?B?R3FpSXYrRkJtbVQ0UDlPOXpPbFZiZWhGOWtyOGliRHFEZmF5dmdmeVVmWEFC?= =?utf-8?B?WnRKTTJqRzhXYmNQUEVCazhzd0s2WGsxc3BnMDFCTGFkNkp3ckQ3RUo4b2V6?= =?utf-8?B?YlcvQzlVRVRVaXNaR3dac081azRsbE11aHlwdUlreU9kVUNMVXA3WCtnY2ZD?= =?utf-8?B?M0dleVNESHlSb2hxV1FGVmVzQVg5MXNWVVpLNDNsVkU5NHV5QlUycVlQaVZP?= =?utf-8?B?cmVhNTBRekFVYXZMMlRqKzR2OHZTdDRDQ3JwcndqbTQ4clp3Q25aelhnRzZo?= =?utf-8?B?Z1NWT2pDLzVVaHZIbDB1ait2MjJqb3N2Mzh5TW9VTyt2c3cvZG9CaXI1KzFE?= =?utf-8?B?OEhQMklkUk1IUGRhZXZmdjNrOCtIWEJ1Q2JlbDZ2aml1eCsrRGJiSXRFeXRT?= =?utf-8?B?VlRXOFBsSjdaN0I4aTF4K2pBRHpYL3dxZmh5aHhPZUFtNUkyWm1oMFo3dVhB?= =?utf-8?B?ZjBjcFVNY2p3RnhDNVA0VWIxS29hdXdTZC9WZlk4MDRsMktQZjJwcDRkTkRv?= =?utf-8?B?MERYRGl4VTRib1FRUXcxM2tjVzc0YXBRU3pTOVJWNkFrSCsySjNod2NLUncx?= =?utf-8?B?SEFpdFRxQk5qZlI2T25XRE11RzJLWFJ3RitUcG41YmRBcnVOSk02ZWNPeDhI?= =?utf-8?B?bU5rakFrNlNuU0JEUURJSlJZOHdJRmpaYWhYQ0pxcGxBWDM0eDFDclQ1MU9M?= =?utf-8?B?M2ovWmVTY1RjRFUxY2FlenFKWDFmVk5qWTlndlc5M3dHeFpncUxLcmxBZDdU?= =?utf-8?B?dks0R2N5anJId1JRWVFTK0dvbURMcjU2d3lueVkxM0NPUytBWTA4amdXSkNu?= =?utf-8?B?am5IZFZOV1VXSjZEamlmNVJkMjlKZmZqa2ZWbnBOK2Z0Rk1GcFN3TVhzMmN4?= =?utf-8?B?SjlGMFFpTWx1Q0t1c3ZHRE8yVTYyQTBEUTM4M2JMcHFReUtJUWY1U0d4cURK?= =?utf-8?B?V2VqTlRRVGhGejcvZzZmY3dZZVhIZ2JobE9zc3czTVY4L0Y0R043aGcvQlEx?= =?utf-8?B?WUd2cytyM1FaazM5cWZodnRmaEZkOWFVSzFyYVpSZ2o5K3JqK2tCTDlDWi9V?= =?utf-8?B?dnBtS3dydnB4djA3WTlpSWJYZnRLNmZGR25YOGlDS2EzakRGQ0lvYWRJNllQ?= =?utf-8?B?NXBvTE9BNERVWktDTXozcVQxa3V6Y3VQNWc4dWFIbDBWZThPRmpPWTNQMGw0?= =?utf-8?B?Vmw4TE9zelFLbnRRTVZtdFcrTFljcG5GUGZSRFYrMEIva2pwSDJGaUwzWG9m?= =?utf-8?B?QmRianorMVg3QkpqNXE4NWNYUUJYOEN6YTNvV0tUUGp6N0EyRGVSSm1CK0NM?= =?utf-8?B?TTQ3NDVzdjF5aGRjelpneUh2M28rNzVuYUNobklsdmd0bXNocUpHMnNKLzNH?= =?utf-8?B?NWFOYlM0WERBa0hHWW9SMHhqSHJYK2M3ZkVqQ0lJL0ZPaUxMOTBIeWJicGQ4?= =?utf-8?Q?rhjgwa?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS0PR11MB8205.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(52116014)(366016)(376014)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Y1MzOHNPSmxIT05LNmxSR24xbjFJbXpUUnNDa25ZNW04c0VHTXFaVkF0T2hD?= =?utf-8?B?MjJDZTFIOHVXcUYzeTQxajEvZ2hVSEt3bG01M3k0ZkRFN2daMEc0OS9KTUtp?= =?utf-8?B?MG5xKzVaZFBqZDdibG9CYytmTExRcEFIaytva1RDNE9oSEJuRE1pVzJ1VnQv?= =?utf-8?B?S3JvZWJRSERTcGhFTGVtWEFQUUdveSt3bi8rczNnL3h1dnFldVZ2aCtRQ3FQ?= =?utf-8?B?VWV6eFlHcDBWZkhjSG9SRkJGU2xBSWJ3WjlyN3o0Q05WdWNEdUkyVjEyTldv?= =?utf-8?B?TmpXRmtlRjIxTWZ6akg0V3hlayt2anVOejhjNkpIQkZwc0JiQlZGQnZ3d3Fh?= =?utf-8?B?SlBza2R5Y0gyS2NmMklYbzMra1krcTgzeVRsMHdNUktNb2lqdjdzSS9pTTcx?= =?utf-8?B?eGx1WXJQZ1F3QkVkLzNLZSt3bFJtK0tSWm1PNHVSMmcwbDB5d1liQmh4dGZX?= =?utf-8?B?ankzWUM3OVpwQmRIWHh4aXI0Q3Rlc1JqeUNqZnZWV0hXdGpNMU1XcWFpWFVJ?= =?utf-8?B?VWlDN1M1RUsrWkNvU1RlSE52M1lUQWsrckQzWUVYMTR3UlB6OU9YNmg4SlJK?= =?utf-8?B?RktsUzZ0Y0FNYlEzY2JWcDZoSU1SdDNkREhFMnFFK1JOcGhzMGgzWFBEdm8r?= =?utf-8?B?TnRSc0xzMDdraG1NbEZ0Qy8zbHpxZFZEcEhTN00renhnbnl4eW5nRm9yYTBH?= =?utf-8?B?aUtNZ3Z2emVlUS9wT1hRNk9RejdnU3NNZm4yMzZuTWo4TWJjTjhtT3hydzVr?= =?utf-8?B?cHUwaDBIdTJWTGgvTVEzQTk0MWc2N1VPL3BzZ0tRaFRxeWJLNENGT2VYRWNr?= =?utf-8?B?QjNBOE95ZlFzbmx3dGxZenp1cnplVUw2VTAyQlc4YUp1TkVYb3lRV1AvTHBY?= =?utf-8?B?bTJsQlYwSXVSbzRTY0RCS3VUVUhpNnlRYzNlY0lqMERsYkt5b1lVRE50TEov?= =?utf-8?B?VE9WNWd1WFhSUmI4RzNvdkNLUXJ6OU81a1JRZkZ5eXVOSjU5cW1MRjJQdk13?= =?utf-8?B?UHVuajFoVkhYb2k5NDBsRjBhLzhzUEtoT3VzbXdxM1Y4OEs3SVlFSkFpNHFL?= =?utf-8?B?SFdkZktXVXhFZ3psT0lqdG1aWmQ0dmdocm55cWtIS3pZWm8xL2dlRnZseWJs?= =?utf-8?B?aXA2elZGbHBTK3N2Lzc4LzllbGV0cnBJbE94OE8vU2sxOWhGQ2ZYRGJMTWJI?= =?utf-8?B?d0hkbkdnRVZrTXpuTzNvUUoxZDR0VitFTGhsRjJlb3ZoS3JrSDNtQllzcTBC?= =?utf-8?B?V3A2bEZCdFJhUDhhUXo2ZU5VTmZUbnliaWtpcGhLWENvUHM4TEVpUzgxd2hO?= =?utf-8?B?M1RLVGp0bFVWUG9pKzArVER0RnFpSy9iQ0lPQ2lDRy84VDJXelFPSGFvbXEz?= =?utf-8?B?c3JMZXhCejI1Q2lNTVdUbVJYR1N5MlRFN0Fsb1ppSE9idFpON3gyK2hrbURl?= =?utf-8?B?eGdjUExMSGhEN3ZUczB4Q1lRUE9EaVFoZGt5U0VjMmVBL2pyVy81Sk5uRHJu?= =?utf-8?B?eWVMRnhnMDBGU1NXRTVxMGRXbjZZcjQyRDNSeGNyZ3NJdVNYdVRVU3NCMmE1?= =?utf-8?B?Sm5WR01DYXFrdE1WQ3ptZGRtYmtwaXpyRDc0UC93T0l1TW1waXVvazVoNTBT?= =?utf-8?B?Rjc4SlNCZWhWS3VRdnNjcEJBdDM4RnFkdWlNajBjdWJvY3ZUdzg4MW40NDNJ?= =?utf-8?B?b3pyWkhHTGd4TWJFYXRscmlNMytjZWNrSlRrRlpxa1RRelNXMXV5dEZoUlk0?= =?utf-8?B?NHljeHlhbXQyRHRpT3U3cGxmWEtPdTdIaGtnbmlrd09TRG1sTUdVMVJwMmdV?= =?utf-8?B?K21EL0xUWEZKKzlZVlk3T093TjNxdXg0aE4vRGlxQzRxV2xQZ0lVTHB0K3NH?= =?utf-8?B?OENhMllCdlY4VVJ3Y2YvM2JkTVpTd2I3RkwvdndhZSsraFNVc21mQXdsemRW?= =?utf-8?B?MnhsN3NtNTF2SHF5amtiWHNNQ2FFV2p3aWw4SmdEVkRqOFcva3Z1UlMxc0ZP?= =?utf-8?B?TjRUL0VjRzRPdk9jVFJVUk5yUVExZlJySzcyamQ1VTcweDRmQWViSU4zV2xR?= =?utf-8?B?K3J4NUhmbnBMcXJYdWV6ckc3Vk1pNUQ5YVdCcUw3UEVtMUpXdUwvU09WVEE1?= =?utf-8?Q?blEgzgSJeyml9B2fg6NeVKpTS?= X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: a02ad09d-4981-41b3-9f0a-08de238f9cfb X-MS-Exchange-CrossTenant-AuthSource: DS0PR11MB8205.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Nov 2025 15:08:05.8017 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 54dbd822-5231-4b20-944d-6f4abcd541fb X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: +tO1SFtoLLKI3hC8mAmGCuEwDjhmshBJv3aWVRs7oA5Th6n852PCEqlt0B9HQs3u+WfLaHHxGhBSdMskWHZMdg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR11MB7005 X-Proofpoint-ORIG-GUID: 8QOKzugb4UX0kMC5RityP4coYLrD6oHI X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTE0MDEyMSBTYWx0ZWRfX808ybGT92Nfn 3MjVS7Dkgkv+pzXUdEwQ+HfO/iKQbd80Hyne68K1RLK1A9qJCrWQ1h8ddwITknxmri1+i++u67a bWotDbK/+1c3n3LGwpyg22pdUhG6P822fkyG2WzNC3P5o1VbRFZPl8l4kooySvHWO6xoKkEcWQ4 Ip93ZdwYcUrjeERQi4SYbeKBlabcC5dy4PS1AHIA37e4ryKWRTd1KyfOTeGEOCH3k+b2XrHIAQ6 qOTYu6BcuoXZRzCB52Jmt1rata7R1tyTtRG31SVzbyg3oaRb9NeuJ6BTFqWCmZpN4oHLkU9xmxT x9lTeY1quyGwZeuUdfFAP0n+2d3ImmYaU98qixPe9V9/PQ8kMxuyUAPwcE9qepVEZ3Inxxn4Hwi Lt02AiSRN2h5usTqXIWVZkNqgNhjFw== X-Proofpoint-GUID: 8QOKzugb4UX0kMC5RityP4coYLrD6oHI X-Authority-Analysis: v=2.4 cv=LfAxKzfi c=1 sm=1 tr=0 ts=691745da cx=c_pps a=zUXba1i+DNHe9EVMNcbDHw==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=6UeiqGixMTsA:10 a=M51BFTxLslgA:10 a=i1IsUcr2s-wA:10 a=VkNPw1HP01LnGYTKEx00:22 a=2AEO0YjSAAAA:8 a=VwQbUJbxAAAA:8 a=NifzlKhAlxbwiDc_K4AA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=cPQSjfK2_nFv0Q5t_7PE:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-11-14_04,2025-11-13_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 bulkscore=0 malwarescore=0 impostorscore=0 lowpriorityscore=0 spamscore=0 clxscore=1015 phishscore=0 priorityscore=1501 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2511140121 As the first step for adding CPC support with Greybus, add a very minimal module for CPC Host Devices. For now, this module only proxies calls to the Greybus Host Device API and does nothing useful, but further commits will use this base to add features. Signed-off-by: Damien Ri=C3=A9gel --- MAINTAINERS | 6 +++ drivers/greybus/Kconfig | 2 + drivers/greybus/Makefile | 2 + drivers/greybus/cpc/Kconfig | 10 +++++ drivers/greybus/cpc/Makefile | 6 +++ drivers/greybus/cpc/host.c | 85 ++++++++++++++++++++++++++++++++++++ drivers/greybus/cpc/host.h | 40 +++++++++++++++++ 7 files changed, 151 insertions(+) create mode 100644 drivers/greybus/cpc/Kconfig create mode 100644 drivers/greybus/cpc/Makefile create mode 100644 drivers/greybus/cpc/host.c create mode 100644 drivers/greybus/cpc/host.h diff --git a/MAINTAINERS b/MAINTAINERS index f7af0a5cf1e..992c74b9f6c 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -10029,6 +10029,12 @@ S: Maintained F: Documentation/devicetree/bindings/net/ti,cc1352p7.yaml F: drivers/greybus/gb-beagleplay.c =20 +GREYBUS CPC DRIVERS +M: Damien Ri=C3=A9gel +R: Silicon Labs Kernel Team +S: Supported +F: drivers/greybus/cpc/* + GREYBUS SUBSYSTEM M: Johan Hovold M: Alex Elder diff --git a/drivers/greybus/Kconfig b/drivers/greybus/Kconfig index 797f32a9c5e..59dcfc126e5 100644 --- a/drivers/greybus/Kconfig +++ b/drivers/greybus/Kconfig @@ -30,6 +30,8 @@ config GREYBUS_BEAGLEPLAY To compile this code as a module, chose M here: the module will be called gb-beagleplay.ko =20 +source "drivers/greybus/cpc/Kconfig" + config GREYBUS_ES2 tristate "Greybus ES3 USB host controller" depends on USB diff --git a/drivers/greybus/Makefile b/drivers/greybus/Makefile index 7c179cc60e5..fc77e86bffb 100644 --- a/drivers/greybus/Makefile +++ b/drivers/greybus/Makefile @@ -21,6 +21,8 @@ ccflags-y +=3D -I$(src) # Greybus Host controller drivers obj-$(CONFIG_GREYBUS_BEAGLEPLAY) +=3D gb-beagleplay.o =20 +obj-$(CONFIG_GREYBUS_CPC) +=3D cpc/ + gb-es2-y :=3D es2.o =20 obj-$(CONFIG_GREYBUS_ES2) +=3D gb-es2.o diff --git a/drivers/greybus/cpc/Kconfig b/drivers/greybus/cpc/Kconfig new file mode 100644 index 00000000000..ab96fedd0de --- /dev/null +++ b/drivers/greybus/cpc/Kconfig @@ -0,0 +1,10 @@ +# SPDX-License-Identifier: GPL-2.0 + +config GREYBUS_CPC + tristate "Greybus CPC driver" + help + Select this option if you have a Silicon Labs device that acts as a + Greybus SVC. + + To compile this code as a module, chose M here: the module will be + called gb-cpc.ko diff --git a/drivers/greybus/cpc/Makefile b/drivers/greybus/cpc/Makefile new file mode 100644 index 00000000000..490982a0ff5 --- /dev/null +++ b/drivers/greybus/cpc/Makefile @@ -0,0 +1,6 @@ +# SPDX-License-Identifier: GPL-2.0 + +gb-cpc-y :=3D host.o + +# CPC core +obj-$(CONFIG_GREYBUS_CPC) +=3D gb-cpc.o diff --git a/drivers/greybus/cpc/host.c b/drivers/greybus/cpc/host.c new file mode 100644 index 00000000000..1eb6c87e25f --- /dev/null +++ b/drivers/greybus/cpc/host.c @@ -0,0 +1,85 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (c) 2025, Silicon Laboratories, Inc. + */ + +#include +#include +#include + +#include "host.h" + + +static struct cpc_host_device *gb_hd_to_cpc_hd(struct gb_host_device *hd) +{ + return (struct cpc_host_device *)&hd->hd_priv; +} + +static int cpc_gb_message_send(struct gb_host_device *gb_hd, u16 cport_id, + struct gb_message *message, gfp_t gfp_mask) +{ + struct cpc_host_device *cpc_hd =3D gb_hd_to_cpc_hd(gb_hd); + + return cpc_hd->driver->message_send(cpc_hd, cport_id, message, gfp_mask); +} + +static void cpc_gb_message_cancel(struct gb_message *message) +{ + /* Not implemented */ +} + +static struct gb_hd_driver cpc_gb_driver =3D { + .hd_priv_size =3D sizeof(struct cpc_host_device), + .message_send =3D cpc_gb_message_send, + .message_cancel =3D cpc_gb_message_cancel, +}; + +struct cpc_host_device *cpc_hd_create(struct cpc_hd_driver *driver, struct= device *parent) +{ + struct cpc_host_device *cpc_hd; + struct gb_host_device *hd; + + if ((!driver->message_send) || (!driver->message_cancel)) { + dev_err(parent, "missing mandatory callbacks\n"); + return ERR_PTR(-EINVAL); + } + + hd =3D gb_hd_create(&cpc_gb_driver, parent, GB_CPC_MSG_SIZE_MAX, GB_CPC_N= UM_CPORTS); + if (IS_ERR(hd)) + return (struct cpc_host_device *)hd; + + cpc_hd =3D gb_hd_to_cpc_hd(hd); + cpc_hd->gb_hd =3D hd; + cpc_hd->driver =3D driver; + + return cpc_hd; +} +EXPORT_SYMBOL_GPL(cpc_hd_create); + +int cpc_hd_add(struct cpc_host_device *cpc_hd) +{ + return gb_hd_add(cpc_hd->gb_hd); +} +EXPORT_SYMBOL_GPL(cpc_hd_add); + +void cpc_hd_put(struct cpc_host_device *cpc_hd) +{ + return gb_hd_put(cpc_hd->gb_hd); +} +EXPORT_SYMBOL_GPL(cpc_hd_put); + +void cpc_hd_del(struct cpc_host_device *cpc_hd) +{ + return gb_hd_del(cpc_hd->gb_hd); +} +EXPORT_SYMBOL_GPL(cpc_hd_del); + +void cpc_hd_rcvd(struct cpc_host_device *cpc_hd, u16 cport_id, u8 *data, s= ize_t length) +{ + greybus_data_rcvd(cpc_hd->gb_hd, cport_id, data, length); +} +EXPORT_SYMBOL_GPL(cpc_hd_rcvd); + +MODULE_DESCRIPTION("Greybus over CPC"); +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Silicon Laboratories, Inc."); diff --git a/drivers/greybus/cpc/host.h b/drivers/greybus/cpc/host.h new file mode 100644 index 00000000000..fe07826b765 --- /dev/null +++ b/drivers/greybus/cpc/host.h @@ -0,0 +1,40 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (c) 2025, Silicon Laboratories, Inc. + */ + +#ifndef __CPC_HOST_H +#define __CPC_HOST_H + +#include +#include +#include + +#define GB_CPC_MSG_SIZE_MAX 2048 +#define GB_CPC_NUM_CPORTS 8 + +struct cpc_host_device; + +struct cpc_hd_driver { + int (*message_send)(struct cpc_host_device *hd, u16 dest_cport_id, + struct gb_message *message, gfp_t gfp_mask); + void (*message_cancel)(struct gb_message *message); +}; + +/** + * struct cpc_host_device - CPC host device. + * @gb_hd: pointer to Greybus Host Device this device belongs to. + * @driver: driver operations. + */ +struct cpc_host_device { + struct gb_host_device *gb_hd; + const struct cpc_hd_driver *driver; +}; + +struct cpc_host_device *cpc_hd_create(struct cpc_hd_driver *driver, struct= device *parent); +int cpc_hd_add(struct cpc_host_device *cpc_hd); +void cpc_hd_put(struct cpc_host_device *cpc_hd); +void cpc_hd_del(struct cpc_host_device *cpc_hd); +void cpc_hd_rcvd(struct cpc_host_device *cpc_hd, u16 cport_id, u8 *data, s= ize_t length); + +#endif --=20 2.49.0 From nobody Sun Dec 14 06:37:03 2025 Received: from mx0a-0024c301.pphosted.com (mx0a-0024c301.pphosted.com [148.163.149.154]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D292832E750 for ; Fri, 14 Nov 2025 15:41:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=148.163.149.154 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763134889; cv=fail; b=SpkHtpOfXfGcCa1Tfs320TrfUMbfiXoj1ItWTyX7T46xWGmVxFqI12qyik2z3aY20Fzhr+M7UbeHFg2uw3MJ07BP7sOiEMTKTVjhHu+q3v+w/94yac/kKIH4lhOoqqiZSQqkG7MoBk7rH4sO3JNrOqzSYpZ7HWjOEPgiMGYZXmc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763134889; c=relaxed/simple; bh=V/NIbUIK2UWJzgGx2SwpGr2Ri7PHcG6tMnnPJO7Cxz0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=g4mv2BiWLNGEn5+36AP2H2US4jIsiPUzWhfVVrOZRfBx5AUuCbMWg8f9CCSdxRbtZqWr87aHEUAGkDpFrJEXHNoGNAF+RTZgjpWE52pCZEwS38laZGPXrQpyWmgeftWolhv6tRCAKNDVBek/NRC+pDE2f4VLitthYORfoCjvRdU= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=silabs.com; spf=pass smtp.mailfrom=silabs.com; dkim=pass (2048-bit key) header.d=silabs.com header.i=@silabs.com header.b=PCRupDPc; dkim=pass (1024-bit key) header.d=silabs.com header.i=@silabs.com header.b=Bj7JhESX; arc=fail smtp.client-ip=148.163.149.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=silabs.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=silabs.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=silabs.com header.i=@silabs.com header.b="PCRupDPc"; dkim=pass (1024-bit key) header.d=silabs.com header.i=@silabs.com header.b="Bj7JhESX" Received: from pps.filterd (m0101743.ppops.net [127.0.0.1]) by mx0a-0024c301.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5AE9uiJb2132830; Fri, 14 Nov 2025 09:08:12 -0600 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silabs.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pps12202023; bh=LHgz/lFtijHK41pa6ALEsVJ/2xu953e1nb/ba2nB5uY=; b=PCRupDPcAEgU u7fLgWSyHOgmipu9RINRbRLj+hrZwjLzgKQI+vyJgHfgIkh8PdEJT0l4XrFezUo0 UlCDNGs/jMtegeM6841pM00A/xx4OyomkhFDcYHB9E8iRZCxBfUg/0Daz4Kb3rkJ b8a3TeITSsWVmY4sFa52PkmzFIaXGp1PkQ5rgyOjal6IDf10SA3QZpVzr1EDoPri zuFyPnbZFdZhJ4ZOgkI5DAxEQMaiV3cThO6+3tV/ouENwunm3ju/1YOa7IaeBf78 T9zXX+wEwfVDCkNF7r0L1iEjMiXz1orgcEw1gFyyQyfLG2TIKWpIVnXkAg2CKLON 4msyq9OPlA== Received: from dm5pr21cu001.outbound.protection.outlook.com (mail-centralusazon11021143.outbound.protection.outlook.com [52.101.62.143]) by mx0a-0024c301.pphosted.com (PPS) with ESMTPS id 4ae285rk08-2 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 14 Nov 2025 09:08:11 -0600 (CST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Xws322Aorcfa3lvS5jDNo+hMRiLjvhDYodfhWNvU5qoCMOSyydsp/sa0R2FWDmvGuMV7xfQuoVDc6FfBg59VUz3bgDUm98ONeNrOAOJ85LcrKlpYHZ/8hoLT9yWDLzYMj2xYqWgU43MCYNP4YxOT/p39uBjFodfk5jhZrzi59v/JoNVrl1XLhK3b6aGaoNnrS4pHpPH8kduVEe+UXpSm9Gx1FVa8ajSshgVJ3Mj1qWvPZ+TDrSm4zmjAsMV3V89S1ptGf4gp5+NQFM2yv3csVobTNRsrNJIDPJ3ur8LBjRofbuo1R1nnYp+TaHkYgvkPn2tNMje1MeoYpcm+eAC8RQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=LHgz/lFtijHK41pa6ALEsVJ/2xu953e1nb/ba2nB5uY=; b=mt+NEPdrKCI7GvV5VPObis8QyzDy6SsV0r+tayNSGOPtIvRXighhnRJQnxlB5KHI4UlwImBw56jD1Ztygr/IWItsIf3AqQWFTOTzXOsmR0+pjXmPYeBacTowgFaoKfCbc+py/UyGdfEOTuI6cHVJgomi8t7nKPz+hVjZLENagKsA+as+Pzt1PKozt1L4QEWN43tvfSlphXwEqpWF1cBIHZak2pOq3sntDvX5tve10sIDCwJxZS9X1hzYweB0pD0J/nfgeEWq/kKf1y/z9B8VIU7phq4CDOm2ZA/aIyNUWXExpPwb5HLvalqhV6cRJaz4t6gUNsQ3F95YyiUumgzJQA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=silabs.com; dmarc=pass action=none header.from=silabs.com; dkim=pass header.d=silabs.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silabs.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=LHgz/lFtijHK41pa6ALEsVJ/2xu953e1nb/ba2nB5uY=; b=Bj7JhESX8mXs3xrxNAluzyFfsc9t2O/jg6aAImTvyaYQwH91v6ru2pcizcOAWVftmag25IlW3YbsvQbm4zUjlyCQvGu+sVS9fW1zfzhzBSgMAc4Qg0hrWG2nkPPcXQlkX8clBhCGXGAZs7xZ2NVteQnueoKGv//GrxhKasdiqJ8= Received: from DS0PR11MB8205.namprd11.prod.outlook.com (2603:10b6:8:162::17) by MW4PR11MB7005.namprd11.prod.outlook.com (2603:10b6:303:22e::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9320.18; Fri, 14 Nov 2025 15:08:09 +0000 Received: from DS0PR11MB8205.namprd11.prod.outlook.com ([fe80::c508:9b04:3351:524a]) by DS0PR11MB8205.namprd11.prod.outlook.com ([fe80::c508:9b04:3351:524a%5]) with mapi id 15.20.9320.018; Fri, 14 Nov 2025 15:08:09 +0000 From: =?UTF-8?q?Damien=20Ri=C3=A9gel?= To: greybus-dev@lists.linaro.org, Johan Hovold , Alex Elder , Greg Kroah-Hartman , linux-kernel@vger.kernel.org Cc: Silicon Labs Kernel Team , =?UTF-8?q?Damien=20Ri=C3=A9gel?= Subject: [RFC PATCH v2 02/12] greybus: cpc: introduce CPC cport structure Date: Fri, 14 Nov 2025 10:07:28 -0500 Message-ID: <20251114150738.32426-3-damien.riegel@silabs.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251114150738.32426-1-damien.riegel@silabs.com> References: <20251114150738.32426-1-damien.riegel@silabs.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MA5P287CA0046.INDP287.PROD.OUTLOOK.COM (2603:1096:a01:175::12) To DS0PR11MB8205.namprd11.prod.outlook.com (2603:10b6:8:162::17) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS0PR11MB8205:EE_|MW4PR11MB7005:EE_ X-MS-Office365-Filtering-Correlation-Id: 8faabfea-14ec-4d41-5a5a-08de238f9f0e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|52116014|366016|376014|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?WmkrUVdRd0NxbUMrdlA0SDZWbzVzSWVCUFhmOEFFM3A3Zk5hTWpmZmFvYytK?= =?utf-8?B?eC9VL3ZzTyt5aHlUQmRWRGk3UXJEMngzbmFvd1RUNnc1UkhmVmdSNXo3eVhh?= =?utf-8?B?cWtlbUpaQXFhdUhndHhDK28zRlFwTWRXM25TQy9hc1ZyaFRjNVhGS3I0SFlH?= =?utf-8?B?Rmc0azdaNmM3ZHBnTFpvblg5TmhVQW5ReGd3QkQzSlRUVzRuT202cHMxbzZr?= =?utf-8?B?aE5QZ1drRWJXZ3ZobCs4dVZJbE4zbGl6OE5wYVVlcjNEOXkzTlpqQ2VUVWpK?= =?utf-8?B?OE9Lem92VFUzWVNmNjM1VzJvNUJ1Y2U1RGxWVlFLSi9ZcWhxSkFpR0MwMTdR?= =?utf-8?B?Uy96eWdsSFUybUZ2Z2VJU2xyMzBTRWcvbzc4eXVCUXg0TVlPaVlkS0VUR3Vm?= =?utf-8?B?bHNNSFhlUEZaSEcrTnVFMGtsbEs3TEk5VzBJenMrZGEzU0JseVd1c1ErbnBY?= =?utf-8?B?QUxlZ0JYYkpObWhjdWordTNWRDlDRXpDSkRGdlJYTWZXbm9lOFFoaTY2cUN5?= =?utf-8?B?K2pSblJkdGdCVW5md1ZMVmtDWm82UDFWRjdMYmhwQW9ib2lRNDEzNDJmdVNP?= =?utf-8?B?TDQzcGt6TzlXUktSV0pxTnV6RDRNSjNKZksrQmtxbTJhcTI4bEt0MmRBWGp3?= =?utf-8?B?Y3RlWG4zRUJPWDZOTWhxanowdlNlU0NKUUZPdDEzVDdEU0NVUWZseXFEVVpG?= =?utf-8?B?M3dQdFo4bXNTMmtqbEl4d04rY1B2NWlSQ3F2bVdRbHZEVEFaRERIMDFVQkJJ?= =?utf-8?B?d1lIakdpeEl2cnNNMSsyQXkwcHk1NzFEcnJuWGk1cVhvODd6Y2RkeXdrRE8y?= =?utf-8?B?dzJManVwcEhtMlhYejJDcHlmamtDQmVPSTJYTTNPOXk3bVR6c0VwZ05kclBi?= =?utf-8?B?ZlIvT1lFWkFWMXljQmJFT01WVHZBY3Rna29yZmh3U0JkWFJqcUJJemFNODNv?= =?utf-8?B?bi9PRlVrUDV3R3JIdWRDcFdGeU54RW9NTTFOUTVpOVB2cFh1N0VScTUvbXQ0?= =?utf-8?B?VDZDT2REYjAwZVQyRy9tTlg1ZGlUaW5wTTEyZVZaWlNtR0JQSG80ZUNMZHRW?= =?utf-8?B?QWoxSmIvWkI2M1dydzZ5YTdINFl6WDlGeWw0K0hRams0bms1M05tMXdQd1lD?= =?utf-8?B?eG9icjJ3ZFlTQjV3WkI0L1huWU5iRExwVThiam0yWGZkK21KSmdQbEd2REVC?= =?utf-8?B?QWZSaCswd212YXBJTDZTNEkxeFU5bnViVW81MHNaaWhCZzlia3JOQUIxZlhs?= =?utf-8?B?VEVGVU1lLzVVRGpzaG5YMUVCV1crdFpyMFpnZVVSU0dHb0tGdzVYS0JrdXpm?= =?utf-8?B?QkNiYXgvbWJUUzBEQTlYSTZxZUlWUldZdHBTSUZZeHl2NzkxWXVPWDlmTEZs?= =?utf-8?B?TlFoMlBvYmI2bVhtd3I2enlHaU1wT1ZQQkE1d1hsa040NTU2Ulo0NlVjbVFU?= =?utf-8?B?c3pRL3FzRjVJRnp1MEFBbU4yc3N4c1dzdFpsQlBVeHYvN3MzSU56Z3VCQlFo?= =?utf-8?B?TEk4TVpCdU9IUnZwUjQrZlBJMVRrR3pZeTZnVUo3WFNSUWRmK2lteXRCRkhm?= =?utf-8?B?VkxLSlVZRzZoUFQvT0FkZW96bFVidENKRDREckJqbGpZSkZTRzV4QTQ1QVdh?= =?utf-8?B?Q0JBamhRQTVrNkZldUplQlZOdUFwYXBTZHJBd3VRQ3czUzZzaExyWlNPbWtt?= =?utf-8?B?b3ZZSGdVdlZHajVjTzJQbXFlQWVLN3FmaEJwZ2FhUnY5T0NwN1lPUk5LZnF2?= =?utf-8?B?K3VXWXprV1FrazRPSzE5czRrVjRMelpVWTZQWjZoaW5CeXlkYlZPNDA4UHF4?= =?utf-8?B?Vmh5bWMwMWNnb29IVmNLQ2RINmdKTmRaaTJ4eXd1QXJIZkswRzlGRytqOEox?= =?utf-8?B?UWVtUjBDRnR6SjdoZk9mdXE5V2xTRmp5aVhvV1ZrdFVXbS9odTBmanVoS1px?= =?utf-8?B?SmlWakw2VVdVQmQyNXFJK29OZzRSZlB3S1dSZkk5ZGVMbGlxV2Z3T3NCTmU0?= =?utf-8?B?a0QxMGQ5TzV2Vm81R0FoRHE4MlZCd25SYnQyOHY1eTBhVWRiNmlZOXZ5ZElp?= =?utf-8?Q?oQEJDC?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS0PR11MB8205.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(52116014)(366016)(376014)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?cFNFMDdXMGVaeHFkZ256WWpnYllnM0U1M1hoeFRMbERsVTNST3BjcGtnczY3?= =?utf-8?B?blo2MzlBUmJYS3lQY3lINm5ubDZwYVd1QzArVDhLZGNwcDJKUDJZQ0srRkUx?= =?utf-8?B?Q04vZ3o0V1orNmxzbFFMdkd6MG1RQzNKOWJnTjRRbXdNeG1KbzM2dExuNUt4?= =?utf-8?B?Ynhmcld2bHpHcDFXMHE2OW4yZjFQQWlWcGRPNFdMZFRvT1gvRm5GMWZ0UTRJ?= =?utf-8?B?MHRia2lHMmppRWpOR1M5d09tT0lHSUE5UW9DL2thYUt6blMvWEVjc2VrWTJy?= =?utf-8?B?TElMRWVUWjFOZjRPN1ZjL0ZuN2V0WDhtbXUraGNVbm0rdkJRKzVHUkRyUGNH?= =?utf-8?B?dm1SN3NPRXYydE5iY2pyeTR5UElqYk1Xb0x6UXViKy9lZExQN0NIb2FBNHls?= =?utf-8?B?R1I4STdIdWc0bi8vOVlHTEtLaldDNGI0ZVhDR1R2cEhRc3NUc1o1OUhBdUdV?= =?utf-8?B?Y3ZMeGN2T3JCQkJFUkxnOTB6QkJoYjlyZm1SSndGMGhxZGc0dHV6Y1JldEJ3?= =?utf-8?B?SEdCcGpPakdkT3BYeUJnQjdmcmI3WTZLdzZSLzArWUVyN3Jua2NhZ3BVaTFP?= =?utf-8?B?UDc4ZUMxL2Q3U0RGc3lFM1lmUW1SV1pLcVIrZUJ4VHIxd2haaVhIdjJvQVVB?= =?utf-8?B?Q3NMdVRqMXpwcnArOFROditQNXlwN0h1L2gvMWJBUlVOc3pSNUFDSkFOTS9D?= =?utf-8?B?dmxlKzNzSjIxR1pWYTM0ZGJ1RCt1dEFiT2l1WFRiVkx6d3dhZGJLNTlwZk1F?= =?utf-8?B?Z2luWWlOeWlkY21nVXNrYTRaNHlUZE03a2hqaVdORWFaUmxPYXRjQTB0VHha?= =?utf-8?B?RXZmTzJ3M0JaeG1DTG9XaVhMMGdxMFhlLzl5c2FhSzhVbVpZZloyd1NZdHFE?= =?utf-8?B?NlhWZllXUytjemZIanJjM0xiT1gzRkJCUU01NVJrSjBQZ2tnd0JmNlFwL1U4?= =?utf-8?B?Z1pZN0NEUW1ZZThCUEZaZGh0TFBlS200UFNoem9UeEkveDQ4Szk4TFo1TlB1?= =?utf-8?B?eEw3MEV4WEVTMkkvNTR5VlV6SzluaVdhTXczNjNRRkFNd3lPcUI3YjEvbnFl?= =?utf-8?B?NnZVT0d2WXJ2WmFreU5HZmhSR2xPU0Y3M2xHY0hoZ3EzSnBpZVVTdWZkRHlG?= =?utf-8?B?bzU1bWUzZWRjMFV2aFVCQVNRaVFCRGU3VnMwbkVZR01HT1g4TUpDMFBKamI1?= =?utf-8?B?L1c5SCt2d2t2ZW9KKzhmTmx4MExDbDlQOWhKM3Z0SjUyMklBa0E5cGorWmJ0?= =?utf-8?B?YWYvT3JlMGhxWnB4QTl2Q1VIY3M4RHdqZHR5UGxmN0VuRVhHVExXZGZJTjBp?= =?utf-8?B?MHFOZ2pyTnpKUmtySndHekw1RXZzUW9sUkhHWUlXWDR6QWpwUnJWd0ZkVVpy?= =?utf-8?B?cWlLay9HRDRUK2x3VHZ5UFNQMFFmcy9iYVJqOW13OVU4NGQ0NFpBU1pzQVU0?= =?utf-8?B?SWpuZGxDWHNWc3VJRzlaUTN0TEJVVUJYeEl5WTRZM2hzVkdhT3hWYUR0WkNq?= =?utf-8?B?MG1SWDNwMjhlbjg2Y2V0M2Fwd3FuQTdNbVF3a1J3eUN6aElDay9QdTMrNlZM?= =?utf-8?B?enc0cmlKdFhtT2RUZHplSW11TGlHakpWQXZUSzJNZkZRWWtqZFM0dFUwU1I1?= =?utf-8?B?bElPN3lPWitqa3BvaDBhSmdUY09qcXM0M3Bmd3hyQzdHbkpaRDJVSTJ2YTJx?= =?utf-8?B?UVhVc0FiSU5hNUMvbVNDVUhRTnhmeVFCNkE5cnZTVzY1NWUvUmkwWXRsUkxK?= =?utf-8?B?NHV6ZXV0WHRoYzRzb2FlaWpkdzdLazBjUVN6RmZ6NzJja3hvbjFFWlRKTzRo?= =?utf-8?B?WkVPS3dMSWM4MnJxa3lvSnU5MFl6YThEUkxVSmJRZi9oaVZxK1lPN044WVZ4?= =?utf-8?B?WTU1MTdFT2g0SWJReUk3SkFZSitQQWEyMHZpT056OStmYkhlSWVwQ2lFV0FO?= =?utf-8?B?WGlRYzQ4RFNVaEJhT1VROWZXSnR1empveDVGWUxTcEZYOVZkMGp2WkxmTXlK?= =?utf-8?B?dzVqeUtJVHdlem51dTFZbTBOZkEyVmxjdE5MSHBma0pBTC9BM0d4N09Sd2d3?= =?utf-8?B?c2pacE1LR1pkM2l6VWFKTG05QkwrbkNobmdpZGwvdnhSclMwUVVNNXlFS3dH?= =?utf-8?Q?Txui5GwbuKZCy1zXGOQcG+ePx?= X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8faabfea-14ec-4d41-5a5a-08de238f9f0e X-MS-Exchange-CrossTenant-AuthSource: DS0PR11MB8205.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Nov 2025 15:08:09.2587 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 54dbd822-5231-4b20-944d-6f4abcd541fb X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: b/uVyT2trol1AuCmCSy734D/f978lDklLPn8ZUGvCH13iyHjH3ODf0OPpU3/0rgKJjE7iRp34nZ4zMJ30A8VIg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR11MB7005 X-Proofpoint-ORIG-GUID: 6jNEiEn7_1Kc-ZEVPm3ffQV9MoUCk99r X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTE0MDEyMSBTYWx0ZWRfXyrm29uKpkmyB 2uyMoQA6pa2+cTwRmoSZvi9fWqQ2kwLuf0+jpWfwQnGY6wMql5ZkrOsRozEfdebSc2VX2PlRi0G iPhW0LI8OUWKhESxuZ4PJ9Ehul95gEi6HnDjV5ue5vejt8/jEkodIv/YYQDwxhxBku7ZUKdeYyF KJ+U4JI6DXRO0nuR/ksakZVNb7jUxz9FdUXyWty4nme65zRajnlKS5iJUJA4Axkz4C7DTbHsxG8 Tg0cT/7uhXjitc4fcRts7COVsFQBDZuzq+lI9FFVaO62TOYfImSeL3HkkbD9wcV4zmk4xHqqMNL TaTSL0Pug8Ta9yDRrswsowELFhBLC66Duhe7JQcmp75vEhMA3WfqdMsmluSiBEtU8dp/PcVtkd5 3JM62Q1DlVLDWnbm1tA2Q8I28iiffg== X-Proofpoint-GUID: 6jNEiEn7_1Kc-ZEVPm3ffQV9MoUCk99r X-Authority-Analysis: v=2.4 cv=LfAxKzfi c=1 sm=1 tr=0 ts=691745db cx=c_pps a=zUXba1i+DNHe9EVMNcbDHw==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=6UeiqGixMTsA:10 a=M51BFTxLslgA:10 a=i1IsUcr2s-wA:10 a=VkNPw1HP01LnGYTKEx00:22 a=2AEO0YjSAAAA:8 a=iqUPcmWXN_vvxTOgPeMA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=cPQSjfK2_nFv0Q5t_7PE:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-11-14_04,2025-11-13_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 bulkscore=0 malwarescore=0 impostorscore=0 lowpriorityscore=0 spamscore=0 clxscore=1011 phishscore=0 priorityscore=1501 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2511140121 A number of CPC features, like retransmission or remote's receive window, are cport-based. In order to prepare for these features, introduce a CPC CPort context structure. The CPC Host Device module now implements cport_allocate and cport_release callbacks in order to allocate and release these structures when requested by Greybus module. Signed-off-by: Damien Ri=C3=A9gel --- drivers/greybus/cpc/Makefile | 2 +- drivers/greybus/cpc/cpc.h | 29 ++++++++++ drivers/greybus/cpc/cport.c | 37 ++++++++++++ drivers/greybus/cpc/host.c | 109 ++++++++++++++++++++++++++++++++++- drivers/greybus/cpc/host.h | 12 ++++ 5 files changed, 187 insertions(+), 2 deletions(-) create mode 100644 drivers/greybus/cpc/cpc.h create mode 100644 drivers/greybus/cpc/cport.c diff --git a/drivers/greybus/cpc/Makefile b/drivers/greybus/cpc/Makefile index 490982a0ff5..3d50f8c5473 100644 --- a/drivers/greybus/cpc/Makefile +++ b/drivers/greybus/cpc/Makefile @@ -1,6 +1,6 @@ # SPDX-License-Identifier: GPL-2.0 =20 -gb-cpc-y :=3D host.o +gb-cpc-y :=3D cport.o host.o =20 # CPC core obj-$(CONFIG_GREYBUS_CPC) +=3D gb-cpc.o diff --git a/drivers/greybus/cpc/cpc.h b/drivers/greybus/cpc/cpc.h new file mode 100644 index 00000000000..85d02954307 --- /dev/null +++ b/drivers/greybus/cpc/cpc.h @@ -0,0 +1,29 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (c) 2025, Silicon Laboratories, Inc. + */ + +#ifndef __CPC_H +#define __CPC_H + +#include +#include +#include + +/** + * struct cpc_cport - CPC cport + * @id: cport ID + * @cpc_hd: pointer to the CPC host device this cport belongs to + */ +struct cpc_cport { + u16 id; + + struct cpc_host_device *cpc_hd; +}; + +struct cpc_cport *cpc_cport_alloc(u16 cport_id, gfp_t gfp_mask); +void cpc_cport_release(struct cpc_cport *cport); + +int cpc_cport_message_send(struct cpc_cport *cport, struct gb_message *mes= sage, gfp_t gfp_mask); + +#endif diff --git a/drivers/greybus/cpc/cport.c b/drivers/greybus/cpc/cport.c new file mode 100644 index 00000000000..88bdb2f8182 --- /dev/null +++ b/drivers/greybus/cpc/cport.c @@ -0,0 +1,37 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (c) 2025, Silicon Laboratories, Inc. + */ + +#include "cpc.h" +#include "host.h" + +/** + * cpc_cport_alloc() - Allocate and initialize CPC cport. + * @cport_id: cport ID. + * @gfp_mask: GFP mask for allocation. + * + * Return: Pointer to allocated and initialized cpc_cport, or NULL on fail= ure. + */ +struct cpc_cport *cpc_cport_alloc(u16 cport_id, gfp_t gfp_mask) +{ + struct cpc_cport *cport; + + cport =3D kzalloc(sizeof(*cport), gfp_mask); + if (!cport) + return NULL; + + cport->id =3D cport_id; + + return cport; +} + +void cpc_cport_release(struct cpc_cport *cport) +{ + kfree(cport); +} + +int cpc_cport_message_send(struct cpc_cport *cport, struct gb_message *mes= sage, gfp_t gfp_mask) +{ + return cport->cpc_hd->driver->message_send(cport->cpc_hd, cport->id, mess= age, gfp_mask); +} diff --git a/drivers/greybus/cpc/host.c b/drivers/greybus/cpc/host.c index 1eb6c87e25f..033ff7f0184 100644 --- a/drivers/greybus/cpc/host.c +++ b/drivers/greybus/cpc/host.c @@ -7,6 +7,7 @@ #include #include =20 +#include "cpc.h" #include "host.h" =20 =20 @@ -15,12 +16,95 @@ static struct cpc_host_device *gb_hd_to_cpc_hd(struct g= b_host_device *hd) return (struct cpc_host_device *)&hd->hd_priv; } =20 +static struct cpc_cport *cpc_hd_get_cport(struct cpc_host_device *cpc_hd, = u16 cport_id) +{ + struct cpc_cport *cport; + + mutex_lock(&cpc_hd->lock); + for (int i =3D 0; i < ARRAY_SIZE(cpc_hd->cports); i++) { + cport =3D cpc_hd->cports[i]; + if (cport && cport->id =3D=3D cport_id) + goto unlock; + } + + cport =3D NULL; + +unlock: + mutex_unlock(&cpc_hd->lock); + + return cport; +} + +static int cpc_hd_message_send(struct cpc_host_device *cpc_hd, u16 cport_i= d, + struct gb_message *message, gfp_t gfp_mask) +{ + struct cpc_cport *cport; + + cport =3D cpc_hd_get_cport(cpc_hd, cport_id); + if (!cport) { + dev_err(cpc_hd_dev(cpc_hd), "message_send: cport %u not found\n", cport_= id); + return -EINVAL; + } + + return cpc_cport_message_send(cport, message, gfp_mask); +} + +static int cpc_hd_cport_allocate(struct cpc_host_device *cpc_hd, int cport= _id, unsigned long flags) +{ + struct cpc_cport *cport; + int ret; + + mutex_lock(&cpc_hd->lock); + for (int i =3D 0; i < ARRAY_SIZE(cpc_hd->cports); i++) { + if (cpc_hd->cports[i] !=3D NULL) + continue; + + if (cport_id < 0) + cport_id =3D i; + + cport =3D cpc_cport_alloc(cport_id, GFP_KERNEL); + if (!cport) { + ret =3D -ENOMEM; + goto unlock; + } + + cport->cpc_hd =3D cpc_hd; + + cpc_hd->cports[i] =3D cport; + ret =3D cport_id; + goto unlock; + } + + ret =3D -ENOSPC; +unlock: + mutex_unlock(&cpc_hd->lock); + + return ret; +} + +static void cpc_hd_cport_release(struct cpc_host_device *cpc_hd, u16 cport= _id) +{ + struct cpc_cport *cport; + + mutex_lock(&cpc_hd->lock); + for (int i =3D 0; i < ARRAY_SIZE(cpc_hd->cports); i++) { + cport =3D cpc_hd->cports[i]; + + if (cport && cport->id =3D=3D cport_id) { + cpc_cport_release(cport); + cpc_hd->cports[i] =3D NULL; + break; + } + } + mutex_unlock(&cpc_hd->lock); +} + static int cpc_gb_message_send(struct gb_host_device *gb_hd, u16 cport_id, struct gb_message *message, gfp_t gfp_mask) { struct cpc_host_device *cpc_hd =3D gb_hd_to_cpc_hd(gb_hd); =20 - return cpc_hd->driver->message_send(cpc_hd, cport_id, message, gfp_mask); + return cpc_hd_message_send(cpc_hd, cport_id, message, gfp_mask); } =20 static void cpc_gb_message_cancel(struct gb_message *message) @@ -28,12 +112,33 @@ static void cpc_gb_message_cancel(struct gb_message *m= essage) /* Not implemented */ } =20 +static int cpc_gb_cport_allocate(struct gb_host_device *gb_hd, int cport_i= d, unsigned long flags) +{ + struct cpc_host_device *cpc_hd =3D gb_hd_to_cpc_hd(gb_hd); + + return cpc_hd_cport_allocate(cpc_hd, cport_id, flags); +} + +static void cpc_gb_cport_release(struct gb_host_device *gb_hd, u16 cport_i= d) +{ + struct cpc_host_device *cpc_hd =3D gb_hd_to_cpc_hd(gb_hd); + + return cpc_hd_cport_release(cpc_hd, cport_id); +} + static struct gb_hd_driver cpc_gb_driver =3D { .hd_priv_size =3D sizeof(struct cpc_host_device), .message_send =3D cpc_gb_message_send, .message_cancel =3D cpc_gb_message_cancel, + .cport_allocate =3D cpc_gb_cport_allocate, + .cport_release =3D cpc_gb_cport_release, }; =20 +static void cpc_hd_init(struct cpc_host_device *cpc_hd) +{ + mutex_init(&cpc_hd->lock); +} + struct cpc_host_device *cpc_hd_create(struct cpc_hd_driver *driver, struct= device *parent) { struct cpc_host_device *cpc_hd; @@ -52,6 +157,8 @@ struct cpc_host_device *cpc_hd_create(struct cpc_hd_driv= er *driver, struct devic cpc_hd->gb_hd =3D hd; cpc_hd->driver =3D driver; =20 + cpc_hd_init(cpc_hd); + return cpc_hd; } EXPORT_SYMBOL_GPL(cpc_hd_create); diff --git a/drivers/greybus/cpc/host.h b/drivers/greybus/cpc/host.h index fe07826b765..1c168cdd2bf 100644 --- a/drivers/greybus/cpc/host.h +++ b/drivers/greybus/cpc/host.h @@ -8,11 +8,13 @@ =20 #include #include +#include #include =20 #define GB_CPC_MSG_SIZE_MAX 2048 #define GB_CPC_NUM_CPORTS 8 =20 +struct cpc_cport; struct cpc_host_device; =20 struct cpc_hd_driver { @@ -25,12 +27,22 @@ struct cpc_hd_driver { * struct cpc_host_device - CPC host device. * @gb_hd: pointer to Greybus Host Device this device belongs to. * @driver: driver operations. + * @lock: mutex to synchronize access to cport array. + * @cports: array of cport pointers allocated by Greybus core. */ struct cpc_host_device { struct gb_host_device *gb_hd; const struct cpc_hd_driver *driver; + + struct mutex lock; /* Synchronize access to cports */ + struct cpc_cport *cports[GB_CPC_NUM_CPORTS]; }; =20 +static inline struct device *cpc_hd_dev(struct cpc_host_device *cpc_hd) +{ + return &cpc_hd->gb_hd->dev; +} + struct cpc_host_device *cpc_hd_create(struct cpc_hd_driver *driver, struct= device *parent); int cpc_hd_add(struct cpc_host_device *cpc_hd); void cpc_hd_put(struct cpc_host_device *cpc_hd); --=20 2.49.0 From nobody Sun Dec 14 06:37:03 2025 Received: from mx0b-0024c301.pphosted.com (mx0b-0024c301.pphosted.com [148.163.153.153]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A3BAC33A027 for ; Fri, 14 Nov 2025 15:08:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=148.163.153.153 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763132901; cv=fail; b=F23FITgogzFMokjP5swpaWJ8OkuDbFO8Dv1RxrVQ5bsKNoEj7eI8t8ScJNNBe8+Ie9JWOveK7aUDiJ2mQqFZ9R06Z98ShPrnOISIlDfT1TU3G9FKEj6xqjnEma9K2NF2jLzdfUJf71exSY+Of0VkM0yQGjmwPn+9Eulflo+GZzs= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763132901; c=relaxed/simple; bh=7d2/tGGWFJ9X91SclHZZrN2jIiiNDz61LrQVSG6bhdk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=lgEc5hQ1lCRVmIcxyngoKjMbGlTX53GIb15ZGwERX7qegoJZks/xJSlmIT1ZCle1yiFJUEMOhcr0hkiVLHIUl3Hr7Prdz5gWJ04pwbXyh0rSaKqm2VPW4bQqOi/ok483JMvsjp9ba8/zQns0CyZSbipeWAdxbDdDdyEIuy4sQJ4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=silabs.com; spf=pass smtp.mailfrom=silabs.com; dkim=pass (2048-bit key) header.d=silabs.com header.i=@silabs.com header.b=IoWOU+iM; dkim=pass (1024-bit key) header.d=silabs.com header.i=@silabs.com header.b=AgK1v6k9; arc=fail smtp.client-ip=148.163.153.153 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=silabs.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=silabs.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=silabs.com header.i=@silabs.com header.b="IoWOU+iM"; dkim=pass (1024-bit key) header.d=silabs.com header.i=@silabs.com header.b="AgK1v6k9" Received: from pps.filterd (m0101742.ppops.net [127.0.0.1]) by mx0a-0024c301.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5AECXOfD2440870; Fri, 14 Nov 2025 09:08:15 -0600 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silabs.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pps12202023; bh=jx65y8uNXwM6wrvnwtFMVQfh6aglACWZTYQL7z7qeLE=; b=IoWOU+iMoQZF TMYyN+mhHhA6XTJr/oHKi50hhJI8RUBbCEvRDNBHfi+LkPjS2uZXIktW+v8D2dS0 0FmYzVVZzePFuAc7gxnsoBdNJErWcP4c13es+RTbSePtAhcRJJimtCQIQsNiV9rQ 7IBiYMZ3ru4I3qWOr6L2KuPuEYn0WohWACqihRJDRKMoF1BbsrCMzRVQmDxeJmBQ o6FS5UULFvwZP2fGGs3gX8iIUmAFG7NUMOGayAi1BE+M6jr3R89IU7rRFbuGICpt 6+UI28j4ldaWiM67jY8qcP3lc5m0TDhX761sOfVFSZ67F5RLN/AsuNaSMftmVZmM KnKaXum+dQ== Received: from dm5pr21cu001.outbound.protection.outlook.com (mail-centralusazon11021081.outbound.protection.outlook.com [52.101.62.81]) by mx0a-0024c301.pphosted.com (PPS) with ESMTPS id 4adr8fsm46-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 14 Nov 2025 09:08:15 -0600 (CST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ZxospTj8zemikGNMm4TGDi3wOVuXcXBm7VonVtxV5q6b1QlmfrvOlNlCUETLOq+DgLfUADsEtZieMQFYHPzIyjBUNpvUzxgVA3zPfZdki4Zwu4v9y21RhfgvRO6hJQEaAG7f8ozlqIEANDKISUpHD40kAu0hlYejR7oUOQxJJARACz/w7YkhE6k/JJbFxIOqvD8SgKRsp+9S94dYxF/ssYcltvKBrGdtl6MtUB7737fUyM/OBb94jPxDZCSXP0lGmIS4/+Tv6OERgJMQdx/m51kDEr28/oTAWfRGlngB76f5FKIuFqca8wydcwHRtwzI9IeWorbLkAbhzdgVsA/3hw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=jx65y8uNXwM6wrvnwtFMVQfh6aglACWZTYQL7z7qeLE=; b=mgIJoAToSY0XKpUyhK/rFTwWJAolQ9VYUlyLFCsMY/w9dndAByuyTHNBKr7IOcQMuz+Yy43QZZa32k2dwm6fNnGtMc5ey34MVQOYtdhxlNIuPl+DDGBLKhurPsZyLxg/R41SCTh5+5+qmoOS3wRWU4v1qNYjMa+1Txt5Pz2RZyNcrg6LBVTluSfQuYIszrxJUVjKTT4r8FiJ6pjC24Ibu12tRbZ5Urybu+FA6KC9A4089KQwjSfdry7dkCIic3lcBrenLoy7CsanRZ0p95eVNj63ecOqp7cbTHi7fUZZGwr5ScgiuV2J8IyJFYC8G0WJG1r+GHQL4HxAGt8sRBC7yA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=silabs.com; dmarc=pass action=none header.from=silabs.com; dkim=pass header.d=silabs.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silabs.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jx65y8uNXwM6wrvnwtFMVQfh6aglACWZTYQL7z7qeLE=; b=AgK1v6k9mAa2LpZNpZHL8RcsgRJ5IlcTkI5ZqMi4RW4p1o/yetxmOlFYaincvMO/Niq0LZTqAg0nqxg+TNp/3cKE1RmpUH+ojSm3326XeYxX0dCFaI5UYSdMsJaT7RJLPRBnhOAPirYetqoTf32HnmIlpdocXpdp8tb97XNsFvw= Received: from DS0PR11MB8205.namprd11.prod.outlook.com (2603:10b6:8:162::17) by CH3PR11MB8774.namprd11.prod.outlook.com (2603:10b6:610:1cd::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9320.17; Fri, 14 Nov 2025 15:08:12 +0000 Received: from DS0PR11MB8205.namprd11.prod.outlook.com ([fe80::c508:9b04:3351:524a]) by DS0PR11MB8205.namprd11.prod.outlook.com ([fe80::c508:9b04:3351:524a%5]) with mapi id 15.20.9320.018; Fri, 14 Nov 2025 15:08:12 +0000 From: =?UTF-8?q?Damien=20Ri=C3=A9gel?= To: greybus-dev@lists.linaro.org, Johan Hovold , Alex Elder , Greg Kroah-Hartman , linux-kernel@vger.kernel.org Cc: Silicon Labs Kernel Team , =?UTF-8?q?Damien=20Ri=C3=A9gel?= Subject: [RFC PATCH v2 03/12] greybus: cpc: use socket buffers instead of gb_message in TX path Date: Fri, 14 Nov 2025 10:07:29 -0500 Message-ID: <20251114150738.32426-4-damien.riegel@silabs.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251114150738.32426-1-damien.riegel@silabs.com> References: <20251114150738.32426-1-damien.riegel@silabs.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MA5P287CA0046.INDP287.PROD.OUTLOOK.COM (2603:1096:a01:175::12) To DS0PR11MB8205.namprd11.prod.outlook.com (2603:10b6:8:162::17) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS0PR11MB8205:EE_|CH3PR11MB8774:EE_ X-MS-Office365-Filtering-Correlation-Id: b495c8e0-1e52-42c3-870c-08de238fa0ff X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|52116014|366016|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?OUFQSUZlMXBMY2l6b3hnejlUcmIrZXNPMzBNYzRwQlpxR2MvRzUrZWk3WVpO?= =?utf-8?B?MVAzSHJOTGovTklFWm9HajJHZC93UFBWa3hlUVFqbm5FcXhLMVFoK2JMVEIx?= =?utf-8?B?anA3S0JzRkFuOFhqcmhxZ25vRlBNajZ6TXJPbktXMXZTSVhFRzRybDBvendz?= =?utf-8?B?L0dwdlN5QVA5K0VZWTNNOWpLNythZkpLYUlaNHdxNFhnVnlFekJxdzcwVTRE?= =?utf-8?B?NnhtTEVwM1IrSE04eWpYN21CN0RRN0VoVUFsYzNReEk0OEdnK0VTSVZrUDFV?= =?utf-8?B?MFNZR1luZHZKSzFibXNxWXBaRVNtRGk4VnpFSU9TdFRTaVFuc1phMVNIa2hB?= =?utf-8?B?UElGTW9qQ0FiMmp6bjYrNjFPTmFST1dYa3RWWlZvUG9pNXVlUXBqY3Y5MUZQ?= =?utf-8?B?SSsvMC9zRXliZHRIcVFuQ29IMjZKUzdKTFcyYnZzNXhzazVmY0l2V3laU3lz?= =?utf-8?B?bUpGaW91c0ZyRWRySXg2SWNQbzNuTjZTY1djYnNTaVFYRHNOOWFwNlZyT04v?= =?utf-8?B?blEvNzBGZUZPZ0NUSVh3RS9oZ0l3bStINzFXRERXVVhWRVVjSFlqR2hXbUNK?= =?utf-8?B?NFRleGc1TkduV2IxcVlhU2xZUDJLVU1VL1dzVnN0STF5SkE4SFBNMHVmTDg3?= =?utf-8?B?eHFSQ2Rwdis0TllKbFRyeXRzL1RxWXY0ZlZaaFlrYk5VNDZKRlFXSjQ3UDM1?= =?utf-8?B?U1ZPWHBGL2x0OW9yK0ZaZlFBbkNGM0lON3o5OHNmSHd5VUFTSmpnN3dvUk5w?= =?utf-8?B?UmVZKzJoTFE0UFVDSEYxc2gvenkxOElRcTB3MEl5N1lTTTZJeXcrdXZYUm95?= =?utf-8?B?VjRSdUJiL2NXL3lFcnMrcFFxNSs5Y3owZDRUWXhybkRlUHNHQkYrL3FVQVJw?= =?utf-8?B?V1NIWmc3OTdoeEx0bjAxV1hWR1JueTIrazZweGx5WTIvd1BoekdnSklGNFFS?= =?utf-8?B?QWQ5cjZWd2pOUkVISGY3SWkvQmw2R1J5RGszVUR4MER2NUt2NUdiQlE5TjRt?= =?utf-8?B?WnlEalp6M3RFdWhuUUY5TC8xZ3Y3MWRVaFdabGc1VW9MN0RsaSs5bmpwcjFZ?= =?utf-8?B?VHNRZFlmcTkwdjdFNllCSXVyRThKYUo0R0hpV0ZZRWd6THpRQzM4L1BOTko4?= =?utf-8?B?bFRmU2F4RytKS3JFWGduSEFqZVVlRHA4R1ZXTTRSMkdNVGI4Mm5hbkJwZUtq?= =?utf-8?B?bXhjanZWcEd6enM3UUZZS0J1Q3NQclprdXpMdm1wMStCcnJaMGNSTUwzVzlp?= =?utf-8?B?Z3Q5WVpFcmhzZXpSeWpZRnpmQUdJb1lKZHpBZUtzTyt0Z2JMQXR2UzZQSGww?= =?utf-8?B?YXdIODM4UXhZYjZSVTIwUnQ1RGg2dzJjV203VUwyM0QvbzBveTNSTzJFbnp1?= =?utf-8?B?dHpTaFg2Mk9EVGNSR3BVbGlIdS84S2UxWmtjVStnam5wb2psSHJNbmhCMEIw?= =?utf-8?B?UUtUcE95eWxPZmVoUDFjaHRQbXNkeXRtZXhxcmRrQTRvWnYrNjRyVU9HaCt3?= =?utf-8?B?UHQyZkRiNms0eHh0MXpXRi9pTXZHWDQrWFhjOFZEWEVCS2lDNlpud3Yvai8z?= =?utf-8?B?QWdaRGtVMVpDMUg3aXp0Zk5mSCtVODdXcEJneUw5czBPQ0JRaXpvQlJSZ0Jy?= =?utf-8?B?WlRYcmliTTdVUXQwTmFzUUhpZU0xbGdRK3FjMjI1NFhOZFgrMXdrd3RuMkND?= =?utf-8?B?NkhNN2tlR3RIOWY3UlVhSmtReW4wa1JiMFl5VWRTUUl3UGR5MUxIZEJBOFZX?= =?utf-8?B?QmxWMDNZSTBmM0dxaUVvczduUlFOWVIxSEtFUHBQS2djUUtIRWZNSk9kdG0v?= =?utf-8?B?WjR5djFucThuRU5Gc2RKQ3NIelJlUGVzdjlMOFBOOFhqTFArSDVtK0owNzdp?= =?utf-8?B?dnpyRE1lc2Fqc1F0VTkyOG40UTdpeEZqQ2tKOFhKcm1qcEpHbUYyWlJjelcv?= =?utf-8?B?bEp1RHRBQ2NIN2YxMmVTVVoxS0o3aVRIZXZGZlAxZXlnZlEzY2syeXM4MTYr?= =?utf-8?B?VTBzUjh1U01YZDBCTVc3NnRBOXhBUExJcytFOVRaQmFmMHplNDBER1lOYjdS?= =?utf-8?Q?y/1a6s?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS0PR11MB8205.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(52116014)(366016)(1800799024)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?TjRWdlZ5dHV5K0JzZ05BQU5qSzNpTXYzRE1KS01QTVIzTjB3MkxTRElUUERj?= =?utf-8?B?d3NvckdTRWRKVGd1RlQyNWZrbGdDVEg3WGR3d204eVFIY1I1eWNqcTZWNG00?= =?utf-8?B?VzVOOGpqUFE4Z1JIUG5maWFLQ3NraVVzbGVsandUc2dJVmxzdVlmeG10MkxR?= =?utf-8?B?aitGN0pZaVp6NnQyVGZOdENIdVBNQnQxcDMwR1l1SjZWcmg3Wm10eHJoMEI3?= =?utf-8?B?emwyVk9POUduWTRIQ2hMZThpb1pBZVgzc1dpVDdyMHBlTHZlaUFnZnorUzZO?= =?utf-8?B?eDlMV3duNUdDNk5xUm15SzkrZmFiTUxSNk9rM1MwZDk0YlMxQ2hNQVNVTFdq?= =?utf-8?B?UVVaMndlTnNIOUVxQVRIRlBHYy9YSnk2bncxRExuTm1oN1lVMjlzTEwrZEEz?= =?utf-8?B?U0dQUU5kNFB3Kzh1VFdCNXd4NEozSWIxOTZNVWZhNkhaamxkRGdWK0t3VHNi?= =?utf-8?B?ZUNzN0RJTVQyOEFXeEVXR1pTb0hmbC9aTFBTU0FUYlJ3a0ZiUG5vYzl0ekM2?= =?utf-8?B?N0NlTDlyOUhIZkVXL3ZjdEtjamdQYVZuL1E4anpXYnRudmxOZE5CSTFrRk0x?= =?utf-8?B?K2JrVVpsRlpOY09CdlFpSEZQUzkxUjlFZ2VwVzY3YnNjdkdoY2tOcmRnaGI2?= =?utf-8?B?bldLZVRCdHVzSHh4VmNEYXFXRXN5aXR2TFgxV2tLUklWL0Y5SGZyUTVZWkRU?= =?utf-8?B?QW54WkpaTVBzZldlS3YrMXR0QVZ4eStDdWNqdUhHZGdnV0k3dUlwaUxIZlhB?= =?utf-8?B?eUk5citFWFRPTU9JbGhiSGtVYnUrM0xLa2tRTEQ1cGZBNHU4eElGYmREcE1s?= =?utf-8?B?QzJJYTd5VU1QMVdTcExPY3JBUVZXRWgxd0swOWFHLzlqbW5jMUYydHg1SWo2?= =?utf-8?B?LysxV1lybXkyUXBkdk1qcUtHMy9URGRpWUk2eU11MEhOZXk4ME12cTB2emlq?= =?utf-8?B?azVodFQ4ditGcStQa2RaTzNRYUlQc0hoTTZDRlpDNDFJMHpXRXQ4cTdFR0Mz?= =?utf-8?B?NENYTWV1Mm00ZDViQXVTTW8zKzhIL1daWjJnVDRtN0RnRElEMGtDa0haZzZV?= =?utf-8?B?ckpFMUQzdXlnVGRLMEpxTTlVOEFBL3RlMHd2MHd3NWVaRjF3bGl6REYrbHgz?= =?utf-8?B?dGg4WWtsU0pqWHdSU3M3ZENHazIxcEJFK0NOQ0g1SzZ0d2RmT3MwT1ZtWDdr?= =?utf-8?B?ak80QUVkemx5RDNjSGtaK290N0djNkhFeHM2UXZ1OTlNVGwwQW1UdkNWNzQ4?= =?utf-8?B?ZVlnTVh5N0dXNlhZa2xFcWpKM2prR3FCQVhTdTltd2dvbGpkdFppdzVqSEdq?= =?utf-8?B?TkxvaVp2UW0xL3N4RkpieXV4bFpGOGVlZWY5VWNhTXR1dXJmL1hmNitHNVRP?= =?utf-8?B?ZjlLWUR0NjZtSmlQSFlsSFUrOE5UaEc0WnJCbW9hZmRSTE96THFsYjJwQkt6?= =?utf-8?B?cjBJU2orWVg3aHdlTlFWYXlaaldTb0dKKzRnNmx3cEFWV3kyRU5KdkR0NjVV?= =?utf-8?B?bjJkaCtEeW1uV3krdit4bUFuQmx3dFVaMnVpTXh3SkNrdDZoQ0ZqY2pWZzVv?= =?utf-8?B?SzJRY1ZTcWhFbjYxRHAxU3AwZTNDT0UxbEMxcGtlSjhOT3pwTi9xUUZERlpl?= =?utf-8?B?aWhEOWN0dUZCLzBjbkRyOTdYQ0FUcERmc0xDWDdFODcwMDNzcjZRLzQ2U0J0?= =?utf-8?B?bTBaS09FZjZMV3FEQjgzQ2RyUEtvVkJQdUNLYy9JR2RWZTdTZ1gzNFFzOFk1?= =?utf-8?B?REZqYU4xUjhVd1UvQ25QaHdyUDBCd1FvZHJVN2JvTUdaS1h1UDRqUVdXNWZP?= =?utf-8?B?NHJ6bG9uWTBsdThTc3RxMzNyNE1zV25YT012N3ZTMUJlK0F4VzRqY24veUVE?= =?utf-8?B?RmxUVFVrLzlLUWZKVkdLZjk0ZkI5ZnhGdmtlTGdSWktRS1FYaS9BdERHVGVV?= =?utf-8?B?UXN4MlIxRktFbFVZYlM3b3hGK2dLZXhKdFVONDJseHYxVEY0QlBZOWVaY3dK?= =?utf-8?B?emRhMVUrbkY4MUlKS1V5b1pWWklMU2JTZzdoSnd3dXFSZXNsUnphbk91QWxC?= =?utf-8?B?TDZOVEczbGtyS0x5ZDZHdEFZQnpROFVUK01ZYUlVYlptRnZrRHpQZ1NOcFBj?= =?utf-8?Q?mlk4LTulQYv++sxLtmcQMZgv1?= X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: b495c8e0-1e52-42c3-870c-08de238fa0ff X-MS-Exchange-CrossTenant-AuthSource: DS0PR11MB8205.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Nov 2025 15:08:12.5002 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 54dbd822-5231-4b20-944d-6f4abcd541fb X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: RcM/eklVFRteZX49NiurP3+QUYTY1aDZiYS49+fJomKqkqUOGLgKWZmHCXvmlQ6ua+WTDufAHK3U2JjIsIKIOg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR11MB8774 X-Proofpoint-ORIG-GUID: y8L6t2eTFt1ID7RsFFx7bGOsKzW8NpY4 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTE0MDEyMSBTYWx0ZWRfX+L2bo9VxnBva QT/L4pTkWBA7vk+FZTMRK3mE1RoutFCt8324vDZ9FXWW9f7rysjKSeMdO0DwdtdvT4si8V7URPy GhKlGqfNYW4krzvksG2QtJ7EwHC3xQLiZAQspKE64GqLMfEUz/CMxglJsqrTTs7HqYi2DWrpGi9 xHb1Ik3hrZiapa8sY7Gf6glRgxtareC2mZn+ko+N4UuzTgQw3iYQu1/qDqM7atqejyqtjD9mhvM wfgVy9IVtM+nsmm/of9vbQirPqKrsFUw7pIlr2OziC1Ipb2h5lNmuiqbfdZQlbYEfqFXgD0OT4V pii1CyF0VWXScR8Kec5OZqcivb9eX6m90bHxzqrvsAG27jgkz13OIkMJ0lIO4tKAoXE5PdL5qMg gAi2eYh1ArRKbIyD+p9oFN0Z3vp6lw== X-Authority-Analysis: v=2.4 cv=BYPVE7t2 c=1 sm=1 tr=0 ts=691745df cx=c_pps a=7ywGlyDdJUFJDTdbuALIzQ==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=6UeiqGixMTsA:10 a=M51BFTxLslgA:10 a=i1IsUcr2s-wA:10 a=VkNPw1HP01LnGYTKEx00:22 a=2AEO0YjSAAAA:8 a=UI2V7ICqOKO9W4d5kokA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=cPQSjfK2_nFv0Q5t_7PE:22 X-Proofpoint-GUID: y8L6t2eTFt1ID7RsFFx7bGOsKzW8NpY4 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-11-14_04,2025-11-13_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 adultscore=0 malwarescore=0 suspectscore=0 clxscore=1015 lowpriorityscore=0 impostorscore=0 priorityscore=1501 phishscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2511140121 CPC comes with its own header, that is not yet implemented. Without skb, the CPC host device drivers have to get two pointers to get a full packet: one pointer to the CPC header and one pointer to the GB message. In order to make their implementations simpler, convert the GB message into an SKB. Signed-off-by: Damien Ri=C3=A9gel --- drivers/greybus/cpc/cpc.h | 11 +++++++++- drivers/greybus/cpc/cport.c | 11 ++++++++-- drivers/greybus/cpc/host.c | 41 ++++++++++++++++++++++++++++++++++--- drivers/greybus/cpc/host.h | 7 ++++--- 4 files changed, 61 insertions(+), 9 deletions(-) diff --git a/drivers/greybus/cpc/cpc.h b/drivers/greybus/cpc/cpc.h index 85d02954307..7e032f6cf50 100644 --- a/drivers/greybus/cpc/cpc.h +++ b/drivers/greybus/cpc/cpc.h @@ -24,6 +24,15 @@ struct cpc_cport { struct cpc_cport *cpc_cport_alloc(u16 cport_id, gfp_t gfp_mask); void cpc_cport_release(struct cpc_cport *cport); =20 -int cpc_cport_message_send(struct cpc_cport *cport, struct gb_message *mes= sage, gfp_t gfp_mask); +int cpc_cport_transmit(struct cpc_cport *cport, struct sk_buff *skb); + +struct cpc_skb_cb { + struct cpc_cport *cport; + + /* Keep track of the GB message the skb originates from */ + struct gb_message *gb_message; +}; + +#define CPC_SKB_CB(__skb) ((struct cpc_skb_cb *)&((__skb)->cb[0])) =20 #endif diff --git a/drivers/greybus/cpc/cport.c b/drivers/greybus/cpc/cport.c index 88bdb2f8182..ed0b8e8b0d7 100644 --- a/drivers/greybus/cpc/cport.c +++ b/drivers/greybus/cpc/cport.c @@ -31,7 +31,14 @@ void cpc_cport_release(struct cpc_cport *cport) kfree(cport); } =20 -int cpc_cport_message_send(struct cpc_cport *cport, struct gb_message *mes= sage, gfp_t gfp_mask) +/** + * cpc_cport_transmit() - Transmit skb over cport. + * @cport: cport. + * @skb: skb to be transmitted. + */ +int cpc_cport_transmit(struct cpc_cport *cport, struct sk_buff *skb) { - return cport->cpc_hd->driver->message_send(cport->cpc_hd, cport->id, mess= age, gfp_mask); + struct cpc_host_device *cpc_hd =3D cport->cpc_hd; + + return cpc_hd_send_skb(cpc_hd, skb); } diff --git a/drivers/greybus/cpc/host.c b/drivers/greybus/cpc/host.c index 033ff7f0184..2ca938c2b48 100644 --- a/drivers/greybus/cpc/host.c +++ b/drivers/greybus/cpc/host.c @@ -6,6 +6,7 @@ #include #include #include +#include =20 #include "cpc.h" #include "host.h" @@ -39,6 +40,8 @@ static int cpc_hd_message_send(struct cpc_host_device *cp= c_hd, u16 cport_id, struct gb_message *message, gfp_t gfp_mask) { struct cpc_cport *cport; + struct sk_buff *skb; + unsigned int size; =20 cport =3D cpc_hd_get_cport(cpc_hd, cport_id); if (!cport) { @@ -46,7 +49,18 @@ static int cpc_hd_message_send(struct cpc_host_device *c= pc_hd, u16 cport_id, return -EINVAL; } =20 - return cpc_cport_message_send(cport, message, gfp_mask); + size =3D sizeof(*message->header) + message->payload_size; + skb =3D alloc_skb(size, gfp_mask); + if (!skb) + return -ENOMEM; + + /* Header and payload are already contiguous in Greybus message */ + skb_put_data(skb, message->buffer, sizeof(*message->header) + message->pa= yload_size); + + CPC_SKB_CB(skb)->cport =3D cport; + CPC_SKB_CB(skb)->gb_message =3D message; + + return cpc_cport_transmit(cport, skb); } =20 static int cpc_hd_cport_allocate(struct cpc_host_device *cpc_hd, int cport= _id, unsigned long flags) @@ -144,8 +158,8 @@ struct cpc_host_device *cpc_hd_create(struct cpc_hd_dri= ver *driver, struct devic struct cpc_host_device *cpc_hd; struct gb_host_device *hd; =20 - if ((!driver->message_send) || (!driver->message_cancel)) { - dev_err(parent, "missing mandatory callbacks\n"); + if (!driver->transmit) { + dev_err(parent, "missing mandatory callback\n"); return ERR_PTR(-EINVAL); } =20 @@ -181,12 +195,33 @@ void cpc_hd_del(struct cpc_host_device *cpc_hd) } EXPORT_SYMBOL_GPL(cpc_hd_del); =20 +void cpc_hd_message_sent(struct sk_buff *skb, int status) +{ + struct cpc_host_device *cpc_hd =3D CPC_SKB_CB(skb)->cport->cpc_hd; + struct gb_host_device *hd =3D cpc_hd->gb_hd; + + greybus_message_sent(hd, CPC_SKB_CB(skb)->gb_message, status); +} +EXPORT_SYMBOL_GPL(cpc_hd_message_sent); + void cpc_hd_rcvd(struct cpc_host_device *cpc_hd, u16 cport_id, u8 *data, s= ize_t length) { greybus_data_rcvd(cpc_hd->gb_hd, cport_id, data, length); } EXPORT_SYMBOL_GPL(cpc_hd_rcvd); =20 +/** + * cpc_hd_send_skb() - Queue a socket buffer for transmission. + * @cpc_hd: Host device to send SKB over. + * @skb: SKB to send. + */ +int cpc_hd_send_skb(struct cpc_host_device *cpc_hd, struct sk_buff *skb) +{ + const struct cpc_hd_driver *drv =3D cpc_hd->driver; + + return drv->transmit(cpc_hd, skb); +} + MODULE_DESCRIPTION("Greybus over CPC"); MODULE_LICENSE("GPL"); MODULE_AUTHOR("Silicon Laboratories, Inc."); diff --git a/drivers/greybus/cpc/host.h b/drivers/greybus/cpc/host.h index 1c168cdd2bf..104d61e3bc5 100644 --- a/drivers/greybus/cpc/host.h +++ b/drivers/greybus/cpc/host.h @@ -18,9 +18,7 @@ struct cpc_cport; struct cpc_host_device; =20 struct cpc_hd_driver { - int (*message_send)(struct cpc_host_device *hd, u16 dest_cport_id, - struct gb_message *message, gfp_t gfp_mask); - void (*message_cancel)(struct gb_message *message); + int (*transmit)(struct cpc_host_device *hd, struct sk_buff *skb); }; =20 /** @@ -48,5 +46,8 @@ int cpc_hd_add(struct cpc_host_device *cpc_hd); void cpc_hd_put(struct cpc_host_device *cpc_hd); void cpc_hd_del(struct cpc_host_device *cpc_hd); void cpc_hd_rcvd(struct cpc_host_device *cpc_hd, u16 cport_id, u8 *data, s= ize_t length); +void cpc_hd_message_sent(struct sk_buff *skb, int status); + +int cpc_hd_send_skb(struct cpc_host_device *cpc_hd, struct sk_buff *skb); =20 #endif --=20 2.49.0 From nobody Sun Dec 14 06:37:03 2025 Received: from mx0b-0024c301.pphosted.com (mx0b-0024c301.pphosted.com [148.163.153.153]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1CD7733B943 for ; Fri, 14 Nov 2025 15:08:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=148.163.153.153 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763132903; cv=fail; b=E2rjb5fyNVW6ZfOcvakOruOfH72rxzQcXPp3uCV8eS0jWB6YxJqSUg9ghxMoHJnaWPLwynOqQoyApBr3aoUy8iKz8e48UD3m+pPNrKE5aPBmjL6yvhNJ4HeUvDlj5vq5RRrJpA4JLZi8e/dBbpP51GD/ht2Kp7KuqJotIrapaJI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763132903; c=relaxed/simple; bh=T3eIGJOKybAa1REAvJu+Xz1ClqFb8yssCTXF61XEk+s=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=EPW7EflgJGQ0jRCq1daBcBqw4gQZOdVYnBgtRcPhDhNbkLUrxjsQWQ7Qd+u/Uv7rzHbaC0aQ1G1dcNr1/KOVXEaWhLzZZiK7IaNKcdZxv1ex/8qCC0/3QSdRNPPLuGnmY6H4U/fK0fB5KEkAZHPpQc+v80PxKHmPh31lcUaLE/4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=silabs.com; spf=pass smtp.mailfrom=silabs.com; dkim=pass (2048-bit key) header.d=silabs.com header.i=@silabs.com header.b=UmJOg396; dkim=pass (1024-bit key) header.d=silabs.com header.i=@silabs.com header.b=LaqLIN1U; arc=fail smtp.client-ip=148.163.153.153 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=silabs.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=silabs.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=silabs.com header.i=@silabs.com header.b="UmJOg396"; dkim=pass (1024-bit key) header.d=silabs.com header.i=@silabs.com header.b="LaqLIN1U" Received: from pps.filterd (m0101742.ppops.net [127.0.0.1]) by mx0a-0024c301.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5AECXOfE2440870; Fri, 14 Nov 2025 09:08:18 -0600 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silabs.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pps12202023; bh=Ybw8J2jwNfjiALAvFmvIjAcoR/UwWJIN9UMNXNS47w8=; b=UmJOg396WqkL FGyWZVU2ThPbKaMmoHPsrBz+RlmquPZ519U3MvxSBlRYwWwCdSNiDiL1vGubUFqp H28P+WnzcW2o35pOESnDmstYDO3DrkRY89+vEsEDhaJw9X3BKdfQlf/YNMwbV7ka fauXdTtRRN1J+gBaE55LpfaH2N92OsQ0ODWpfmhGimioQ0MV6KJNsTRMEFEenrjr eFGDtF9AXVoMycno8jiyRdGImjo6cOoUib+Yy4A2mDzyOUULN6vJhVjzaRPrCfdU s7WZ+TcV6utj/OhN7Mbic8YWWWhjslXTFYNlh1FmEzIqWUpc5usFOqXbklT/Lx2x 0SHaOt3grg== Received: from sj2pr03cu001.outbound.protection.outlook.com (mail-westusazon11022102.outbound.protection.outlook.com [52.101.43.102]) by mx0a-0024c301.pphosted.com (PPS) with ESMTPS id 4adr8fsm4b-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 14 Nov 2025 09:08:17 -0600 (CST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Ad/nPDk7qUOLKgwjEBOWjoTYw8aKLIBXqMaZOC2aXMmYvMeDOQHrayAhgFaeYae5uMMa/vH1s4BvbLQxOanQfx5YqKxZIgXvcyhHU9GZrtKezBZjfKIcQf+sYTqJeBSW/sBzZaHwMfB+WagGnF1V7y+jcsv687ueCfeg0btHrbOPrlOQUcPK912TgGhGHJLf1Yn3rdknZdyhwEmni6ZbciEsTXbVVMfsQh80uHG00RmTRx+ad4g9GXDP0UEFfnX67IHjDOKjNW4P+BiIwF/PgsLwzN47OlUkheMwl7HUb6YSYq4kQBMDWXEDW8gnNZw8w85Oq5UX+rVNRL7SsxlDzw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=Ybw8J2jwNfjiALAvFmvIjAcoR/UwWJIN9UMNXNS47w8=; b=XQ+mtu/eakANxj+FN+BAxO4DDBGanywtt+XmdRyjrh3FMOjtVQggUUooBRqwhCUPbldoG5LG5UkOIAeL8C37I7zbQZVZIA3kkGGg/MaYH7SJI+6ew7LB3x/ehg2e2PxcoQ8d80Ag+r1BWRr1FTuh4ERVT2yeftd41137Vy4zkTM5n4VLJTmKQYl+2xAR9vOn9qJJbosh5sa4Z5nhDSpmPbqrIewphmjF6A7Jr7bhoYyrpI+Uc3s4yTmbMQKDlKLrcMdlVLAbbQZxlfxp7I27MhT4hnAkhc8a1n4PnVt2LXLzrfXnN27gwQL9x4Nqi3E5FnjdpkH+UU1+p+linldmOg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=silabs.com; dmarc=pass action=none header.from=silabs.com; dkim=pass header.d=silabs.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silabs.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Ybw8J2jwNfjiALAvFmvIjAcoR/UwWJIN9UMNXNS47w8=; b=LaqLIN1Uv3yrgu/euGjIMVgZ8ruartd6ESxBqq9CMGGAlAF01K3XV8agzNhEHeYTwqNmUIENLDjCWWLMIOfnC4bbD5WGItyOdTKHgaPkRkpi0dY/Kya6PDh7pklNBN5+gURlbDHaUXmmK6kBFPF8p+fLGY/9ueWT2fCVbVAzVl0= Received: from DS0PR11MB8205.namprd11.prod.outlook.com (2603:10b6:8:162::17) by CH3PR11MB8774.namprd11.prod.outlook.com (2603:10b6:610:1cd::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9320.17; Fri, 14 Nov 2025 15:08:15 +0000 Received: from DS0PR11MB8205.namprd11.prod.outlook.com ([fe80::c508:9b04:3351:524a]) by DS0PR11MB8205.namprd11.prod.outlook.com ([fe80::c508:9b04:3351:524a%5]) with mapi id 15.20.9320.018; Fri, 14 Nov 2025 15:08:15 +0000 From: =?UTF-8?q?Damien=20Ri=C3=A9gel?= To: greybus-dev@lists.linaro.org, Johan Hovold , Alex Elder , Greg Kroah-Hartman , linux-kernel@vger.kernel.org Cc: Silicon Labs Kernel Team , =?UTF-8?q?Damien=20Ri=C3=A9gel?= Subject: [RFC PATCH v2 04/12] greybus: cpc: pack cport ID in Greybus header Date: Fri, 14 Nov 2025 10:07:30 -0500 Message-ID: <20251114150738.32426-5-damien.riegel@silabs.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251114150738.32426-1-damien.riegel@silabs.com> References: <20251114150738.32426-1-damien.riegel@silabs.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MA5P287CA0046.INDP287.PROD.OUTLOOK.COM (2603:1096:a01:175::12) To DS0PR11MB8205.namprd11.prod.outlook.com (2603:10b6:8:162::17) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS0PR11MB8205:EE_|CH3PR11MB8774:EE_ X-MS-Office365-Filtering-Correlation-Id: e9f99e8f-8a5d-402e-f974-08de238fa2ed X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|52116014|366016|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?SzgrNnZURDQ4N1g2dDR5eWNyazdJVzdPRGtDS3hVeTkrbXgzTTJSd05RQnBp?= =?utf-8?B?WGtpZFUydld6U1JkNWZvT01GTGo1RzBoaHY5VHBKYVZMZG1zdmorRDNiZWYx?= =?utf-8?B?SDRrSlZSS2ZRUktoQmNSTlgwZWVqZ280dC85YWcwVVllVlNFZ3dSUjRJSDZB?= =?utf-8?B?d011UFAydVRuTlcvVmllL05VTEgvL040eHhVTUt2MmlRcW1ycUJNd2MrUXhL?= =?utf-8?B?WXhwY09OWnlwSElxNnVCY3VMdm54SWtYbEVWbXNLVDNIMU5HbFJweTNCd04r?= =?utf-8?B?M2N4MmNoVUpMejZueDFBeFljemtNaWZpWVdpMlFlajhQVmM3MmNCWm9QNDda?= =?utf-8?B?Zmh2MDI0NDc0MmdmMm0xaHIrR3F6WXVUSElWUkNNRCsrM3VVYmdUTXBpTU9L?= =?utf-8?B?N2xiOVRGZnowM2NSeEFKSlp4SGNjaWZIUHFwTzhKNHZaNEVzTU02dVN6UzRr?= =?utf-8?B?WVppWDdHZG4wcnRTbzFWc1M4NStCYnptKzNrNDdzVDhxV01wUXVKbGVlS1dv?= =?utf-8?B?OVVDcTYrUC9vaXhYSjVjMWVQY2JJZEJKaFVIdVV5Rnl1VGgrcWZBaWw4ZERI?= =?utf-8?B?QzBQTU0rYTVxMjFBU243SC9IYnRYRFVpUEZkRUcyVldFbWV0NDQvaXJVSk9i?= =?utf-8?B?S3JXVWp6ZnBlSTNvejk5RUQrWjZ1L1Y1U0pKZm9wUjBEMlFzNXlQV1pnYlg3?= =?utf-8?B?RTd2dEtlaG5RaU8yOFByMERkdTA4NHJiNnlzNEJkOTRDYmJWN21vR3VQOU5P?= =?utf-8?B?Yk1VaFJSZ2lLNkVWcUpHOWdQdUhUQk1ZSGJtdUcrYmhXbFJUeTJQSlhIZ014?= =?utf-8?B?aUcvbTRYUi9jbGdlRXRHZ1FrOFpHZEpqSEN1aXphSWhxdk9tRVM4RW52NlRa?= =?utf-8?B?T2VGUnQ1bk5UK01meHNWcVVuL3BiVHdKc0wwVXRNR3FBcCtsSlhOdHZMUW91?= =?utf-8?B?cDVkVkVRUzliY3hkcFNmUTdZaDU3QTJudDNqbHROVGVMWDJWY2ZHTnJYa2ZS?= =?utf-8?B?L0V2VWkrMzh2eFdDM0dhbERLTmt5bWk4VktqZjhNdVJQTndiQXRvbVIvRytM?= =?utf-8?B?UjBpVGJ6NG5uWEh4NksvUzNkcUhueXk0V2ZFVzkwVlM0c2pjWVM4YjIzaGxD?= =?utf-8?B?Wk9BY2tsdW1LenBHcXFVUm5ocHVGVXd5NWRiUjZGOXlBNC9KdVBXOURKOXhr?= =?utf-8?B?M3dOT2NIWGpEeVBUR0tGMnFWbDZMRjFGemVXYUhZVkNpMnpodVdmYTFTUnF4?= =?utf-8?B?a2gyYnRaVFNCbGYrSkp3WlNrM2pWVWdBZmUyRnFzNlZwNWc0VERoNWRWSkt1?= =?utf-8?B?eDFCZmlQUTZGVE91aEN3ZUdKN1ZvTWxrcTN4UXFodTRiL2E4RStNMWpMZFhQ?= =?utf-8?B?N0NiQ041MjA1aE5DbDhQVHMvUkkxR3FuRFA3WnFCTDRFaTRRTUF1R2c0OW5Q?= =?utf-8?B?TE5ud0NMQzZ0Mmg5K1JYZUF0NDZ5QlN3RmZqazExOGlzVzNwZDFhOGliK2RC?= =?utf-8?B?Qmw0a01NcGI0ejVlTXBtZ3dVc2ZiMGZFTHllY2hpbjdyYklvRjhqd0R4MDVG?= =?utf-8?B?WlE5L0VvekU5ZzFiaTE1L2pHcUNXOWFoZC9OSzN1YVN5Njd6RmtkZExGT3pT?= =?utf-8?B?R0ZkNTVKMzdvcC8rL3U1YkpPazM2UDZMSFBrMkxZQmwrQVVLTXhoK1pXekZE?= =?utf-8?B?bzJEbnlqa05oMHJ5TXdHbitwVnNQS202UnZxTDl6bUxmNEF0aTZidEdnVytN?= =?utf-8?B?Z2UwTW5mS0g2akp5cS9HcmdWRVN2LzU5VWNyZ3NPbnVLd1N0VTcwQmxON2VV?= =?utf-8?B?ajlGZ0xvb3dhQy9NSlQrZVpaa1ZJN2pxRTRCUXFmOUN3d3czVjRSL0w4R1ZE?= =?utf-8?B?WVRHbDBUL2dXL2x5S0N1NGFJYkdGZlA1ZmNpR2JwcEF0VlRxOFQ4ZVBFWmRo?= =?utf-8?B?WGQ3amllU2I4SVhoWnYweWt6YWhXSWhGWXA3ZTNKcjUzZEZaU1BhYjZmWVZn?= =?utf-8?B?eG9tNDFXWUJXNERrUFdMWStpQ1NNWFhobWtEbnRNNHhnT3FDZUZCdlY2TWVt?= =?utf-8?Q?lSx33J?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS0PR11MB8205.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(52116014)(366016)(1800799024)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?aGM1cUVrcEpPVkhGRTFLckJIdnFCVmF3cGIwdi9RK2ZPZGVlTWlwdXNPL1Mv?= =?utf-8?B?WTlWeFM4dlpidmVvZm9zV3R1b3UxTytRcmUzWUU3UU9QNGFrRmZLM0JsSXo5?= =?utf-8?B?ZmE2NFRuNTNaRUhrT1p3eldNT1gyWm5jSjlVTVdSa2ZZaDNsQzNHa09kV3Zz?= =?utf-8?B?OGJlQVd3S2hrQkRlZEdxSEpCa0JScVBJNnIzVFNRSTY2Ulh4Q1NRZW04Mkdv?= =?utf-8?B?eFRMb1FaUjVKQWt6K1lqYjVaRXBOYlBUNjFFYlJWKy9XVDJXQ2JiNmZhM0RJ?= =?utf-8?B?UUtzbVRBcGpqTUZmWkpueWEvU1MrWkppalU0OEUwYnNuVG5WQzBGRGhKNm9j?= =?utf-8?B?NUowd1c2L1ZpUC9ORW5oaG1yeTZSUlNidXI1T1FGUGlqVlUzMzU1NllBbWxZ?= =?utf-8?B?UWsrSW9VTlFkV1h1ZVNmUnRKUHMyU1J5NDVIeHdYTTZCVVpOdnIzSDl0SCtk?= =?utf-8?B?TlhoUU5YYnprNmJpc3M4YWZCSzVuT3diM096RzlVN2RUblF4b25WRyt5aTFX?= =?utf-8?B?bGFPZW9PWUFsNkxhL1VXK0ZkOHg4bkxtT3JRc3plbS9hY0Rta2grY1hvUlpv?= =?utf-8?B?M2oxZUtCaGpUV2pRVHRySkJSVnViVnVQaXVFRDRCOGRpUDBscWtVMHlubmVO?= =?utf-8?B?dnRFMXVmRXd4UVNzUGVZSFBGZ21GdlhhTTkvMFQ4UHNwY3ZYdGVmY2NEclo3?= =?utf-8?B?eFp1akgrREs4d1FNeElWVFUyRExnSUtUdVVka09yZEx3SzBRcE9oeWl6SzBj?= =?utf-8?B?cWVhangxMHBScjZocHZtZlpHOTNWbUVsY1BTNUk0U2ZKK0Rnekdnd1p3OWt0?= =?utf-8?B?RUVqQnA4VFVoUlFod3Y2Y2lrWitsbHovV0tlaUFmanlhQUdiVXdzK0g3K0JQ?= =?utf-8?B?c1lwTktpdVZ2V3lON0ZZd2dKWWRqOG1qM0xEU3B1RStaaUpWQy9hc3piamtQ?= =?utf-8?B?UnZPS1EwZG1pcGFDOWkzdTdtZG4xMm1BZ0hxVzlhdlI0RnFFc0pDdzd5bWZr?= =?utf-8?B?bmY5MUNaaCt2YVFHZDQ1TlBRRGFFQ2RFR1dwMnVLaFJCc0RVRnVuc2xWSVhX?= =?utf-8?B?QXNPby9id1pxbGQvemxCaW10bXNySVFHd1hTOEN5Q0FDNnZEWi8vV1hKbGZ6?= =?utf-8?B?WGthblZUVXE5Y3NKZDhWbitKdVRTcStCMXp3eEJhOC8vWDdEUytFaDA5cUpS?= =?utf-8?B?WmRCWGY0dUkwb1ZVU3JBVEljMCs2b3ZoWFA3NVhRbEdmSjRJU1EwWnhURzNI?= =?utf-8?B?M0trNjZxdXYyUFB5d1o2R0VEdUJ4dHR4dnFDbmdEZUJMZm5UdTVxUnd3YVUr?= =?utf-8?B?bkZIbUFxNkU3REI0VGNDOERldVNJMFk5b0JWYzVCcWovbUpBbE9YQXlPWU95?= =?utf-8?B?VGpmVXhmNEJMOTFzR3BhVys0T2FMVnZWNDdJeGYrdmtpd3dYSzVZV1cvSDkw?= =?utf-8?B?QWdhOGx3cXg5bGlxdDBHVG44bHpSYUMvTmc2K3Y5MHNjMmRCMnJ4QWZRMWxM?= =?utf-8?B?VmcyS1JLelMwaWtaYUlHTk9uWEdGdkttUHR0SHpxbUhTWjVEQlcweGdZSHoy?= =?utf-8?B?NWNHams4dEdkZ2ZURVZ0NFFwYmswa1hqOGdWbWpmWnBjek5xU0RQcDhYcFp2?= =?utf-8?B?RmczbWFCLzNXUXNyMVVMSG1ZQU5FRUR1ajhWbU5tYUZSZHQwRDV1SFJ5a250?= =?utf-8?B?enIvbGZ3VjdsT3ZlK1hCeHpZa1J6LzVMSm1VcktDU0RoMnBxWlorWWwwTzc2?= =?utf-8?B?ZXdyTU00S0Q4WXNoSVhxcHNPek43MHQybloxV1Myd3ZvbVZFVWIyYlBUWFl4?= =?utf-8?B?OWRJQzMrdUdWM1NIcGVyblB0WDhUR3JRZkM0TkQ5UWhoR3JmbzFIRDYyRDgr?= =?utf-8?B?cmplK1RYczdta0xndzJSeXNZYmVRb3ZDQlBxSGpsaHQwbjd1bkFJdlpYVWNJ?= =?utf-8?B?ZWdobmdVa2FOVVh2eElhRTlkQ1cxRU0rdHdQUTgzanhqYTcvbjdJRmVsemp5?= =?utf-8?B?M3lhTnRVaHo3K0FxNmYxc3JxaFF2cmdPNkw1LzNETTNPTGk2UllSUGNBeWZm?= =?utf-8?B?OTRlQzA2Q0QyQ2lZRFl6a3RvZDJyYXA3UTFPWFNVMlRtdlU0SHlVT2huRldV?= =?utf-8?Q?Rc6es92H11dhnEDX8NeSzrrk3?= X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: e9f99e8f-8a5d-402e-f974-08de238fa2ed X-MS-Exchange-CrossTenant-AuthSource: DS0PR11MB8205.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Nov 2025 15:08:15.7400 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 54dbd822-5231-4b20-944d-6f4abcd541fb X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: iD5RVEfHUXj+stEVUe8IuAKrCpz2GY5Jh9THab7EMoaIYBr88qwxBZlhYIduFn1Zjdg+xpil9L+Y3GtsI2h1Lg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR11MB8774 X-Proofpoint-ORIG-GUID: RvtBVGVRQE7fslYwZTwpy15nNQqFEBim X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTE0MDEyMSBTYWx0ZWRfX3pqzA4k6+a6X bElsQVCHRSbhbk51dW7ln7zHMLT94pA1tuS56ejlwr6WHTUPy898s12O/1v63gyy8JXc0eOHzQG ZWd/9NYISLbdRw0dDXVwjYUAbO5dapCUuLeTfsqfiUQP2BqwY/vktZYnsqIhH4RQEoj0odzhyU6 kRnvPOBfJTf1yCgSN7MmY2nu9IZGcoPh8CneF6QFOoNt9ht6fuBpOEfTWNkK8h1zrx2G2mbzoUz n1VbQ0xsmPcz3XBNIRIJLUhlwVRK/k+dMEowz/2DnBFKRWdPGgbF6HbE0T7lTZVMGMfZt+ni898 UasqgEmdERskUOpajin1cGbX52hDGym+QLw2VEZyWyb2tnyR2obIYEGfD9EGSTcVgEINt+zGjQl xPIV5X3iTjxjKPRZz6PmCWpXreHlpw== X-Authority-Analysis: v=2.4 cv=BYPVE7t2 c=1 sm=1 tr=0 ts=691745e1 cx=c_pps a=pEQek7DF72mEx21Gi+cf4w==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=6UeiqGixMTsA:10 a=M51BFTxLslgA:10 a=i1IsUcr2s-wA:10 a=VkNPw1HP01LnGYTKEx00:22 a=2AEO0YjSAAAA:8 a=bWPpxp-jgQ3ylSns5SMA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=cPQSjfK2_nFv0Q5t_7PE:22 X-Proofpoint-GUID: RvtBVGVRQE7fslYwZTwpy15nNQqFEBim X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-11-14_04,2025-11-13_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 adultscore=0 malwarescore=0 suspectscore=0 clxscore=1015 lowpriorityscore=0 impostorscore=0 priorityscore=1501 phishscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2511140121 Take advantage of the padding bytes present in the Greybus header to store the CPort ID and minize overhead. This technique is already used by the es2 driver. Signed-off-by: Damien Ri=C3=A9gel --- drivers/greybus/cpc/cpc.h | 3 +++ drivers/greybus/cpc/cport.c | 29 +++++++++++++++++++++++++++++ drivers/greybus/cpc/host.c | 13 ++++++++++++- drivers/greybus/cpc/host.h | 2 +- 4 files changed, 45 insertions(+), 2 deletions(-) diff --git a/drivers/greybus/cpc/cpc.h b/drivers/greybus/cpc/cpc.h index 7e032f6cf50..0f2d204d86d 100644 --- a/drivers/greybus/cpc/cpc.h +++ b/drivers/greybus/cpc/cpc.h @@ -24,6 +24,9 @@ struct cpc_cport { struct cpc_cport *cpc_cport_alloc(u16 cport_id, gfp_t gfp_mask); void cpc_cport_release(struct cpc_cport *cport); =20 +void cpc_cport_pack(struct gb_operation_msg_hdr *gb_hdr, u16 cport_id); +u16 cpc_cport_unpack(struct gb_operation_msg_hdr *gb_hdr); + int cpc_cport_transmit(struct cpc_cport *cport, struct sk_buff *skb); =20 struct cpc_skb_cb { diff --git a/drivers/greybus/cpc/cport.c b/drivers/greybus/cpc/cport.c index ed0b8e8b0d7..0fc4ff0c5bb 100644 --- a/drivers/greybus/cpc/cport.c +++ b/drivers/greybus/cpc/cport.c @@ -3,6 +3,9 @@ * Copyright (c) 2025, Silicon Laboratories, Inc. */ =20 +#include +#include + #include "cpc.h" #include "host.h" =20 @@ -31,6 +34,27 @@ void cpc_cport_release(struct cpc_cport *cport) kfree(cport); } =20 +/** + * cpc_cport_pack() - Pack CPort ID into Greybus Operation Message header. + * @gb_hdr: Greybus operation message header. + * @cport_id: CPort ID to pack. + */ +void cpc_cport_pack(struct gb_operation_msg_hdr *gb_hdr, u16 cport_id) +{ + put_unaligned_le16(cport_id, gb_hdr->pad); +} + +/** + * cpc_cport_unpack() - Unpack CPort ID from Greybus Operation Message hea= der. + * @gb_hdr: Greybus operation message header. + * + * Return: CPort ID packed in the header. + */ +u16 cpc_cport_unpack(struct gb_operation_msg_hdr *gb_hdr) +{ + return get_unaligned_le16(gb_hdr->pad); +} + /** * cpc_cport_transmit() - Transmit skb over cport. * @cport: cport. @@ -39,6 +63,11 @@ void cpc_cport_release(struct cpc_cport *cport) int cpc_cport_transmit(struct cpc_cport *cport, struct sk_buff *skb) { struct cpc_host_device *cpc_hd =3D cport->cpc_hd; + struct gb_operation_msg_hdr *gb_hdr; + + /* Inject cport ID in Greybus header */ + gb_hdr =3D (struct gb_operation_msg_hdr *)skb->data; + cpc_cport_pack(gb_hdr, cport->id); =20 return cpc_hd_send_skb(cpc_hd, skb); } diff --git a/drivers/greybus/cpc/host.c b/drivers/greybus/cpc/host.c index 2ca938c2b48..1d81c624dd6 100644 --- a/drivers/greybus/cpc/host.c +++ b/drivers/greybus/cpc/host.c @@ -204,8 +204,19 @@ void cpc_hd_message_sent(struct sk_buff *skb, int stat= us) } EXPORT_SYMBOL_GPL(cpc_hd_message_sent); =20 -void cpc_hd_rcvd(struct cpc_host_device *cpc_hd, u16 cport_id, u8 *data, s= ize_t length) +void cpc_hd_rcvd(struct cpc_host_device *cpc_hd, u8 *data, size_t length) { + struct gb_operation_msg_hdr *gb_hdr; + u16 cport_id; + + /* Prevent an out-of-bound access if called with non-sensical parameters.= */ + if (!data || length < sizeof(*gb_hdr)) + return; + + /* Retrieve cport ID that was packed in Greybus header */ + gb_hdr =3D (struct gb_operation_msg_hdr *)data; + cport_id =3D cpc_cport_unpack(gb_hdr); + greybus_data_rcvd(cpc_hd->gb_hd, cport_id, data, length); } EXPORT_SYMBOL_GPL(cpc_hd_rcvd); diff --git a/drivers/greybus/cpc/host.h b/drivers/greybus/cpc/host.h index 104d61e3bc5..86d205fcb59 100644 --- a/drivers/greybus/cpc/host.h +++ b/drivers/greybus/cpc/host.h @@ -45,7 +45,7 @@ struct cpc_host_device *cpc_hd_create(struct cpc_hd_drive= r *driver, struct devic int cpc_hd_add(struct cpc_host_device *cpc_hd); void cpc_hd_put(struct cpc_host_device *cpc_hd); void cpc_hd_del(struct cpc_host_device *cpc_hd); -void cpc_hd_rcvd(struct cpc_host_device *cpc_hd, u16 cport_id, u8 *data, s= ize_t length); +void cpc_hd_rcvd(struct cpc_host_device *cpc_hd, u8 *data, size_t length); void cpc_hd_message_sent(struct sk_buff *skb, int status); =20 int cpc_hd_send_skb(struct cpc_host_device *cpc_hd, struct sk_buff *skb); --=20 2.49.0 From nobody Sun Dec 14 06:37:03 2025 Received: from mx0a-0024c301.pphosted.com (mx0a-0024c301.pphosted.com [148.163.149.154]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 407C832F74E for ; Fri, 14 Nov 2025 15:08:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=148.163.149.154 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763132917; cv=fail; b=YB3hm/hATifHFnLVrqOX0n8sR9hyFe3u3qsvJhITzuk4cDFz6sfrQkOsf5WHYoxwZfDGwyogkzGfaS06fULYQNUfX9cLB9zivVTcYSpU8iGBjqIkEFvr3XdNK1MXu5+lybbVPfl/mlDUs1Y0DCBtEV9oRE2bpTB5ga8SU5HCxXs= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763132917; c=relaxed/simple; bh=fsy92J/Tbt2xrdo1duDPiay0436oPkK7jH/ZygfqN+s=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=gw/WDh1rissq7tFBpYIR9gcaQaxt3+3w3+pGP7+XUZ5tf0uIZljz+zQ3/dD1rbt+v2rHGRQBCxu7MD82kFvxn+G3GBrst0/mmLU8tHfc0I+Ahfka7upTgsMSw8SCdiIreoO8fJ+aHQtvIzL0inF1kON9rHchiglxuTbbJDeUW+o= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=silabs.com; spf=pass smtp.mailfrom=silabs.com; dkim=pass (2048-bit key) header.d=silabs.com header.i=@silabs.com header.b=aRvam9DX; dkim=pass (1024-bit key) header.d=silabs.com header.i=@silabs.com header.b=PNzwEfPO; arc=fail smtp.client-ip=148.163.149.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=silabs.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=silabs.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=silabs.com header.i=@silabs.com header.b="aRvam9DX"; dkim=pass (1024-bit key) header.d=silabs.com header.i=@silabs.com header.b="PNzwEfPO" Received: from pps.filterd (m0101743.ppops.net [127.0.0.1]) by mx0a-0024c301.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5AE9ueV62132744; Fri, 14 Nov 2025 09:08:31 -0600 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silabs.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pps12202023; bh=2JdiHNRSwF/ibSbQFZk0lXQvp4GL9vjzMvPd3MBv4k4=; b=aRvam9DXpHl3 W3MY7AQGMu/OrV5+61L3zvNWswedX/54HgY9xM3CJSKiQ0OU3CD2xD/pbnZR/6ik Gj101ZFsSUqv5ZoaXkX4U5yFNob5WusUOxsfMMFMnDE6f4rNWfH2fQ+JYAhp34zK jimUgqtcHY4M4GJEkg9iMTUUu/dNAVLGgBMgeEhqC0HvN3+hoCtavYYbKogvja5n dG+XrxHPaNnK7lOb6qP5F3BP5ScsPRkk2JIMXSXPjWmWYY2ZbkOu54Ie96k44ohl AVWIg7ux+HS7QTuXc+42Zxg6ukQS2S0pKfl9LTeaxre3QLoLcxprYRa5DzgvwJN7 gJiOMtgWQA== Received: from ph8pr06cu001.outbound.protection.outlook.com (mail-westus3azon11022081.outbound.protection.outlook.com [40.107.209.81]) by mx0a-0024c301.pphosted.com (PPS) with ESMTPS id 4ae285rk1u-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 14 Nov 2025 09:08:29 -0600 (CST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=NXnMZ0Q66UTjloEuOTZRD6fDc0i1tRZzSh/G4mmlEKi/b4t60/Rg5ynUd2SlcT+25gaYmsqhV+yP5gh6yHZFHasIxCf/X3+6fDvDAoscwBwR3Wccc/cx8j6PyKw+oYspMSRZSQza9CAysRgJlMaKj6hzFlNkvkLTRigxp2jSGE+HtGK1GhVOql1PePEsIkM7sO9WWZCcbZvZ9kguImLDbxL3vmg3qznzh2cSD15tcK0HmuOTTLJN7yVn8wLHzblZKrDJXUdNT0cnu+YK2vtrjHGgPeggIbMbDWlS0YirVSUzyJssij3uLjohBM5MZv9+kBU8oy958mKnOsQaVLHixg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=2JdiHNRSwF/ibSbQFZk0lXQvp4GL9vjzMvPd3MBv4k4=; b=QksoOovOQeiXF+gkNnpEJgH0FhjiPnqRXaDa5eIRHTIbgS1ZhVcYEr6CnyoiSyISG/RUgrgksdjamcZe1K3LN7dmP5IyS9+PtIsTYc1Pm78ffB3n5piW6LXUvPT2rxquTHelDnOoI23an0SIrnvIV2iv7NZMbg2mqESp1fF0hWm5rwsDpDfHcoe1hBrtkJ/0+nXkSvTIfDn7t1uZaUo1rviZbVgLy/YYSAP/czVyDvGy7ErSX2gTHeQOkV7gTN3qoH/mgE0/G+fvgyXP04camo37Atz1D4oqthSYBIAuoIOdYq+nbkqRFV6r0aUB6qOTuuux5UqG+hE+RLOVcuC9yQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=silabs.com; dmarc=pass action=none header.from=silabs.com; dkim=pass header.d=silabs.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silabs.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2JdiHNRSwF/ibSbQFZk0lXQvp4GL9vjzMvPd3MBv4k4=; b=PNzwEfPOmvjh3t08DowdC+uUaUpklTWGZabWmGrUraZwseovxwrQetDF+bli3NWm9ofh5StdZKy8kT7AaSSV8r+jqJL4wQ2qbjx4tcQaJo+BwRmFfnHwPAkyNYqH/xka1zhzN3+eDVTfg6OfQSc8YN9gHK64eH88XhkhJZPfCyI= Received: from DS0PR11MB8205.namprd11.prod.outlook.com (2603:10b6:8:162::17) by CH3PR11MB8774.namprd11.prod.outlook.com (2603:10b6:610:1cd::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9320.17; Fri, 14 Nov 2025 15:08:19 +0000 Received: from DS0PR11MB8205.namprd11.prod.outlook.com ([fe80::c508:9b04:3351:524a]) by DS0PR11MB8205.namprd11.prod.outlook.com ([fe80::c508:9b04:3351:524a%5]) with mapi id 15.20.9320.018; Fri, 14 Nov 2025 15:08:19 +0000 From: =?UTF-8?q?Damien=20Ri=C3=A9gel?= To: greybus-dev@lists.linaro.org, Johan Hovold , Alex Elder , Greg Kroah-Hartman , linux-kernel@vger.kernel.org Cc: Silicon Labs Kernel Team , =?UTF-8?q?Damien=20Ri=C3=A9gel?= Subject: [RFC PATCH v2 05/12] greybus: cpc: switch RX path to socket buffers Date: Fri, 14 Nov 2025 10:07:31 -0500 Message-ID: <20251114150738.32426-6-damien.riegel@silabs.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251114150738.32426-1-damien.riegel@silabs.com> References: <20251114150738.32426-1-damien.riegel@silabs.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MA5P287CA0046.INDP287.PROD.OUTLOOK.COM (2603:1096:a01:175::12) To DS0PR11MB8205.namprd11.prod.outlook.com (2603:10b6:8:162::17) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS0PR11MB8205:EE_|CH3PR11MB8774:EE_ X-MS-Office365-Filtering-Correlation-Id: fd76708f-2dc5-435b-c1eb-08de238fa4f5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|52116014|366016|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?dzA4emxoL0h0Z3ZuSEFHbTB3cDIvVHNlUnVNeEdsUGtiWjNIRWxZQTdwVy8r?= =?utf-8?B?N09VOFNKZU9QY3FuRE9lQnhmK21Yc3VtRncxMFhFcU9IMDk5YzVNdk94bnk2?= =?utf-8?B?Ym9wMlJiR2tHYkRUMDN2SUNKQUlCR2ljMkdGbHY3cS8wTVJqTEhPUzkwWS8w?= =?utf-8?B?U0FtS2pWdjNNMVVIS0FEb0ZyV1FjejBsZ0c2a3hMK3lod1E1ZkdlL3hudm9T?= =?utf-8?B?LzJqR1l0dndEY1dFSC9ZUE1QekRyekxwSWNlN041WGYzSHpKZGNDK2w3MmlS?= =?utf-8?B?L1M4dE4rcW1rUEFUcFM2TDdwdVJ2dkI5V01SNENsYWR1MG9xcGp0UnZ4cndo?= =?utf-8?B?dFlWbm9wWUpXaHJkVEpOUEpLSHRjWFp3RVlIY0xoWmpTK2Rqb082aXFVbzg1?= =?utf-8?B?UDhvcVJFWnN1WkJlbUtpNm11NTlvVGZDUTIzVW5RUXZ3dFVIQ2xkdWd4RlRn?= =?utf-8?B?S0toR0JPdStOaW5hVDQ1MC92TGdiTlk1Q0k4elJXcWtyRkp6c2w3czB3Q0ta?= =?utf-8?B?TkhzU0lyb0pWZjBmQW5HWVVpYUplMWQyTFhUM3BjaDNyMEs1T1lrWml0T1N5?= =?utf-8?B?WEN0a1VUTVRXSUttcmduS3VJZitBQmFoK0RORzJBc0I4SkRpREFMNGFQMk1S?= =?utf-8?B?NFE0NjlyNDZKZ3BXcmFnMXl4bEJVbTYwSkswR3VNYlh3UUFwSm50REM2VU8w?= =?utf-8?B?cVUzbUxIUW5kVnpNNk9XZ2lPSnliTmkwTmorNDVMZ0hUS3BKL2lrMG5pcGE2?= =?utf-8?B?V0h6cHB5L3g0ekZoeG4wWkFPMnFnWkxnRVhvRTB6RCtCeXl5WDhZRCtSR1FS?= =?utf-8?B?RlNLVVVBMnRBMmYyRW5SSjVwYmw5ZkpNbVVkbFVCUzB6VmRKSC8vM255bkRo?= =?utf-8?B?YnJjblY4NHZvRCs0dTBNeVh6bks2QzFSY2VuRUg3S0lKZWRtSUt2V1lUNUFZ?= =?utf-8?B?UVQ1V0NGQ3ZYbXRNdExpSVFEbFJpdEpZM08yaXlEY1hXSGxMWWdVRWdwVU9M?= =?utf-8?B?REVhY0liSlBrQ2xVWHo2SStFdmtWamlxRW9kaCtXUnRwTWF3NmpGbTh6M1hZ?= =?utf-8?B?ci9Pbk4wdnJhQmQvbW1JTC9XTUZrL0oxcldKdFR0YlQ0Yy91a3IzcVkyVmkz?= =?utf-8?B?T3R2ODVKb2ZPU2JPWXFUUHpyNEE3ak5lOGhxc3huVW9Sa0N1RWt1MzROQ1oz?= =?utf-8?B?WEFPUlNVU3JXYkZ1Ry9XNm5GUFZ6OXluUnJzVWVOUVFWVVJ5aEdOcTVtWGc1?= =?utf-8?B?YllDKzZZNUhwWDQwczJuZStheVhQRDBOQy9EZEMvcGl5aWNJUm1MYXBTaTMv?= =?utf-8?B?VjViK2pjbUZYZHBuc3JTbW9WajMvakVGbjV1UzdPTFZNQ1ErL2R1QzJsZGNu?= =?utf-8?B?NVp3TU5QRmk2L3U2Sjh3VFQ3OXRDeCszMGdmRzNQU0I1aWhMMHBVbW9wS3hu?= =?utf-8?B?Z1NGc3FWeEFTV3k5QTAzdEdaZUxYN205M1pTTitqQm5TTUFvWUJTRjV0NU5l?= =?utf-8?B?OW14Y2dRY3ArbE41bGt6Wk0yMmJjVDFWTUJjUlhkd0RxK3RWMGNCVzBmZlRR?= =?utf-8?B?czUyQm9SWm9YQzdTQmVOT1lDSXVJTVIrOWxBUjRQMTJYRG5Hc0pYQzVCR2Ix?= =?utf-8?B?cHdkMTBhaXlUdVlFaXIxKzRkNkwxcGNmbHlVaVIwRXg3dkpzOWNXMW1kQVlx?= =?utf-8?B?Wnd0ZURsY3RhSmFyUWQxQVd4VkZLNEJZTkRuWjhSU0ZoNE5SdW1qWk9hSDFp?= =?utf-8?B?bGhxbGZFOTFjajVYOEtyZWpycjdUM3VobGt0M0RMMU1SRG1mSUUyTVR5U0d0?= =?utf-8?B?UlpvYXNWUWwrdW4wdzI4eUJHekx3dG9IbEhVZ2N2N1ZDY2F3aWJsdzA2NnhF?= =?utf-8?B?dEJoKzZnNElDMWhEZTU5Qlk4Nlp6Y2lwQzRWYnZSeDZiSDduSFR0YXdLQTk2?= =?utf-8?B?dlJYVnB0MnNnUEhHdmhzQTBETFR1TCtyVHN5bG1wVVRIc2REclcvdjFjQ1hV?= =?utf-8?B?WnF5a09MOGdUcDJjbWhYUzJ3d09ac0dFbXlOTHdQcXVzY2ZINkc5NFZ0em9F?= =?utf-8?Q?+rbCvY?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS0PR11MB8205.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(52116014)(366016)(1800799024)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?cmlIRHl5NUxHZXkvdklIcFdoNm50Z00vS1QxUDZONEhXNkFweTd1NmYyeFB0?= =?utf-8?B?cGIra3JROWZ1cWFDTGNPeFo1d1dHMzZVUGEwV2J3OHdsei9QQThyenRxM2Q5?= =?utf-8?B?aFoyUk9rNTc2VExRSlhuVzBmMEZmVVFLc3J0VHpzOFExS0pPSmZhMlpCZkV6?= =?utf-8?B?K2d4OEx4ZVIxa1ZOdGo1U3pnT2l1TW5FMDhhUzIxUWdvWGd1WVIxcEQ4ejZH?= =?utf-8?B?K3k0UmFDYkNkRWRLckJHSGZMVjFwZnlHeGVWcTlVejRGSGVjNzlqZW9raHJF?= =?utf-8?B?RktTV2x1ODNqSU84YzdPUng0WkpNWnhVeEU4dTB0SXVDMTV5SktrdXNQT3R6?= =?utf-8?B?akx4WmNOY0ZZa2lNbkVEQloxTnNmSEM5YXc2K1luZUk2V3lsUW5RVUpYN2Vz?= =?utf-8?B?ajFNVk45Z2N2M2ltS1B6dlM5eFBDYVladC94dWZBN0tIdnFQY0luQlZQSWVz?= =?utf-8?B?bWZOYWgvWjRaaCsxNmZFNHhCdXc4a0t5cnRtYnBOajRHdWtGRUdLV1JKUDRO?= =?utf-8?B?QUtPeVBZcmhDWjN3ME5jS3F3NFlFTmVkZHBTdVd5SWpkL0dtTFN3MGkwdmFI?= =?utf-8?B?TUF3ejh3TXN2d3BGT1UxcGxianVsaDN0RHdNbDFKcCs4MUt6d2tDcmo1OUsy?= =?utf-8?B?UnFvMkd6TWlicVJEbzhaU3BHK0tzendYVTkxTnJuakQxQndqcVc0Zm4rYkxa?= =?utf-8?B?NHpaUnJYK2JpcURHeXN6QXZRcVBRNFB1N3NIOHA5T1VVWXJ5S2RoUVhxZ1Av?= =?utf-8?B?MTg3YTFiMWU3b2JhRFlLZ05pd3RpSVZMaUMxcFVSakZKSUZxYnZWYk9uZXZk?= =?utf-8?B?cEhCaDJYamtSWjl0ZjFjM3E2TVpkMjFlZ1FKelhhS25NTTNOcVZsTXI0d21E?= =?utf-8?B?QzJlVy8vSXUweG9CT2J2UHRnalZPMGVlVkxEVllqSmozcXRRaUlma1l2T3Rz?= =?utf-8?B?QVBORlJLQkhNZm9XRDZIMlRpTzRiRWxTNGdhb3NjaHBlRzF4eXJLTUNXVFpq?= =?utf-8?B?UnVmZ3V2eUNnZFZKQWU1VjNJc25nT29ieFg0Uk83clNDb0VNZ3pDTXc1SWlq?= =?utf-8?B?MzB1L1pWTWkxRHpTNllyUEh2aFlRcm81aWJkQU9EeHpCUndkQmN0a1RXa0xp?= =?utf-8?B?SzQrSFJtdUt0QTVKQjNHVnNML1AzbEdwS1BXaU12eHB3WWorTzg4a1F0dWdi?= =?utf-8?B?ektiR2NXY1UwbDByclVaM0NmcnJzbS9aZ0E2OUZ4eUg2RXVEeDRxYTBMSWtC?= =?utf-8?B?OFM3bjAwYWsvZmwrUW1aYVYvRFJhcVRVOXZGc2VpVGJ0QkdZN1FRZjlaRndh?= =?utf-8?B?RzRoWDVlL2lNWTc5NHpNVXp6NERQRUtPQWZhU1czMWJGdFZ5MER6ZTlVbG8w?= =?utf-8?B?RS9Kcng4aW94cFRLWjJnQlEyS2R0a3lxR2x4cWFLaXgxeHRBMnJOYWJHbTlU?= =?utf-8?B?cXNOUjZyT2d5N2hZM3RsUEtadVFjQ1habU1QUGhGRVNOT1M1bys1d3FHcW5v?= =?utf-8?B?ZHZLR3daVE5rZzltcjNrbC9nTS9QaEErUlpnWFR5SlZjL1R4TEdOMHlxa2c3?= =?utf-8?B?NVpjNk5aYStTNFk1M3dzdSttY0JXb0o3TjFjSUNuWUlYa3NGZUVHMUFkZGdW?= =?utf-8?B?SE56Qk9MbVNXVVE4V3Z2QlpITUhYWDRseUJ1Z2MwQWhJYkpPZDN0cUw3Z3VK?= =?utf-8?B?c1BDV2RpSWltRGp1eTN0UmpBQTlJTWM4UEYwTEl1ZFptNWFpTVRKRXFHYTRO?= =?utf-8?B?U3NiRVdSZ2ZycnlXYSt5NW50ck1uYnl3NVBoZmlPREdqeCszaTNyblFBd09T?= =?utf-8?B?a3lSNVRtWG1ydWZnS05WMjdSTEFRRHRNUjhpQ0M1YXhhbnZOK3VFWEFxTmRV?= =?utf-8?B?SWJBWVhaWW9HV1pKTjlBVVpTUDdjK1BlK2tkQmloT0RQNmFYZFNtcXZaMm1J?= =?utf-8?B?NUk1d3BiRzVqeEtvNEgyWU9sTjhoZ3k1QTRMYnRtR0ZGa2M4R3N5K0pOV0Jv?= =?utf-8?B?ZUEvR21MT3pnczc5djZBRUhHQUw1MXI0VEhSdkdHTUMwY3lsZy9URUROcy9T?= =?utf-8?B?WUx6YWd4WUJYRFQwQnlsaERneDd4cWZPVjQxd1lZTkIvMTlVUnAzU0hPaXVY?= =?utf-8?Q?Ii2n9wQ1gVG4eaorBZga7z1FI?= X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: fd76708f-2dc5-435b-c1eb-08de238fa4f5 X-MS-Exchange-CrossTenant-AuthSource: DS0PR11MB8205.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Nov 2025 15:08:19.2360 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 54dbd822-5231-4b20-944d-6f4abcd541fb X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 2S20c7wDgk+28CERFCgoNNabvTN8uWG8p9plZ78tgTR86u3IZFjTkbZajA1BhY0dDeGFNRtw40PjBujPA3JO4g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR11MB8774 X-Proofpoint-ORIG-GUID: NqzOFcAhv_l5wx9bry3gXkHXjZ_cZmXl X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTE0MDEyMSBTYWx0ZWRfX7CYLuqBM9RA8 e21/RABUjxRMxZQuJiFSShveS6F3Wk72UuaEzpwllm/LXDXbOWPc3Engt4S0LCymOTqcIKn4pFp gbIzLEqK5tfzDW2Pr0/PnZmX2jHPDtapMqUkDEpWOXl4JlIEhifCCXeck/jA/ShyuAwxd9Z55Qc hCVe8M3clAT/3t1kmhI8M7FqOyP+6n2oh/qIuIuIiNLovsFA3M5EomsytZp22Lmz+gmBvUhR47M QoCNryHWEardlpOEzBynFzPoFDIbFfgF4FLYy9ZqZxnaitiaBSy3hgQKsQxZclU3RbZuRhh2DSJ d+Kylz81ESuiO7g2h+F4kyab0UmPYIS9xW4l8+hlaLhx+E8nB9payrCHhuEVbuIXAYdEBHldUTU C4iV0CAHABfvPQOVhCPV8Ew5i0U7ew== X-Proofpoint-GUID: NqzOFcAhv_l5wx9bry3gXkHXjZ_cZmXl X-Authority-Analysis: v=2.4 cv=LfAxKzfi c=1 sm=1 tr=0 ts=691745ed cx=c_pps a=XJoAL0HPiv6B0cYJlRTKVw==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=6UeiqGixMTsA:10 a=M51BFTxLslgA:10 a=i1IsUcr2s-wA:10 a=VkNPw1HP01LnGYTKEx00:22 a=2AEO0YjSAAAA:8 a=9SkM2ZN-1AJx8s29AtcA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=cPQSjfK2_nFv0Q5t_7PE:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-11-14_04,2025-11-13_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 bulkscore=0 malwarescore=0 impostorscore=0 lowpriorityscore=0 spamscore=0 clxscore=1015 phishscore=0 priorityscore=1501 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2511140121 For symmetry, also convert the RX path to use socket buffers instead of u8* buffers. The main difference is that CPC host device drivers were responsible for allocating and freeing the buffers. Now they are only responsible for allocating the skb and pass it to the upper layer, the CPC "core" module will take of releasing it when it's done with it. Signed-off-by: Damien Ri=C3=A9gel --- drivers/greybus/cpc/host.c | 13 ++++++++----- drivers/greybus/cpc/host.h | 2 +- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/drivers/greybus/cpc/host.c b/drivers/greybus/cpc/host.c index 1d81c624dd6..d797845497a 100644 --- a/drivers/greybus/cpc/host.c +++ b/drivers/greybus/cpc/host.c @@ -204,20 +204,23 @@ void cpc_hd_message_sent(struct sk_buff *skb, int sta= tus) } EXPORT_SYMBOL_GPL(cpc_hd_message_sent); =20 -void cpc_hd_rcvd(struct cpc_host_device *cpc_hd, u8 *data, size_t length) +void cpc_hd_rcvd(struct cpc_host_device *cpc_hd, struct sk_buff *skb) { struct gb_operation_msg_hdr *gb_hdr; u16 cport_id; =20 /* Prevent an out-of-bound access if called with non-sensical parameters.= */ - if (!data || length < sizeof(*gb_hdr)) - return; + if (skb->len < sizeof(*gb_hdr)) + goto free_skb; =20 /* Retrieve cport ID that was packed in Greybus header */ - gb_hdr =3D (struct gb_operation_msg_hdr *)data; + gb_hdr =3D (struct gb_operation_msg_hdr *)skb->data; cport_id =3D cpc_cport_unpack(gb_hdr); =20 - greybus_data_rcvd(cpc_hd->gb_hd, cport_id, data, length); + greybus_data_rcvd(cpc_hd->gb_hd, cport_id, skb->data, skb->len); + +free_skb: + kfree_skb(skb); } EXPORT_SYMBOL_GPL(cpc_hd_rcvd); =20 diff --git a/drivers/greybus/cpc/host.h b/drivers/greybus/cpc/host.h index 86d205fcb59..a3d6ddb648e 100644 --- a/drivers/greybus/cpc/host.h +++ b/drivers/greybus/cpc/host.h @@ -45,7 +45,7 @@ struct cpc_host_device *cpc_hd_create(struct cpc_hd_drive= r *driver, struct devic int cpc_hd_add(struct cpc_host_device *cpc_hd); void cpc_hd_put(struct cpc_host_device *cpc_hd); void cpc_hd_del(struct cpc_host_device *cpc_hd); -void cpc_hd_rcvd(struct cpc_host_device *cpc_hd, u8 *data, size_t length); +void cpc_hd_rcvd(struct cpc_host_device *cpc_hd, struct sk_buff *skb); void cpc_hd_message_sent(struct sk_buff *skb, int status); =20 int cpc_hd_send_skb(struct cpc_host_device *cpc_hd, struct sk_buff *skb); --=20 2.49.0 From nobody Sun Dec 14 06:37:03 2025 Received: from mx0a-0024c301.pphosted.com (mx0a-0024c301.pphosted.com [148.163.149.154]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5AE7F330D5D for ; Fri, 14 Nov 2025 15:08:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=148.163.149.154 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763132918; cv=fail; b=o7/PookjqH+aPkvGpNpxVyYhbnXgAp1oJAe9GwX/fmb7VEs68hxuEWyHwPTz7wyTavZPGs2T0+pjqZRQHwFaWX6uWZ4K6gimOvyygL5AVkmHlMjX7pSQVoxGMGHtXS23dp2JzjtY1SLyAHhYGD20NRJCxEANDFNwdmAeOWfB+PQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763132918; c=relaxed/simple; bh=rBois9kmgnmzEKOq7s706rcRV4tL2XDYd84kcdyrXvQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=bpSbBV2cCqHkFIOHj7n3vsLnx3qMkB/otUcKV7cIounajsXQZfgU0fwy7zWoDzWPE/czs+9uBWRMPCcJlHvSVQjx2C2h2tI/RmpotXBQrki8O4fBUIpfZTkQSENEz/Pd3HAKvaI8pS7u0jlSk2HOdvq+Lzb8tmTsma0h2GrCNN4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=silabs.com; spf=pass smtp.mailfrom=silabs.com; dkim=pass (2048-bit key) header.d=silabs.com header.i=@silabs.com header.b=1aVqjcTS; dkim=pass (1024-bit key) header.d=silabs.com header.i=@silabs.com header.b=MlbXJP7x; arc=fail smtp.client-ip=148.163.149.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=silabs.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=silabs.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=silabs.com header.i=@silabs.com header.b="1aVqjcTS"; dkim=pass (1024-bit key) header.d=silabs.com header.i=@silabs.com header.b="MlbXJP7x" Received: from pps.filterd (m0101743.ppops.net [127.0.0.1]) by mx0a-0024c301.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5AE9ueV92132744; Fri, 14 Nov 2025 09:08:33 -0600 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silabs.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pps12202023; bh=jj1XBJ/ze3XAwf4BcKl1R9SQH5ptw5w0j8BKE0sFniQ=; b=1aVqjcTSk8J6 mKduYJ9VQ7WtLI2a3GYS+l5YsaqogcCFjTpSpB3riCiFiEHr1WUM8jNspIKCmtT4 ghincohuO5RQpXRCf0E6pdDTaYpkKBWFiBDLBPZw10TK0uprHD494F8rfUt/EsX5 W6gYsc3VMCtDr/dkwNOczlaKukmL/90jO8+HY+4/x1fTVligXJvLmM8SIWIHYiJO xEzF2n6yp/8BYjutUFsExuQi4Pq5/jueunRbtjYQ1Ig/PT8Hc3XPBTRROI/d/UIy eJcdDSh4HbNx084Wa5jLOf+uGNziGJOMLwpXrY2bLDEWUBO6lxMc39B8TERs54ic LDUT/Ts+jQ== Received: from ph8pr06cu001.outbound.protection.outlook.com (mail-westus3azon11022081.outbound.protection.outlook.com [40.107.209.81]) by mx0a-0024c301.pphosted.com (PPS) with ESMTPS id 4ae285rk1u-2 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 14 Nov 2025 09:08:32 -0600 (CST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Wmgslv+BFX8sE6Wbx/KB2JngG0A3dZBRHrdz8urQxsXWzIy2Gi8ZPq9mY3ldk2Sko6z9dYauuAUdCyqDchHMXEvp5Bi1CfAqmMr+5GlAYnznUvQACAC5GI6bQKFBRHm//BxW3FF9jOivHi6/V2GZXFO8gMVmbBnXaplK5Rc7xBKEHuE5aE2IVoLIo+NmFu3wFFjwS8v/Cb5v/58eAu3x5Kp4vLQ4YV5r8SuyPOeYDjwWGGEYKZq/qqTI0TGwg3BYVWI575QdxyyA0WI+AsbEEiLPjmy+vVutqhENURSUAtSAQqy/PhKy11WhkSMbuVvg9ph7Tv7ja9p6UruNGssEmQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=jj1XBJ/ze3XAwf4BcKl1R9SQH5ptw5w0j8BKE0sFniQ=; b=os+6TDR0BFuBD1WtHGC49nOEfWnNfzyBU8xdmmrrkRUoGZxoavEu2G2jYyluj/6RdnqSUh4oeJ8aUMNsWrZdz29T8QjvV7SXKEmLGxwa5cn8ukc3rNo/IiZAwFeYb6Q/LVYLmgrQjZ73jIzOcSoqqb1UEjxpOUIsFHNmpReaZJTgSqYVxyw9tcmL1/gixIa0kTXa6t4OJfZMVdcO3msBbUW0TpFG+H1y4f4Zov1+vC1jKChoXS8iLZtq7ahOnUiVGGJkUpHqUc+Hp2emk3+vNmfVURFpPYmIeQBoJRF3/DuB3R536JSiekLh+Cv7FQH2zojBMcmvTBIyUQARqZXunQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=silabs.com; dmarc=pass action=none header.from=silabs.com; dkim=pass header.d=silabs.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silabs.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jj1XBJ/ze3XAwf4BcKl1R9SQH5ptw5w0j8BKE0sFniQ=; b=MlbXJP7x8TkU+Cd0FJOZd9gAlM14wXladF8oSoe/oZx1BZfRJVt1h51DRIEGpRI6gdyxEmSU8/he++hhYE7wdZe+k5AKXxolnlwakstgFfVBUup1T1Eu8MjXVgJtTFKD6ehzcfCMIGdEJHSw6zW6i7B8c/jQw415x6ZTchF/n9k= Received: from DS0PR11MB8205.namprd11.prod.outlook.com (2603:10b6:8:162::17) by CH3PR11MB8774.namprd11.prod.outlook.com (2603:10b6:610:1cd::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9320.17; Fri, 14 Nov 2025 15:08:22 +0000 Received: from DS0PR11MB8205.namprd11.prod.outlook.com ([fe80::c508:9b04:3351:524a]) by DS0PR11MB8205.namprd11.prod.outlook.com ([fe80::c508:9b04:3351:524a%5]) with mapi id 15.20.9320.018; Fri, 14 Nov 2025 15:08:22 +0000 From: =?UTF-8?q?Damien=20Ri=C3=A9gel?= To: greybus-dev@lists.linaro.org, Johan Hovold , Alex Elder , Greg Kroah-Hartman , linux-kernel@vger.kernel.org Cc: Silicon Labs Kernel Team , =?UTF-8?q?Damien=20Ri=C3=A9gel?= Subject: [RFC PATCH v2 06/12] greybus: cpc: introduce CPC header structure Date: Fri, 14 Nov 2025 10:07:32 -0500 Message-ID: <20251114150738.32426-7-damien.riegel@silabs.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251114150738.32426-1-damien.riegel@silabs.com> References: <20251114150738.32426-1-damien.riegel@silabs.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MA5P287CA0046.INDP287.PROD.OUTLOOK.COM (2603:1096:a01:175::12) To DS0PR11MB8205.namprd11.prod.outlook.com (2603:10b6:8:162::17) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS0PR11MB8205:EE_|CH3PR11MB8774:EE_ X-MS-Office365-Filtering-Correlation-Id: 1ae29eea-8163-421f-43d6-08de238fa6f4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|52116014|366016|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?U2J0OHNDeGxqdkNjUVFSNllvbjFQNlN0T3RZT0VhcWZkY2pLU2ZHc2ZxYzE0?= =?utf-8?B?SStUby9RNjB3YlJFWjlEK1BYUCtNWmFyMjROOTR2VXF1MDFqb1VpV1o1TUVD?= =?utf-8?B?M01xTVovMzY1b21saW85RC9wV0gwQStwUi9maFZYcXM5dGdaUjVxZkZpemc2?= =?utf-8?B?U0tiRnJScHl4a1dtM2RveEw3QnVmMkU2UXVkNzNqbE1ORktodUcyVWR5VFRx?= =?utf-8?B?VTlNNmJmUzYrU1hLOWVTMkY4aDNGWGM4QlhCN2FCYkNNekFhM3FCRFNXTk9o?= =?utf-8?B?ckExTlhLSDIrUUQwSmxnY2c0NkoxNjg4WTJDSi9PbGF0S3VZUzNCMy9VWnFp?= =?utf-8?B?UU9tZmoyWVhnVU9jaDdGY05ERFU4MnJWeVFYd3l5RXUrNGM2bGhjbGZHanlk?= =?utf-8?B?VE54cU5tQWNrMk54MSsra0pGUXVjV3JaMHJGNDNOeXpmMDBIS1RKVS94UG83?= =?utf-8?B?aitKY3cwOW5ZeCtnVW9VcVB2VXBadDIyOU1hREhaRENhR3RjTVlBZE0wcWRv?= =?utf-8?B?MUk3WWN1eHJTMjEwcEFhZ2FvMVJVUTlkLzhGZmZGR1VyLzhpY1pUZmx0OUNN?= =?utf-8?B?dmlGWnJSSDJrRUQ3YW45VURTb1R4cVVRQzZPanlNUTdyei9Cdm5yamFGVlZD?= =?utf-8?B?SXF5ODRiQUVVUFlBNkJ3dW1TejdkU2ZRUUNVNTErR1lmK2NoWkRxY1NUUWJp?= =?utf-8?B?NjBSRTVpa2VxLy9IU01QOG11M1FYMFVXWmhGbkxlbytkN2NtVEdXVm5UWVU3?= =?utf-8?B?S3Bzdk5hQ2sxOEVaUjM0bHJ4VTZzVUIxa3BubE13MEV5TGhiaGx6RmY1bm5t?= =?utf-8?B?Ry9aeG9RaTRueFlZb3pCb2pxaGxmQ0tJanVlSng5RlFmQktYZUhGaVgwQTRo?= =?utf-8?B?Q0Q4UGZGcjFOWWVpdWxWSVU1TDhMVWFXSHVsU0hJRzNPQjN6Vmc5bzM3MnJo?= =?utf-8?B?NGtRODBCcVZGVkl6RjVDeEdSelZHaDB3Nk1CSER2Z3NhNG1TN3Y4Z0kzQy9p?= =?utf-8?B?dGd4c3RUZVpsN1NVdzhmN0JvbGpMTEN1NERIOUo5STFQMHdJVlFxUmE2ZlFT?= =?utf-8?B?eFFIWkdWZnVWQjhTSjFlb3p0ZmcxOWlSV3RBM1NaUmUvcGZRcHoyeU4zaGYv?= =?utf-8?B?RmhHQXJLdWpTZzR4Q0JMYzBGME9iM29lS2wrUHB5a2xsR2hXdlBiZ2FLKzVS?= =?utf-8?B?ZjhxY2NEak9uZUNKT1V0amd2aHZ2cTFnaWN3a09hMVc2OFlsZ05PM2ExTmFi?= =?utf-8?B?ZGIvU2MvcUVtWWZ3eUlxc0NTdEY3ZGdWeEdKVWVxZW90V1lnWFNLclFRc1Uv?= =?utf-8?B?N0g4NGx1OWFhcHEvVDJKVzU2a050K3phU2FGU2hmSjY0UVR2enBFQUk4bTJK?= =?utf-8?B?UFJvSE0rODBJRFBrZlpkNmlZb3NrVENGN1JObU04Z2Y3RXJEcUltS2FWdUhS?= =?utf-8?B?MUE1bGhvTEtidWRBZ3Y3ZWJtZVF1bVJJMXd1UXU0TG1ySUVHMlR4MzUvUXdC?= =?utf-8?B?TUxvY0VvSDRPeEZEQ0g1QzdYRVplOHczQUE1c3NJbmJuaEJzdkNTUG4rRjhz?= =?utf-8?B?NmdFTWdXdlJDU3BsSXNnWjJaR3BRR04yOG5pbE4zajY5bXppQ1JtdzVwekVr?= =?utf-8?B?VUkzNklHNnZxZ0VUVXl3NkN4cXd4aWhDUWJQbnFxdndEK2ZnWk9MblFXZHp0?= =?utf-8?B?UFh3SzhDR083N0phVkdxV29EQW5pYjZJUS9vSmdKRjZ0c2JIQ2hhNWd1bUph?= =?utf-8?B?dWUrbFBBUjZCRzBWL1NrRVB0RVA2THY5RmlFM25VMTNDU2RRazFHT1hSMHZ5?= =?utf-8?B?VXJsS3FDUFpBYUNYREFKRUxDSUFPRmxKN0dZQWcxU0xRTzE4MTJrZ3Fwc1hx?= =?utf-8?B?VTFoMktKcmhuWEVvMjRVVlQ0aGpqNUZ5MUEyTmllWk9uUEg0clVzSC8zYjFB?= =?utf-8?B?QzBJVm9BUCtkR2lzWEp3RmRpRW5vYTUyL0x4RUxLVkRBaER0bnYxQmRsYXhB?= =?utf-8?B?aDc2NWRYdjZLUmRlWW0xOXhieFo0YnBNbEwralNOWUpLUWdBY1lhTWdXYThx?= =?utf-8?Q?2jFlws?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS0PR11MB8205.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(52116014)(366016)(1800799024)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ckY4QUdBMDlFSUVuKzlyQm16K09JcW1jL25iWGhWU012WFhGUGtJby9FQkI3?= =?utf-8?B?MjhPRms4SXVNQ0tmZE9oWnV4bVVScEZ5YnJreExXN0xvTjVmT2VheENQeWxz?= =?utf-8?B?b0dzTS9jZ0dLWVJvU2tlcG45UmwvTXRDbW83bVRDUTJZZTJZSjczLzl0Tmcv?= =?utf-8?B?QURITXNFWERpeFZoeVJWME4vVnZWZUI3d0gvNEJzcSs0Q2JFWEZpeHBlM25t?= =?utf-8?B?YUVBTllsa0dwQjdhWHAyV2VtUUVaV0dlZkZvbnluY29OL0s0L0RIeG1RNDgy?= =?utf-8?B?cllZakQ1TE92VjRMYVU4UnRsKzB3L2N4VmpEYVBVVVVucWFac1lrclVyUzdm?= =?utf-8?B?Y25WU21yN1Jrc0hYRXVqR3IwNVpQMUQ3RlpFQmU4VHBOeHlQM0JDK01jTVFI?= =?utf-8?B?d2pncGFyQUVTdXY5T3AycTYrZ2pEaEQ4WldNbGRPcnRJeWM1ODMyU1dZc1Ar?= =?utf-8?B?N2FlcTBQVnQ0cCtRTzNzYWYzK1psaDk2aEhZMjY5UHRNZlhqVGs2NENTYlE3?= =?utf-8?B?ZUlSVnB0NDR5RjRGcWw1eHJTQi9vTXBPa1FJaUlVTTV2VHFsUjllMEg5Vlk0?= =?utf-8?B?aU50OXFXcDduTnlSWndwNCtZS0k2c0hYNjR6VHRRTFQ2R1luRitIb3lNd1lQ?= =?utf-8?B?b2VFZ1czVE9FTUhKbTJCcVlldnkwck5qRlovWllsaXlwa1VQTnNTT1MwWGVq?= =?utf-8?B?dklZZVJNWEx1TGVyRW4rTkFvVzd4bTlVWDBmQjdIOTlmL2dJVTFRR2VSTTN6?= =?utf-8?B?THh6a0krODBjbENzM0RUc3pjYjFzUFdiRGJCWk5UT1Z0NFl5TitBTnpkTkVr?= =?utf-8?B?WVNBVVgzQkprTS9jWm1yOW8xdEJWUnZ2ZWM0aHdFeHRDZDFWNFlPTnJaL1RU?= =?utf-8?B?REZVRVllRmRZeFZDblJtbG8rWnduYXZZZ3dhazlMTUpTeW1ISUVMVkdaR0d3?= =?utf-8?B?MkdpMUF6TU9HdW01QmZuTitiRUZLUDBzMFNKYmtkanhLcE1INmg2bDdYM20z?= =?utf-8?B?aWVsdTNuUWhiQTRJd3loM1BMZjZTZVVEbnlWZDkyV2dPd1FQVlFIQS8yamxx?= =?utf-8?B?V2xJMUpOZDhwVWRLdVZ5Mm9INnVVdkJjTUYveE95MGFyMCsrd1VQN1l5R1VE?= =?utf-8?B?UTZ0Ujc1K0xVU3RWVFB0dTN0NkM4aE9RVWdJTXgvMnh3c21YRmsyUm0xRnZM?= =?utf-8?B?bnFkQWMyaXp1cTI1bVVxZ0F2MVMvSUJlWkZUMFBYVEl6VkM0ZlpibTlISDIr?= =?utf-8?B?OWVNKzlxWDFvMkhWQUlHTHVWM2Vvbzc3NjNJVEsvWlBXQlZ5ejNJTEp1c2Np?= =?utf-8?B?NHM4aGx1R3JlRGNZMUI4cXRqTTN1OFhJYkJEVGEyYmdaSlNZbVIyNVlhKzFq?= =?utf-8?B?M1dRQ3NQZUpycVJHWjE0b0ZTRzZLV3kwU1htdWhPWVdoZThYSXBLMHJJTjBM?= =?utf-8?B?RUNlTG50dEJ4eEpKZU0wbWlWVTFybWl6OW1RSkcxT1BYWHVJOE9CU1dDTUxm?= =?utf-8?B?OHo3Sk00eHVvSlMzL0FiWmpkczFvNmdkNFlTVldBSEs3N2xwUjM4dmlqZzB4?= =?utf-8?B?NWg4alpLTExnR3EwNHA0YjZ6a2xwS0dKblBMLzNJZ1BuRzQ5bGZYNDBJNUdP?= =?utf-8?B?Z1Nucm1SWC9iWEsyWFgwY3VaN0svdVRtaFBjbEpuczE2ZGNtYVFWM09udVVn?= =?utf-8?B?VmNZbWxSenNFQy92QkdFa212aUFiRmlESWlyWWMxUWtWaHZFZzBuNlZIMXBn?= =?utf-8?B?eE83bFRYQmF5dEdzeURmL2JRZDR2TjJTamRNL0dpRUkxSEcrYWJnbnYrWGE3?= =?utf-8?B?bHNic1ZrZmNtVFRiMHBpUEMrYUdmYXRUL2Z2bTY0K3YzRXcrZFJQWEY1WWll?= =?utf-8?B?OXVoZVdLdHdXSFFuczZ1cjh4WFg0ZTh5SUdmSHdFem5mbFNFdGRWdytUeHBQ?= =?utf-8?B?SXZjMTg3NGdNVW0wWGJJWm80WGh3WVI3WlR3UFpnQWdHejRxRisrbGVTZmJ6?= =?utf-8?B?ZFJ4M1dlY0pSL0xlMzVJK2hLSUR3T2VtVzZ1cHdQRFJoOVY2WDVBNjFhOGdB?= =?utf-8?B?VUErcVFlbjE0NzdTMGt4czRFSHB4QytTY0ZiMEk0d0NYd0RMWEdRMkV0SGpF?= =?utf-8?Q?R8SVB7KGXN8MK4vOMiJSPa3qF?= X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1ae29eea-8163-421f-43d6-08de238fa6f4 X-MS-Exchange-CrossTenant-AuthSource: DS0PR11MB8205.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Nov 2025 15:08:22.5137 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 54dbd822-5231-4b20-944d-6f4abcd541fb X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: BGJGepKX7vFB+vy7Oy6wji897mew5sdCY2qkJLpsse/UdJS8DaOgEJzlAzTMq+QiMhMPJBK4NpMNgrf/BFxUHg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR11MB8774 X-Proofpoint-ORIG-GUID: 5df9V4nrOCbV75xZIMj8di536O0szhcy X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTE0MDEyMSBTYWx0ZWRfX4+mAPdxn6zcC x5zXKszUqqwK+s4YBbjasNtMu3Tebt3EGi4zH3uBLDiTqtohAxFk2pqo0Mn2k/DdPd6McUdR2ca rJXVq49uv1PqVNeTubQMVuxcDeEI71CJcgeP4qhIFz6Q6D3QFCU+d2IbvQMhelOVPl4zSdSPlsx xMz45PXA1495GLoBofQlWUffkf6FD54tLvc0sfITVlnmVsfWgMYriLLqjtgwTxh2RO9s74lJopy DDH2dOtC70Mb1oE96sTHCEljGgGLMPE5anGtwIk+FNWAjG7sjrDFfhyJgwrTnLsW6kSD0QmaKTC 5NgObG8Phv/NETxgDhrTE5a96EABLjYJX/3LzUuCkZb6xpv5Dfn54wl3FAgApIG+XglTfpjXeMR 0i3HsK2vX+Pvc8WruwrtPe6MThSLRQ== X-Proofpoint-GUID: 5df9V4nrOCbV75xZIMj8di536O0szhcy X-Authority-Analysis: v=2.4 cv=LfAxKzfi c=1 sm=1 tr=0 ts=691745f0 cx=c_pps a=XJoAL0HPiv6B0cYJlRTKVw==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=6UeiqGixMTsA:10 a=M51BFTxLslgA:10 a=i1IsUcr2s-wA:10 a=VkNPw1HP01LnGYTKEx00:22 a=2AEO0YjSAAAA:8 a=YpAaIpsKrikDV0a6NQsA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=cPQSjfK2_nFv0Q5t_7PE:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-11-14_04,2025-11-13_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 bulkscore=0 malwarescore=0 impostorscore=0 lowpriorityscore=0 spamscore=0 clxscore=1011 phishscore=0 priorityscore=1501 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2511140121 CPC main features are reliable transmission and remote's receive window management. To implement these features, an additional header is needed. This header is prepended to all Greybus messages. Reliable transmission: to make transmission reliable, messages are sequenced and acknowledged. That constitutes two bytes of the header, one for the sequence number, one for the acknowledgment number. If a message is not acked in a timely manner, a retransmission mechanism will attempt another transmission. That mechanism will be implemented in a future patch set. Remote's receive window: the remote advertises the number of reception buffers that are available on this cport. The other peer must take care of not sending more messages than advertised by the remote. This is a sort of flow control. That accounts for one byte in the header. The remaining byte carries some flags. For instance, there is a flag to indicate if it's a CPC message or a Greybus message. Signed-off-by: Damien Ri=C3=A9gel --- drivers/greybus/cpc/header.h | 43 ++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 drivers/greybus/cpc/header.h diff --git a/drivers/greybus/cpc/header.h b/drivers/greybus/cpc/header.h new file mode 100644 index 00000000000..84c47f105b3 --- /dev/null +++ b/drivers/greybus/cpc/header.h @@ -0,0 +1,43 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (c) 2025, Silicon Laboratories, Inc. + */ + +#ifndef __CPC_HEADER_H +#define __CPC_HEADER_H + +#include +#include + +#define CPC_HEADER_MAX_RX_WINDOW U8_MAX + +/** + * struct cpc header - Representation of CPC header. + * @ctrl_flags: contains the type of frame and other control flags. + * @recv_wnd: number of buffers that the cport can receive without blockin= g. + * @seq: sequence number. + * @ack: acknowledge number, indicate to the remote the next sequence numb= er + * this peer expects to see. + * + * Each peer can confirm reception of frames by setting the acknowledgment= number to the next frame + * it expects to see, i.e. setting the ack number to X effectively acknowl= edges frames with sequence + * number up to X-1. + * + * CPC is designed around the concept that each cport has its pool of rece= ption buffers. The number + * of buffers in a pool is advertised to the remote via the @recv_wnd attr= ibute. This acts as + * software flow-control, and a peer shall not send frames to a remote if = the @recv_wnd is zero. + * + * The hight-bit (0x80) of the control byte indicates if the frame targets= CPC or Greybus. If the + * bit is set, the frame should be interpreted as CPC control frames. For = simplicity, control frames + * have the same encoding as Greybus frames. + */ +struct cpc_header { + __u8 ctrl_flags; + __u8 recv_wnd; + __u8 seq; + __u8 ack; +} __packed; + +#define CPC_HEADER_SIZE (sizeof(struct cpc_header)) + +#endif --=20 2.49.0 From nobody Sun Dec 14 06:37:03 2025 Received: from mx0a-0024c301.pphosted.com (mx0a-0024c301.pphosted.com [148.163.149.154]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DDC0D33B943 for ; Fri, 14 Nov 2025 15:08:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=148.163.149.154 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763132919; cv=fail; b=uvPDfU8HZ2d2qwJkzjprKHjVGZI52aBDw51b2ca/ugHLrille6sEdElpiT31CEEMOrj7f3d8qMNxzACO74DSJK+ccJlji0G2fr4TKgsIXbQoOpA2jvlETG2X1WDEXjPOp/+cQ4NJunBX/EMJNI3s3mOOH5XnhhB+zKvBOnm4g4w= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763132919; c=relaxed/simple; bh=tHkP9DEDTWs3kW+YOsOFzMDXPEHpWByc/uIajOC3++0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=TjEwN/PhhpRXY2DvjXFtH/+Y3UJGXJ77bZw2UQJ52WCD4dIA2HVcMlezmKcph4PwScpxodp+eW5rD2+Be9xg9fOsaFSqs6CoCOSNUY6L7ji1xb5CKzzkOPjC81dqLosl5uiNJaP6iIzyhdi5En+ZyNJfqppH5snz8fzFN1NxPwI= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=silabs.com; spf=pass smtp.mailfrom=silabs.com; dkim=pass (2048-bit key) header.d=silabs.com header.i=@silabs.com header.b=clN2Rh4T; dkim=pass (1024-bit key) header.d=silabs.com header.i=@silabs.com header.b=BFBl/U7k; arc=fail smtp.client-ip=148.163.149.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=silabs.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=silabs.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=silabs.com header.i=@silabs.com header.b="clN2Rh4T"; dkim=pass (1024-bit key) header.d=silabs.com header.i=@silabs.com header.b="BFBl/U7k" Received: from pps.filterd (m0101743.ppops.net [127.0.0.1]) by mx0a-0024c301.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5AE9ueVB2132744; Fri, 14 Nov 2025 09:08:34 -0600 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silabs.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pps12202023; bh=iu4qiL8ZvAKJHdjb3gY4F4pS7vyMJcwYD/BVd0q8BdM=; b=clN2Rh4TbPk+ lTH04CALgNyX6iR0xOgCABzqKPE8jKWxaSsMMGGMSoyPe56Bv1XPGTQsjeAwFTZJ pwHor5Rd+VU85nYy3ufVtlZuReacpUM5yDzuJk5d/VAk4Vu62EFVneUgsWkkrpN/ YmxXGI7UTxgjVJTF50HaCf0iClwrF9t4cF5fQWur3N0vH8xUAFK05ssCPdCKb3MW fdGJzufD+IV9+tJfAYWwaQs4VAyYPVg6BNJMxLAcNIC88A/yvD0Y59PiTi/h3FpU SLPaMGMQgyet6nF9oM73UkMWQunlk6ZeW7KUO5OPXgdKnYFQeye21QHJ9foJlXmV qO+QGyLNSw== Received: from ph8pr06cu001.outbound.protection.outlook.com (mail-westus3azon11022081.outbound.protection.outlook.com [40.107.209.81]) by mx0a-0024c301.pphosted.com (PPS) with ESMTPS id 4ae285rk1u-3 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 14 Nov 2025 09:08:33 -0600 (CST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=kAit8/STjidb8H898WzEYNAWat5lFs5yk/iul2B/CZF1W5x5R1S+6MIOChOKg1iOAr+yiKemgWMjChkOMnmE+vTV5zNPD5vJGA0H65wDy2MKafaxvireEyPJAt70KgvG1/NLdeHQuL0rzJvSzekcWejIEawIn+ovR636KWYT3EphK+SIG9OZpPiZEfif+DXm640lEUnpMG+NedilCI/32hSHeYdAuElVnLyy7GHz3dBrXohcoFE4eL/+bMpoBW7ZMY2UP8a+CWKwHmD/NxEgfo9A9i7A5CxDOAT2RrC8CwbiSHp5IizU+p/mrdxMjq6m8zCDITnIz949b9JLsQYVEw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=iu4qiL8ZvAKJHdjb3gY4F4pS7vyMJcwYD/BVd0q8BdM=; b=ppJuQetcP2F/bYn/sVEwFTU25zhD7z8PQl7bRh2QuqeiC0cfzBUvEP2DoA72poqG7H6Fi68jiil0W2GVls7kcDqTVtJ0ANpKlpvpvfNIu5rmsw0ZKcMD/outIVDmMCwfP1uiNeE24r0tWa/j0qAwM/6yFsuITASE3U3A4GoMgjZ9HLQMQqqw0tg0LKdRzlHmfXTVRM891kNIYPEhnmHl5a6vHvdZnjRkvBaZ0hR9xacAFejMT1mRf3yRByyVN58jyubxZ1DEL5KKJfa66pwZ7xeNhAA/jSLpwoLX8EhNepTuYM5JXeqQG8LUsCkNKuX38oI+mSTeYNi5ESYD8n45tQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=silabs.com; dmarc=pass action=none header.from=silabs.com; dkim=pass header.d=silabs.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silabs.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=iu4qiL8ZvAKJHdjb3gY4F4pS7vyMJcwYD/BVd0q8BdM=; b=BFBl/U7kDA05dxCCHkAW5iJF0N5Asy+OksUJ6DHRQJ5E+E7AdOF54Xx6XLCdbRFQDQORj0pWKXJ+iJd2b9/KjvsHj6Q9uR+xPNpUqV/ZdYGQq9HQ+uTGRm5GbCQKBIE9nfiQhAP06G89yP+fP0CffslGobI1a/N3X3f31uKS8TU= Received: from DS0PR11MB8205.namprd11.prod.outlook.com (2603:10b6:8:162::17) by CH3PR11MB8774.namprd11.prod.outlook.com (2603:10b6:610:1cd::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9320.17; Fri, 14 Nov 2025 15:08:26 +0000 Received: from DS0PR11MB8205.namprd11.prod.outlook.com ([fe80::c508:9b04:3351:524a]) by DS0PR11MB8205.namprd11.prod.outlook.com ([fe80::c508:9b04:3351:524a%5]) with mapi id 15.20.9320.018; Fri, 14 Nov 2025 15:08:26 +0000 From: =?UTF-8?q?Damien=20Ri=C3=A9gel?= To: greybus-dev@lists.linaro.org, Johan Hovold , Alex Elder , Greg Kroah-Hartman , linux-kernel@vger.kernel.org Cc: Silicon Labs Kernel Team , =?UTF-8?q?Damien=20Ri=C3=A9gel?= Subject: [RFC PATCH v2 07/12] greybus: cpc: account for CPC header size in RX and TX path Date: Fri, 14 Nov 2025 10:07:33 -0500 Message-ID: <20251114150738.32426-8-damien.riegel@silabs.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251114150738.32426-1-damien.riegel@silabs.com> References: <20251114150738.32426-1-damien.riegel@silabs.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MA5P287CA0046.INDP287.PROD.OUTLOOK.COM (2603:1096:a01:175::12) To DS0PR11MB8205.namprd11.prod.outlook.com (2603:10b6:8:162::17) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS0PR11MB8205:EE_|CH3PR11MB8774:EE_ X-MS-Office365-Filtering-Correlation-Id: 7395a03b-273b-44e9-d125-08de238fa8e3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|52116014|366016|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?TEpycDNtUWZ5dnZjaENZMkVTSmNkTkpEdURWK3NuN0VtTTQyN3Y1clZJNEE0?= =?utf-8?B?cnZIbFB4UTZvQWhZR21XZGZSVnovSDE3ZjhTTkIxL1FTMUZISEpzU2hlcE9a?= =?utf-8?B?U2w2Q2Rtdm9JTWN5ZUtrWTVrSG1rNzFKeGRINXJheUJEWnpsK2NjRUlYQ2JZ?= =?utf-8?B?MlFSSG9hdU8xZ1NyT1FFa0NPc0l2V2JQYnpBQ1JRMmpuMmVPdjZQay9sdFJt?= =?utf-8?B?bGRBVC9DL091WDIwYkd5a1IxQnovTW5DWXljTHY4R3RLKzZsclZXNjZBcVhE?= =?utf-8?B?dElkR2Y0MXVIcjd5emRVOVN4a3NvbHRZMXY2b2owRG9lWk81czB4ODU1YnZo?= =?utf-8?B?V0xKSTlIN2xzMXVVRkZXRVhJeHVrdW5Ic3c4UysxcFlJeDRnd2xTMm9YVXB4?= =?utf-8?B?YnFFUmQ3L2t3aDV3OURST2R5bzVaSC91QTFSbUxaMmJtKzZmM2tKUkFMakc2?= =?utf-8?B?cHZ2aVczY1NMRlR6NFlaVHdMMHcvWE1NNXJNTGFURVpaUFZxWERNNWdlUzI2?= =?utf-8?B?UWhWa3lRTHNmVFg3bTFRYjdtdll1U2MrRWczQ2p6SS95ZTMySXI5V1IzWmtL?= =?utf-8?B?ZEwzMUpnbkE3WmtTSDhaRWU5N1ZnZlhoZTBJWFV2YVl3RVhacENPcm5HUlAw?= =?utf-8?B?c0QreTloWjM3Z204Mng3R0pJVHluTCtScytUR0dxYkkwZE83aW1VcGV1Nm1N?= =?utf-8?B?OFpIdDQ2UFBmR3dCbnRYd0VrM2VOOUZIMGVuc0Y5K0VlSjEwZUNRQlhUa1BM?= =?utf-8?B?c3FYMURsUGkxMXZ5OUlSU2s4MHFtVU93VHhtcEZZbXZEWGRkSkVzVTEvRDFv?= =?utf-8?B?ZnhVem1MSzhiSzJ1NUovc0FacUFmWGdSN1VORndRb0V0STFIcG5kaGE0RUtV?= =?utf-8?B?cmNXYXVhSjhnVGJJSlJEcjM4UHYxMlo3dUhCVkVIdS9nbXh6Nm9PMVFtU0s3?= =?utf-8?B?aE1vb1VCY3k5MUlWRlFxbmtIdDFPaStvTzFSZnhiTnBLR052VWZMWklTNnY3?= =?utf-8?B?TGNzQXRFT0o1SE1zK1dIaEVPUnZPeFFrV0RzdGxhL0tWamlkT0ErYWp6dENZ?= =?utf-8?B?S2FPaWRzb3c2SHQ5UjltOW9Wc21NTmlHRVpsTkR1ZTR0cFpLdk1lYXN0Q21y?= =?utf-8?B?d05PcTdPd1I1S21QNU5ObWp4UVR3R3M1ODhsUmdTTUNvdnNFaG1tY2EyU3dJ?= =?utf-8?B?NS9Lem1qaGg1emsvb1kxVDdCNmgvd01TYVVRbDhZbXpYN2h5K3Uzem00SUp6?= =?utf-8?B?Y3p1WDJ6ejUxck5GWU1Fc2hhZnRHdEdJR0FrdEZmeG82dksxaFhXQytsV3Uy?= =?utf-8?B?WmREVWUwYVd4TGZQMjlrNlRiME5JWThKMms3ZVJmalNxbEJiWkNpd1piRXBw?= =?utf-8?B?ODZrTUNVZFpxYnRVQUNHeDZjazNsck1vSG5HK052SUNIZHMrSGxacWtUdFNJ?= =?utf-8?B?TWFaU3p1OGVDdm9yZnBQZ3gwL2NFSVBlY1BSaS9UWmRGNjRaaWYzancvd1hK?= =?utf-8?B?YUJJdlA1UXN2ZFliMjc1N01GUnNmR2dISk0yUVViNFJZWUh5OStwM1NoaFhP?= =?utf-8?B?blhZUW41ZzIzSU9Nenp4WkVFaDlwVU0zTk1uUkFjcU8zc1p0WkQ5TTZFVG9R?= =?utf-8?B?d05kSUtaaklpM25JV29UY3picWpncllLQzU1OFBLZkNZMWxtNEVITXdZRnV0?= =?utf-8?B?Uk11WUszNU54YlI2RzI5c3BRU2JTd0FoVWlnb0VtbWl4Z29QMjNvRjNEUjRU?= =?utf-8?B?SWZSRjVvejVxenVQcEhISDNTcXFaOFQyaVRQc0RkOWVaVG4zbThtMjU2RGY1?= =?utf-8?B?elJIcnVPZ0dtdlZCN3lJbk5WUkdIQTI2YmtpMjJ3eTVNVW9Za04wNzlzbGtW?= =?utf-8?B?cWpLY1owSTN3S3ZKQ1RVK2JKcUNDalRKYW9jU0NmVFBLQTY5TTdLbmgwa2Zv?= =?utf-8?B?RlZmbGtBOEVucFRmL1JmZFRwMXhaaC8yRXJBTmRWU1p5bGd3T1VjdHpFZmM0?= =?utf-8?B?MGJwc2h4ejNoNWxuRDhjMklNYUpnVzU2OTkxcyt5NUh5Wk43bkdCRE8wc3Yz?= =?utf-8?Q?MDKkvV?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS0PR11MB8205.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(52116014)(366016)(1800799024)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?S09mekloUWw1NGRHU0QyQjBGYWErNitTNG1nc1RZbldPYXNnb3B4NFdrT2dO?= =?utf-8?B?UmN4L0ZDcGIzYkZldHdqQlp5c3FPUkMxVDJudFNpVXdqZTU0SmtOeE4yYXFu?= =?utf-8?B?bGVKTXo1ZHVJdW9QNkJyZXhpdDByZnZqYnVPd2NDWXVLMTBqS2EzcFdXbU1T?= =?utf-8?B?cEVpckpyekUvS1NMbk90TE9CT2JjVW1xYUx1NjNXdVUvemhyRTJ2Nm1pM3E0?= =?utf-8?B?cmxJZThPdFZVd0FDOWNtcnRHTTE0UWpJS05CSFJlZ011K3IzRUFhTHNTdXA1?= =?utf-8?B?ZXdNZGNPZUIrUElUbDhxM3A1WUgzeDlZY0JtQ2NuMDBTeDJBWDh2NE56TGNB?= =?utf-8?B?N2ZEMjNXb3dMQjNhckhFcVMxNm02Y3c4VmVTWk8xdVdGKzdLR055RDhROUFu?= =?utf-8?B?bmZWUStkWmErT0RrL0djSU9NMzJmdTRtODhoTlVaUGh4YjVGc1IwaVo0Tngy?= =?utf-8?B?QjNvRG50WnBWV25tK3NBMTRsNTdnWm94TjVmNTM5TVY0cnlwSTJQZmxzaEJT?= =?utf-8?B?TDR5Q0lPS1k2a3o3dHBZS0lJNzNWK2J1ZE43bUhiMWVNdlIwakZ5NVN4cEda?= =?utf-8?B?R01wbnY5OVRvSnVKUVFCb1Nacmc2cHRqRVNzTER4aC9zMEI4OFpyTDNLSW83?= =?utf-8?B?TWMyYTFMOGs4VGpBaFBjNzBJTjJxRGdrUzk0UnkxQVhMK3Vab3ZKV0xNcEZh?= =?utf-8?B?TC9sT0s4TnpoSUp6YUFzRWo3emhna29ZbnY2Um5QbEFRM3Zyd3MwWjFjbjVn?= =?utf-8?B?alRIUmNvNW5RTU1DYWRsWFREQUNXVXQxV0FpMjFzT3N3NGFrak5taEhPWlB6?= =?utf-8?B?S0JMbDRITURjcmlxMW1XVUd1a3hCTUFrb090YU1uUUJMWDBVdjI4emZlVWIx?= =?utf-8?B?blk4LzZCa25JVklsYzhzVlFsc3NEWEgwZEtBelVaRHY4RS9RNU9GdTZyWXlB?= =?utf-8?B?RndiT21YaFlKN0VaU2pJa0w4TGZweGpubEdXY2J0RWxsczFDbnpRWHdqT0ho?= =?utf-8?B?OXo0MXRGT1BQVjNvWHZRbHRGTmFkQ3NQcDlVc1pDRUtjOU16bVBrYTJrclBV?= =?utf-8?B?RjR4Mkw5aWROaENQa09NNWwvSEk0RFRwRnV0dDhIMEwvR3orNmxFZU5EdHNr?= =?utf-8?B?WjE2Zk1jZGdLdU5ncXFZMEJOWjgxMFdOajFlNEY3cFJtdlJtTzduR1BjY0ow?= =?utf-8?B?OU5xWUY1TVo2ZUlidGE4Qy9qNTJHTGx6OTJGOERsbkxPc3VzVm9MWlRLR3ZX?= =?utf-8?B?TjBZWUVMdm5oellRZElwMjBLSXFBUDJOK2JZaEFDY0dMVXd6dkVCd0tlcmg1?= =?utf-8?B?YnBYNThZcllaSGJnc3dEcWR3Rk1ZYXZPWUVaVE12UUQ3eU5xRTNCbVdGWnJO?= =?utf-8?B?M001M0VCaDdieGdBZFNMc2FtY2xDT3FQVEVtY1lyWEpHOXJ5alBFcG00OVpr?= =?utf-8?B?U3YzRUZTTmVGcXJrb1hScnYzS2F4ZDg2S1BYSGZzbHFKZjAzQXgveUhaVDFD?= =?utf-8?B?YWlzNXAyNXBTcVVhL2NRbEhLcDg4dDNqaE9QZ2NrMlNZZnZRLytBWmhsb0l1?= =?utf-8?B?MWM4ak9OeHd0N01VRURzWjZVYVEzSHdyWFBMRWd1a0Q3MDd6bGxDTElQNHh6?= =?utf-8?B?SkFuQ25YeW5pT1duSTgrWHpFQXBlMU02MTFkZThpNWJIYUJwQjV1TEJBZWpl?= =?utf-8?B?Ty9oQ3V4VDV6Nml0WlhFRXA4bTcvYjZIZmhlaStUZmgyNGtmOWgxOE9ZeFAx?= =?utf-8?B?WUdaQ0RSdFpIUWlGcnlCUkpCVHpkZmdoTlZXYS82TmVwUlZMRlYvSTQ0SU0r?= =?utf-8?B?cTd2K1h6SFNydVFMdTNWZE1Tc0pSSDZCM2hvZkUxWW9oSXVnZnJEL0dZREZj?= =?utf-8?B?R2crZEMyZ0JiRnRXUDQvdDBROGhIS2dqcUtPd1Fod1RSU1pnaFhEOUJodG56?= =?utf-8?B?dUtKRUhoL3NlVnVSYlFscDNUdWVUcnpzMHFLS2ZVaUVicjJCUXFOSUV6ZHdX?= =?utf-8?B?WUpmbE8rQVdkb3RoTXN6TVc1endoY096eWpBaUY1YXZvTzB1dis0dWlOOXYz?= =?utf-8?B?QkhvV1dCTE9JZXVUY3dGczRBWmo0ZWJiejJvOG1CcGpUU1lHd045cTFkNzRi?= =?utf-8?Q?MKj7Iae81SyHXLCmwBV1adI+j?= X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7395a03b-273b-44e9-d125-08de238fa8e3 X-MS-Exchange-CrossTenant-AuthSource: DS0PR11MB8205.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Nov 2025 15:08:26.1105 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 54dbd822-5231-4b20-944d-6f4abcd541fb X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: /aR+N9NHvnvEz887idVuQKgGd8g8u8W6NQvJqfBg9H0YqZRokjAmsDmZb+fgVtPrHa+3P59XlPzZDq5cBn30Hg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR11MB8774 X-Proofpoint-ORIG-GUID: mEkb6J7b_evTCx-VwZCRXU5BcPVP0Eme X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTE0MDEyMSBTYWx0ZWRfX/x6xX584U/0l F5C/LB5jRz6SbPSIq5THktzbCoFAvzwHkKJbQHiV6xoGBU3rj6Z5SauWYerAJlSYoRvnZIGR1P3 9pAfIfzrxD9LhSIHuTO19UNi5dwkCFO6mT94g+igW3ZIPZJ3ncwWgYUUlFNPnNAUzrfLxN1H7/s SSj4KZAagL/MOiEFE7b8NISjLGkdcG69oE19D6cUHfEJVTfBnP5rVfh+U52nDtitOAZaapZ1o1q KhPzTVge8V4kkwnJbqzOoJl8KbOyzMYJkIB/IA7hSQKM30Q6CvYOuDgdk+JWMbZsXlJCPf2Y1W4 cKN+n7cUk5gDoNQRmk/KfeOg25oWCXwsDH/crTzARVErayBDgEjavSbp5uMiQxOj3EQ4XqezJ4T WFkj1TSrFBXar3cBpYWJODQ4LXssRQ== X-Proofpoint-GUID: mEkb6J7b_evTCx-VwZCRXU5BcPVP0Eme X-Authority-Analysis: v=2.4 cv=LfAxKzfi c=1 sm=1 tr=0 ts=691745f2 cx=c_pps a=XJoAL0HPiv6B0cYJlRTKVw==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=6UeiqGixMTsA:10 a=M51BFTxLslgA:10 a=i1IsUcr2s-wA:10 a=VkNPw1HP01LnGYTKEx00:22 a=2AEO0YjSAAAA:8 a=d28r9nv9ZyHOM8R9p0gA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=cPQSjfK2_nFv0Q5t_7PE:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-11-14_04,2025-11-13_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 bulkscore=0 malwarescore=0 impostorscore=0 lowpriorityscore=0 spamscore=0 clxscore=1011 phishscore=0 priorityscore=1501 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2511140121 Account that a CPC header is prepended to every frame in the RX and TX path. For now, nothing is done with that headroom but at least bytes are reserved for it. Signed-off-by: Damien Ri=C3=A9gel --- drivers/greybus/cpc/host.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/greybus/cpc/host.c b/drivers/greybus/cpc/host.c index d797845497a..1cce4f987e3 100644 --- a/drivers/greybus/cpc/host.c +++ b/drivers/greybus/cpc/host.c @@ -9,6 +9,7 @@ #include =20 #include "cpc.h" +#include "header.h" #include "host.h" =20 =20 @@ -49,11 +50,13 @@ static int cpc_hd_message_send(struct cpc_host_device *= cpc_hd, u16 cport_id, return -EINVAL; } =20 - size =3D sizeof(*message->header) + message->payload_size; + size =3D sizeof(*message->header) + message->payload_size + CPC_HEADER_SI= ZE; skb =3D alloc_skb(size, gfp_mask); if (!skb) return -ENOMEM; =20 + skb_reserve(skb, CPC_HEADER_SIZE); + /* Header and payload are already contiguous in Greybus message */ skb_put_data(skb, message->buffer, sizeof(*message->header) + message->pa= yload_size); =20 @@ -210,9 +213,11 @@ void cpc_hd_rcvd(struct cpc_host_device *cpc_hd, struc= t sk_buff *skb) u16 cport_id; =20 /* Prevent an out-of-bound access if called with non-sensical parameters.= */ - if (skb->len < sizeof(*gb_hdr)) + if (skb->len < (sizeof(*gb_hdr) + CPC_HEADER_SIZE)) goto free_skb; =20 + skb_pull(skb, CPC_HEADER_SIZE); + /* Retrieve cport ID that was packed in Greybus header */ gb_hdr =3D (struct gb_operation_msg_hdr *)skb->data; cport_id =3D cpc_cport_unpack(gb_hdr); --=20 2.49.0 From nobody Sun Dec 14 06:37:03 2025 Received: from mx0a-0024c301.pphosted.com (mx0a-0024c301.pphosted.com [148.163.149.154]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DBC5033D6D2 for ; Fri, 14 Nov 2025 15:08:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=148.163.149.154 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763132922; cv=fail; b=o4JpctfmRXEhx0zcT8JzLu7E/mUOiMcsQ0qhmsnW37uUmYYDVtkn7TzBntAig5zjPKcrI7UE4c6PSjZW6k6/IAx/0neMCuIe+0DP+a0rm4X1STxqiOXPrJTTYNy77Qp6jp5E5Di7TBpf0BZhIQbntGp4roVLE+2XypWQBg4X7uM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763132922; c=relaxed/simple; bh=KYvmhbpacdnXIVuOrX1enP/tUzgnOOPbu/VbMVtjq08=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=lIPTf6P4XY257c714Et7SwEW48psgYS22PyTqnpamQvHV9yS44BUiOzz0whO+6H8xQF2grtDU2sTY9Ip4FKEPsFoR1r1xrIBjyrvEpmBuyLKeTt0NSKQjY6qU9lVV/jUQ47+USVLNCuh7Nh8T4EkBj1/nFGjTydWQs9wPlYIFUM= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=silabs.com; spf=pass smtp.mailfrom=silabs.com; dkim=pass (2048-bit key) header.d=silabs.com header.i=@silabs.com header.b=CcEvAhNR; dkim=pass (1024-bit key) header.d=silabs.com header.i=@silabs.com header.b=AYONa4Nq; arc=fail smtp.client-ip=148.163.149.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=silabs.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=silabs.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=silabs.com header.i=@silabs.com header.b="CcEvAhNR"; dkim=pass (1024-bit key) header.d=silabs.com header.i=@silabs.com header.b="AYONa4Nq" Received: from pps.filterd (m0101743.ppops.net [127.0.0.1]) by mx0a-0024c301.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5AE9ueVC2132744; Fri, 14 Nov 2025 09:08:35 -0600 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silabs.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pps12202023; bh=m5LJmOcOUiXql38fAXQ7rcdZWIrDGbciklHNZBxnEHY=; b=CcEvAhNR6dbq xuA+6fm3H/Sz6jVEtw+260SnGPsStxdj21u8nTWMuA01LQ1oaWpD75MsaPHFNDAo KaMYLwOP/yEV+lmgNqPEH9h0D1ZV3IzN6o2ap3ANXyKCs1Xamp5pfzTexaKhu/w9 Pr7Oe6jnDDxcrKUzfxKmAZqtFQ1WKf7K+mchBLoM9XFkrnpzrDRcNCUgkynMUI8p A5k6ffJ37sCVc1aU8mHwkWZq6a10KmVSMksXLIbVB29Od5jDSP/uI5wWRGuN0s03 pqwPnnewJAiijqCp5KvtnnyhVMSnLAMtn7lErqUpQ+LmGr7AFTv9aykmZtMKWz9C Aevep1W/Sw== Received: from ph8pr06cu001.outbound.protection.outlook.com (mail-westus3azon11022081.outbound.protection.outlook.com [40.107.209.81]) by mx0a-0024c301.pphosted.com (PPS) with ESMTPS id 4ae285rk1u-4 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 14 Nov 2025 09:08:35 -0600 (CST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=iWO+hTtcdaS8vvSj26jv5nVYUC4ZlI30nBCGbw/uiYTOX0EcOQi6xxG0t4d+zkG3XhhAw6iI2zSVL4bkJW+/NX6jzeZ3g5x0mtHMSb82Djn3eLuwP7eGubrlbjQv8W03ic0+t1GmByWv3T1Naw8fIAsZC93uPv7F0w+pxAixZtDjCNgb823fRH2PJGiwk3L2otC9mzq2/wj5u7H6Yf/KmY8RoPEIBO8pYKr0+knV/iHP6DUFTwTT/2rtTfbizjyK3DiiCprwmBiEt7SYs1rtpLDBihpgyKQ94gHbEoEMLbUVA3VfCTTTL/Sxxa3/4l2NHXoHMCW66SZKYRPZh3ixYA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=m5LJmOcOUiXql38fAXQ7rcdZWIrDGbciklHNZBxnEHY=; b=uiAj2znZ2Gu8RUH+hbQhmJkJPW9yHU4lgwlw4bmji9kt0EhZ0H5HUrBjblIcjkvWtGY4BsuNXGUCnRgxFjYtC95ENfqgurmW8ZexU5UtQX+OHwQu3Q7kz5WYy6YiJodeM5et0rjnKBzI1/H8yyRXB+8VbzXN769ntzMx7yhWT1OqjZeEJ2kvBjXtFflqfEWq/4Yu9aUo5wsKDEBf6QnKIpuWZ+IAcdKTDnwfWfEjdTU07FoDHXp5dT7T10mR0mv2ZdS7MGzOGFkY7Ln8C/e6k81iC9ydSARkAs4BsZJto/vSY010wXRbBJZwFObteLd2xxjBWTLIyU6/WZymrfv7UQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=silabs.com; dmarc=pass action=none header.from=silabs.com; dkim=pass header.d=silabs.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silabs.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=m5LJmOcOUiXql38fAXQ7rcdZWIrDGbciklHNZBxnEHY=; b=AYONa4Nq0qodrV3U1bQLF0/lpALGkjRVb2SAhSI232OggMWad7d40q862Myfyy59Xk+sXW+6W9hblSFO2SRTHoHYUBkbBFxRQtB5KLR2ertWz3sxgQMI+VBQmYgq91y/l4VLNN4aAjXi8BhMlFPeS20zCdZ6Ithxt7GYSWGdago= Received: from DS0PR11MB8205.namprd11.prod.outlook.com (2603:10b6:8:162::17) by CH3PR11MB8774.namprd11.prod.outlook.com (2603:10b6:610:1cd::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9320.17; Fri, 14 Nov 2025 15:08:30 +0000 Received: from DS0PR11MB8205.namprd11.prod.outlook.com ([fe80::c508:9b04:3351:524a]) by DS0PR11MB8205.namprd11.prod.outlook.com ([fe80::c508:9b04:3351:524a%5]) with mapi id 15.20.9320.018; Fri, 14 Nov 2025 15:08:29 +0000 From: =?UTF-8?q?Damien=20Ri=C3=A9gel?= To: greybus-dev@lists.linaro.org, Johan Hovold , Alex Elder , Greg Kroah-Hartman , linux-kernel@vger.kernel.org Cc: Silicon Labs Kernel Team , =?UTF-8?q?Damien=20Ri=C3=A9gel?= Subject: [RFC PATCH v2 08/12] greybus: cpc: add and validate sequence numbers Date: Fri, 14 Nov 2025 10:07:34 -0500 Message-ID: <20251114150738.32426-9-damien.riegel@silabs.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251114150738.32426-1-damien.riegel@silabs.com> References: <20251114150738.32426-1-damien.riegel@silabs.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MA5P287CA0046.INDP287.PROD.OUTLOOK.COM (2603:1096:a01:175::12) To DS0PR11MB8205.namprd11.prod.outlook.com (2603:10b6:8:162::17) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS0PR11MB8205:EE_|CH3PR11MB8774:EE_ X-MS-Office365-Filtering-Correlation-Id: b92d1b93-220e-4b3a-916c-08de238fab5d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|52116014|366016|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?QU9lMS95ZVY5ekFqazNLNzJock9GbStpUDBBUmU4SG1neSsyZ01YdHpacTdL?= =?utf-8?B?WktwbTBna29YdktlK2dYYzlBN3JaVHJjelJITTRYL2laeGpzOU1RcTBPSjVi?= =?utf-8?B?VXN1YXZJK2xEbHlmVTVGYm1weC9PZVhZN21TcUJrUVBGMk1FdERhS3gxVDlZ?= =?utf-8?B?dGJ0NWVjcTdKanJiYWh0RERzQVZmbEhrbFdvUzZSVXJxV3U5UCtLSEtlOE1Z?= =?utf-8?B?UGNwZkgvYlZ3Q2hDRDZkWEFKNDFYUnJWWllLbDJDQlkzYVFEYkQ4cldnZU4y?= =?utf-8?B?THFSVXVSYlVSOEp6Ry9kUTNPZ2lXVWw5S09jbHQyUjFObi9palZLbjlzTnNk?= =?utf-8?B?NmRGM09KNzhaZ3ZSUWltWGRjeDVxZDM3YVZIcXVTNUFUUXBzTnZ4TTVCNXFI?= =?utf-8?B?b2Q5d3NiSk1iL0h6YjM1Zk9peWEzL0ZoMEQ0MTBoa2VzZkh4cWJuV25lemdZ?= =?utf-8?B?Q2tXSHR5L3BJK0FHUWdpaTN4ZEZpc2U5ZFRvZWdGUmVRUlNBQVFlc2JsZWY3?= =?utf-8?B?Nm5QVnZhd1dPd29VTjAyMmVrNm9WcGVybkg3TVk5QVZXVVp3dFpwanJUbkpO?= =?utf-8?B?NE9IdkdaeDFENXZwYUtZbkdLNmlTalFFdkY4UTF5MkhZRFN1SDJtVHlNaWhE?= =?utf-8?B?SHJVTlh3K1B3c1RFR1k3TUwzeW5XWXF0aWttTUdoOWEwd2ZTUnJwZjNBWXdP?= =?utf-8?B?bTE2UkxvMTI5OGtGemRzNWhyOGY4KzdBSVBrRFlaMmNIZk1IQTJCdytQU0ZJ?= =?utf-8?B?RFdZTWxIeFJrMkU2MjNnRk1tTFlkZXRwNEdqZEhtM3lJUHdjank4YjVLUU8v?= =?utf-8?B?MzF0VERoTVM2ZVkrYW9wa0pXcHQ2ODBTY2FPWFlwbXEvdzg1OFRvNGVDWitD?= =?utf-8?B?WkxWRlg2YXhvYTJKWlI1dDBtTTR1cTJRYW5OU204VGQ5UDlSaUZIOEQ1UGw1?= =?utf-8?B?Sms2US9FanJSUTFPNDZ5SE9zTVRRcVpNVFdDYXBnODdwM3pLazlDYko3dFlU?= =?utf-8?B?SElMM0dxQURIS29wY2lIZjBzWHJUV243anRPcWE1ZnF0SjhicFJhMkkzOXhw?= =?utf-8?B?RVppdmZrOEp3U1ZjRHhPTElMeTFycGlIWTZTTnJIT05sV2kzbFVwYXc2YUs4?= =?utf-8?B?MlFEWk9ESmFPS3JaRGZPNVc2enNyRjFnOTZ6UUt3RTNERTZUN0dFcEtpcStY?= =?utf-8?B?YzA0allxSTV1ZnQ4c0JJWjRmMXVXT0Y0Uzk5ZFM4N0RBcFNjUHJYajhnbVhv?= =?utf-8?B?ZkNlazl1djFzYjlFTDg5R2kzN3c4dWtDVUgzQjkyb21NUXM1b010WDREa1hk?= =?utf-8?B?VUp2OHYvK3crTEJMTVp4dG5xdkNXSnA3VVZpTHNBK082THFVdEk3UVF5Yk1E?= =?utf-8?B?TlZCYTFmVWUvbjJ3dHlaUzh3LzZPcnc1cTVYSEl4cDErOVVFeWVGUEFlRkcv?= =?utf-8?B?TTJzb1o4Z1c3VDBTeElVWmlPRVM5NlVuMjk1MkMyUU1SRkxrOVRyaURTWU1O?= =?utf-8?B?YXQvNmZkbkdTY0tVdVdOTHFVVnpvUlI2M1ZkMGt1cVlHQ1FUa2sxQnBQRlBn?= =?utf-8?B?Zm0rSU5DWE5aR3M0UHRXMmNHM1hDVkN0ckxsVFU0aDhQU0F3WUNxbk5VNnNQ?= =?utf-8?B?VzFhMUhnMDZWdGlPSkFielZaeEs1dDc5czB0ampEaXloMmNYSkpoZjYvNEFB?= =?utf-8?B?aE1zZ0o0L1B4WVJuM1J2RStLVjVNNnZWR2tadWIxQXNMcUhyM3lTQ2FvODVh?= =?utf-8?B?by9qaXlQSTJYWXVra0JsNXBKYklndlJndFpSK256Y3ZSSkZJeC8wcmE1M1Jj?= =?utf-8?B?M3FaTi9SN0FQMDRZOVdMcHlNbWpNSXp3dFc2YTdoSTUvd3VRdHFXNHZvSHZI?= =?utf-8?B?N3Y3bHppK0MwNzhXbnlZSGRYcGpER21CTi81a3lmM3M0UTV3M0ZQNGd5L2N4?= =?utf-8?B?b0tqNTZOU2hiT0FxRVkreXNlamNtQ1dhSlBDVDRvc1pIWmZCeWNlVUFNVFc0?= =?utf-8?B?WVVaM21RU1dmaTFiTWdKT3JFdXRwWEo5c1E4ZFV2elJncGlIK0RPWWZOOGZl?= =?utf-8?Q?XO3GeX?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS0PR11MB8205.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(52116014)(366016)(1800799024)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?eHdhWmZyRlVqTDFZOGVjZTNiWHZlYi9jN3dtSVF1elNTQzBreFhoajNQQyta?= =?utf-8?B?T0cxekE5aXhhNml0bWFlSE5Qa2hpRlhKREhHcSt2bG5nNEw2SWE5RkVGVENj?= =?utf-8?B?Ykk1a3lUQnRQbS9WN1Q4TlFtRVdXblZEVHdnSEUwbjlDZUJEMG02ZDV6OVpz?= =?utf-8?B?QVl4aWRJTGVDZFFPb0hCbDlqYUF4czBWdTJvdkNvVXExaitQUExncUwreHI3?= =?utf-8?B?dGVSNHFyNG5yRzUrRlJkVHg1dzhENDNHZzhiWkprT1p5VURQQVNjUHlYRG84?= =?utf-8?B?bElFNktEd3dqNjdYaFczM3NxY2ZVZU5DQS9rSjlzRm5YaTc5eERETTRhOVRw?= =?utf-8?B?bCs0cC9TcFpkanI5ZEtXTFQ5YStPN25zMTJyYUJaNjFnL3FrY0xXTEJPajVL?= =?utf-8?B?RlRDOUdXZXNud09lSGd4V3NYT1p1UTRWSVBaZjhWZnByNHI0UFAxcTN2YlZp?= =?utf-8?B?ZGdnZ3JmbWpZczltVEpBcmtlS2RKLzIvV215TmhocWRib0RoM0lTVjREUzEz?= =?utf-8?B?Wk5pR1YyZXlYN3hLU094NHpndkU2M0hpMXo2RVF2UjhWNlRxeXIydFlMd3hM?= =?utf-8?B?bXU0Zng5L0JzUDlSMC9MN0hDOGVVbkdOL0ZoTWNtYWJoVjJWNzRveDZrVDhK?= =?utf-8?B?Z1dIeVhzbVcwZHhZMW9ncnA0NjFyOVYrbU0rYi9Kd2UyVFNxNTZ2aWJsa0Nk?= =?utf-8?B?OGRMNWh5QzBmYXJiN1NhOGxWL1RYRmZMaTcweFNGRis1VEhwYWhlNW1RYWlq?= =?utf-8?B?MHVHNzFRallRMVNTQjNiZ3RmUHZ4NW8vTXdJQU9RWVpjWE81eDlDT2tKZENl?= =?utf-8?B?NEExZG5qcWQ5cHdpOG02MVNRUVpoWnNIbGY0TDdDVVJ4TWh6c3A1dWNZWDFa?= =?utf-8?B?akkvV1BaNUt1QnZKRlRpdjVOdVJPZXh3amxVVERrVE9PdHFEL2orUjVGakZj?= =?utf-8?B?ejgyUGFUcWs5Y1FxUTVKUW5tVzNRWHdWbEZWMWwxQ2htWnlwZDdIME8vSDBV?= =?utf-8?B?M0lzYzVPb1hmakFwMDA3RTlmT3F4TG9mOEEwSTJBdEsyWXR6eHdZNzJWUy9u?= =?utf-8?B?RnI1VTBFKzF6RkNWcVcvSGVodjFYWEt6b3Y5SEdMZUFodXRtdUU2L2IzVEZj?= =?utf-8?B?Y29DOHp3Y0tiRmFNMW1nZnJxb1g0cjdRNm5zM2NQY3FnQUVpb05xMTJHNTcz?= =?utf-8?B?NDhJUldubTRxNnZ6WjltazBxLzJXK2h4cFlHamR0Z1QwQnlFT1MxMjh0T1RT?= =?utf-8?B?bHNWbnZmUStDNzlQT3c2QmIrSi8rM210bTRZa3FIeUZ0a2dJdVFuTXFBV0Qw?= =?utf-8?B?TG4vMGt2c0JoZWFZRENhSVVXZ3YrRlNLQUJ4TVVCdkEvTG5mc0UxSDd1RW9s?= =?utf-8?B?ZjJvWGFSa3AwWnlERTNQZTFuUDBQdkpBdHZXUUZUV09jQ0JJdDMvcERKaWVa?= =?utf-8?B?MjJyQTA3d2dtUkZSeUVacG5UcGVDMXB3dHNRZ09YU0EwNWw2U2JVamUrZUNU?= =?utf-8?B?YXdCVzQxU2VRbUhDOC9tRGo1L0lLU0dobGtSSGI3QWliWEVSSzEzWGJBOE1s?= =?utf-8?B?NEwwVDNldXBCSy85bU9icGwvbE9iamFNVGJZRWlDcDFydXdCOVIrNDNWZnFa?= =?utf-8?B?N090dzhaV3NwcFgxWUJpWEFZd21JTFVxQXFuczRacjVjSkhVaUhybnNLQmJS?= =?utf-8?B?aytaTS8wc0ZwZiswY3VIeksyN2hoTXh6RCtNU1gvYU5pM1pZeWlQcmN1SXdr?= =?utf-8?B?emNNSDQ1R2k5RnNaY3V4czBTc0NyVk9pYWljT2Z5RmY0UVhqT29CUmdCWTNw?= =?utf-8?B?S0w0L3VFOVFPUyt4SFg5a0lkclFmMFUvV2dKaFZhcEdJM3U0WGJ6bytpUm9F?= =?utf-8?B?d1dkR00vU0pUOHhvUzBmVGJCM2RPbHpXRnlPT1VHM1hENnl5cnlrdS9jNGtL?= =?utf-8?B?Q0FtTGV4K2NRd1hmWHFVaVNtTDNLR2VLMzdDa2NpVGdvR2I0N0FRclNYWHh1?= =?utf-8?B?c3F2RStCSjlkc3YvNU5mVmowbmUwWW9YaTNnWkVpSEM2ci94bG10T21VWFFx?= =?utf-8?B?SnJLYUtNdEJCVHp0UDd2bGxhU1k0THcxdnBNZWtQNjJ0V09CSGZSK0RES3BN?= =?utf-8?Q?rbkQ6f6iVEPWJToLH3rRkEM2Q?= X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: b92d1b93-220e-4b3a-916c-08de238fab5d X-MS-Exchange-CrossTenant-AuthSource: DS0PR11MB8205.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Nov 2025 15:08:29.9013 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 54dbd822-5231-4b20-944d-6f4abcd541fb X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: sBo4wbkvdQUaduh7/RCNHKubJh5jR2qB6caTJz0RQc6S/91B8GnizBozkywRK3ansahpAIcm/gyC5QM3N0etWA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR11MB8774 X-Proofpoint-ORIG-GUID: HczfZy4Bys5ZVSchNWhXZaSImxUfciRb X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTE0MDEyMSBTYWx0ZWRfXx2KtgkeivCHe V1cb63Sl/MoHva/a4YdcLsz8N6Di830B3YK95p2JFRiFjOLY2z69BJ45nFWakC1EVTii2ithBLR D5zrByICn+ZXPXnfFvQUhOjCmp2HdHtlsQ10D/2814maTYv5ajWQcsxsyW83LgiRMESxRxuQNAg ZQkP9dFPozu5f2sZzd9B0tQbGBiHFBJ5h1DM638pJC0QJXEZPh+DahGE2a3+hixzedoaf8Cj5Qb cGFMBrqUaiJJT0wAglCBHdaddcolahPVwYZ/WXUm51xUx+GfhqJphaU0vIf7wX5Bwge6JOTcC+B Z5uOu8BIJaNx+9aQSeK86P9xdw9nIrKjsdBZVwLIOFsMnf9xZFmWTb5F9j00jq+52ZmI+SIt4AF ycViZRKb5ebfm18KJw6DnK2Xgp6+bA== X-Proofpoint-GUID: HczfZy4Bys5ZVSchNWhXZaSImxUfciRb X-Authority-Analysis: v=2.4 cv=LfAxKzfi c=1 sm=1 tr=0 ts=691745f3 cx=c_pps a=XJoAL0HPiv6B0cYJlRTKVw==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=6UeiqGixMTsA:10 a=M51BFTxLslgA:10 a=i1IsUcr2s-wA:10 a=VkNPw1HP01LnGYTKEx00:22 a=2AEO0YjSAAAA:8 a=lANphnh8oco7uUUTl1QA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=cPQSjfK2_nFv0Q5t_7PE:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-11-14_04,2025-11-13_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 bulkscore=0 malwarescore=0 impostorscore=0 lowpriorityscore=0 spamscore=0 clxscore=1015 phishscore=0 priorityscore=1501 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2511140121 The first step in making the CPC header actually do something is to add the sequence number to outgoing messages and validate that incoming frames are received in order. At this stage, the driver doesn't send standalone acks, so if a message with Sequence X is received, the remote will not be acknowledged until a message targeting that CPort comes from the Greybus layer. Only then the driver will ack with acknowledgedment number of X + 1. Signed-off-by: Damien Ri=C3=A9gel --- drivers/greybus/cpc/Makefile | 2 +- drivers/greybus/cpc/cpc.h | 20 ++++++++++++++ drivers/greybus/cpc/cport.c | 25 +++++++++++++++++ drivers/greybus/cpc/header.c | 17 ++++++++++++ drivers/greybus/cpc/header.h | 2 ++ drivers/greybus/cpc/host.c | 13 ++++++--- drivers/greybus/cpc/protocol.c | 49 ++++++++++++++++++++++++++++++++++ 7 files changed, 123 insertions(+), 5 deletions(-) create mode 100644 drivers/greybus/cpc/header.c create mode 100644 drivers/greybus/cpc/protocol.c diff --git a/drivers/greybus/cpc/Makefile b/drivers/greybus/cpc/Makefile index 3d50f8c5473..c4b530d27a3 100644 --- a/drivers/greybus/cpc/Makefile +++ b/drivers/greybus/cpc/Makefile @@ -1,6 +1,6 @@ # SPDX-License-Identifier: GPL-2.0 =20 -gb-cpc-y :=3D cport.o host.o +gb-cpc-y :=3D cport.o header.o host.o protocol.o =20 # CPC core obj-$(CONFIG_GREYBUS_CPC) +=3D gb-cpc.o diff --git a/drivers/greybus/cpc/cpc.h b/drivers/greybus/cpc/cpc.h index 0f2d204d86d..db760cf8b32 100644 --- a/drivers/greybus/cpc/cpc.h +++ b/drivers/greybus/cpc/cpc.h @@ -8,17 +8,32 @@ =20 #include #include +#include #include =20 +struct sk_buff; + /** * struct cpc_cport - CPC cport * @id: cport ID * @cpc_hd: pointer to the CPC host device this cport belongs to + * @lock: mutex to synchronize accesses to tcb and other attributes + * @tcb: Transmission Control Block */ struct cpc_cport { u16 id; =20 struct cpc_host_device *cpc_hd; + struct mutex lock; /* Synchronize access to state variables */ + + /* + * @ack: current acknowledge number + * @seq: current sequence number + */ + struct { + u8 ack; + u8 seq; + } tcb; }; =20 struct cpc_cport *cpc_cport_alloc(u16 cport_id, gfp_t gfp_mask); @@ -34,8 +49,13 @@ struct cpc_skb_cb { =20 /* Keep track of the GB message the skb originates from */ struct gb_message *gb_message; + + u8 seq; }; =20 #define CPC_SKB_CB(__skb) ((struct cpc_skb_cb *)&((__skb)->cb[0])) =20 +void cpc_protocol_prepare_header(struct sk_buff *skb, u8 ack); +void cpc_protocol_on_data(struct cpc_cport *cport, struct sk_buff *skb); + #endif diff --git a/drivers/greybus/cpc/cport.c b/drivers/greybus/cpc/cport.c index 0fc4ff0c5bb..2ee0b129996 100644 --- a/drivers/greybus/cpc/cport.c +++ b/drivers/greybus/cpc/cport.c @@ -9,6 +9,16 @@ #include "cpc.h" #include "host.h" =20 +/** + * cpc_cport_tcb_reset() - Reset cport's TCB to initial values. + * @cport: cport pointer + */ +static void cpc_cport_tcb_reset(struct cpc_cport *cport) +{ + cport->tcb.ack =3D 0; + cport->tcb.seq =3D 0; +} + /** * cpc_cport_alloc() - Allocate and initialize CPC cport. * @cport_id: cport ID. @@ -25,6 +35,9 @@ struct cpc_cport *cpc_cport_alloc(u16 cport_id, gfp_t gfp= _mask) return NULL; =20 cport->id =3D cport_id; + cpc_cport_tcb_reset(cport); + + mutex_init(&cport->lock); =20 return cport; } @@ -64,10 +77,22 @@ int cpc_cport_transmit(struct cpc_cport *cport, struct = sk_buff *skb) { struct cpc_host_device *cpc_hd =3D cport->cpc_hd; struct gb_operation_msg_hdr *gb_hdr; + u8 ack; =20 /* Inject cport ID in Greybus header */ gb_hdr =3D (struct gb_operation_msg_hdr *)skb->data; cpc_cport_pack(gb_hdr, cport->id); =20 + mutex_lock(&cport->lock); + + CPC_SKB_CB(skb)->seq =3D cport->tcb.seq; + + cport->tcb.seq++; + ack =3D cport->tcb.ack; + + mutex_unlock(&cport->lock); + + cpc_protocol_prepare_header(skb, ack); + return cpc_hd_send_skb(cpc_hd, skb); } diff --git a/drivers/greybus/cpc/header.c b/drivers/greybus/cpc/header.c new file mode 100644 index 00000000000..62946d6077e --- /dev/null +++ b/drivers/greybus/cpc/header.c @@ -0,0 +1,17 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (c) 2025, Silicon Laboratories, Inc. + */ + +#include "header.h" + +/** + * cpc_header_get_seq() - Get the sequence number. + * @hdr: CPC header. + * + * Return: Sequence number. + */ +u8 cpc_header_get_seq(const struct cpc_header *hdr) +{ + return hdr->seq; +} diff --git a/drivers/greybus/cpc/header.h b/drivers/greybus/cpc/header.h index 84c47f105b3..d46ad8e53fe 100644 --- a/drivers/greybus/cpc/header.h +++ b/drivers/greybus/cpc/header.h @@ -40,4 +40,6 @@ struct cpc_header { =20 #define CPC_HEADER_SIZE (sizeof(struct cpc_header)) =20 +u8 cpc_header_get_seq(const struct cpc_header *hdr); + #endif diff --git a/drivers/greybus/cpc/host.c b/drivers/greybus/cpc/host.c index 1cce4f987e3..9173d5ab5a1 100644 --- a/drivers/greybus/cpc/host.c +++ b/drivers/greybus/cpc/host.c @@ -210,19 +210,24 @@ EXPORT_SYMBOL_GPL(cpc_hd_message_sent); void cpc_hd_rcvd(struct cpc_host_device *cpc_hd, struct sk_buff *skb) { struct gb_operation_msg_hdr *gb_hdr; + struct cpc_cport *cport; u16 cport_id; =20 /* Prevent an out-of-bound access if called with non-sensical parameters.= */ if (skb->len < (sizeof(*gb_hdr) + CPC_HEADER_SIZE)) goto free_skb; =20 - skb_pull(skb, CPC_HEADER_SIZE); - /* Retrieve cport ID that was packed in Greybus header */ - gb_hdr =3D (struct gb_operation_msg_hdr *)skb->data; + gb_hdr =3D (struct gb_operation_msg_hdr *)(skb->data + CPC_HEADER_SIZE); cport_id =3D cpc_cport_unpack(gb_hdr); =20 - greybus_data_rcvd(cpc_hd->gb_hd, cport_id, skb->data, skb->len); + cport =3D cpc_hd_get_cport(cpc_hd, cport_id); + if (!cport) { + dev_warn(cpc_hd_dev(cpc_hd), "cport %u not allocated\n", cport_id); + goto free_skb; + } + + cpc_protocol_on_data(cport, skb); =20 free_skb: kfree_skb(skb); diff --git a/drivers/greybus/cpc/protocol.c b/drivers/greybus/cpc/protocol.c new file mode 100644 index 00000000000..5684557df64 --- /dev/null +++ b/drivers/greybus/cpc/protocol.c @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (c) 2025, Silicon Laboratories, Inc. + */ + +#include + +#include "cpc.h" +#include "header.h" +#include "host.h" + + +void cpc_protocol_prepare_header(struct sk_buff *skb, u8 ack) +{ + struct cpc_header *hdr; + + skb_push(skb, sizeof(*hdr)); + + hdr =3D (struct cpc_header *)skb->data; + hdr->ack =3D ack; + hdr->recv_wnd =3D 0; + hdr->ctrl_flags =3D 0; + hdr->seq =3D CPC_SKB_CB(skb)->seq; +} + +void cpc_protocol_on_data(struct cpc_cport *cport, struct sk_buff *skb) +{ + struct cpc_header *cpc_hdr =3D (struct cpc_header *)skb->data; + u8 seq =3D cpc_header_get_seq(cpc_hdr); + bool expected_seq =3D false; + + mutex_lock(&cport->lock); + + expected_seq =3D seq =3D=3D cport->tcb.ack; + if (expected_seq) + cport->tcb.ack++; + else + dev_warn(cpc_hd_dev(cport->cpc_hd), + "unexpected seq: %u, expected seq: %u\n", + seq, cport->tcb.ack); + + mutex_unlock(&cport->lock); + + if (expected_seq) { + skb_pull(skb, CPC_HEADER_SIZE); + + greybus_data_rcvd(cport->cpc_hd->gb_hd, cport->id, skb->data, skb->len); + } +} --=20 2.49.0 From nobody Sun Dec 14 06:37:03 2025 Received: from mx0a-0024c301.pphosted.com (mx0a-0024c301.pphosted.com [148.163.149.154]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9850B33E347 for ; Fri, 14 Nov 2025 15:08:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=148.163.149.154 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763132925; cv=fail; b=Zs603QfYedhQknP3+qvqtDesGByIrSeK0UMGmsFU9WJBR7VFKrIBYe3ASit9RgDbPVDx/romq5wGV80XLye2lcludaBVtNub39DzdgvstT9PlNAeyZejESWOQRe/8k3Mo19M6j8kgv+z3TBOBkyE/HJN9b8AczAXpD+fyUPDPGQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763132925; c=relaxed/simple; bh=wCvSs2jHLuNfvcVXlR7rRglGjZ8f+yMY+VtEtyc2KIM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=K0eavwEgr+JzIFAtkFUVYDL+OvSzIQg5VeT0+wvERANIzYZzCOjV4b/5AK9Jt2FTHWpYwwE9OTEWqClfIURLAZ2PWzefoPCwbT0b3mbZ7RBv1jJVk3t7Ozb6AhaqLzOBQSObp6MaXjHRxGI6mA93Vf2yS7K6Y9ZUOzO5XG9wzQo= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=silabs.com; spf=pass smtp.mailfrom=silabs.com; dkim=pass (2048-bit key) header.d=silabs.com header.i=@silabs.com header.b=QoN8kHsx; dkim=pass (1024-bit key) header.d=silabs.com header.i=@silabs.com header.b=Txca3u5O; arc=fail smtp.client-ip=148.163.149.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=silabs.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=silabs.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=silabs.com header.i=@silabs.com header.b="QoN8kHsx"; dkim=pass (1024-bit key) header.d=silabs.com header.i=@silabs.com header.b="Txca3u5O" Received: from pps.filterd (m0101743.ppops.net [127.0.0.1]) by mx0a-0024c301.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5AE9ueVF2132744; Fri, 14 Nov 2025 09:08:38 -0600 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silabs.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pps12202023; bh=HU31aWKMtXMi+jAgCImKSeGtj1wCH2Vt3XBmKxx0LBc=; b=QoN8kHsx24bb 8PjMSiZ+zynNA6tT1nr2OX3piHTLWq10SlaiWH357vKuhoNxdTu5mENG+VFdO2pq nFIvY51KUWPorba23Ybs/E4Dfxeg9ce1npRNyuWWYtDFKtRi0L+Q+hPyoic6VpJA UuzlfQVBehLThwrValUumoJUFG8g2mL5bGM/c2u9S18D3Yd4x9enGh3UxAVxnIST kBZzMLeARyxc0D3aqpdEVIiyAllQwEx1OazLDYCVmTs5f7UAMuVJ9/p+TqWIHoMs gSzPv1Rm8UTx7YwBOJ5VcLs9lAODPavWKM4779KaSAyDfA58HKymPxiNHsyxQca7 SBlGUY233w== Received: from ph8pr06cu001.outbound.protection.outlook.com (mail-westus3azon11022081.outbound.protection.outlook.com [40.107.209.81]) by mx0a-0024c301.pphosted.com (PPS) with ESMTPS id 4ae285rk1u-5 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 14 Nov 2025 09:08:38 -0600 (CST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=yoF/2Ahd69UdEipW0QeoJlJFT2scMzHc/hJZagc8Qu31yd1YutPOFGNh1mRCAO+oIWWU8VfqtmbyPQb6S3lX/CpzTXTZxZYw4c+9xf6gPbI9KEr4UNBxMfrq8UhzKK54u5MNRsTVB5sAXbDHFTERYQpPXiERv45BmV0YE+hAI5ox0nlhH+IaN8lw9N7Qi5YfMLkiU70hZu+eaMK9maA9JLfLJzy08j0NH7BsVsTsiiGiKA8EHMUc1OAXDVHJKNj8bHr1aH+25nwz6gtsCWMwRhMJFwIMKHTgpTquhT1D5uLXPiPzy7c6A1DrePqHgj1v/1sPVDCDPTf+HGwhGnECkA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=HU31aWKMtXMi+jAgCImKSeGtj1wCH2Vt3XBmKxx0LBc=; b=P+XTil5yJwbAMb/41HboLzrzgtcY3RyQyPCn0cewuot4SEug1hTFnwZykGnsEq4hcIejhhaEmAjZvvKrDlW7OJ/Y7/NZecqjqtzukRI3cHAC/eNO4jZxQo+wdemi/Pj9CBtLLegrln7esDJf73LpaYvzO8vZDKbboZs274xjhrEUM3WyHk5FJc0W0wR6JDfusqu1f/Cz2wBr8DUpi4dfxm9pXNmASUbir77x6agRi6v+hWC8kc2XZGMuUbsXj65mv7SpJac/0ZTZWrlzYHCxucc8V9cVNWsg8GC2V2iSspp0vH1pa9b92XR5S2e51N86R/R3IzGm11+YzahHtx0f6w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=silabs.com; dmarc=pass action=none header.from=silabs.com; dkim=pass header.d=silabs.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silabs.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=HU31aWKMtXMi+jAgCImKSeGtj1wCH2Vt3XBmKxx0LBc=; b=Txca3u5OomUkJMlD2LBORA+58Ed/v3690ws+g3HnqQQXizycuh8KE581X5A5ng5WrNumwd9fGnmihYeZx3uMiPws/etwznGmoKZFySoVSODFNcr1kZiG+2faba4xKFgkMwOYibjhUBp4xehRymDCWBq9TaBCCvWS2XlJvIjzKY4= Received: from DS0PR11MB8205.namprd11.prod.outlook.com (2603:10b6:8:162::17) by CH3PR11MB8774.namprd11.prod.outlook.com (2603:10b6:610:1cd::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9320.17; Fri, 14 Nov 2025 15:08:33 +0000 Received: from DS0PR11MB8205.namprd11.prod.outlook.com ([fe80::c508:9b04:3351:524a]) by DS0PR11MB8205.namprd11.prod.outlook.com ([fe80::c508:9b04:3351:524a%5]) with mapi id 15.20.9320.018; Fri, 14 Nov 2025 15:08:33 +0000 From: =?UTF-8?q?Damien=20Ri=C3=A9gel?= To: greybus-dev@lists.linaro.org, Johan Hovold , Alex Elder , Greg Kroah-Hartman , linux-kernel@vger.kernel.org Cc: Silicon Labs Kernel Team , =?UTF-8?q?Damien=20Ri=C3=A9gel?= Subject: [RFC PATCH v2 09/12] greybus: cpc: acknowledge all incoming messages Date: Fri, 14 Nov 2025 10:07:35 -0500 Message-ID: <20251114150738.32426-10-damien.riegel@silabs.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251114150738.32426-1-damien.riegel@silabs.com> References: <20251114150738.32426-1-damien.riegel@silabs.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MA5P287CA0046.INDP287.PROD.OUTLOOK.COM (2603:1096:a01:175::12) To DS0PR11MB8205.namprd11.prod.outlook.com (2603:10b6:8:162::17) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS0PR11MB8205:EE_|CH3PR11MB8774:EE_ X-MS-Office365-Filtering-Correlation-Id: 63b78c89-1938-4199-2fdc-08de238fad52 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|52116014|366016|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?VDJ3SUZuRUduS1RsRnNyTlZYZjhRVzU1eVd0WWltanF5NmVoaThZOWlFTGVh?= =?utf-8?B?Uy94d3ZrMkdQcUtGTWVoSWZRZ3ZSMWFQM2NzRDVzc1dRWE1PU056Q0NvVW5N?= =?utf-8?B?YWhyeWdaei9ULzlrMGRyRHhVWHJXMlVNYkhVY3J1OU0ycDEvakZRQ0ZrdHYw?= =?utf-8?B?dzJEcEtpaXZqQVA1T1liNXJMM0pkcTREbmJNWDBZMlg1WGdNRTAxUWw5UWx4?= =?utf-8?B?SDBhUlJBcGE2QzY0S3VERHZJdEVNSzFIcDRQUkYwOXZWUlFIaHVYTWppcHg0?= =?utf-8?B?bkxNQWRSYjV6OERVVy9IVWJYQndSZTVrUHNLQmlVRWNlbGVyZHZaMWpYNHVj?= =?utf-8?B?NlJPOHFpODFZMFpnVWM0RVpoQmhiMmwwamFSZk5FRkRpOUthNmd4N1pzWVhm?= =?utf-8?B?enZVUjZZMHN0MDZXQkE5QURsbjdRa1I1aWNHdlpUcjlzV0Z5Nm5IOUxXMjNi?= =?utf-8?B?bG1yM0t0K2Q0bjhJejNtSVIxRUUveWp1OWpPU3AvT3VVR2pMbHp3Qkx2Q01E?= =?utf-8?B?WWhvMXFjVHdhSnZDcnZnRDZJRCtYZ1QxU3dNdVErbTZhS1JrZ21jN0lGclcz?= =?utf-8?B?WDJzM042UVR6ck9nS3pJMGVtdElZQnBLRjgyY2MwdHN1ZjhyQXdFSkc1d2t5?= =?utf-8?B?MHJVOHVVakxpNVZmb21BV0UwQ2FQOGJ1dk9zZFp5Y0EwaTdQMXl4NUtadytC?= =?utf-8?B?NXlORXJoNnovTjJqMXFnYnFOZTZ6Z2xaZktVM2ZxeU92bkJiVEM1Q1lYUG1D?= =?utf-8?B?bnJLcnMyZXR3QTlKdGZYUThvVVdMOElYSWlwMEZwRDQ3akNSVVVOWnh4Z1VX?= =?utf-8?B?b3BpQ2U4NmtVVG12bXE0aDhpUUVMRHRQUjk1VE5zT1U0RnljTWxGWm5mWUZY?= =?utf-8?B?eGJpc09wbnQ3MzZySzN3UUsvSlgxV2lFTTd0WFB0cnJocGl4R0lIZnFFVys5?= =?utf-8?B?QVMxQkVCK2dVcERtbWYyaUs5K21qc29lb1pqQTZtdFh6R01yQWlDemNlNWxO?= =?utf-8?B?RXhYOFNKMktLaldpME5JUjVYc2FlSGlicUVmbCs0K3VWbldDM1owa3ZxYnBj?= =?utf-8?B?dTNZMkxEV05wRit5cVZNSVJ4TGdzYjYwMFNNQzN2UGRDRmV4YVVCOGtCU2V3?= =?utf-8?B?RWpoNVd2aTNIRHVkQlJHRFFmbEZCTmIrNElJVTRLWkJacjNYT3FQTDQvMlBk?= =?utf-8?B?RkZmaFNZVHg4clZkOWNjdFdlWnFnTHZleis0SGZjUG5RK0pxc1BVNjBwOUNo?= =?utf-8?B?WS81ZWNNa1pxRWlaNjhEemVNQlMyenM1WFlnbW9LaUVybXFnSXJHcWhPYW5Y?= =?utf-8?B?ano0UjBSSys5eGdJd0t6SzkyUTdRd3FBcUdpUUtBWlUyU0M3SWZRS0FyM3A0?= =?utf-8?B?MTlJV0g2a21lNWhNTis4SVVaNlpsb1VmVEtlcE5mYmY0Qm1GRVU2cWhITlZ1?= =?utf-8?B?dmhLaEFBRER3RFIxcXdiVGNqNm0yaWx3Ym4zanQxSE1ZYlRHcllBL204Q2ph?= =?utf-8?B?aU43K3d2cmRNdE9KUXdLVzJyemFoaFk3bWNOYjZBMitob2ZlUXIyWlNsVWZ2?= =?utf-8?B?d2VIT2tsQ3RNU3NUOVFXWnhHZDJLcnBXUzlUaWEzM0xUanBhQTJzdTVYUlFo?= =?utf-8?B?ZFkyc00wejFLZ3B6dmw2Vmhob055c1N4Vkx5S05rVStVSDdYUFJKQkpqazRN?= =?utf-8?B?UXRjeVpkM25WYVdmVXIwK2ZmemVrNWx2eDJyUTBNVEpJTHdDU1VUdDRLVWpl?= =?utf-8?B?SW8wTDIvM051L1FudnVFVXNCZVJGeTJyZkdJdk12OFdrbkRQTG51aDVOeGNq?= =?utf-8?B?SnhTUVg2ei9YRVNTYTVndnBGUUpTd2xBN1dQSWM4RDU0VnFhSWNqUnJBWndu?= =?utf-8?B?b3FYcXZQSXZMV3NaQnVYaGVuYU5hZG9RNHVNQnREV0JIQnJUWkdVWDU2MlVU?= =?utf-8?B?TGkvUVpRajI3UHZjdGp0ZGR0aVdMWGdwT3llWGVtZlJEWEVpaHJxRHE1dnJn?= =?utf-8?B?MjROZ0J1UFRpWWZKd2tqR2hxb01wZ3BoNlEyRjF2MDN3RU5XVmM4Z0ZZYlhN?= =?utf-8?Q?6MYCkJ?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS0PR11MB8205.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(52116014)(366016)(1800799024)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?M2pKdjBsbnRYVlJpa0gvejV0MHVNVmxocDRwT2pzTGtBZTltVG93OUZiaTVq?= =?utf-8?B?WEQ5cE5OOFVHNzBSMFl1NkJXaW92elJiK2MxMXRQM2gvTVc1bzRxK25YOENL?= =?utf-8?B?NkwxY254ajdxVUFsNnAwZk1VTC8xQnZNU0ZleDA1T2wvdkdRc252Ymg4dCtF?= =?utf-8?B?WTJvcFdKR3kyV2hENU9IR29HZG44VzhFL1lmMHc0UVpTQlpQVXdLclVhQVM2?= =?utf-8?B?a2JCcCtMeGYrZXNST2RoWWlicVo3eVlWR2EySkNHdkFzTGpWNE8rT2tuejhT?= =?utf-8?B?TldaMkFRQXdFRGpQdTM0eXA5Y1lid3FMcEtPeWttQjY1RXdleE9jU2UxUklM?= =?utf-8?B?NXd0bDhXSFVvTWhhNWZYdjNtQXgxdW1YNkZZRWcwdm1qbjNUYXgzUWNWb2tM?= =?utf-8?B?OWN3OW5vQXBkUjQwK1pIRkxCWTg3M2M4ckFHSElHcldzdWpsanFiZ2lUaTZM?= =?utf-8?B?MkVRZFZEZFhKenVhOHExNlkwbUdNR09DWEhBYVA1Njh5MFlmR3hGUnhLRFJS?= =?utf-8?B?cVlJZTJmeExwUXhqRlpwMnJuZWM0a01zWHJzRmFzQlpjS0V6Z3JNVDFLdmVD?= =?utf-8?B?bWhTZWMwMThZRElVR0o0WGh4WEpXaE4zL2dYS0NiU2VSUm1uZDFrU0pyQmRr?= =?utf-8?B?L1h3UjJYbE90VTMxL2VpTE92UmJyaGh3UHN6RTUwQVVtNUNid2lCN0JPbjVq?= =?utf-8?B?MWxoQUE1M2lmZGVQS1J5MkN5VDNPbTFPTnA5QmtoUitvb1V3S3lvdkNmU0J5?= =?utf-8?B?NVpnMmk0VktTd1EzNlhWVmFITmJ0NGp0UzlGOVVYSlNFV205S2ErcWFMcUF3?= =?utf-8?B?UGJNWUlpNURiaFQrcDVBcVowY2NuVmREbXhzVWxBTVQzdzcwcVNyYUdLUWFp?= =?utf-8?B?WHdQQjd6WDFDL2dSa1NxTGlJdUVVZ0FSd09FUU42WmpKams0TElOc3g5SXhr?= =?utf-8?B?bUR5M1BNUnVkelZpRWNSNy8rdWFXVWJGdEpQL0x2Nlh4WkczL0JlUHFiVmZv?= =?utf-8?B?NW9sMGJwSEtIUFgxdVl0MVVrVS9SdDR4Z0MyWFZVTVV6UlVCdFBVNzZOb0Fx?= =?utf-8?B?MlJGck1OckVERElRbnlrQm52dUVsdXF0V2o0VStZK2FOWGRqWFE4N3M0YXBR?= =?utf-8?B?TmhyOG5TQWFwL2pITDNsbmhST3VkKzFwTmRXTHRTK0N6RU1LSFFzTFo5WS9z?= =?utf-8?B?V0s1ekx5a2dJK04wTjdWczJlVG1oR0tOQkJzaU91K0tHTkZ3R1VJNTN5TXNq?= =?utf-8?B?cjluL3lQLy9TY2Fpd3dwem02U0Z0WFovMy84MHNLNkNCQVhIVVo3N04wbG9w?= =?utf-8?B?QTlqdTgxKzQwVG1TUktERTNzSTVUb0JkcWhKSnl3c05rRmxHRkI4RGJJakFH?= =?utf-8?B?M1lqMlJOQjZqQU9sZkF6bkkxeGV1SGxlVUcyTG1QNzA4NGp3VVdQNFozOWJC?= =?utf-8?B?WU0zSGtKM1lLU1A0VksvQlE4YVJodEpBSmcyb3B6cW13ZU4zbCt6elF5c1Fq?= =?utf-8?B?NHlvaGRJN29BV2VjWnZ4M0hNSUtrODNES1BNNEZBOTU3aWZMS09FL2lodVUw?= =?utf-8?B?Vmg1Nm84eXUydmRkZ0YrczVlekdXVWhKMlRwOHdmZEg1bnZDZmlHektISmZy?= =?utf-8?B?RnoxYXNiTEp1NGtOUklxZDlOR3NDTU5SN0NJRVBERHZwbkNSazNqMElyQTgz?= =?utf-8?B?YnRxSGY2T3hXVXNJbkQzQ29ON0prYnd0aHJCMTNoYU82OTRUbktLVGRWYUN0?= =?utf-8?B?QWxXUWV1Vmxvb3lHYkZGeDZQY2VJQVd3RzVWTGljWU1DOUQ4akRjYmdrUkhZ?= =?utf-8?B?akZXK1dydDhqRHlBWkhNNjBNTXV3WndTSlByT256SmVXWlZpamhHUXdnRytp?= =?utf-8?B?aHRRUkVac09HZUlOOXVuTHFPK0J3UDVlZkJwOE1iYXJqL3NoQ3pqaE5WaVZt?= =?utf-8?B?T1k4SGZqV3d4WTNpM0JWWTNweHFhd2xFM1NXK3NIUXBIS1Fsc2x6Yzg3YVB4?= =?utf-8?B?VGZDWjRsVmx2ZWVuQ3dRVHpQcGVxVTJETkViVzVrM1BrQkNDZysvYURSdnI2?= =?utf-8?B?UXpBMlZLanZFNlcxTU9iSWZsRFJwckhHWHp1bUwvL0Fod3VyOVJFVlFJQ1ZK?= =?utf-8?Q?hIqcHWhQaDPnTBSuFEZgTVUx8?= X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: 63b78c89-1938-4199-2fdc-08de238fad52 X-MS-Exchange-CrossTenant-AuthSource: DS0PR11MB8205.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Nov 2025 15:08:33.1936 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 54dbd822-5231-4b20-944d-6f4abcd541fb X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 4N0boeRxGWje21lNHQV9M3yXYh+ri3hr0d/bvTsP8sv7pPAYEdKHUEHtbvCb7rTNpGbyzs5FVWjO7pXzJmaTFg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR11MB8774 X-Proofpoint-ORIG-GUID: 2YVZa-PTBs6VOEpS4rkAncVUjsXcV9FW X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTE0MDEyMSBTYWx0ZWRfXxIDKzO2qYupA A60mxsTZ+jiTe2e777+uCDsPwcKD1edj3xF2bFKQJsw2kI9WzfvseeJR1rXwhlvC10OD19ljX0g +e0oG05qdFNER4Ysa1lacGdvxYqeDhIduNvqr8xZrMaxIQk4JHwLHqZ4w5POcNfyftO0SCX1lA+ n3N7JARlLpsZyiPbRY+3G9xUQG6Zni84I+ZmLhdSCjsx1vcEo5wkSR7a+sTBOgqB29RTIGo5MdT bXx2m1qkLrKs2cFSVPiReUIvr2Gq+DhAnyg0Jdz/rvd51fU+TLwHxu/ArgKOoohCBepyTvLiDVJ f5xVxqq/SFQJFaoTg4C9Id01LTAetdGrnWNrJbRDPJESZ76ys+jPr7aRzDfqXudV9Zu03vR6+IW 3IYskYQ03phhU7/j5N97fHBx5PDUxw== X-Proofpoint-GUID: 2YVZa-PTBs6VOEpS4rkAncVUjsXcV9FW X-Authority-Analysis: v=2.4 cv=LfAxKzfi c=1 sm=1 tr=0 ts=691745f6 cx=c_pps a=XJoAL0HPiv6B0cYJlRTKVw==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=6UeiqGixMTsA:10 a=M51BFTxLslgA:10 a=i1IsUcr2s-wA:10 a=VkNPw1HP01LnGYTKEx00:22 a=2AEO0YjSAAAA:8 a=FeKim_DeMrHnj6pLxMcA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=cPQSjfK2_nFv0Q5t_7PE:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-11-14_04,2025-11-13_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 bulkscore=0 malwarescore=0 impostorscore=0 lowpriorityscore=0 spamscore=0 clxscore=1015 phishscore=0 priorityscore=1501 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2511140121 Currently, CPC doesn't send messages on its own, it only prepends its header to outgoing messages. This can lead to messages not being acknowledged, for instance in the case of an SVC Ping Host Device SVC Ping (seq=3DX, ack=3DY) SVC Ping Reply (seq=3DY, ack=3DX+1) The "Ping Reply" is never acknowledged at the CPC level, which can lead to retransmissions, or worst the device might think the link is broken and do something to recover. To prevent that scenario, an ack mechanism is implemented in the most straightforward manner: send an ACK to all incoming messages. Here, two flags need to be added: - First, an ACK frame should not be passed to the Greybus layer, so a "CONTROL" flag is added. If this flag is set, it means it's a control messages and should stay at the CPC level. Currently there is only one type of control frame, the standalone ack. Control messages have the same format as Greybus operations. - Second, ack themselves should not be acked, so to determine if a message should be acked or not, a REQUEST_ACK flag is added. Signed-off-by: Damien Ri=C3=A9gel --- drivers/greybus/cpc/cpc.h | 3 ++ drivers/greybus/cpc/cport.c | 1 + drivers/greybus/cpc/header.c | 41 ++++++++++++++++++++++++ drivers/greybus/cpc/header.h | 3 ++ drivers/greybus/cpc/protocol.c | 57 ++++++++++++++++++++++++++++------ 5 files changed, 96 insertions(+), 9 deletions(-) diff --git a/drivers/greybus/cpc/cpc.h b/drivers/greybus/cpc/cpc.h index db760cf8b32..bec2580e358 100644 --- a/drivers/greybus/cpc/cpc.h +++ b/drivers/greybus/cpc/cpc.h @@ -51,6 +51,9 @@ struct cpc_skb_cb { struct gb_message *gb_message; =20 u8 seq; + +#define CPC_SKB_FLAG_REQ_ACK (1 << 0) + u8 cpc_flags; }; =20 #define CPC_SKB_CB(__skb) ((struct cpc_skb_cb *)&((__skb)->cb[0])) diff --git a/drivers/greybus/cpc/cport.c b/drivers/greybus/cpc/cport.c index 2ee0b129996..35a148abbed 100644 --- a/drivers/greybus/cpc/cport.c +++ b/drivers/greybus/cpc/cport.c @@ -86,6 +86,7 @@ int cpc_cport_transmit(struct cpc_cport *cport, struct sk= _buff *skb) mutex_lock(&cport->lock); =20 CPC_SKB_CB(skb)->seq =3D cport->tcb.seq; + CPC_SKB_CB(skb)->cpc_flags =3D CPC_SKB_FLAG_REQ_ACK; =20 cport->tcb.seq++; ack =3D cport->tcb.ack; diff --git a/drivers/greybus/cpc/header.c b/drivers/greybus/cpc/header.c index 62946d6077e..973883c1d5c 100644 --- a/drivers/greybus/cpc/header.c +++ b/drivers/greybus/cpc/header.c @@ -3,8 +3,25 @@ * Copyright (c) 2025, Silicon Laboratories, Inc. */ =20 +#include +#include + #include "header.h" =20 +#define CPC_HEADER_CONTROL_IS_CONTROL_MASK BIT(7) +#define CPC_HEADER_CONTROL_REQ_ACK_MASK BIT(6) + +/** + * cpc_header_is_control() - Identify if this is a control frame. + * @hdr: CPC header. + * + * Return: True if this is a control frame, false if this a Greybus frame. + */ +bool cpc_header_is_control(const struct cpc_header *hdr) +{ + return hdr->ctrl_flags & CPC_HEADER_CONTROL_IS_CONTROL_MASK; +} + /** * cpc_header_get_seq() - Get the sequence number. * @hdr: CPC header. @@ -15,3 +32,27 @@ u8 cpc_header_get_seq(const struct cpc_header *hdr) { return hdr->seq; } + +/** + * cpc_header_get_req_ack() - Get the request acknowledge frame flag. + * @hdr: CPC header. + * + * Return: Request acknowledge frame flag. + */ +bool cpc_header_get_req_ack(const struct cpc_header *hdr) +{ + return FIELD_GET(CPC_HEADER_CONTROL_REQ_ACK_MASK, hdr->ctrl_flags); +} + +/** + * cpc_header_encode_ctrl_flags() - Encode parameters into the control byt= e. + * @control: True if CPC control frame, false if Greybus frame. + * @req_ack: Frame flag indicating a request to be acknowledged. + * + * Return: Encoded control byte. + */ +u8 cpc_header_encode_ctrl_flags(bool control, bool req_ack) +{ + return FIELD_PREP(CPC_HEADER_CONTROL_IS_CONTROL_MASK, control) | + FIELD_PREP(CPC_HEADER_CONTROL_REQ_ACK_MASK, req_ack); +} diff --git a/drivers/greybus/cpc/header.h b/drivers/greybus/cpc/header.h index d46ad8e53fe..5ac431b3c54 100644 --- a/drivers/greybus/cpc/header.h +++ b/drivers/greybus/cpc/header.h @@ -40,6 +40,9 @@ struct cpc_header { =20 #define CPC_HEADER_SIZE (sizeof(struct cpc_header)) =20 +bool cpc_header_is_control(const struct cpc_header *hdr); u8 cpc_header_get_seq(const struct cpc_header *hdr); +bool cpc_header_get_req_ack(const struct cpc_header *hdr); +u8 cpc_header_encode_ctrl_flags(bool control, bool req_ack); =20 #endif diff --git a/drivers/greybus/cpc/protocol.c b/drivers/greybus/cpc/protocol.c index 5684557df64..63b4127fcea 100644 --- a/drivers/greybus/cpc/protocol.c +++ b/drivers/greybus/cpc/protocol.c @@ -10,6 +10,11 @@ #include "host.h" =20 =20 +static bool cpc_skb_is_sequenced(struct sk_buff *skb) +{ + return CPC_SKB_CB(skb)->cpc_flags & CPC_SKB_FLAG_REQ_ACK; +} + void cpc_protocol_prepare_header(struct sk_buff *skb, u8 ack) { struct cpc_header *hdr; @@ -19,29 +24,63 @@ void cpc_protocol_prepare_header(struct sk_buff *skb, u= 8 ack) hdr =3D (struct cpc_header *)skb->data; hdr->ack =3D ack; hdr->recv_wnd =3D 0; - hdr->ctrl_flags =3D 0; hdr->seq =3D CPC_SKB_CB(skb)->seq; + hdr->ctrl_flags =3D cpc_header_encode_ctrl_flags(!CPC_SKB_CB(skb)->gb_mes= sage, + cpc_skb_is_sequenced(skb)); +} + +static void cpc_protocol_queue_ack(struct cpc_cport *cport, u8 ack) +{ + struct gb_operation_msg_hdr *gb_hdr; + struct sk_buff *skb; + + skb =3D alloc_skb(CPC_HEADER_SIZE + sizeof(*gb_hdr), GFP_KERNEL); + if (!skb) + return; + + skb_reserve(skb, CPC_HEADER_SIZE); + + gb_hdr =3D skb_put(skb, sizeof(*gb_hdr)); + memset(gb_hdr, 0, sizeof(*gb_hdr)); + + /* In the CPC Operation Header, only the size and cport_id matter for ACK= s. */ + gb_hdr->size =3D sizeof(*gb_hdr); + cpc_cport_pack(gb_hdr, cport->id); + + cpc_protocol_prepare_header(skb, ack); + + cpc_hd_send_skb(cport->cpc_hd, skb); } =20 void cpc_protocol_on_data(struct cpc_cport *cport, struct sk_buff *skb) { struct cpc_header *cpc_hdr =3D (struct cpc_header *)skb->data; + bool require_ack =3D cpc_header_get_req_ack(cpc_hdr); u8 seq =3D cpc_header_get_seq(cpc_hdr); bool expected_seq =3D false; + u8 ack; =20 mutex_lock(&cport->lock); =20 - expected_seq =3D seq =3D=3D cport->tcb.ack; - if (expected_seq) - cport->tcb.ack++; - else - dev_warn(cpc_hd_dev(cport->cpc_hd), - "unexpected seq: %u, expected seq: %u\n", - seq, cport->tcb.ack); + if (require_ack) { + expected_seq =3D seq =3D=3D cport->tcb.ack; + if (expected_seq) + cport->tcb.ack++; + else + dev_warn(cpc_hd_dev(cport->cpc_hd), + "unexpected seq: %u, expected seq: %u\n", + seq, cport->tcb.ack); + } + + ack =3D cport->tcb.ack; =20 mutex_unlock(&cport->lock); =20 - if (expected_seq) { + /* Ack no matter if the sequence was valid or not, to resync with remote = */ + if (require_ack) + cpc_protocol_queue_ack(cport, ack); + + if (expected_seq && !cpc_header_is_control(cpc_hdr)) { skb_pull(skb, CPC_HEADER_SIZE); =20 greybus_data_rcvd(cport->cpc_hd->gb_hd, cport->id, skb->data, skb->len); --=20 2.49.0 From nobody Sun Dec 14 06:37:03 2025 Received: from mx0a-0024c301.pphosted.com (mx0a-0024c301.pphosted.com [148.163.149.154]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 84322345CC1 for ; Fri, 14 Nov 2025 15:08:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=148.163.149.154 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763132928; cv=fail; b=exTWY9hZzq8r4r2vjAVYXzvoTCccpfBC6A9cAJRpJY18FGZ/D1Vmp6tEUUoKNtOA0NPeK1Dz5lEVIIJ/D5sur9YH3iXTqtn30soR46/uEsWFeQ8NgQJSgOZdbREjsfsCtGApPCWd7/JjLJm8VA0zRD1muxhawZX3dsLeWqXO71A= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763132928; c=relaxed/simple; bh=foo6+5E/xNVejtYoSqsQ9TiI38JXtP5OkU2i2wiSepQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=ZAZDT5FVQKX5AvNtudr7uPKzZI9RLOPNs9JVYBcJhYVI/0JS/El9Ss6rYRkJtrOfJwcAO4vn4ZPiJRj67oarSfFy3m/VamB7uYFLS6xmP6qnmqgbDOcJB/B3lGv389GLgrWIyc4xStV18iieUy/USrbvGkWF0sK+c6Fmrc0pX40= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=silabs.com; spf=pass smtp.mailfrom=silabs.com; dkim=pass (2048-bit key) header.d=silabs.com header.i=@silabs.com header.b=xa7Vpv7s; dkim=pass (1024-bit key) header.d=silabs.com header.i=@silabs.com header.b=P8O1QnfA; arc=fail smtp.client-ip=148.163.149.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=silabs.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=silabs.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=silabs.com header.i=@silabs.com header.b="xa7Vpv7s"; dkim=pass (1024-bit key) header.d=silabs.com header.i=@silabs.com header.b="P8O1QnfA" Received: from pps.filterd (m0101743.ppops.net [127.0.0.1]) by mx0a-0024c301.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5AE9uh202132820; Fri, 14 Nov 2025 09:08:41 -0600 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silabs.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pps12202023; bh=MB1ttN5f+dj7E/jdTlWHnwQYr8D7XnVUyOnqfR7rKZ8=; b=xa7Vpv7sRIMv USgUpaxPJ9Hc1mrdFjBCEHr2kRmgZ7Uf22clDvbf1Qinsw5K/AbhzkWaJweShOBl AV3v6nL0BtsK9owQWbdtfpqIrp9oi3DWgnpsyvPM3FU+YWqeJJq9dEgWgK61hPA0 ZGv2J3pYVG0sNJQC7UnPl13MRVyi8Rl9kyz2lTA5lBUtl53y29GY1FhrAf1ujFxk UnX2W1t58M0HQdv/Uf4fkfSPhV6JMU1ti7jvCbiGN55c2pgKqTXUXRl5LiDNOMM9 79j2re8RbHYslwmjx6+J1DDUu+Il0lU+aLhiunpu+e71iyVGXPIHkncsAnKgP+8+ x+benSbM0A== Received: from cy3pr05cu001.outbound.protection.outlook.com (mail-westcentralusazon11023074.outbound.protection.outlook.com [40.93.201.74]) by mx0a-0024c301.pphosted.com (PPS) with ESMTPS id 4ae285rk2h-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 14 Nov 2025 09:08:40 -0600 (CST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=eQfxe1JcgQoyZJv2+4yWzPeOudDFLHccNFQwtLnmHiIYcr1aqkhPpkkqAfyEGI15uaRHGahLKIfltnePJBl1EomK/sed/BfI9KsqEaeyfuUcdJ0YhsKoyEMn8WlY4lGyjY0mimElel+IqLgVHLAiQCLIYDj4Ou/8z5KPPm/5ydj9RwUzVmZzTq/2310baRMA2ksojcskvSu1tXnUadZJy8HFRJAfJThUbH+ncgVFDiH3hKA2YuYYkW7SJ+BDtdRSQKLx9DOegkOn0U2Cy3asUCGlq4m5AM/6ocl+TqXyv0o2gM7i0xB8KJu4DXtzvqv0LPJgM3y/nr1cBaB58QBqkA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=MB1ttN5f+dj7E/jdTlWHnwQYr8D7XnVUyOnqfR7rKZ8=; b=hCHdCimvnNDg5XzYZ7Crn7f3jK8N2z4/zuMUBDNzy+moBMqagu1H74S5H9oBTEzKpSt9oOmXz3DKkYPXo14fEiwjzFTASar4cDhJ1bH6nCLSGANW7OaIOeWD7cALDmfCWP+rCnFvnK0BDMtcVhXWusDqKo6mMZewcdR+5jsqCFPBm4Yd9Dij+Bm46+eyA7NRNqd8DGWPDoVvc9LvoCe/V7+mZ9XM9I2iC+K+RpcWwnHCNhsbsk0/hzNqz/HkWijVFNNtCjCxon3sCpQsCRqWMUBKmVdtRQtPdbny4pNr5xtH3exDPjY3s8auo9VVRdXTDFIVtJ0NwoTXzh7DduHxDQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=silabs.com; dmarc=pass action=none header.from=silabs.com; dkim=pass header.d=silabs.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silabs.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=MB1ttN5f+dj7E/jdTlWHnwQYr8D7XnVUyOnqfR7rKZ8=; b=P8O1QnfABhiOqAqKd30v9YsjL72OTdZ95hJ80PH1huwSFcFW3GXu1JvnsSN6fh4FgSRE3uX8cxhmNZRkwp8NvzF3nJ6B5CXMgK57tvZSWvEDqSeI4p2rMosbsRCvGb6P4IUjUTLekFTjpJDZhD/tviAABeVAz0Udlxyt/QlpZHo= Received: from DS0PR11MB8205.namprd11.prod.outlook.com (2603:10b6:8:162::17) by CH3PR11MB8774.namprd11.prod.outlook.com (2603:10b6:610:1cd::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9320.17; Fri, 14 Nov 2025 15:08:38 +0000 Received: from DS0PR11MB8205.namprd11.prod.outlook.com ([fe80::c508:9b04:3351:524a]) by DS0PR11MB8205.namprd11.prod.outlook.com ([fe80::c508:9b04:3351:524a%5]) with mapi id 15.20.9320.018; Fri, 14 Nov 2025 15:08:36 +0000 From: =?UTF-8?q?Damien=20Ri=C3=A9gel?= To: greybus-dev@lists.linaro.org, Johan Hovold , Alex Elder , Greg Kroah-Hartman , linux-kernel@vger.kernel.org Cc: Silicon Labs Kernel Team , =?UTF-8?q?Damien=20Ri=C3=A9gel?= Subject: [RFC PATCH v2 10/12] greybus: cpc: use holding queue instead of sending out immediately Date: Fri, 14 Nov 2025 10:07:36 -0500 Message-ID: <20251114150738.32426-11-damien.riegel@silabs.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251114150738.32426-1-damien.riegel@silabs.com> References: <20251114150738.32426-1-damien.riegel@silabs.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MA5P287CA0046.INDP287.PROD.OUTLOOK.COM (2603:1096:a01:175::12) To DS0PR11MB8205.namprd11.prod.outlook.com (2603:10b6:8:162::17) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS0PR11MB8205:EE_|CH3PR11MB8774:EE_ X-MS-Office365-Filtering-Correlation-Id: d7cb0b8d-8746-4b8a-e332-08de238faf51 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|52116014|366016|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?Z2Y2KzVNaDZwa2RXRlMwalErYmg5eit2Q3g3Qzk2M2lDcWxuR0hKZmpFQmFV?= =?utf-8?B?RFBWMDJvcDlhdDQxQXYzS3VSWW9xd1FwdWFrRVdIQ01lem5Sd3pZY3JGUzVT?= =?utf-8?B?T1lrL1pZdmF0NDJlUFA5SHM1a3RPNjNLbEpYVTBoR3ZRMjRpVEg1cC8ycS85?= =?utf-8?B?c2hXK0d4d0wxSnEzR0tSVFVBdnNjUkFVQ2NXVWZNRllZODVVY3ltdm5oQTVV?= =?utf-8?B?cW1FSlliL0ZPSE00N0NkUkhWY3JWVCtydldKNExxalkvMld6VWU4S3RRNEJZ?= =?utf-8?B?VUE0MXd0bnVYSlVTYUdIUlgwR3lldXZodzJteHhOaVBPWWVQbThzYjFtbUk2?= =?utf-8?B?NUs4ZWJNQjdwUkVjRjNvemd2NForQUJLVm5tTWh6WlRFUlRhYTZZOU82MmFx?= =?utf-8?B?czh5RStHVU5PK1BDZU5zZ1NFWDhYcTR2MDFtNFFnU3lIcGJiM3NJODFIVk85?= =?utf-8?B?OThxbnFuUE54Z0I2MmlFYndGRE43TFVjWHNiUFV1VXE4anVmTXp5WVBVblVo?= =?utf-8?B?R0RUTWVmcEFBTjFSSjZia2k4VmZmWUVFRENPNmFvTnUrRmZDRHRMQ1Bqc01s?= =?utf-8?B?RUhuV3VVeGRhb01raTNyclRkTHJPbnRUaUthNVFmZTlHcW1ZUmVlVFI5LzNS?= =?utf-8?B?TnR2RGZiK21ZZ3RpaXRmS1dRc0N3MHZOWXZ5OFZNdkQ2WXEySU1ZbjAzYVZD?= =?utf-8?B?YzJ2SWZoWjlMZ0h0ZzJ2eWJhUWxRRlZvMGxoMTBPTU9XaTUvYUVJS0kxSkdo?= =?utf-8?B?VzllcmJZNVRsT2REUkpqMW81OEQ4YThJVDRoVU9iaVQ3ZnppZUF4UXlpNTA3?= =?utf-8?B?NFhsU0xValJjTnFRWTdpWXlsazNveFd4di9HN2Q1MVRsN2JrQTkxNCtMcllV?= =?utf-8?B?UnRLZkdvY0t6OFVpa3pycmJucnBBdzBWWHovT3hRMkRlSGc1UmZ0eU1pb3Bl?= =?utf-8?B?MENvRUpEQ3VPNmZMNlg1QTFlNkF4NjVMRHhNTGVhSVBHNE1FaUplN3NkQ1gy?= =?utf-8?B?Rk5vZmtPTitvNDBlZjJhZ1BIdEdxbGdDbkdyQ2V4ME9WUDlMSUc0RVk5ODc2?= =?utf-8?B?VlZySzUxWEpDTEg1NjRXRGpnUFYwNTdzZ1JlY0RWWWlWRzFESWhDeEk0d0Ex?= =?utf-8?B?L0pOMVlDbmRWYkZ2VWlQeVNSdDFualVWdlpSL1BmTTZaZ3QrZi9wTlRHUHdm?= =?utf-8?B?c1JHL2FBMi9HVERNODUvOExOYzYzYVMrY2p3Yk9lUndaS0dId0ZsdDdsNDQ3?= =?utf-8?B?OWJDNUUwZ0RkQzFRbk03ODFEU1Z1VC8rZElzcDlPRWFSRGRnT25WV1dmYzl5?= =?utf-8?B?T2xUNHFBMnMydHlnY2pBdVNEWDJ3dEFHWjZBY3hvVytWWVBaMzJWUlplVVVZ?= =?utf-8?B?bDl5TnJJR2Fja28rTnJ4WTFYaUZhSytOWWtyaEVHOHYrSzBlMkNoY05udWg4?= =?utf-8?B?NE1RWENjUmE2RjJJZW1VeTYza2RNdldhc3JoZWR1dnJHSm9XcHBGVkhqUUpM?= =?utf-8?B?VTZST3VYTm52OWpNRDErMWNZU2loRmZpd1VMczY4VVo0QmpOTHNFL0dVaENG?= =?utf-8?B?M2J0Q2tVT2FIYWFHVWZsbDQxWXZTWGZZQURSWmliQnRUVlhLcW5ycUF5Ty8r?= =?utf-8?B?aW1KOHNqWXh2V1ZjaVJMM2xRMEpLaXFyVUJFODF2Q2ZaMTY0NVVtTk1ZeHdm?= =?utf-8?B?Z0FaalZGTWNqOFhmT1Zvcm9MKzBSM2Vib1piQTgzVDF4MkwzME5tNFN4S1l1?= =?utf-8?B?SWxQcWFTOHVjS2srd3puVVBncFBCU0NUWjZUSmZFQ2trNmVDaDFXYU14MWhn?= =?utf-8?B?QmxObEppTDk4aU5sWDZlb3ArcTdwK0ZublFzRlA0cGVSM2lINEk3d2dRL2xL?= =?utf-8?B?dmVpU1ZkbHZEdEc2U2V0TFVsTXEvRjJyVzAwNi9vYUY5czJEVmVWM2UvK3dt?= =?utf-8?B?by9kUHR5Yjd6Q2RaNm9tZ2hyNWZxNXl3cTFuYnpibkNLT1JzeUI4V3ZWbExT?= =?utf-8?B?bm5BTmxIK2xUZjBkNVBESnpjVHBHR3F0c09qOFlUN20vOFpqcDlVSHNVMHR0?= =?utf-8?Q?CHdMXz?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS0PR11MB8205.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(52116014)(366016)(1800799024)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?eWgyK05EVVlzRkk1Rnk3OXlrMXlYNEIxbmd2N2Rtd2V1Y2JXNlJhbnR4a0hk?= =?utf-8?B?ZytBS3dOdTVaa0FQWHVCb1NieHBlUmN6Mm9Sc1NSTFljSDRtWmgrK05aMTE3?= =?utf-8?B?ZEdOZzA2T0JsQmd6d0p5ZUdQQktZK0xPdThlM0Jad0xYSVVxTWoyR0FlZmFR?= =?utf-8?B?eDA3NU01K0RoazFYc0daUFBnTkdKU1JqdStYeS96NmtuUTR6eXVlVjdUTlZU?= =?utf-8?B?L2c3UEc1YW9oR1RJampPeVVqZmk5ekFRUlQ3dEw3WXM2bmNvajVPK2tyYzQr?= =?utf-8?B?RXdYQzgwL1NBcWVubGlPNGFySGxDMlhKTXh4TUdsQkJMNTdTNUFJQ1ZRalVG?= =?utf-8?B?SkVjYjR2c1Q3U2NoemZ6WmxKNW0xZWVmMUpIT1FBSUg1TGlpM3B0bSttR3lR?= =?utf-8?B?azhMMDFEZHhCTGFNK0FqT1dGbnl6VUxCb3AxWEd2TWJud1dTMEk0YVBzYVpI?= =?utf-8?B?OEYvdDFGSUdURFV1UXRTU3BQdnpjU25SQnNCb2YwSnh5KzJwV1ZJd2ZtcC84?= =?utf-8?B?UGo4d0ZPV3dGV3Zqbm1SZUNhdzEyNDJmS0d2R1FpZGYwN3ZReld6T096ZVdm?= =?utf-8?B?MFROWnZYOExPeEtmR040Qjg5MGlqQmZ4TjkzclpYb29Yb1lJYTMrZllIVlhp?= =?utf-8?B?QWphWkZXVENIR3MzR1pxb0x6cTc4SEdQUVN2WDZTMzc3MERhNWc0bERud0hp?= =?utf-8?B?YUwva3oxWDNvTUg5SEg1VU01VnB0RzhObG1taGgwNHh5SGc5R0hmRDVNMEJM?= =?utf-8?B?Q2xjT3d6SEVwYjVING1DdGtuZDRhQ0VnNzZEdDlqQmZBejlLdEFNZE92Y3hj?= =?utf-8?B?ZUFxMFE4S2RvUEtiQTN5ZjhmbjZYWWU0Z2w0UWxCa29jS1VRN3NlTWxmTm9k?= =?utf-8?B?OXBtQVBMSHE3dHpVTjFsQzZBS1poZ1NsdjlhMGY3cUh2L2IwbU5ZbU9kZUVt?= =?utf-8?B?Zi9NQWtZUE5Sam93Q3hBbDhaMHY0c1BWU0QvTnAySUR2bmI4cks1SWJKQXFJ?= =?utf-8?B?dys3MWJzUm9IdGNyWXljMTZFeXM5NDA5WlBkTVk2TUxDeGV0SkhXa2F4U01Q?= =?utf-8?B?WlZPQ2tJaktRS2lCT1Nsd3pOUFlXNXVaa1J4WkhuUHc4QU4zaU14RXVVTmNV?= =?utf-8?B?SjhqT3dSbWJoZTR1enNPa0pSdXlDT2ZYZ1BKMHl0Z09kRW9DcC9nVmlFNDl5?= =?utf-8?B?Ry8rdWJXOXRKS0VyOVlDbmFZeUhvRmk1ME15NFloM21qQW1BeDhIbFBUdUlw?= =?utf-8?B?Qy9YNUd1RjVOZGJNY2NyUFlIOEpQemFjbzY5MFFtMkdQSUpFbzc1VTJsQXBG?= =?utf-8?B?SXpiZ1lGSFFEVU1pL2U3c1RzUktPMXRCUmIwSUVjN0lHN1pDSmRNdUNnUFdx?= =?utf-8?B?UUNDd1VRVm8yU1doaklEcDZXbXhMcWUwNEQxQXB3L2ttVnZIUHpyYm1LUlJ4?= =?utf-8?B?WkR0TEc4TkdNdnlhS3FEcHJkMUpqWWdHNkJhM3lWOFp1WnFQY1ZCbnhnQjR5?= =?utf-8?B?ZjRKUnJmazdtT2pHMjJkaENXUkprL3IvR3ZjRi9LcXBmY2FML3VxYkh3cS9L?= =?utf-8?B?YVgrV1lKeUp6ajVIenpidnY4YVE4cjlJTDVnZ3ZxMEhJUDFYSjJWbHMvcitj?= =?utf-8?B?RzJ3ZGpYNllMUkdHcER5aW85RWNKZjc4aGM0WWNQSEI2NVhKVlppYUszWkti?= =?utf-8?B?WlIySU92TWtlOGhweGtGTUxtSkFaK29TMVBlRnlpcWtSUkNRekQza21CUVZU?= =?utf-8?B?bmtNNDB5UUpUbklYWXlteUpWQXVKbmdycDFZVUxScU5qMFBJMmlNMi9PTG5I?= =?utf-8?B?NElIUHpvVFgzTTNlLzR2WmtUNHZFS2tjM2l2d3BzR3R1alA0QkVHeDRGMU1B?= =?utf-8?B?djlpOUsycHZtZFQ3WjlzQVpwVGE2dGRkeWc5TXZHSmlnZ284T1NETzZSMXNz?= =?utf-8?B?V2FrZWNGUTdjVStrRVZrRmRaS244RUtUVkFleW5xeW45N0FHZVZNcnFmcHRW?= =?utf-8?B?R1FSNFFISks4ZjlmSHBvVkVQb2tVemFoV0tJVGJTQzBPbEJTZUpBa3hzRFBx?= =?utf-8?B?WFdOUjM3NWx0Q1ZWRGFPVWJ5TFdLMHI2K2M5RVlKQjZXMncyeDlwV2Mvd3pu?= =?utf-8?Q?2UqJlvc4q38NIgMp/iYM8WEV1?= X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: d7cb0b8d-8746-4b8a-e332-08de238faf51 X-MS-Exchange-CrossTenant-AuthSource: DS0PR11MB8205.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Nov 2025 15:08:36.5255 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 54dbd822-5231-4b20-944d-6f4abcd541fb X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: SS4mX3wjap8cjCwi/2sVDHujCc3BcQ8060GBnMgm5sVYoEalLWoeX6IJzhP6opkEOGKwwvIgjY4huJh9ooQRjQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR11MB8774 X-Proofpoint-ORIG-GUID: -pihjDTaic5_7na5t6Kd4f5ftTCf9LWI X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTE0MDEyMSBTYWx0ZWRfX1v1yQVO9Sng4 6hTzwcdg2wBhCZcXDlyWq5lvS6j+maIxiG9YCvgjOSeOAIEDY5gvDLeQ8Y0NLqO44ZRYelUHXEF 6qBGlKHjoejYAb1JtYksFOdvyHvZMP6a+fOQ6PX32U+lsQNkwwXovPAJrKTblrYAWD8EzzZMGpr 2MSWzlJbDgT6dgZUvaOdILBX28Xv/fV7CNgSoOc/pk6aUeXzjA62VBhgs7yYNUTBN1imslO0+k4 fGpzoSZIYMai7TBJgxDWH3n9thEkqcp9g1C5IFDsJPho9iqybOUoS+Lh+Qk33YPc/KLDl23BFQA HYzN+A9Wg0WgotdmWhVFmQ2Ji2/nU8VPAYIAreiuOVTkKhOnntJ0ZJnap3QnMqg/nQHnlBCi4Hg yt3L4dRZe+zJTS7EeT3Rzgyo+DCvOw== X-Proofpoint-GUID: -pihjDTaic5_7na5t6Kd4f5ftTCf9LWI X-Authority-Analysis: v=2.4 cv=LfAxKzfi c=1 sm=1 tr=0 ts=691745f8 cx=c_pps a=HjV/FuyemSwh3JS6b2cR2Q==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=6UeiqGixMTsA:10 a=M51BFTxLslgA:10 a=i1IsUcr2s-wA:10 a=VkNPw1HP01LnGYTKEx00:22 a=2AEO0YjSAAAA:8 a=4ZPe5lWXlvbldCu1ft8A:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=cPQSjfK2_nFv0Q5t_7PE:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-11-14_04,2025-11-13_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 bulkscore=0 malwarescore=0 impostorscore=0 lowpriorityscore=0 spamscore=0 clxscore=1011 phishscore=0 priorityscore=1501 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2511140121 As the first step to handle remote's RX window, store the skb in a sk_buff_head list, instead of sending a message immediately when pushed by Greybus. skbs are still sent out straight away, but now there is a place to store away if the remote's RX window is too small. Signed-off-by: Damien Ri=C3=A9gel --- drivers/greybus/cpc/cpc.h | 9 ++++++--- drivers/greybus/cpc/cport.c | 21 ++++++++++++--------- drivers/greybus/cpc/host.c | 4 +++- drivers/greybus/cpc/protocol.c | 25 ++++++++++++++++++++++++- 4 files changed, 45 insertions(+), 14 deletions(-) diff --git a/drivers/greybus/cpc/cpc.h b/drivers/greybus/cpc/cpc.h index bec2580e358..d5ad3b0846f 100644 --- a/drivers/greybus/cpc/cpc.h +++ b/drivers/greybus/cpc/cpc.h @@ -9,15 +9,16 @@ #include #include #include +#include #include =20 -struct sk_buff; =20 /** * struct cpc_cport - CPC cport * @id: cport ID * @cpc_hd: pointer to the CPC host device this cport belongs to * @lock: mutex to synchronize accesses to tcb and other attributes + * @holding_queue: list of frames queued to be sent * @tcb: Transmission Control Block */ struct cpc_cport { @@ -26,6 +27,8 @@ struct cpc_cport { struct cpc_host_device *cpc_hd; struct mutex lock; /* Synchronize access to state variables */ =20 + struct sk_buff_head holding_queue; + /* * @ack: current acknowledge number * @seq: current sequence number @@ -42,7 +45,7 @@ void cpc_cport_release(struct cpc_cport *cport); void cpc_cport_pack(struct gb_operation_msg_hdr *gb_hdr, u16 cport_id); u16 cpc_cport_unpack(struct gb_operation_msg_hdr *gb_hdr); =20 -int cpc_cport_transmit(struct cpc_cport *cport, struct sk_buff *skb); +void cpc_cport_transmit(struct cpc_cport *cport, struct sk_buff *skb); =20 struct cpc_skb_cb { struct cpc_cport *cport; @@ -58,7 +61,7 @@ struct cpc_skb_cb { =20 #define CPC_SKB_CB(__skb) ((struct cpc_skb_cb *)&((__skb)->cb[0])) =20 -void cpc_protocol_prepare_header(struct sk_buff *skb, u8 ack); void cpc_protocol_on_data(struct cpc_cport *cport, struct sk_buff *skb); +void __cpc_protocol_write_head(struct cpc_cport *cport); =20 #endif diff --git a/drivers/greybus/cpc/cport.c b/drivers/greybus/cpc/cport.c index 35a148abbed..f850da7acfb 100644 --- a/drivers/greybus/cpc/cport.c +++ b/drivers/greybus/cpc/cport.c @@ -7,7 +7,6 @@ #include =20 #include "cpc.h" -#include "host.h" =20 /** * cpc_cport_tcb_reset() - Reset cport's TCB to initial values. @@ -38,15 +37,23 @@ struct cpc_cport *cpc_cport_alloc(u16 cport_id, gfp_t g= fp_mask) cpc_cport_tcb_reset(cport); =20 mutex_init(&cport->lock); + skb_queue_head_init(&cport->holding_queue); =20 return cport; } =20 void cpc_cport_release(struct cpc_cport *cport) { + skb_queue_purge(&cport->holding_queue); kfree(cport); } =20 +static void cpc_cport_queue_skb(struct cpc_cport *cport, struct sk_buff *s= kb) +{ + __skb_header_release(skb); + __skb_queue_tail(&cport->holding_queue, skb); +} + /** * cpc_cport_pack() - Pack CPort ID into Greybus Operation Message header. * @gb_hdr: Greybus operation message header. @@ -73,11 +80,9 @@ u16 cpc_cport_unpack(struct gb_operation_msg_hdr *gb_hdr) * @cport: cport. * @skb: skb to be transmitted. */ -int cpc_cport_transmit(struct cpc_cport *cport, struct sk_buff *skb) +void cpc_cport_transmit(struct cpc_cport *cport, struct sk_buff *skb) { - struct cpc_host_device *cpc_hd =3D cport->cpc_hd; struct gb_operation_msg_hdr *gb_hdr; - u8 ack; =20 /* Inject cport ID in Greybus header */ gb_hdr =3D (struct gb_operation_msg_hdr *)skb->data; @@ -89,11 +94,9 @@ int cpc_cport_transmit(struct cpc_cport *cport, struct s= k_buff *skb) CPC_SKB_CB(skb)->cpc_flags =3D CPC_SKB_FLAG_REQ_ACK; =20 cport->tcb.seq++; - ack =3D cport->tcb.ack; + + cpc_cport_queue_skb(cport, skb); + __cpc_protocol_write_head(cport); =20 mutex_unlock(&cport->lock); - - cpc_protocol_prepare_header(skb, ack); - - return cpc_hd_send_skb(cpc_hd, skb); } diff --git a/drivers/greybus/cpc/host.c b/drivers/greybus/cpc/host.c index 9173d5ab5a1..27f02120266 100644 --- a/drivers/greybus/cpc/host.c +++ b/drivers/greybus/cpc/host.c @@ -63,7 +63,9 @@ static int cpc_hd_message_send(struct cpc_host_device *cp= c_hd, u16 cport_id, CPC_SKB_CB(skb)->cport =3D cport; CPC_SKB_CB(skb)->gb_message =3D message; =20 - return cpc_cport_transmit(cport, skb); + cpc_cport_transmit(cport, skb); + + return 0; } =20 static int cpc_hd_cport_allocate(struct cpc_host_device *cpc_hd, int cport= _id, unsigned long flags) diff --git a/drivers/greybus/cpc/protocol.c b/drivers/greybus/cpc/protocol.c index 63b4127fcea..272eafd79b0 100644 --- a/drivers/greybus/cpc/protocol.c +++ b/drivers/greybus/cpc/protocol.c @@ -15,7 +15,7 @@ static bool cpc_skb_is_sequenced(struct sk_buff *skb) return CPC_SKB_CB(skb)->cpc_flags & CPC_SKB_FLAG_REQ_ACK; } =20 -void cpc_protocol_prepare_header(struct sk_buff *skb, u8 ack) +static void cpc_protocol_prepare_header(struct sk_buff *skb, u8 ack) { struct cpc_header *hdr; =20 @@ -86,3 +86,26 @@ void cpc_protocol_on_data(struct cpc_cport *cport, struc= t sk_buff *skb) greybus_data_rcvd(cport->cpc_hd->gb_hd, cport->id, skb->data, skb->len); } } + +static void __cpc_protocol_write_skb(struct cpc_cport *cport, struct sk_bu= ff *skb, u8 ack) +{ + cpc_protocol_prepare_header(skb, ack); + + cpc_hd_send_skb(cport->cpc_hd, skb); +} + +/* Write skbs at the head of holding queue */ +void __cpc_protocol_write_head(struct cpc_cport *cport) +{ + struct sk_buff *skb; + u8 ack; + + ack =3D cport->tcb.ack; + + /* For each SKB in the holding queue, clone it and pass it to lower layer= */ + while ((skb =3D skb_peek(&cport->holding_queue))) { + skb_unlink(skb, &cport->holding_queue); + + __cpc_protocol_write_skb(cport, skb, ack); + } +} --=20 2.49.0 From nobody Sun Dec 14 06:37:03 2025 Received: from mx0a-0024c301.pphosted.com (mx0a-0024c301.pphosted.com [148.163.149.154]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4A996346761 for ; Fri, 14 Nov 2025 15:08:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=148.163.149.154 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763132930; cv=fail; b=q8z8iH1tTcdrPx6vri2OjuKbcer7ikjUIuVJoC6xrCw/wd2JYihyEqO4U/n+uxKecPYeeab0z3gAwJ5EgRUhf/lw9dZ5knDYNEuuyrxgBajBzM+/zts8e7iwSJfl6HZLIPByxJOQ1wg0J6h+YhbKNLcujwki4Bcby1uLvFp6lqg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763132930; c=relaxed/simple; bh=iC+uxBQHbLQ+m2z9VraFNRSYI/qV3RWs20bwcHoB2rc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=pWRB4wDBMepmuOb82McAmm5wWPtNyi9yFlHED+ta7I6a7CS603kovj6JpO8aFYsGGvGB0Yob2J09brDJLIPQzhqMsgvAMYStnso868CyGfLRP5prK8WKfGGzi61cdaYku6lixyYM+gh7i6jat6JTMWeJnVZ4yh22+qFV3pVOWPE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=silabs.com; spf=pass smtp.mailfrom=silabs.com; dkim=pass (2048-bit key) header.d=silabs.com header.i=@silabs.com header.b=m3+TSqiH; dkim=pass (1024-bit key) header.d=silabs.com header.i=@silabs.com header.b=AI9aaXwX; arc=fail smtp.client-ip=148.163.149.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=silabs.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=silabs.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=silabs.com header.i=@silabs.com header.b="m3+TSqiH"; dkim=pass (1024-bit key) header.d=silabs.com header.i=@silabs.com header.b="AI9aaXwX" Received: from pps.filterd (m0101743.ppops.net [127.0.0.1]) by mx0a-0024c301.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5AE9ueVG2132744; Fri, 14 Nov 2025 09:08:42 -0600 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silabs.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pps12202023; bh=r83zSysVVIma+J6xjjMea2UC8puMSeW8TAkf+SAbR7g=; b=m3+TSqiHOy2m eMF/5BB21YA+unArW+StN/t5WkGHqCKR9897unHu4TkLC/9cRwlSiGdIQfQxsoPg YBIMG8mTZTw/XDLY29ntjeOapypyuypHYh562d3n35B11EODBQr4evf1BKVIIpYh Tg1f3irZee4R5eM/wwNm3fcQK2BLrh5+8ulInndtoFO2KLg3lKt5MHMzf6Y2xO9L EDtWoAoY9evqH1Mtx31/PIpNCvfBdVVcWXO1WHFmJvRZH94XOHRPd+17hiv4SPcv 59O3YVxBvPAFDO6zahBYH5vMz5Bm2K+E06q8Cxzc5aeYEqChVxLkdCeGbaWqs8KT HniQonqh7A== Received: from cy3pr05cu001.outbound.protection.outlook.com (mail-westcentralusazon11023086.outbound.protection.outlook.com [40.93.201.86]) by mx0a-0024c301.pphosted.com (PPS) with ESMTPS id 4ae285rk2n-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 14 Nov 2025 09:08:41 -0600 (CST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=tA6XyDUw3COsGa4qkAszxgu5xVXO1zldqhJeqEBcW/2kPRZsiNqg92oV9h4uauKpZNAW/rN4qDQePsaUJdTAuheXJF92GbhpSFE654ekn2f6aZGF4TY3nETVwpyLrQ2uzEeQcSOgLIoS+qrYdUOilgR5DKno+761ptwT0P/CXvUUCOEnQWj4mLtvNyKqUyyB0bBMhqFGlE+uJ2cRZeiJif4iPC3wC/tjBzVGYkamOqRSy6PvwpUBm70Dxr6Mgo2WQIK1Cm8Wm6apdphc0o3G5KcdJy7CIAgYnWhe+P26LMcxS/nzAsA+CUxw181avenfvVO7QFdSAlC3S3lC3A9RtA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=r83zSysVVIma+J6xjjMea2UC8puMSeW8TAkf+SAbR7g=; b=vdW5q6kNVkiU/V9z0guDD8CN3iBIsJKXoGx/XHqFR9x0VwEdRZeuS1KNCs+SqBxcU0KafsMBpK6rMOmBRVnnMi7VhRmP8EzZtdU1KRhi2bZ15PrGM9/Lx+W71TT5vo2txD9BjDOZfVmgsV9YVvsNOrW74a7Cz5fth8lgTqP6XbOuZ/RPkhvm9juO+Y7B+OvTDCGpY9CH7pAisS6WQA1QHE7gJ6Q5XARgmi9B3evsWuQjHcevVBAIc83ej6oUtJ6ISqCpjfuecM7B/O9VRjYO9qDPLPlKsn8jKO/Pib85/gz7o1cA1SAKw1icurWVrmXdR5ETpVIq+5cSskwNy9trJg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=silabs.com; dmarc=pass action=none header.from=silabs.com; dkim=pass header.d=silabs.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silabs.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=r83zSysVVIma+J6xjjMea2UC8puMSeW8TAkf+SAbR7g=; b=AI9aaXwX4TUEkeVd162ZaNrsFVquak7KT6a4wbEhyJLvciS7oXp/IFIEHB6D0HNK8QIOuIh/w3hKh95GfEhDHzLmqg5Nb9t4e8l1fcUlDqOi5kWIdvVCnMuJIrln8vH/QDAL3e0rgFUua4XBBHUPXSnsj3Jx0LA135d5oARhOGM= Received: from DS0PR11MB8205.namprd11.prod.outlook.com (2603:10b6:8:162::17) by CH3PR11MB8774.namprd11.prod.outlook.com (2603:10b6:610:1cd::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9320.17; Fri, 14 Nov 2025 15:08:39 +0000 Received: from DS0PR11MB8205.namprd11.prod.outlook.com ([fe80::c508:9b04:3351:524a]) by DS0PR11MB8205.namprd11.prod.outlook.com ([fe80::c508:9b04:3351:524a%5]) with mapi id 15.20.9320.018; Fri, 14 Nov 2025 15:08:39 +0000 From: =?UTF-8?q?Damien=20Ri=C3=A9gel?= To: greybus-dev@lists.linaro.org, Johan Hovold , Alex Elder , Greg Kroah-Hartman , linux-kernel@vger.kernel.org Cc: Silicon Labs Kernel Team , =?UTF-8?q?Damien=20Ri=C3=A9gel?= Subject: [RFC PATCH v2 11/12] greybus: cpc: honour remote's RX window Date: Fri, 14 Nov 2025 10:07:37 -0500 Message-ID: <20251114150738.32426-12-damien.riegel@silabs.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251114150738.32426-1-damien.riegel@silabs.com> References: <20251114150738.32426-1-damien.riegel@silabs.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MA5P287CA0046.INDP287.PROD.OUTLOOK.COM (2603:1096:a01:175::12) To DS0PR11MB8205.namprd11.prod.outlook.com (2603:10b6:8:162::17) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS0PR11MB8205:EE_|CH3PR11MB8774:EE_ X-MS-Office365-Filtering-Correlation-Id: 6cdd36ec-e37a-423b-4367-08de238fb140 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|52116014|366016|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?RjdWSm5zQk5JYlprUHIyM1VzNFdURWNtVWVvUmZxZHYvWmgva0x1cFBOMTdE?= =?utf-8?B?SXlOZVk2c3ZVQ2hBRGVldHkydlY0YWFVK0lGU0xqYlNOZ1RWRjBBeW93cWlP?= =?utf-8?B?MW1vdzZOR0dqa3lvUGtVRzZMeHA5OEErM3N4Y2FySjFvTFZTSzFYT0dsb0xS?= =?utf-8?B?SXNqYUhhTDlQMTBONkJIYXBQMlM3UWExeEhhZjh3NjJCMzJNS1NFNVdnZ1dw?= =?utf-8?B?a2RwMU5NbGJiRVU5RVBjcGU4UW9waUxyLzMycHI5d0VacThkSklJRXZnZXk1?= =?utf-8?B?aDVXNXpPeCt6NUYwbkY2dFphTHFBVFo4anhtb2dhbmI0Q2k1SUo5QU05TXNL?= =?utf-8?B?NUkrWkVwNVJSYU14YXBnNlM3b0h4QUxRZnhscHVraXp5bExnSEV5d0E0cDJF?= =?utf-8?B?N1dKajNXcnNlNG4zdW5zSlU0OGJHeitpM1loTm92cEVLeU9HNDZLaHovMVN2?= =?utf-8?B?Z0lGRFV6ckRlRDdkR0h6eXUwWjRoQ0xleVNpOEo0cTJCcWpqSC9KV1Bmd2sw?= =?utf-8?B?SHJ2WCt0VExLK0RVYzEwQ1lmZFZDbndjcVpDUHpoMzdMSmoxbmxlRTY1cGpn?= =?utf-8?B?M1ZaKzQxY1FXTSt2bmQyc1FQeVdaSWg2cE9BNmdkcFBxOVFBZDhzRmxQcVVB?= =?utf-8?B?RTREOFVnd0pTS3Q5aGNIRVlGaUQrMVNxclJqUWxyMEJXbkJNWENTN24vTUx5?= =?utf-8?B?Y0pkTUNZc1hSL1NEKzVaamJpT2NoQ3p0TXFiRytkRkRLS0VvdFo1emlmeHZl?= =?utf-8?B?NUR4Z1lVOERVTEQ3Y0RoSzJ4anJYS0ltSDVuVS9sd1VHQmN4VGtGQnZyWW91?= =?utf-8?B?NGNVZXlydTBIUTdMaDFEdHQ3QTJGZ3RjZHZMdjJ4SHgrSmMwdkx1WXo4UXlN?= =?utf-8?B?WWMzTDNtb1l5S29kMXJLOFM5RWV0ZmNPOHZIN1hBVS9LSkpYOFNOZm5hckYr?= =?utf-8?B?TzY5R1k2OFZQT1EwaStaMkdQZHBpRkdaU0tzaUxuUXB5ZWl0MlBVelRrSE82?= =?utf-8?B?ZnlxS255a3U5TDlQYm5zbVkreWl5NGJxWGQwK051aVAzcTVnZUNSYWdFYVZY?= =?utf-8?B?RVA1aWUvRXBBSk9lbUd2ck1NMXkrZHRVRGw1cWpRay9YQjNkTWhmeGRJOERv?= =?utf-8?B?UkRSM1JEemRsMmgweGhEY000WDVuN0drY2Q3Znh1QU85TE95VWVNT2NRVGtz?= =?utf-8?B?NDhsWk1rYU5saDNvZ04rY2UzTW12dnpMa0RMcFlBK2VpY3lBa2dnOEtueXFw?= =?utf-8?B?RXAvaTNlRFpFczlaRzNJQlAwTWtFNW9RblFrSlA1Zm9KeE1kTWc0bU5QTHov?= =?utf-8?B?QjB1bUxyREVnVzZQUkVxaEJDU01LWFlBaXFManVPcVdnbVZSMytpSTR2MTlI?= =?utf-8?B?QlFyTjFlelNQLzBnVWdJYjhULzdSblN4aEdQaXY4YnN3cnJKSDZmWU9PT1dL?= =?utf-8?B?Q1pJVmZjRDVSdzlGVGxqWEdmUEQrS0lFTVVISTdJU21OOWZiWGd4bkNMSE5w?= =?utf-8?B?S3hZbVc3ZHFOVm8wUEFJN2YySFZ3ZEZLUGtMamxJeXBhMktaNk9NVldIMkVF?= =?utf-8?B?Y3Y4RzFMeDhzY0RQaUM5WEtKSHBvSDA0a2U2TlZvd0dBUjdtRDdzbWoxZ1Ji?= =?utf-8?B?WjFsdFlRM0UvVEVtUW4zOUVlRXNJSCtxQ3FuZHc3VWxHVWI5YmFucjFXNWc4?= =?utf-8?B?Mm5kK2toaXNpelprbmtHcHNjRnY1WVgxb0pzT3pkSUJyMm5sVVVuVTlyN0tx?= =?utf-8?B?Zit2bFV2LytBNHMzcGUvaDcvaXBiMVFDVkhhNjBFZ2xxdzUxazZzSTlWTkpq?= =?utf-8?B?OUZMY2o4VDQrVTliSjU5R2xQN3g0MzVKd2xHYkt3VDJYb0pkaFJZSmdNVXpJ?= =?utf-8?B?NXlJWGs5cm82QVAyM1FobExQWk9xS3JkcGsyNmc2WUpyZTA4SHlUeSszSmpT?= =?utf-8?B?a1MyM1JrVHM3ZVBEOVJQM0Z5a3hmUkU4R3oxZmdoWEl6bG5DNnNYU0Fab3J5?= =?utf-8?B?Q0JBdytYNWVSOG9tc2Zlb3ZJOGkvcmlQenc2bU4wcUthMW42N1RpOWx1NkRm?= =?utf-8?Q?ggsNrQ?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS0PR11MB8205.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(52116014)(366016)(1800799024)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?aG5aS2h5V0dCSnZoSUZrc1lSK1FrUHNpSEtEVlRTUU5aa3FTRUJrNy8wSElz?= =?utf-8?B?Y2tqeDBzTWxvbkZwRzB4Wmp3RDg5Rk1FaE56VU56T0tCZDFrZ2pJcUR1RU5n?= =?utf-8?B?azdhdytxSWMydWZmcXlQdlpYdGdLSjBFNXJtT01aV1RGYmNVUTA3enhQVXJE?= =?utf-8?B?UUNCSWp4UmhSTko0UVpNTTgxWmdZMEJrY1F6Q2gzMDd2cXJucHFmNlNQclhK?= =?utf-8?B?bjVMdUlPWFNIQ0FiRisxcWw0WlljSTF2Y3dlb0xvQUM1cHZoMnNKdWtyQ1ov?= =?utf-8?B?WFpzSG80T3NiYTAybVFTdnp4QzdockNRendhd2QyWHlHa014ZXhvSm5weWlK?= =?utf-8?B?V25IUTRXbWNJVklGYVB6T3dYemRzYmJNZENCekVwYzUwVGR4RGlVV1hMUmFn?= =?utf-8?B?OXp2aXN2QmVhc3N2RGlRL0JYczFDNm40SmJSemoxOGQ2RVZ4YTk2Zm9DZnN1?= =?utf-8?B?VnoxNDJBME5ZR0ZyL1c3bDBwZXJOMnlZeHpuZGlwL3ZwREhwanhBYTRTbTdH?= =?utf-8?B?cHBBeDRuOThIZG1DNE9mNjU0bC9ibko3Nk5wdTJ5cjFsQ1VWOWk3Z3p1eDFZ?= =?utf-8?B?aWdNVkJLMzYzV3VUNTNKNXlSVWUzc000TCtyTGd3dGl3NEI3VSswNFZ6bnRl?= =?utf-8?B?SkhvZUtVVHlTRXNIVExNRkRCR3BrOFBrYkU5TDVsNGxpSDlPcElRZVRyakI2?= =?utf-8?B?MjdzRm5lWnNBS2NMei9DOHhLTG55MjRsMFAxQVlBNGMxQk95SGdvbnRqOVZq?= =?utf-8?B?YzZtQVJSM2p4bTI5ZWRDYXh0VVBqUjJTbGNTcUlCb2diTEVQbTl0SytmRW15?= =?utf-8?B?U3VLdjBySVo0eng4c1RiVzY4bldWVDFNOEpwUlhYOWo0TGNwVHhka1JTWGtI?= =?utf-8?B?NDNsUTY2Z1BNR0ljZmd0T2FMeW9mMTFrczUzNFlpeUUxN08zVThCM0xsclVv?= =?utf-8?B?ZmZSYWltMmZIQ1MxZW0xdCtaaVBLUEVPM0svbi9nMXA5Q0h2S2M1ajd4akp1?= =?utf-8?B?NERraE9wZnI1WERUdE5WUU5IejZoUldDWWJtUjNvNW5lR0FoeVVCbklGSUZa?= =?utf-8?B?WmxvRXZha1plOUpXVGxtQ3A2T2RrMHZDSURMZ3l2MlQ1SFJMZmJNb2NBdDBB?= =?utf-8?B?Ry9NcjRNd3ZmbjdDZEU0SlI2eXZvM3p6aFJ0OGRkTURmL0Z0STRlWVRrMWM4?= =?utf-8?B?SVRpZU1tMmxRTzJyS3dPcnpSbWlGREJCaXY1cUI0QndhRDU2S1ZmNHViZWZG?= =?utf-8?B?UXphZEdEN3pGa3FCTGEyaWZBZVcxaEx1Z2YzeFhPM3RlVlFCdVpvOE43dU5Z?= =?utf-8?B?eE5vLzhqUjE5Znova2xKc0JvRmFRdXZ6TWhGWGtqb0h3QU5kNjFMRTJRdTVk?= =?utf-8?B?cmZNYkZIT0pTejIwd1owMVlMRVUweHRsTWFFYkpSSjYyREVWa2M5Q0IvV0tO?= =?utf-8?B?OVNld1NCdlljcktSbWpOQWhKZXdDQmtwNDA4Y1FWa0FqSnQ4K2o5b0Z1bExa?= =?utf-8?B?ZldDcUtIMmh3SzF1Z1V2dEo0MmNOS0Z5Z1praTlxV2d5SHV4WUhlT2JpbTJV?= =?utf-8?B?c1hDT29xVFI5Mi90MExiaS9HVloyLzI5bjZxSStCWXU1VzZic2xMdVcrYndK?= =?utf-8?B?YUNVdTVEMis0R3NSd3YrWVhHb2RUQ0trcUpjSnFaUjNxTUNIUGxrRTA3bDRx?= =?utf-8?B?Wis5Z1RmelhlZ2p3M3FleGVoQVdoS1IzZG40VlJFWStmbjNuN1VNUFRJeUp0?= =?utf-8?B?dlNSL01GY2NyMWxsM0lUYWlrblJnZzhrdE9yR1hmSndRekdIdTRHdjdpSXdy?= =?utf-8?B?cjdUbEpWbEs2cmpiSE5TQmducnBhZFRSNFY4UGkvRnpHYndDay85ZDJYN1Jn?= =?utf-8?B?Rzk4SFRDdHBFcUF3YWxtU05HWE9DZERJc21sdHFDYTk3RGx1Y1o4QWdKZ2JJ?= =?utf-8?B?RkQ3UnZZRDk1ZFE5UW1hdko1UXdUTHRCQVkyM05lRzhlWlEwTnlUTXp2VEpG?= =?utf-8?B?d2dic2xiVG9VTVN6S29mZHZSWlp5WGlHUDZRTXNiejNLWDcrTndHeGdIWkh0?= =?utf-8?B?aG9mZ1FoRExpd2M4QnJ3Q2NFbnVWMjM1QTUvMSt3LzRLbjdQSVVqOWtjUVU0?= =?utf-8?Q?Jknno1aQSmGK/Z9k6XtwpuSEF?= X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6cdd36ec-e37a-423b-4367-08de238fb140 X-MS-Exchange-CrossTenant-AuthSource: DS0PR11MB8205.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Nov 2025 15:08:39.7992 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 54dbd822-5231-4b20-944d-6f4abcd541fb X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: LOiZQGHMrvPpgP5Szn4ZcQyxw0QmIaTFBVbbiwuvQg2SUUUkNhw8BbzvbScezVLW7BJwYD/o4F86Wo2JLhtbGA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR11MB8774 X-Proofpoint-ORIG-GUID: NPEVGuybaaiijM6i1fJgYKwiZ6mTwqzG X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTE0MDEyMSBTYWx0ZWRfX396+AU+MntbK sVwlnVeszLdZEQ1caggJCehrEMPzrErT9/Le0w/h1M5uqlsE8s7Lfh5IZB6keo/RIeSweeWmhBq mOG1ZKFBW3dgE4O5QbepluId8UgDYFP3Y4Zo49YXGrOP/V0ecYDxMsgWIVGf0JG/oiGReNFlZ/J a4cprA3EmTuHdSId5lha3ecFGBUTTLgVuFjLsnpZnTUo+AcXSo8RWWEd9piVhCfG9QzAj3Tny/p xf+Mw/RJ9f2+qrhUsxfYSV8rw3O9vu8TBcxA/we7lN2HRqZKwYlsDYwh8ZNTr0lXSgYe/N9kb0i RScaOi+7wCwPmB0Qhk5Lz7cJVwClM+tk8+sPX6tmtjnr9jzuISxzsOytNYgA3efPeRDSwMpQhAt XQbBX1TPnqjIutfph7ODT43wDoCFEA== X-Proofpoint-GUID: NPEVGuybaaiijM6i1fJgYKwiZ6mTwqzG X-Authority-Analysis: v=2.4 cv=LfAxKzfi c=1 sm=1 tr=0 ts=691745f9 cx=c_pps a=abZUFfWgJRaQ0xfFFz1/lg==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=6UeiqGixMTsA:10 a=M51BFTxLslgA:10 a=i1IsUcr2s-wA:10 a=VkNPw1HP01LnGYTKEx00:22 a=2AEO0YjSAAAA:8 a=LxIw55J96KH0fPlZK-gA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=cPQSjfK2_nFv0Q5t_7PE:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-11-14_04,2025-11-13_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 bulkscore=0 malwarescore=0 impostorscore=0 lowpriorityscore=0 spamscore=0 clxscore=1015 phishscore=0 priorityscore=1501 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2511140121 The RX window indicates how many reception buffers the peer has available for that cport. The other peer must not send more messages than that window, or the chances of those messages being lost is very high, leading to retransmissions and poor performance. The RX window is associated with the ack number, and indicates the valid range of sequence number the other peer can use: Ack RX window Valid Sequence Range X 0 None X 1 X X 2 X -> X+1 So everytime an ack is received, the driver evaluates if the valid sequence range has changed and if so pops message from its holding queue. As the skb is moved to another queue, it cannot be passed directly to the lower layer anymore, instead a clone is passed. Signed-off-by: Damien Ri=C3=A9gel --- drivers/greybus/cpc/cpc.h | 9 ++++ drivers/greybus/cpc/cport.c | 5 ++ drivers/greybus/cpc/header.c | 88 ++++++++++++++++++++++++++++++++++ drivers/greybus/cpc/header.h | 6 +++ drivers/greybus/cpc/host.c | 9 ---- drivers/greybus/cpc/host.h | 1 - drivers/greybus/cpc/protocol.c | 72 +++++++++++++++++++++++++--- 7 files changed, 173 insertions(+), 17 deletions(-) diff --git a/drivers/greybus/cpc/cpc.h b/drivers/greybus/cpc/cpc.h index d5ad3b0846f..7c1b48f52ff 100644 --- a/drivers/greybus/cpc/cpc.h +++ b/drivers/greybus/cpc/cpc.h @@ -19,6 +19,7 @@ * @cpc_hd: pointer to the CPC host device this cport belongs to * @lock: mutex to synchronize accesses to tcb and other attributes * @holding_queue: list of frames queued to be sent + * @retx_queue: list of frames sent and waiting for acknowledgment * @tcb: Transmission Control Block */ struct cpc_cport { @@ -28,12 +29,20 @@ struct cpc_cport { struct mutex lock; /* Synchronize access to state variables */ =20 struct sk_buff_head holding_queue; + struct sk_buff_head retx_queue; =20 /* + * @send_wnd: send window, maximum number of frames that the remote can a= ccept. + * TX frames should have a sequence in the range [send_una; se= nd_una + send_wnd] + * @send_nxt: send next, the next sequence number that will be used for t= ransmission + * @send_una: send unacknowledged, the oldest unacknowledged sequence num= ber * @ack: current acknowledge number * @seq: current sequence number */ struct { + u8 send_wnd; + u8 send_nxt; + u8 send_una; u8 ack; u8 seq; } tcb; diff --git a/drivers/greybus/cpc/cport.c b/drivers/greybus/cpc/cport.c index f850da7acfb..2f37bd035b6 100644 --- a/drivers/greybus/cpc/cport.c +++ b/drivers/greybus/cpc/cport.c @@ -16,6 +16,9 @@ static void cpc_cport_tcb_reset(struct cpc_cport *cport) { cport->tcb.ack =3D 0; cport->tcb.seq =3D 0; + cport->tcb.send_nxt =3D 0; + cport->tcb.send_una =3D 0; + cport->tcb.send_wnd =3D 1; } =20 /** @@ -38,12 +41,14 @@ struct cpc_cport *cpc_cport_alloc(u16 cport_id, gfp_t g= fp_mask) =20 mutex_init(&cport->lock); skb_queue_head_init(&cport->holding_queue); + skb_queue_head_init(&cport->retx_queue); =20 return cport; } =20 void cpc_cport_release(struct cpc_cport *cport) { + skb_queue_purge(&cport->retx_queue); skb_queue_purge(&cport->holding_queue); kfree(cport); } diff --git a/drivers/greybus/cpc/header.c b/drivers/greybus/cpc/header.c index 973883c1d5c..650fbaacc8c 100644 --- a/drivers/greybus/cpc/header.c +++ b/drivers/greybus/cpc/header.c @@ -22,6 +22,17 @@ bool cpc_header_is_control(const struct cpc_header *hdr) return hdr->ctrl_flags & CPC_HEADER_CONTROL_IS_CONTROL_MASK; } =20 +/** + * cpc_header_get_recv_wnd() - Get the receive window. + * @hdr: CPC header. + * + * Return: Receive window. + */ +u8 cpc_header_get_recv_wnd(const struct cpc_header *hdr) +{ + return hdr->recv_wnd; +} + /** * cpc_header_get_seq() - Get the sequence number. * @hdr: CPC header. @@ -33,6 +44,17 @@ u8 cpc_header_get_seq(const struct cpc_header *hdr) return hdr->seq; } =20 +/** + * cpc_header_get_ack() - Get the acknowledge number. + * @hdr: CPC header. + * + * Return: Acknowledge number. + */ +u8 cpc_header_get_ack(const struct cpc_header *hdr) +{ + return hdr->ack; +} + /** * cpc_header_get_req_ack() - Get the request acknowledge frame flag. * @hdr: CPC header. @@ -56,3 +78,69 @@ u8 cpc_header_encode_ctrl_flags(bool control, bool req_a= ck) return FIELD_PREP(CPC_HEADER_CONTROL_IS_CONTROL_MASK, control) | FIELD_PREP(CPC_HEADER_CONTROL_REQ_ACK_MASK, req_ack); } + +/** + * cpc_header_get_frames_acked_count() - Get frames to be acknowledged. + * @seq: Current sequence number of the endpoint. + * @ack: Acknowledge number of the received frame. + * + * Return: Frames to be acknowledged. + */ +u8 cpc_header_get_frames_acked_count(u8 seq, u8 ack) +{ + u8 frames_acked_count; + + /* Find number of frames acknowledged with ACK number. */ + if (ack > seq) { + frames_acked_count =3D ack - seq; + } else { + frames_acked_count =3D 256 - seq; + frames_acked_count +=3D ack; + } + + return frames_acked_count; +} + +/** + * cpc_header_number_in_window() - Test if a number is within a window. + * @start: Start of the window. + * @end: Window size. + * @n: Number to be tested. + * + * Given the start of the window and its size, test if the number is + * in the range [start; start + wnd). + * + * @return True if start <=3D n <=3D start + wnd - 1 (modulo 256), otherwi= se false. + */ +bool cpc_header_number_in_window(u8 start, u8 wnd, u8 n) +{ + u8 end; + + if (wnd =3D=3D 0) + return false; + + end =3D start + wnd - 1; + + return cpc_header_number_in_range(start, end, n); +} + +/** + * cpc_header_number_in_range() - Test if a number is between start and en= d (included). + * @start: Lowest limit. + * @end: Highest limit inclusively. + * @n: Number to be tested. + * + * @return True if start <=3D n <=3D end (modulo 256), otherwise false. + */ +bool cpc_header_number_in_range(u8 start, u8 end, u8 n) +{ + if (end >=3D start) { + if (n < start || n > end) + return false; + } else { + if (n > end && n < start) + return false; + } + + return true; +} diff --git a/drivers/greybus/cpc/header.h b/drivers/greybus/cpc/header.h index 5ac431b3c54..79635077511 100644 --- a/drivers/greybus/cpc/header.h +++ b/drivers/greybus/cpc/header.h @@ -41,8 +41,14 @@ struct cpc_header { #define CPC_HEADER_SIZE (sizeof(struct cpc_header)) =20 bool cpc_header_is_control(const struct cpc_header *hdr); +u8 cpc_header_get_recv_wnd(const struct cpc_header *hdr); u8 cpc_header_get_seq(const struct cpc_header *hdr); +u8 cpc_header_get_ack(const struct cpc_header *hdr); bool cpc_header_get_req_ack(const struct cpc_header *hdr); u8 cpc_header_encode_ctrl_flags(bool control, bool req_ack); =20 +u8 cpc_header_get_frames_acked_count(u8 seq, u8 ack); +bool cpc_header_number_in_window(u8 start, u8 wnd, u8 n); +bool cpc_header_number_in_range(u8 start, u8 end, u8 n); + #endif diff --git a/drivers/greybus/cpc/host.c b/drivers/greybus/cpc/host.c index 27f02120266..0f9aa394690 100644 --- a/drivers/greybus/cpc/host.c +++ b/drivers/greybus/cpc/host.c @@ -200,15 +200,6 @@ void cpc_hd_del(struct cpc_host_device *cpc_hd) } EXPORT_SYMBOL_GPL(cpc_hd_del); =20 -void cpc_hd_message_sent(struct sk_buff *skb, int status) -{ - struct cpc_host_device *cpc_hd =3D CPC_SKB_CB(skb)->cport->cpc_hd; - struct gb_host_device *hd =3D cpc_hd->gb_hd; - - greybus_message_sent(hd, CPC_SKB_CB(skb)->gb_message, status); -} -EXPORT_SYMBOL_GPL(cpc_hd_message_sent); - void cpc_hd_rcvd(struct cpc_host_device *cpc_hd, struct sk_buff *skb) { struct gb_operation_msg_hdr *gb_hdr; diff --git a/drivers/greybus/cpc/host.h b/drivers/greybus/cpc/host.h index a3d6ddb648e..07bb4eb5fb8 100644 --- a/drivers/greybus/cpc/host.h +++ b/drivers/greybus/cpc/host.h @@ -46,7 +46,6 @@ int cpc_hd_add(struct cpc_host_device *cpc_hd); void cpc_hd_put(struct cpc_host_device *cpc_hd); void cpc_hd_del(struct cpc_host_device *cpc_hd); void cpc_hd_rcvd(struct cpc_host_device *cpc_hd, struct sk_buff *skb); -void cpc_hd_message_sent(struct sk_buff *skb, int status); =20 int cpc_hd_send_skb(struct cpc_host_device *cpc_hd, struct sk_buff *skb); =20 diff --git a/drivers/greybus/cpc/protocol.c b/drivers/greybus/cpc/protocol.c index 272eafd79b0..13c5b921b50 100644 --- a/drivers/greybus/cpc/protocol.c +++ b/drivers/greybus/cpc/protocol.c @@ -15,7 +15,7 @@ static bool cpc_skb_is_sequenced(struct sk_buff *skb) return CPC_SKB_CB(skb)->cpc_flags & CPC_SKB_FLAG_REQ_ACK; } =20 -static void cpc_protocol_prepare_header(struct sk_buff *skb, u8 ack) +static void cpc_protocol_prepare_header(struct sk_buff *skb, u8 ack, u8 re= cv_window) { struct cpc_header *hdr; =20 @@ -23,7 +23,7 @@ static void cpc_protocol_prepare_header(struct sk_buff *s= kb, u8 ack) =20 hdr =3D (struct cpc_header *)skb->data; hdr->ack =3D ack; - hdr->recv_wnd =3D 0; + hdr->recv_wnd =3D recv_window; hdr->seq =3D CPC_SKB_CB(skb)->seq; hdr->ctrl_flags =3D cpc_header_encode_ctrl_flags(!CPC_SKB_CB(skb)->gb_mes= sage, cpc_skb_is_sequenced(skb)); @@ -47,11 +47,46 @@ static void cpc_protocol_queue_ack(struct cpc_cport *cp= ort, u8 ack) gb_hdr->size =3D sizeof(*gb_hdr); cpc_cport_pack(gb_hdr, cport->id); =20 - cpc_protocol_prepare_header(skb, ack); + cpc_protocol_prepare_header(skb, ack, CPC_HEADER_MAX_RX_WINDOW); =20 cpc_hd_send_skb(cport->cpc_hd, skb); } =20 +static void __cpc_protocol_receive_ack(struct cpc_cport *cport, u8 recv_wn= d, u8 ack) +{ + struct gb_host_device *gb_hd =3D cport->cpc_hd->gb_hd; + struct sk_buff *skb; + u8 acked_frames; + + cport->tcb.send_wnd =3D recv_wnd; + + skb =3D skb_peek(&cport->retx_queue); + if (!skb) + return; + + /* Return if no frame to ACK. */ + if (!cpc_header_number_in_range(cport->tcb.send_una, cport->tcb.send_nxt,= ack)) + return; + + /* Calculate how many frames will be ACK'd. */ + acked_frames =3D cpc_header_get_frames_acked_count(CPC_SKB_CB(skb)->seq, = ack); + + for (u8 i =3D 0; i < acked_frames; i++) { + skb =3D skb_dequeue(&cport->retx_queue); + if (!skb) { + dev_err_ratelimited(cpc_hd_dev(cport->cpc_hd), "pending ack queue short= er than expected"); + break; + } + + if (CPC_SKB_CB(skb)->gb_message) + greybus_message_sent(gb_hd, CPC_SKB_CB(skb)->gb_message, 0); + + kfree_skb(skb); + + cport->tcb.send_una++; + } +} + void cpc_protocol_on_data(struct cpc_cport *cport, struct sk_buff *skb) { struct cpc_header *cpc_hdr =3D (struct cpc_header *)skb->data; @@ -62,6 +97,10 @@ void cpc_protocol_on_data(struct cpc_cport *cport, struc= t sk_buff *skb) =20 mutex_lock(&cport->lock); =20 + __cpc_protocol_receive_ack(cport, + cpc_header_get_recv_wnd(cpc_hdr), + cpc_header_get_ack(cpc_hdr)); + if (require_ack) { expected_seq =3D seq =3D=3D cport->tcb.ack; if (expected_seq) @@ -74,6 +113,8 @@ void cpc_protocol_on_data(struct cpc_cport *cport, struc= t sk_buff *skb) =20 ack =3D cport->tcb.ack; =20 + __cpc_protocol_write_head(cport); + mutex_unlock(&cport->lock); =20 /* Ack no matter if the sequence was valid or not, to resync with remote = */ @@ -87,9 +128,10 @@ void cpc_protocol_on_data(struct cpc_cport *cport, stru= ct sk_buff *skb) } } =20 -static void __cpc_protocol_write_skb(struct cpc_cport *cport, struct sk_bu= ff *skb, u8 ack) +static void __cpc_protocol_write_skb(struct cpc_cport *cport, struct sk_bu= ff *skb, + u8 ack, u8 recv_window) { - cpc_protocol_prepare_header(skb, ack); + cpc_protocol_prepare_header(skb, ack, recv_window); =20 cpc_hd_send_skb(cport->cpc_hd, skb); } @@ -98,14 +140,30 @@ static void __cpc_protocol_write_skb(struct cpc_cport = *cport, struct sk_buff *sk void __cpc_protocol_write_head(struct cpc_cport *cport) { struct sk_buff *skb; - u8 ack; + u8 ack, send_una, send_wnd; =20 ack =3D cport->tcb.ack; + send_una =3D cport->tcb.send_una; + send_wnd =3D cport->tcb.send_wnd; =20 /* For each SKB in the holding queue, clone it and pass it to lower layer= */ while ((skb =3D skb_peek(&cport->holding_queue))) { + struct sk_buff *out_skb; + + /* Skip this skb if it must be acked but the remote has no room for it. = */ + if (!cpc_header_number_in_window(send_una, send_wnd, CPC_SKB_CB(skb)->se= q)) + break; + + /* Clone and send out the skb */ + out_skb =3D skb_clone(skb, GFP_KERNEL); + if (!out_skb) + return; + skb_unlink(skb, &cport->holding_queue); =20 - __cpc_protocol_write_skb(cport, skb, ack); + __cpc_protocol_write_skb(cport, out_skb, ack, CPC_HEADER_MAX_RX_WINDOW); + + cport->tcb.send_nxt++; + skb_queue_tail(&cport->retx_queue, skb); } } --=20 2.49.0 From nobody Sun Dec 14 06:37:03 2025 Received: from mx0b-0024c301.pphosted.com (mx0b-0024c301.pphosted.com [148.163.153.153]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 08B3034678C for ; Fri, 14 Nov 2025 15:08:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=148.163.153.153 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763132932; cv=fail; b=AY0CEUvGbn44dnSRlIYDKUSyjpppqMm3RDtK0x4MUbU6Enm4ITvPY5sN61sgXhmUnX47uwqIZEdBoNrbpTpiRyt4Fpx1YuN+0lRPCHi+tgje7ncdBEDULF3YvkLXN4IjDkWkVUA7Olm+YtHcVq1cn6CR6sAUVd1mJtKRhNDW2tY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763132932; c=relaxed/simple; bh=Xz2+I/GFpKtHk5AYVxMg0oZNvPtg525vgsOXpY4TC4I=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Gdv3p1z2yG1E6w/VTz0S7DcO8UXwb6feVpISvvLf3LuzVBi7kXBFQ0TcI8i8S5tl+UukjygsQiIZMuRRya3+OJq3ONRYX4bk7tNF+KHT9viq7fFEQu9ZIfos2HWBiZX0TaTpBffFiGeH2S6lzNcJOSiBOt//sDHxP/HK8xjm+qQ= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=silabs.com; spf=pass smtp.mailfrom=silabs.com; dkim=pass (2048-bit key) header.d=silabs.com header.i=@silabs.com header.b=gTsphyoy; dkim=pass (1024-bit key) header.d=silabs.com header.i=@silabs.com header.b=EOzFDTRR; arc=fail smtp.client-ip=148.163.153.153 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=silabs.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=silabs.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=silabs.com header.i=@silabs.com header.b="gTsphyoy"; dkim=pass (1024-bit key) header.d=silabs.com header.i=@silabs.com header.b="EOzFDTRR" Received: from pps.filterd (m0101742.ppops.net [127.0.0.1]) by mx0a-0024c301.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5AECv2UN2440874; Fri, 14 Nov 2025 09:08:45 -0600 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silabs.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pps12202023; bh=XCACTfOMwAu9AB/gCug6ljAeo/VFNyGXt2U0ui2Rlbs=; b=gTsphyoyE3Vv /i5rlGtkgBVZTc0yilDbrbae5CFNAEcXcTzmnSAqY1BfEVpnMXOj5bcIKhm9Oarr zPZEsFWa/+9tMmLtuaw1OnomDTk51ajrkO608lfwjOctDir9UqI6rpjTBct9gYql xsYMa75hpmqvWx71h9i3HWZ3Dfix656vGLe2ls+0/1SituaiMX94AplZSDpu6BP5 OIy4emItyaomJlPV1Uj8UfeumE2ZtDZImfRvRpVJVqaFgdoZByBbkOPPYcHal38t QiWwUEJ9Hnr2v+wJ6bCrHi6OHFMPSh2nbUo5tJGBE7XKIcluPMUqV6eR0I5Jguzx y+iKokL3KA== Received: from sn4pr0501cu005.outbound.protection.outlook.com (mail-southcentralusazon11021116.outbound.protection.outlook.com [40.93.194.116]) by mx0a-0024c301.pphosted.com (PPS) with ESMTPS id 4adr8fsm5a-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 14 Nov 2025 09:08:45 -0600 (CST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=UjnCSAXqVcwUQBgNxsfmr0G2qI5LiwkmAASD1HPv2Vet/AnCm84EcEXh1+JdGSjiXucacwHdU+1Vi+l7IRum8OpN5euI4E5n77ec36VPh4bsyNG0QuHBOn+0nsDBPcBLLv9IRaPof1Qls/VYr6XK/DhpRsjjRsgHz6BavoMbauDxU82ayl99uCQiV6lVd26MQKEJNyi8KvDxdGc1VinFPoO4L1AaxFTvXDHC753U1pL7W0sCeKGADaJslabcrbqzPuaRdHAel/eZrHLvvX605dhPMBnCZD7DZL5vxq5YcKmmU7OaG8XrAtSplcXWBWumMhJyGIxQ0SXmIBHmnVUFBg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=XCACTfOMwAu9AB/gCug6ljAeo/VFNyGXt2U0ui2Rlbs=; b=SznDRPbqcALuK0cqoOvCgMDFsMkTrm1g30mlIDGfvrK3My4IWmpN2GimPbJJsWEtEZ/vWGdHPSMlG5HW34I0W91Ru7W2ur7GyA6Gim2g+fsWDwC+fbq3Y0+3haPnfvb2mIEGkPHOZ4M8dthJDCUCES8c/YLGPovmOUnsUHg9/gGtHB8Evvk9xoa47+SlTC445ofgRpnqZNnX48nR2wnQPnNiVQFkas3PR272QdEJQTH+MHmFn/Jsx5C+oZEROyTkLJYoksQm12zQrqXoeS+u28yyTFyNlzDUOj1qX9we4yxLkoz3nNnKLSCXcvFghTWRCCOb1+uHjTjbQKr7D9Fk5Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=silabs.com; dmarc=pass action=none header.from=silabs.com; dkim=pass header.d=silabs.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silabs.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XCACTfOMwAu9AB/gCug6ljAeo/VFNyGXt2U0ui2Rlbs=; b=EOzFDTRRGhhfKf8Wb+Hj80HbgJwXe1zIWACXsBy/XUrGKy3PWHpKEIue3AOt7MEtjhD2JVgChb8kqHcFQnLh3V9IDrcmsrBOAbzXlqDQ3V+yTHf2kfVXa1uN2lETa9jKjps3+K2zpMWBXe7sQVV9dd0QTMo3RjpH+nww9YwcEHw= Received: from DS0PR11MB8205.namprd11.prod.outlook.com (2603:10b6:8:162::17) by CH3PR11MB8774.namprd11.prod.outlook.com (2603:10b6:610:1cd::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9320.17; Fri, 14 Nov 2025 15:08:43 +0000 Received: from DS0PR11MB8205.namprd11.prod.outlook.com ([fe80::c508:9b04:3351:524a]) by DS0PR11MB8205.namprd11.prod.outlook.com ([fe80::c508:9b04:3351:524a%5]) with mapi id 15.20.9320.018; Fri, 14 Nov 2025 15:08:43 +0000 From: =?UTF-8?q?Damien=20Ri=C3=A9gel?= To: greybus-dev@lists.linaro.org, Johan Hovold , Alex Elder , Greg Kroah-Hartman , linux-kernel@vger.kernel.org Cc: Silicon Labs Kernel Team , =?UTF-8?q?Damien=20Ri=C3=A9gel?= Subject: [RFC PATCH v2 12/12] greybus: cpc: let host device drivers dequeue TX frames Date: Fri, 14 Nov 2025 10:07:38 -0500 Message-ID: <20251114150738.32426-13-damien.riegel@silabs.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251114150738.32426-1-damien.riegel@silabs.com> References: <20251114150738.32426-1-damien.riegel@silabs.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MA5P287CA0046.INDP287.PROD.OUTLOOK.COM (2603:1096:a01:175::12) To DS0PR11MB8205.namprd11.prod.outlook.com (2603:10b6:8:162::17) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS0PR11MB8205:EE_|CH3PR11MB8774:EE_ X-MS-Office365-Filtering-Correlation-Id: d2d35ce9-2249-40ea-f909-08de238fb33a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|52116014|366016|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?NEN4UHBHN3NydnNublNrMml2cUs3VVhpQXN6OFAzM1MvSHFFeW1HSGpONkV2?= =?utf-8?B?Y3ExbHZmR3JtS0VyeGtxKzE5MlBQbm1hNVUxMUhLRDRpT21RWk0zSUgyNVZQ?= =?utf-8?B?eTVUakRYZG9sdmc0L25GQzI2SGwwVXl2TXEvemlvamYxSExCRFE1Y0c1ZzRY?= =?utf-8?B?OTNyUG5mNVBlNS9hZkJRWGdPQ1kzWE9CV1JteHpSMzJmRU5KS2NqNUJEa1py?= =?utf-8?B?Z1U2d2wxWXpmOWdxYmdrc0FHNmFKeXJvQS9waTBNaEtwMW1rSmVkUzBoMFpr?= =?utf-8?B?Ti9FNnhlaE9mNDFMTVRrQ1ZDTWRVK0QyczQ4YllneHl2SjlqRTVjUHBRUFNY?= =?utf-8?B?TXM4ekZvTzI5VzdyOVlZR0haSHlGQVRjVEt0VFp4bmlFVCtKblM4MExLOVlD?= =?utf-8?B?Qm16TkJOQmwrdEJZNkZjeHlNbjFJRFlvMU9HellxVFZHVTJtcmo5dTBsYWE3?= =?utf-8?B?aFlmNTJrSFJvcGFjV0E2Y3hXbkVhTXlXbjhSWTljckNQcndJYlU5TldxcjNr?= =?utf-8?B?WXhsL3lzSlhwa0R6SzlpVk52Z25TWllIZE1PRitobGpkZXJ5d0hMamo1OHZk?= =?utf-8?B?T1g0MzJWdXRMSDI5THJkVGpvNUpwSUJHUGVPeXp1N1UzVjNjUWp0aC9PZ1Ru?= =?utf-8?B?QWJtekZic1NKK1QyT0NZck1vYURzTE4xK3dKQnFNcnZlM1FvU3I3bkozdC9P?= =?utf-8?B?aWw4VEJma1VIUHZMY2FXa1pEallTR0dVK2h3YWRWSU9rdml6MjFhTkJNRXBT?= =?utf-8?B?Rk1YZkFPcFE4WnNpWXB4RStFaGNmUlgvZDd0WDJDdTh2MEpJcUY0Y3Vmc0dO?= =?utf-8?B?VDZ3bW5KdnRoTDhUbzNycXQxNW00SkdaT1VzWGdoMWxjTzR3UHZkYnE3NkdM?= =?utf-8?B?Z0I0VTlubVBJenRVRkdpQ3FETVpwVHJkcXV3aWxmVHYwakptOXNsRHM5VjND?= =?utf-8?B?T2lSdG9sRzFON0hrRWFFSUc3eEpENUJzOXVFemtDVHVpd1JFMktzOW1VSlNQ?= =?utf-8?B?WVhnY1ZUangzS1AxSi9aS3RldW9HZ3YvNkw3Z28wTlUrYWxXUW1Ma1RZdmRq?= =?utf-8?B?bHRjcExQaGQ0ZEpuQnFKNmFuNFZyUjMyQ3Zza3ZkZmlZdnhzQU1Iclc5bU9M?= =?utf-8?B?djRUdXIydXl5djFqMEsvalZYT3AwL0RRNGMvWkwvR0lEYSt0dTRSM05iS0Qw?= =?utf-8?B?TmNvTDJVSVV0R3I5U0VpQ05tWjc5YnhaWEhIMWw0aGlUa2VENHA1K2NTb2xa?= =?utf-8?B?NHFyYUJIV09OZ0MwcS9hdFczdEY4SDgvL0hGT2gwRjVMSnp5ZkdqY01Ob2hO?= =?utf-8?B?WWlwQzhvbnNoRGlvWXBNaTd2K09TSld1QllJSXVFRDdJL0EwaW5ibHN6ajRD?= =?utf-8?B?dGtlOExvTHQ4R0w0UWo0Nms2Z1dUUkxqb1EvaXdlTEJOUVQvOWFOUlFqQWZP?= =?utf-8?B?WWFtOHpsT081WFZlVWs2NEtTcUxUNC9zOFMyNDhxVTZlUGNuZXlxbnN6WDRS?= =?utf-8?B?cUZRU0o5SW4vNk96L0kyb09KQW5QbFVSNHlOUE1jSzB4QnJ1Nm56UWFFSE9X?= =?utf-8?B?V0dwaEg4VStrMlNLTjgrL3lmZ1g2RytnbGtOM21RZy9tRHAyRmFFZTFpbnUw?= =?utf-8?B?cHV3ZWIxOGFNNFpnVnBEUHRJRzhab2RBYlB6U0VUbjVWUU0wWVV4Mm4rRHZw?= =?utf-8?B?ODJFaFZEYjE1TTJCQTQ5eHg5SXdrdDdGd2dkQkVMOEpkMy9BdU45Y1ZUVkp0?= =?utf-8?B?czJGd2xtNi9IV29QdHlNdW5CcjNTWEMvaHFweWlOOFliZlN5TlZXemZ0NG5w?= =?utf-8?B?czA0NzlUNDVZN1cwZzBvTVpPaTdaU1pSWkpzSlhpdWxWRFpYRzRXRGh4cjli?= =?utf-8?B?b201ZzYwMDFFQXlHMHFjN0xQTmVGd0V6aXIrVjI0d2t4MHNsL0JBYUNGN0Ro?= =?utf-8?B?SDlkSzkzZ2txZWVZR2FGSFA1dFhsc3lJUFp2Y3N2anBkNGU5MGZvYnk2cnJw?= =?utf-8?B?ZUd5MVI3aWRoZS9pUEpldGR2VjZReDlCeUVQK0RWNUNDUW4zcFVlaG5RM1Jj?= =?utf-8?Q?1N1qHQ?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS0PR11MB8205.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(52116014)(366016)(1800799024)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?TU5pOEd0TUwxRytVdnpEeXZGdU9idEY5KzFrTzBEZFZyNHlWdm1jQ2d4Y2NU?= =?utf-8?B?VzFaTXNDamFNSWxOSUtCVndGRGMyU0ttZlFwRUpkWG1qT2VGOXQwN0lrOHps?= =?utf-8?B?UCtvVFdLMTRRZnJOeFhERmdZSEhxK2NqK2RZM09RV1FjY2xtYXozbkkxendE?= =?utf-8?B?S2hGd2JaWlZIcjZyREVvZUIwTWdETFVKTDFqeC8vQzNYWXlDSDkzNTh6TWdh?= =?utf-8?B?QmhNdW4vZm5NK0lSMVNqTUw0VGhiNFdsejZvWU1RYkhCWFVjYkpsYWV3TXZp?= =?utf-8?B?US8wVnRIeGk0YnVvNkxUQWIrQ0VRTzROSlZqQzkwNDFrdkhJeFRpMU9oTkU4?= =?utf-8?B?RXBrRk1uUm1ZSEZ4UENiVFQ3MmZYMkx1b1JrVkZQc0JRQkFPSEYvUVVOenpn?= =?utf-8?B?Q0NMaUJhZlY0NFdsSDZJZm41UXJLMG5oL013ak51M08xR2ZWTUV3TW11NUhZ?= =?utf-8?B?eXFSeklTcDNKWmc0cXVabFFGeWQ1bGFrVTdNSzUvWHFydnBWMWZYaHFLRXpz?= =?utf-8?B?REROck9LUGRhNi9ydVNTRG40TFhFN0xTNm8vdXlWcXp2YlRPZ0VzOGkva2Jx?= =?utf-8?B?WkVnYnZjRHVpTGdkRDUrVVV4OFRna2NwU0htVnhqRXVrTVZsVkxZK1NyQ05D?= =?utf-8?B?eVQvYUdEVDBFdFZyYldqT1g4NFp5MUVSN2ZFaHgzMzR3bjA3TnZTdjZMUldN?= =?utf-8?B?d1ZzbHFqTTEzdkZMV1RHUjZuT2FaT2RjR1JQMWFmcEg3Vi9yaEdwSlJrb3Rm?= =?utf-8?B?amYrUzhtVFNzNzBCNkU0L0gxNnZ2azl0a1o0ZzMzSFVDUTM0QkpEWStldFpz?= =?utf-8?B?THlkTEdLYWU4MFRJUWhhSVVJYUFWWmdIenozeEcyTGxJSlhRc241YUZWR3Yx?= =?utf-8?B?ajhCWUc2WGNLSVdMWEpwZksvaHN1UG9TVDVKUThpZVR5ZjVRdyswNlNyK1o3?= =?utf-8?B?eGhuUURYM2NmMVYyZk1uQmZCZWNrdXZSYjBPSWVsOHFJR1BGSFBMNjV2UWRi?= =?utf-8?B?Qzl0V1ZZakwvREpwVlc1L2xYUHY3U3E1bzk3VW1zK203bTJHWXM0WS9YZ2dZ?= =?utf-8?B?QXV1dEpFQk1MNnJQeXRUZ2VjZ0pkR2VMMWY1WUVCSjI4Z3E0MzlnUkc4aFBs?= =?utf-8?B?cmRCMjRVdzh5OVNIQ3pmWlhRL2QzT2psVlk4b0RnMjdYUUdHQ2tyWTZGVjFI?= =?utf-8?B?WFRYaE4xK2pDbkFGWGJvSVgyR3RMeTN1Qi9VV2h4c2ZEMmdMVnkwcHJ2dnVG?= =?utf-8?B?bjhDT3g1czVTeXBaemlXV2ZMMEYyQnErM2FRMzlCZnhxd3BrbWFLZWMwYk9J?= =?utf-8?B?NEJhNk9iZHpxbkpjaDBJR041azY5WEZsYTQraEp3ay93Y0UzMUtxMGh6SFcz?= =?utf-8?B?OEFTZFplVnVMaG9oQ3BXKzhHRHY2dENNZndTYlQ0MTFJNkxocjZYVkhVUTBG?= =?utf-8?B?bjhDaWZVeU80QW9tZHZuM213dDZRYWNxT2N3NkhmUy9xL2RTbVpNbDNVWGdh?= =?utf-8?B?RDN4Rmo1akd0TnJodmk4U0s3c1BFM1hwOWNiUkZ2aUloQUxhQ25yT0RVT0tu?= =?utf-8?B?ekMzNm05UzUwR1V3UnhPMkdYcll0NGV1dDhSSys0WDYxMCtBV0pBVWN0NjVX?= =?utf-8?B?SlJ4elBwMVUvWVNiUHhydUtWQm9OaVNvVFR0VFBIVjVZQStpeG5KajZ5dEx6?= =?utf-8?B?ZG9UNFFLakQzVkF3MEZ5a0xSSnZMTjI0RCtDT2dNOXFKVEJFcnc3bnlUcmp2?= =?utf-8?B?WTd3MWp1K0RCNkdEYmNXbCt6WFJMQ0hpczZKTklDNHhSVEppVERtZE9HK2E5?= =?utf-8?B?Zk40K0ZPdzhETThCUlZvRFVGNzRkbzdOYjUwdDMyd3dXaEtKSGhQSFMrT0E2?= =?utf-8?B?RjZmTGkzM1Ivb2VSRVhVSFBUNjFFekVtRENxeHlCYWMwMmkzc3JYY3NxZ2Ux?= =?utf-8?B?YmI1aTBwclJ6N24yaXlKUWNUWTgwQ0NZekNvOXhlaGo0aUdGb0lrNHdwa3BL?= =?utf-8?B?RnlhOGFncENZdjNvL1hIemNMRTlEYmF2bzV0U091QU1tR0N0WWdGN1JPdEc5?= =?utf-8?B?Mk02SGN6M0J4dHMyS1d5ZTJkWTJ1ODVyZU9md2ZyWE8wWHV1eVdKaEx1dVcw?= =?utf-8?Q?QcshGEHpRTrCqcUP3RHruf8AF?= X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: d2d35ce9-2249-40ea-f909-08de238fb33a X-MS-Exchange-CrossTenant-AuthSource: DS0PR11MB8205.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Nov 2025 15:08:43.1321 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 54dbd822-5231-4b20-944d-6f4abcd541fb X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: CZx4Ir+KUME3WBMraOK73g7BckhQhq3iibAFjiZqR5uC6WfnW0DElY1oGkWOh6NHdCt/r1agVYCVnkvkcW0Y7A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR11MB8774 X-Proofpoint-ORIG-GUID: 1odenvpescTjmXwkvzawVmqDwtaOLIrz X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTE0MDEyMSBTYWx0ZWRfXztks6EOmuM7k ZXhMYa6mgg9H2XtrsTi+TCqP1h+nouCGzJFtoNR8ZJSh/pZ06dhLt4UqG1/uLrc565AU5LtPZEf XDk1OiIIUV46V8sTQ+QCT6AlEwcqCUWVkysmHTWMByMvaegt+qHd+UbHaylFjXJFwyVgSrbJnUW JpUQUvNOfgMMyb7KgTJ5WUtYrDE+2pDq4uAvOmFSb83oBPsbXXOa3Yj7xwF3jn21zaTbEbiUTgF w3vuaEI3ktTJG02BtOcTzO1ckqR5DDaHV28im5rFO85nu+am/sTtrKMrIUUXNM8il5DC5ABpRdo OMxs8HStYcElNldUfQH1BIrD7Y+J26uh3TQ0VlTS1xG3oJG+UJZgf81ufrS2WeDm1acmiFzLoiu RBSNG1wTJXmJRPxkSvkZWY9CqYGARQ== X-Authority-Analysis: v=2.4 cv=BYPVE7t2 c=1 sm=1 tr=0 ts=691745fd cx=c_pps a=U/cWNT7cGANcmDM7K3LxiQ==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=6UeiqGixMTsA:10 a=M51BFTxLslgA:10 a=i1IsUcr2s-wA:10 a=VkNPw1HP01LnGYTKEx00:22 a=2AEO0YjSAAAA:8 a=0-yszGi1pw2bLUArnyYA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=cPQSjfK2_nFv0Q5t_7PE:22 X-Proofpoint-GUID: 1odenvpescTjmXwkvzawVmqDwtaOLIrz X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-11-14_04,2025-11-13_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 adultscore=0 malwarescore=0 suspectscore=0 clxscore=1015 lowpriorityscore=0 impostorscore=0 priorityscore=1501 phishscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2511140121 This lets the CPC host device drivers dequeue frames when it's convenient for them to do so, instead of forcing each to them to implement a queue to store pending skbs. The callback is changed from `transmit` to `wake_tx` and let CPC core notify these drivers when there is something to transmit. Signed-off-by: Damien Ri=C3=A9gel --- drivers/greybus/cpc/host.c | 49 +++++++++++++++++++++++++++++++++++--- drivers/greybus/cpc/host.h | 10 ++++++-- 2 files changed, 54 insertions(+), 5 deletions(-) diff --git a/drivers/greybus/cpc/host.c b/drivers/greybus/cpc/host.c index 0f9aa394690..7ae5bb0666f 100644 --- a/drivers/greybus/cpc/host.c +++ b/drivers/greybus/cpc/host.c @@ -156,6 +156,7 @@ static struct gb_hd_driver cpc_gb_driver =3D { static void cpc_hd_init(struct cpc_host_device *cpc_hd) { mutex_init(&cpc_hd->lock); + skb_queue_head_init(&cpc_hd->tx_queue); } =20 struct cpc_host_device *cpc_hd_create(struct cpc_hd_driver *driver, struct= device *parent) @@ -163,7 +164,7 @@ struct cpc_host_device *cpc_hd_create(struct cpc_hd_dri= ver *driver, struct devic struct cpc_host_device *cpc_hd; struct gb_host_device *hd; =20 - if (!driver->transmit) { + if (!driver->wake_tx) { dev_err(parent, "missing mandatory callback\n"); return ERR_PTR(-EINVAL); } @@ -232,13 +233,55 @@ EXPORT_SYMBOL_GPL(cpc_hd_rcvd); * @cpc_hd: Host device to send SKB over. * @skb: SKB to send. */ -int cpc_hd_send_skb(struct cpc_host_device *cpc_hd, struct sk_buff *skb) +void cpc_hd_send_skb(struct cpc_host_device *cpc_hd, struct sk_buff *skb) { const struct cpc_hd_driver *drv =3D cpc_hd->driver; =20 - return drv->transmit(cpc_hd, skb); + mutex_lock(&cpc_hd->lock); + skb_queue_tail(&cpc_hd->tx_queue, skb); + mutex_unlock(&cpc_hd->lock); + + drv->wake_tx(cpc_hd); } =20 +/** + * cpc_hd_tx_queue_empty() - Check if transmit queue is empty. + * @cpc_hd: CPC Host Device. + * + * Return: True if transmit queue is empty, false otherwise. + */ +bool cpc_hd_tx_queue_empty(struct cpc_host_device *cpc_hd) +{ + bool empty; + + mutex_lock(&cpc_hd->lock); + empty =3D skb_queue_empty(&cpc_hd->tx_queue); + mutex_unlock(&cpc_hd->lock); + + return empty; +} +EXPORT_SYMBOL_GPL(cpc_hd_tx_queue_empty); + +/** + * cpc_hd_dequeue() - Get the next SKB that was queued for transmission. + * @cpc_hd: CPC Host Device. + * + * Get an SKB that was previously queued by cpc_hd_send_skb(). + * + * Return: An SKB, or %NULL if queue was empty. + */ +struct sk_buff *cpc_hd_dequeue(struct cpc_host_device *cpc_hd) +{ + struct sk_buff *skb; + + mutex_lock(&cpc_hd->lock); + skb =3D skb_dequeue(&cpc_hd->tx_queue); + mutex_unlock(&cpc_hd->lock); + + return skb; +} +EXPORT_SYMBOL_GPL(cpc_hd_dequeue); + MODULE_DESCRIPTION("Greybus over CPC"); MODULE_LICENSE("GPL"); MODULE_AUTHOR("Silicon Laboratories, Inc."); diff --git a/drivers/greybus/cpc/host.h b/drivers/greybus/cpc/host.h index 07bb4eb5fb8..2c47e167ac1 100644 --- a/drivers/greybus/cpc/host.h +++ b/drivers/greybus/cpc/host.h @@ -9,6 +9,7 @@ #include #include #include +#include #include =20 #define GB_CPC_MSG_SIZE_MAX 2048 @@ -18,7 +19,7 @@ struct cpc_cport; struct cpc_host_device; =20 struct cpc_hd_driver { - int (*transmit)(struct cpc_host_device *hd, struct sk_buff *skb); + int (*wake_tx)(struct cpc_host_device *cpc_hd); }; =20 /** @@ -33,6 +34,8 @@ struct cpc_host_device { const struct cpc_hd_driver *driver; =20 struct mutex lock; /* Synchronize access to cports */ + struct sk_buff_head tx_queue; + struct cpc_cport *cports[GB_CPC_NUM_CPORTS]; }; =20 @@ -47,6 +50,9 @@ void cpc_hd_put(struct cpc_host_device *cpc_hd); void cpc_hd_del(struct cpc_host_device *cpc_hd); void cpc_hd_rcvd(struct cpc_host_device *cpc_hd, struct sk_buff *skb); =20 -int cpc_hd_send_skb(struct cpc_host_device *cpc_hd, struct sk_buff *skb); +void cpc_hd_send_skb(struct cpc_host_device *cpc_hd, struct sk_buff *skb); + +bool cpc_hd_tx_queue_empty(struct cpc_host_device *cpc_hd); +struct sk_buff *cpc_hd_dequeue(struct cpc_host_device *cpc_hd); =20 #endif --=20 2.49.0