From nobody Sat Feb 14 02:07:00 2026 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 DA03235C1AB for ; Thu, 12 Feb 2026 14:44:30 +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=1770907472; cv=fail; b=NCPUPkRM63KAouRs1f7Gk6dpi1P2JxLm0cclz3CWswqE0kbekBjoMOoXLOmN0q7pb7m+E8rnwkiri1nM/CRMEzBmF1QwH8kVYz8hEA9xQoer+vxFj1Ha3sY/n0cAHJIEUD0dGbQddiVJTy6iWhDmSQxtRceN27jhtjc9+YHtewI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770907472; c=relaxed/simple; bh=uPa9L+KCfdR9SzrZKzBGTvnF3gcquy1ueP9gvaZVz+A=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=gPSS71p3A1O0EbGusvXnbOKyWtGxDCsU5UI89bPOewgupcLIRqmwPxpG3Sy2pIvvCIQxgSRlaguePO/d0+nB3A8+3dN50jCweoGc7k9JpPPZwHvnKGe54nh/g0cmxOlPf45g+l2JWIEeHCYgGvWSJXn5hJYWBS3U0Tc0CceSAow= 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=aqHoYl8k; dkim=pass (1024-bit key) header.d=silabs.com header.i=@silabs.com header.b=QTGGpGzU; 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="aqHoYl8k"; dkim=pass (1024-bit key) header.d=silabs.com header.i=@silabs.com header.b="QTGGpGzU" 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 61C2Lwnk2678544; Thu, 12 Feb 2026 08:44:16 -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=PgR4URbIn7F7QJbYn25yUWG+2Q8p3W8QAi+mDary0K8=; b=aqHoYl8kh5IT CfMfPETVqD9dEZS2isMsNGkI2ROHjlU4kMOiOEDW5ZelX3RZi/BOR8uaH0AL2Pqr tJY8l6718lXTtlgs1z95pjomnk0XV8tPehUocucmayWxstJKlx16gAuN9DEJkOzi XqwkTf3SCnpgvpiPhr9kGQjtWPYNEsOuJ+KFJJ9dgBH3nYNSU1xhUXXm88SUL6Dg w5UpyOrx15UAtqeiQj1ke4s4tkb+F1m/jsnXOUPenrGg4Eo+JFLLkg38Trx1hWAb GuOvUTpUYxDbXHV8SQmhQvbn98U7p9xe1icPW9getZW0LyhImBZjMsLCstFqLBW0 Kios+BC3lw== Received: from dm1pr04cu001.outbound.protection.outlook.com (mail-centralusazon11020096.outbound.protection.outlook.com [52.101.61.96]) by mx0a-0024c301.pphosted.com (PPS) with ESMTPS id 4c92uysn4e-8 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Thu, 12 Feb 2026 08:44:16 -0600 (CST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=y790CrzpkoJ6hcNo4eXiGoOFnl2tXyHIBq0oXclB90f11Pa3m0htmge2Zq9/hEh5RjlD02xL3uObqRzWFsnQz/0gDAaDkNZbaDESc+HQ+HeBqOMOu+pgoOa8ShUsRG3J8oQlZ14Ud/cqczidJWsgvWh/2rUy3GDB5vWL8qddtPqcP7jTRlqyySQ72CR0FMiADd3CiKVNDtRqaGxB3n4BEqE0FQJQnIBqPJOfrJ75CXsamT4+O2JK95yuRa3WkUZrprkuHQrSbNUlA40I/EM3ZmTUHP7ACjUElOu/CCv9SqdzaFuKGefAXXkVDe6kVw5cMOeh2zUHjPNH7/OT4MTvQw== 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=PgR4URbIn7F7QJbYn25yUWG+2Q8p3W8QAi+mDary0K8=; b=YfzuvH0vlE84/UUrmqlA+GTwf9wUQDfeOn75F/CIzgbc9gWdLAZZgwPoJk96QAHOmq+QmfB2LTHqd0J6bxb5cU+/IL2RdPfBW4i+c2GkacF/brpCOpWP80yGH6N/zQvkPTF5YZNZrq8xbBZWCjRO3rxldtiSZd96kPT3YmngzbHGteBiD8u1Dnk6mqBmAC+bkvm12dzpsxE5bDDwTp+SauayI6QoP5Mw+2jH/9bLC3PRH/D/l17BlCI5aNyfP9LsC75V+MRhi37u+vkUtasEM32ea2F11JDb55T5Ow5nXfgPb6f6s9iB4F7hPNrhSphuAkY0VLJ0SptCcVvRwu2smQ== 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=PgR4URbIn7F7QJbYn25yUWG+2Q8p3W8QAi+mDary0K8=; b=QTGGpGzUTkYsRIRtWr/OA5bJ5XOqkwHfrAuJjMinpvG/mEZweB/bhipCVs/D2eQJLqT8xAg7ZdbVUPQPj4YMkTUpJ0aYwx8URRIv+BCcnnb3q9MUjmoYCkkDksuaxaMUGdOe76ZDQsUlYgBE2gc+GoLFHrLQsSkGlF1psZmuD8c= Received: from DS0PR11MB8205.namprd11.prod.outlook.com (2603:10b6:8:162::17) by LV8PR11MB8486.namprd11.prod.outlook.com (2603:10b6:408:1e8::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9587.19; Thu, 12 Feb 2026 14:44:13 +0000 Received: from DS0PR11MB8205.namprd11.prod.outlook.com ([fe80::2de6:bc88:2af7:3583]) by DS0PR11MB8205.namprd11.prod.outlook.com ([fe80::2de6:bc88:2af7:3583%3]) with mapi id 15.20.9611.008; Thu, 12 Feb 2026 14:44:13 +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: [PATCH v3 10/14] greybus: cpc: use holding queue instead of sending out immediately Date: Thu, 12 Feb 2026 09:43:48 -0500 Message-ID: <20260212144352.93043-11-damien.riegel@silabs.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260212144352.93043-1-damien.riegel@silabs.com> References: <20260212144352.93043-1-damien.riegel@silabs.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: YQBPR0101CA0124.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:c01:5::27) 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_|LV8PR11MB8486:EE_ X-MS-Office365-Filtering-Correlation-Id: 6347d378-4604-42e8-6052-08de6a45304c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|52116014|376014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?Wk9tWWdyeE5PdVVBM2lqdmFVWFJZUlg3Q0M3Y3FRQkJZRHdNVjBYR1BDeFdu?= =?utf-8?B?a0VHTHUvZUpEcWp5R0VObDRxdEJycFd2VWZIcjRmM0dGVks4QjlrWTdDYkhJ?= =?utf-8?B?Zjc5WG9pakpqTWhPRDBiL3ZCMzRqTUFZRzJqMWk5SHBqczRwKzFaME9iSHFo?= =?utf-8?B?QVB0ZUtwUXhrcEhmZW13U1l6Znlwb09ielJHUFhUMmxobllVMXd4T05ZdW5Z?= =?utf-8?B?SEZZL2lsSGtUVUx3cUZYWU9SSW15K2kyZlZMbmxvSWkyalZqSktxU1hlYkMv?= =?utf-8?B?SDdjYkVraHFWNDBObTY4Kzl0SDZmR3hJdWdmMnZvdGJmTkhxdkdlYnM2Rkcy?= =?utf-8?B?N24xcE9nR2hrUGdINnZqT3dGczQ0YXJuRnVuUlhQTmFoUXd1SEZVcTdEY1p6?= =?utf-8?B?STZvUTZ1ZENPalRMNFdGU0dTYWpjNzlkSHFRQ0tuWTJiemJLOEVxSDdWeThJ?= =?utf-8?B?SlUwVGhWalpyYm9YbU4xQVZiNGRsMGJneGVqRU5XYm1MVzlWT0lCTDZsMkor?= =?utf-8?B?V25yeGxFdmU1djJTejdETmVSSHJEcVNydHRNblowa2NNNTNtczFwUzAvWis1?= =?utf-8?B?SUx3ZDU4enNoRXFvRTdHcC83SWNQUkpBTllKU0dEUmxrMkNJbWxIKzRkY29J?= =?utf-8?B?dm5aSllKcTI0YnFEUzh4bWxESG1aVWlLOVJXN21kMmFNaHRwdWZ6RENuMXBm?= =?utf-8?B?RExHUWVuZklWT1ByOUltSHJMeHRzdUhUTEpoN2RWYXRUbGkzUk5jdXk5bXIz?= =?utf-8?B?aWIzYjd3N3FPc040Nm5vODUyOXltejNBcElSNkJrTzltdThvdHVuQTZaR0Ev?= =?utf-8?B?azQ5RHAreWRoa1Jabk1KNXZUWlhiL2h3RDZnQ3ViMzZJVWpKa0k4UmJianYr?= =?utf-8?B?Y2ZPY0NoRjc2WVpkcEtnaUU1YmNaYVFQTlRocXcwQlVPN2RNVXFxUVQ2bnpl?= =?utf-8?B?SWVuWjB5cmxsa2lPd3drWWdNRE53ajRXcFlOdTlvNk1jQUJVRmFDVGIrdmpt?= =?utf-8?B?VU5iRmNCQTRGTmREcG4vTjVHZGwxd3pMNlNGdTg5R0JJeWovcDNTZERZeUZW?= =?utf-8?B?VVVMaitjaFVMb2haMUlEOERrTFZFRit2S3dVSEZ1WlF4WVJqZzFOZ1BYTGc5?= =?utf-8?B?VjRNVUJKWVF0bkQrOFFFc0lDVENKeU56K1QxaUo5cWlHYXMwVDZZWVRqYTdu?= =?utf-8?B?QmNvelhzOWRUeHMwTmlzdXJRUk1UYjllTE9yaFFyR0I3dGx4cTUzU29BSVBK?= =?utf-8?B?M1pGQjR3OC9taVJ0S2J5N0hYaHg5QkZneDdoTEt6eWdEeVNieWdpVjliL2hU?= =?utf-8?B?K1JKbzhBak5oc1YvMDZZYUFCTnhFZ2VLRjRxbDdNQ09RUzBna0UvTFNGM1Z4?= =?utf-8?B?cDFwRkRPejZvVnkzMzQvQmlaK3ZqK1c3cjVSMWNPMWtnRkV5eWw1dDN3U3Mw?= =?utf-8?B?dVFqK3RZNkExVHdMTmtNVExDbGxuQ1BGUlkybVJKeStGK0pPSEVIY1hZZ2hi?= =?utf-8?B?Z3BNQUFjNDF2OWtQck5TNSttODRObjNWUTF3TmhyMGJhWjJHNEI5SmNyN05O?= =?utf-8?B?d0F6Q1N2aU9yQXNYODRzUkliUGdTbFpORERQQjFHeW1Oa3FLbGQ3QWFKRU9F?= =?utf-8?B?MnMwL1ZxWGlwY2lDT2VuWFdJMGFWdHM0OWpFVmpGeGNEUVI0cE5HbjFDYVdi?= =?utf-8?B?b2ErZjh4bk01MXQrWnJlMWdYai9hUXpsNmdFTG4xVjV6QS9wQnE0MjJUSlU4?= =?utf-8?B?bGZNS1dYY3VPV1RjNEN4Q3VkN25OQkZyZ3V2RmErWCttMTNrUjMvYWQyY2Zv?= =?utf-8?B?VnAzRlpiK2t0eG5PUHRsNnlGUy94cTJ3T1o4TFRMY1RBTnFVeks3aXFvbWwv?= =?utf-8?B?dTBCY0p1UEEyK01qbTdqRSszWlFrT1l5cDJxMXZ4R2ExVWRvbzdHWFE2YlFs?= =?utf-8?B?VWc2WlBKdmhndlVvSDh2Ulo1Q3FmRzJ0dmhuUHpLRFRvT1o3VXNmSlBHM0hk?= =?utf-8?B?RVVGZHpHQlVXYmdOWWl5eHdSSzFNcWh1VTY5T1N5dzdBaE5UWTFZblZYY3hZ?= =?utf-8?B?ZlR3WU04QklWUC9aUFplblI0UWFkSEg0OTRyem54YTg3YWVMSFRJR01DSlRv?= =?utf-8?B?V0Z5S1BsQm4zOVFEeTBKWWw2dzZIQndPeWV6UTMvUkxlc2FKY25Ma3FKeUZ0?= =?utf-8?Q?e+qPLrlHcDmGWo47+bX8imE=3D?= 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)(366016)(52116014)(376014)(1800799024)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?S28wOC9DWVJHaERpSGMzVk9tRXlMZ1JSTmQwQnFJeHFzWFRrNFlhdkl3NlNh?= =?utf-8?B?VFViMFFFQTZEYlRDbXZPb1FiS1VZUlZ5aXNaZGV5VUh3Z1V3bDViWU4wQTJU?= =?utf-8?B?VWVHZFM5UFFacGJjMTdKK2JjMjdWbGZwaFFMVkNlakNvU2tVYS9wNk1lVThV?= =?utf-8?B?N3BXRE5sV0tvMnRoeW5wRmZSV2xFbUZoWURmREY4RFZZUjBoU1lrTi9ZTVNa?= =?utf-8?B?Y0NheFBSWWRSRCtGTnRoWlozUHd3VTU0cy9KVWtnbjJ6TlhQaDZ2N3ZyYmll?= =?utf-8?B?aWZZWWJzbGRwY0dlQ3I1bnVtSUdwams1M1pWLy9NTHd0QUZvcUxsME4vcWtE?= =?utf-8?B?aGJLMzhqTldFRkZ5UUREWFFnd24zd0ZhSS9yQ2R0K2NJSVh0dm44dHc0b1lF?= =?utf-8?B?WmdZcVRHUnpwUlBnTGd2dWRvTHNqbjVvc0QyVFJhbG1oTmRNNVdyTXZrN3du?= =?utf-8?B?bmRqelBCU005b1czRW5nVFJJZXVuTkFxOUJKTXJtYnFkODV6ZTZJMHpBVFBn?= =?utf-8?B?RVh1V2FMTDFMeElXSmwyVmxpcVJMV3E5bVVZc3ZMMXZsRFh1RzdsMGM4RnNt?= =?utf-8?B?RnptaEorcUY5VUQ4SjJEV2JlZnZpSFBtVXJIWWpDSy96ek9UcHNKUW5lei80?= =?utf-8?B?eitWSi91RUdnMXlkZVVpU1M2RDNaaGdtTE0rajY1elB5NWtsVTdBb0dNNVBE?= =?utf-8?B?L0hvS1RuS0tROXQ5bUdCMkZ1K1JMQkoyY2R4S2cvMWloSlNOUlh2L2RDdnhZ?= =?utf-8?B?VTlvOXdOMTU0WnZtUGdhZmwvcEQ3eFk5bXRjNC9TUFhseWZuK09kbDV1dnNX?= =?utf-8?B?eFQwWWpIcnRVZmpFVzhCN3A1S0c2Z1BiYTdNelZtNmRVbDFmRUNsZHR3dUFR?= =?utf-8?B?OFVpc2x3WW12eXYxTnVmSVBYREhML0plOFQySTljQllUOUU5Ynk4bTlNU0Jx?= =?utf-8?B?VG5vRHFMY0M0Uy9CZ2Eyam9vOCtSbThQMmhjbEZYTndvcmJ0OWE3UC9GR1V4?= =?utf-8?B?WGZRZ2VDR2hoOU1rYTFNWmVYaVVINE5sMFJ6THJXM3dDUngrcWdpQkNhcjVL?= =?utf-8?B?MWMzdGJ2N1V0SXFUR2VJS0ZMMUs1OVYvNkl0Tk14WFRnb0s2aTk1RDM2UEti?= =?utf-8?B?a215RXJ1VVhub3drM3VkOWRTQ3Z5TklmZjFIWWttaXBKV1paU24rRnhZWGl1?= =?utf-8?B?cVFrbG5XVXJCZ0lKZWNZVUFqcVFSVjEwTndHSktHVXlCZTJmTTFDc0ovSU1I?= =?utf-8?B?MVd1cnBQUFlVcHR1NVFCYUhLMlY5bEVwMElKMWJJcWQwb083czJVbjBqcmtZ?= =?utf-8?B?cDA2bk91Z1p5cHA0NlhoOFlud2JRNVVabUlVVnZqVVV5S09jT2lqMWhKcFdX?= =?utf-8?B?QkV2V21QRzVaYXhGRzRxRjZ6R0k5NDcvcHdJcVBRMUxGLy9keTNiTWltRytB?= =?utf-8?B?UUlKdVRzNWRQZ09wcDV4Ukg5Z1JDWlpSa3VwSXV1TTI2RWN2eGV6OENFMHdY?= =?utf-8?B?M0JkT1o0R0hwUHJTKzhKaVQ1SCtVNkRSZW1LM3N5WWdkSit4Szh1WnVtT0ZQ?= =?utf-8?B?eVdWbzk0cVYxRE43WE5jYWFNUE1VNGYzQVMwQ2tBcUJ3bVpsZzlwTS9GTzk0?= =?utf-8?B?Qys1VktkY3B2VngzUGJvdFZySWd0eG1KbVFvVnNMeU03NU5vTllocHNXWjR5?= =?utf-8?B?dTNLOEJOUSs5QWxGZHg0Y0w3OTZDZk5xUGhGK3J5SVlLdVhzYkwrZkNjQWZt?= =?utf-8?B?VW03ZEhtWkJRZXZWLzMvYWlBU1dHSGZEUmEwZjVucUp5cGxvR3o3KzNodCt6?= =?utf-8?B?MFVSVlhRd3dyUjBwYzlaN3lRRGRPc2xIOVRpZzZGRHJmRDl5YmZ1V1VERnFi?= =?utf-8?B?UWhVZU05WHFWQ2crUXd6OU53WHBaZ2tSa0ttN2hZVXFjckpxRkJ0QkFyNWN5?= =?utf-8?B?d2liTEJ4dTRxYXJNbmZ4KzNxZFpEalkrcTNmbm5XYWpyWHIzZldXOGtxeG96?= =?utf-8?B?TmFqYjNldGRmMXZETWs5clZ6RFJ5S1lYNGhDNG5aQmN6RmRhNHZLZlNtcGsy?= =?utf-8?B?QUE2NTBJYnZaTzRhL21DUytTUXdxOHhPR21IeUtmUG1ua0NKUWd1ckVURmpi?= =?utf-8?B?N2o2bXJpeDVxSWplNjQvbFI4aTJxVERiQ0lpOWZBQ0lqT1gvZ2hVOUV5cUVX?= =?utf-8?B?UkMzdzIzTDkrZ1g0UmxCbVVZbkg0UXR3RndGbCtBaU9sOStXMmFoN0hDMG9W?= =?utf-8?B?YXQ2dFN5UUhJdDdqWlZoYm94cVpwY0NiMW5UUk9ZVVQ2dGZ0MUF5Z1djYzRZ?= =?utf-8?B?cXBtVXdkbVRBS1I4eXZ6cUlOZ2cvVEV3TzZQSUhDQzJzLzd2eEM4UT09?= X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6347d378-4604-42e8-6052-08de6a45304c X-MS-Exchange-CrossTenant-AuthSource: DS0PR11MB8205.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Feb 2026 14:44:13.0459 (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: 4nje+N35xsGOYnaNtssFI+crWYREYPp56o2cbIzPbQXRx9YyA+5LhhyEO4UJnPJfv7BxtsPQ4CcA73JU3SgL2w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR11MB8486 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjEyMDExMSBTYWx0ZWRfX6fcLkLVojy7k 2DWHCAHFldUju6X1rOdjOvwQxnVLD1lVbKXJgQNyMgnkMqJypaFqhFimBAkneibukaGcemlPBcD dQiB6JmfoOkJ30YgWnoGUDltloIBZF5H9M6QyZa0xl8WbTxx26gNjCZjMBmvQ0cSgrb8e2mYzYN KCJfKCxMm/Yrvzbd325qapxmkmpXfkHdClxi8IjQCutPsHGG+z0xZX5ZOJe9c/KjxKEhN90fPmZ g+BgxiuA6dDejPjQnWis4tIDJLzadXY9bcLk+RQkemd/pyDEbhdnZe2VKcVmjUaDghepVrc7CUU cBj5sk++2aP3d6/bxvmiQaJnfoRLXoAMH9/Q4Nc8sph621GOa83yNrG7YneJlexdRPi6VFpuk+T 6C6/mZJq6AtoQ+g041Nk++9NrOYr19gv/KkEc2vNfnsDeVIFqm5X7qgggsAqPprfNlcBjZcbY2K QgvSbB2bSLsO/rTh9Dw== X-Authority-Analysis: v=2.4 cv=DtRbOW/+ c=1 sm=1 tr=0 ts=698de740 cx=c_pps a=TvliyZNEFSK35vtP2Nadqg==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=HzLeVaNsDn8A:10 a=M51BFTxLslgA:10 a=i1IsUcr2s-wA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=2AEO0YjSAAAA:8 a=dgC3dof49LueHIWcyeIA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 X-Proofpoint-ORIG-GUID: 2PPY8PzoeuT0HS_aAfxvdXPhlVUDe7Mq X-Proofpoint-GUID: 2PPY8PzoeuT0HS_aAfxvdXPhlVUDe7Mq X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-12_04,2026-02-12_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 suspectscore=0 spamscore=0 impostorscore=0 lowpriorityscore=0 bulkscore=0 clxscore=1015 malwarescore=0 adultscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602120111 A feature of CPC is the RX window. This value, advertised in every packet, indicates to the remote peer how many reception buffers are available for that CPort. The remote peer must not send more messages than advertised, as these extra messages are almost guaranteed to be dropped by the receiver. This is a bit similar to TCP's receive window, but expressed in a number of messages instead of bytes. 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 for now, but a future commit will make sure they stay in the holding queue instead of being sent out immediately if the remote's RX window is too small. Signed-off-by: Damien Ri=C3=A9gel --- drivers/greybus/cpc/cpc.h | 10 ++++++---- drivers/greybus/cpc/cport.c | 21 ++++++++++++--------- drivers/greybus/cpc/host.c | 4 +++- drivers/greybus/cpc/protocol.c | 25 ++++++++++++++++++++++++- 4 files changed, 45 insertions(+), 15 deletions(-) diff --git a/drivers/greybus/cpc/cpc.h b/drivers/greybus/cpc/cpc.h index 725fd7f4afc..f1669585c45 100644 --- a/drivers/greybus/cpc/cpc.h +++ b/drivers/greybus/cpc/cpc.h @@ -9,15 +9,15 @@ #include #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 + * @holding_queue: list of frames queued to be sent * @tcb: Transmission Control Block */ struct cpc_cport { @@ -26,6 +26,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 +44,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 +60,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 847cc8ebe41..91c39856e22 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. @@ -78,11 +85,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; @@ -94,11 +99,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 2c1b5d02ec2..225f9342cd2 100644 --- a/drivers/greybus/cpc/host.c +++ b/drivers/greybus/cpc/host.c @@ -62,7 +62,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 97db70a53b0..4cda71994d8 100644 --- a/drivers/greybus/cpc/protocol.c +++ b/drivers/greybus/cpc/protocol.c @@ -14,7 +14,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.52.0