From nobody Mon Dec 15 22:45:57 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 E3859126BF7 for ; Fri, 12 Dec 2025 16:29:23 +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=1765556965; cv=fail; b=buv8BImAeq4kUTEU4IEXQolK0hCBJksrJRiZYu9qp3zI9E1ZBpLmzgexsh3F41SY9JSXhi2l0PXzLIvE4+2hPKAzY8uRjMO8wz4OUydO1BMqOAA3X/Ak2ui3JLDCm/S9wsH6SvCFQI4fagJNwNPXN0l02T79xUmhC7ls/oVxd60= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765556965; c=relaxed/simple; bh=5y7nmIhriCeCJB1DZPaCXwUFS3kJp4ip6FI7bY/3J4I=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=VjCcDcxaa+BOXIvQInFCySL3Swn8B2vmTY0o07l4A6O/EIV9neXywXk2LpGCh+hvOoddOE8QDfgSG7Pt9I3/boVT4SL868hETc60/tI5tNTsrBjOpCUfPUbLmEZbTYaqIee0KmeBBVuhgcCsh8d6eZ1FmnBxwxTEHG6QAXd8Q10= 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=miDSzYDp; dkim=pass (1024-bit key) header.d=silabs.com header.i=@silabs.com header.b=Cz5pSvYT; 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="miDSzYDp"; dkim=pass (1024-bit key) header.d=silabs.com header.i=@silabs.com header.b="Cz5pSvYT" 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 5BC1HxRt2471899; Fri, 12 Dec 2025 10:13: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=IWbBfifONqTvzCqJnQ7uZMw5WqDNurfbsQIGBD9wYyY=; b=miDSzYDp8u3l NrpcGr0Q26n/AaDiqmoQY/PLUjUu+R0UdLw6lX3qLFEEUtwnMbOgESyQmCaOtSOV 6RvxjA6xnT5U0LdCYUdMQj5vnirHdMuMJqFNUZIh7zkf1gN0TlMwBzIuEhxsEFmQ wEVMKTep1BiYooiDJcBGUd4c1xnRJo+rVSGP15NOTif5FtcI/XTtg17ouB0uk5UI PtDjTIyjwbzr7iz8LM+PIvh3FDhwmsy5WHymhosR4PO9TdBh/v0q/6BiwAYea1uV twjv6A56zW/pG3+WNaQ3nANJDogXPUrJ0GTdPmC6ddU9nZz4JP/cOSSSZc+L6qxb OXyn0hga6Q== Received: from cy7pr03cu001.outbound.protection.outlook.com (mail-westcentralusazon11020120.outbound.protection.outlook.com [40.93.198.120]) by mx0a-0024c301.pphosted.com (PPS) with ESMTPS id 4ayht2mdet-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 12 Dec 2025 10:13:32 -0600 (CST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=czL3CoTDYIXS1WAuOqlkhVVjygP4f9xyjx7Wi0ptf1uzQAnd1gA7GG8hBiTHEAK3/XVsEo0bIPESDVOHksTBzhMQ0Uma35ZtDoU79sRPzrLGurU76O1BozEaY0TRBLvyspwQ4v463+t7uYOaqsvdbjoxIjoDmcA+e+6mvMw4vDxSwgts31Itp7c07TrqatDzxcbvnJlLB9hC0H9QmFh+tN+UK9GsKcgicODfzL5C/0j7VbyhIJY8CvdnsXhB6GgwIfQi++c3Z9FUZ5YeaZ3uwGpkDFX4KiZj3oVBVa4hNsHvMkPOxGQAjwYaJ89z0Yknd12nbOZzgDV2RPWvpjKA1g== 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=IWbBfifONqTvzCqJnQ7uZMw5WqDNurfbsQIGBD9wYyY=; b=ITTpSEgo3Q/guN8aN5Z+vi+y1ARozDDUhtSLhIJt7QeTjQB0PPL7sueTy2bQOtQMMZBd6z3GA/J5OHIQo+RYP1wPO/e8ei4MXB5cKub2PWEALWMx0vEd4/FHqDjv2W+xkrqlT6f1VFpoht24ie5i8a+WNjiD7MKIRnw3Ko+5RP5QKDRow3c5L+ZhF9fvxUowpqjj3AErVsxq6TwpWfNZ0bfI56KDN+Zd+5ctkdybScJcUKFxjMeuKJpjcpPdnWKr3RCTNEbfDnOHKKjqyMbN2H3ngwGKxiZCEzmMVIvmJS5J3CZXI6eeqzCWXO1KSaRkhPW/zQzv2h5lD5u9xemPQQ== 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=IWbBfifONqTvzCqJnQ7uZMw5WqDNurfbsQIGBD9wYyY=; b=Cz5pSvYTTCMHJeW0n2g7jN6bjbbgtjHJYS/rRR97N3MNMp0Y+boHM48kfNU4lhnAgxkYVIUaYIg4yDx1RnXEG+byEBO6euLm30UYM7RQcbpa5LG+0IIvK918e1ZurJKna6vQVCp+lOHNx9mhUc15/UY1rGIIQ9hp6iMNXUrz4hY= Received: from DS0PR11MB8205.namprd11.prod.outlook.com (2603:10b6:8:162::17) by DM3PPF7468F7991.namprd11.prod.outlook.com (2603:10b6:f:fc00::f2d) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.9; Fri, 12 Dec 2025 16:13:29 +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.9412.005; Fri, 12 Dec 2025 16:13:29 +0000 From: =?UTF-8?q?Damien=20Ri=C3=A9gel?= To: greybus-dev@lists.linaro.org Cc: linux-kernel@vger.kernel.org, Johan Hovold , Alex Elder , Greg Kroah-Hartman , Silicon Labs Kernel Team , =?UTF-8?q?Damien=20Ri=C3=A9gel?= Subject: [PATCH 10/14] greybus: cpc: use holding queue instead of sending out immediately Date: Fri, 12 Dec 2025 11:13:04 -0500 Message-ID: <20251212161308.25678-11-damien.riegel@silabs.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251212161308.25678-1-damien.riegel@silabs.com> References: <20251212161308.25678-1-damien.riegel@silabs.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: YQZPR01CA0176.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:c01:8b::25) 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_|DM3PPF7468F7991:EE_ X-MS-Office365-Filtering-Correlation-Id: c5ba8579-69bb-4010-b89b-08de39996352 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|376014|1800799024|366016|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?RXRnM1UzUFM2Tm1HN0kvNExadE9oWE95MzhNZTNleUtPb01lMkNhUWVuL0Mx?= =?utf-8?B?Q0Fza1dCQVY1UkRzd2JLdmJ1dkU1SmhaZUo2aEFzdzR6RzFoc25KbU1qQk1x?= =?utf-8?B?TU5HVDJ4NGFBTGJaVXRkU2UrNTFwV0xveXpwMjY4eFlsdVYzN3RoRCt1SHJ4?= =?utf-8?B?aGxlWlNUZ3J5TlhzY3VvOHByNmlCWkJBa1FHTjhTN2ZpbmR5dHpXT0dXR2NI?= =?utf-8?B?Yi83UWl3dEdyckhDZVlGbEc1T2g5L1YwM1B6Z3ZCKzdqZlIrbkk0YWJHeTg1?= =?utf-8?B?ZHhUR1llajU1RnRLYXA1Q3FKMGZxUTFwM0pucURaNHA4SFJPdjRvblo2Rk03?= =?utf-8?B?bDJ4QW1UakVpUG5lNUUvQW5LdWFQMUozMm1zaVJhczdNSUU5ZFFqVXN5SXlp?= =?utf-8?B?UFpTYXZmc2Q2UU91STFqVHFpZkp4TVM2K0lqSXdLbGJENE10RUdzZ1QvOW45?= =?utf-8?B?RkMvcVo5Qi9vaFd6blpqRUpFMEVhOGIyYitVeEx5R0pEMVJyV3NnSEVIWUQ3?= =?utf-8?B?T09Gb0dFY2g1RG91eGpDWlNIcUtybkEreVh1UklGTzBtVjBscWcyR1F3STNu?= =?utf-8?B?bEp3SFMrMDRqK0lZa1RUanhQc3h6RndCRFZKNWNqZnE3alo3WWw1VlFJWmFh?= =?utf-8?B?T3c4aEgzckFUZDJDUWRhN05IdHB0djBHaGlYTGNLSk5PQm1oKzFNZGFsc0gy?= =?utf-8?B?UFVMVzZxN0llUkhRbFplalg1YU5RSnd6M2VBMTRlby9uMURoOVdCQmRTRTZV?= =?utf-8?B?MGRTVUJXYzlkeklaTVdkN2tydUJQV1hVZVNDcmR2WFNVVk0rckJCSGtHSzdt?= =?utf-8?B?Nmk1NzhvelRyWDllem52SU5PTTU5eXU0eEVYUXQvM3loN3MwZ0crZ3RBWEds?= =?utf-8?B?SWV6NHR5cEhRd0h4Z01KVUlDQzdpemRqcWNnZ1JlWE5LOXlNOWc4RERoVkpU?= =?utf-8?B?ckF1U1Zkb01YSXNjOEt5SHBtdElGOVZvN0x1a1BXSUdQYkhQZENYVXhIU2FG?= =?utf-8?B?dFdwZGs1dEp5SUtMazNpV1VwcER1emk2cjFsUFNSaTFmUnN6dzhCWmRVSXdm?= =?utf-8?B?eXhVbzV5QkZjbW1UUWcwL0twTi90L3dIZG50SEliWGZiRmowSWRMT0FoU3Mv?= =?utf-8?B?bzVKRmN0MHA1S3l1NEVaZkNXQXhsQmFva1RadmpnNW5XSElEeHBlbXZLYkFU?= =?utf-8?B?a3RWWE44eWhGNWFSMXU1Vkh3Mnl1SERSRmVUbUtXWUJrMjVrOUNYRTZzM3pj?= =?utf-8?B?U3RqQ0EzV05DMXRPbmhDb2l3blBQTCt5aXo2Q3BLQ0d2TlBNVTdldVo1VHZE?= =?utf-8?B?Rm1aNGxIY0pIcEJxcWNFbDBuOWhCTTIvLzZFUW9TQktST0R2RGR2QmtvMFRC?= =?utf-8?B?WHJOSW9ZZlY0NXhRVzRhWkxtOGR0Mi9MRVZ1V2JvUDlaNkZHQkpzMGhOODB4?= =?utf-8?B?QjJWcVJqN1F1dzNqWjBuQWpZcTk4d2FScFFGK0sxeWVUb3YyTUxQalRnQWd1?= =?utf-8?B?dkJ6R3pvVTVCZ3BJa0hOY3h5TlhzS2tHdm9GcnJZY3YyOHA5d0RlUy9YazNG?= =?utf-8?B?RUF1SDV4b3M3SlE5cFNZRzZXb1pwQWt6L0RwYmJHeUM4a0RnUno5d3Z0VHJu?= =?utf-8?B?OXhQOGVXT1JmL2JmWWJmQ3ZNVWlqUmFOL25MM1dkaEVteUU4L0x4SVdJVjVR?= =?utf-8?B?TENBcW9vQUFHOGRDcStUb0VybmxBYlF3TWNHL3FDWDNuOEgzOG9na2tNVmcz?= =?utf-8?B?Qm55aWtmU2NJbWE4bUJFS2hUdHhqZ29nZFJIa25DSXdEZ3hGYVJZOWlrUXhH?= =?utf-8?B?MWQyOEh6ZFEyc0NBYkxOVXI0aGJYa0c2c0RMNlZaQW5YS2tQa1gzdFBhM2RF?= =?utf-8?B?VXJNcWNtMUR4dk53RFo0YlVtR3lnaVhJaGlFNTA4SDZyVlovbG5vSm9keTJu?= =?utf-8?B?bmwwQU5RMnBDUVJLYk53ZHBvb3cwZlZ5YlQ3OXZyTUxwK2tEcmdQUys2Z3pM?= =?utf-8?B?dk9rOGRscFRNd1l5Yy9hTUhkb21keTJXUUVsQzFORnl5RGV1aVU3UkhRUnpP?= =?utf-8?Q?NufqFd?= 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)(52116014)(376014)(1800799024)(366016)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?eUxpK0pBWlVJV3ZKSW5aMTBUWWt6U0RpMEFsa3RRd1BwaE04RXdSWlp0Z3lk?= =?utf-8?B?THZNeWFybTJmaHg0SCtxMGt2Yms0RFZ0dCsvM1VXOExNVDUrN1RnTEIzUGFE?= =?utf-8?B?QXh2Z3ByZU44anhRN3BNZkN1Z1BXbTdMMjc1c21PQ0RWRTRxaUo0bFdISXFq?= =?utf-8?B?TFMzdHBjdXFsTWxnek5sajJtY3FUaDh5WlJPb3gwaDdpSWMzRDhjYitoNmVZ?= =?utf-8?B?SlRQb20xTzdUNk1ncWJsTGRzR0kwZVdiZW94MEJWaDVWT3hEelN3algxa3ZJ?= =?utf-8?B?NnQzUGhJOXFXOVAzQlN3a0luejVyVmxXb2s3NklEMHZlUXZBeU9FSDVUYit5?= =?utf-8?B?dmNTZlBMbUFjMUtkd05yY2Z2V0FqTWpKdmdycjg4UGl6MVZKTjFSa2RkUzVU?= =?utf-8?B?ak1YdGp6a3drNWVYVWo0K01MUUhZTFBlblNFTFhTajZPekh2SDd4bnRpZU5h?= =?utf-8?B?bi9UeXRTUDZxeXM3azRSb1Nsb2hwMFlEVDNGNEZEOXpOUDZoZGw3K1hnV2FQ?= =?utf-8?B?ZjlOSUR5RVZlT0ZqRnlkdER6eGRSTGtjSEF4R1p5TGpMSlp5NGdjVld5OWha?= =?utf-8?B?S0tnSjFRQ3Q0UEVTSXhiSjZGMWxucURGbjkyUmtyWnJzbXJnS24vT2UydXBO?= =?utf-8?B?ZGRFMTJqYnp5MjV4SUlSUGNuRzZRUURJNFdZRHBwbEZYcWZDMEpiTVJFdlQx?= =?utf-8?B?dk9zOE15WktwYlFyellzRkxBekl0SlRJUk9uSkVWcytGdGtpUjZoaDVpWktP?= =?utf-8?B?bUliV1pNYVdEemZiMSsrMjhBWnRQbzkwMU5FTFNGUEwxMzlTMHFWWHRsdFMy?= =?utf-8?B?NmVPRmVTV1ZYZUtmTEpqWGtRSUQyREJmK3prZ1lndFo1UWRweW0rNW1PQWFS?= =?utf-8?B?VHBoak0vSUVVamd0YmFYSU5RQzFwcUNhbFJXL3owblNTNU5NWC9NY2pOQ3Zm?= =?utf-8?B?NWhGLzA2bWQ3aTJRbnRFdmNiQXNYWlhUejZPc1JFWDJJNjlHTWd6S0ZNQ2xB?= =?utf-8?B?VzZGQW84SktDcUw4cUVxT1RqWjdZM0JTNE5YSU55QVJ0SkZhRXFBZDk3ZkJK?= =?utf-8?B?SnV2V3lqb0hsVVczRGJKYm93RFRQUHFaUEh2TVZqTDdUVGxURUNTWkRpa0pG?= =?utf-8?B?MXVxRlBNQVhpcTNaSnNnTXh0cDFpMzU1VG94K1oxTVhzaWxnNTFGRkducEls?= =?utf-8?B?QU1tZVZrU0FxVTZ6WHFkemxRS0RMcmErYWVWSUd2VXJhK2JoT3dNd2RZNWpS?= =?utf-8?B?VEdFWDdCR1FlUDBIbzdHSDQwZm8vVWtSMW82VlpVWm5LdGlpSXJiM3oxQ2F2?= =?utf-8?B?TFhCSnJQcVN4MnZGQnNLYzdyOWF0bjY4WFlkRUxuWkR0a0pHOHh2Y0htcGpp?= =?utf-8?B?ZEVDYnBQd0RScjc4WURhUjZGSzhhSzRLU0wvRVg0VldIS2RIcmtEd0dQVGNl?= =?utf-8?B?SzVWQTIzLzBBZHdnSjJyTGthYWEveHN6SHd2MDBDT2E4bVJBeXlhaWk4S09p?= =?utf-8?B?SjE0Lys1czhBeE90WEdDQUZ4NmV2bHkwdklJL0ZibDlqM0dnWkR6bnRqU08z?= =?utf-8?B?TlBaWHV1RGtWMjQ4TVNYeUJ2UEZDQ2FkWFl0VkczUU1LQmlHTXB1cGNPOE50?= =?utf-8?B?c0ozajhtWXMvUEptLzNFbStBMGhpY2o3Q0VtSEVodlBjUkJUYlNMMDRISGM5?= =?utf-8?B?MndocTRabkdDTkRGekEyUFAwSDEwSEpxcFYxQWZDZmJVMFdJdE00TjJzTkky?= =?utf-8?B?bzJiZHB0N1piYnZ3Uk4rSVJHRDlIa2dJNXRMczJtZHlTWHB6aGZxYVdUSlIr?= =?utf-8?B?K0FUcVVTRlJCOUZxN1NXOUREbWtpNmRwL3FBOG1GekdLNmo3d2pYYit2MFlq?= =?utf-8?B?bzQweWVmOGoyQU5vUHJLMTJoS0xkOExxSkJtOFplSTUyT1daKzFMcWtBZHJN?= =?utf-8?B?aWhVSEgxY2lYQkFHNHp5c1o1cXc3MlFDUElIMFpLL24wUVFYTzJOb05NVHNz?= =?utf-8?B?WjFpVmNWVHgrT3J5bGhsYU03WnQvTjBmRytTakxqOXA5OXRpdVhLVlM2OCtR?= =?utf-8?B?aitsWnRQM0RRR3cxa0pYMFFSeXQxYXhjU2x2b0cwUXZFVTJHTHRlODRDRW9u?= =?utf-8?Q?am2UH3apub/BfM2fw2wW9D2Ym?= X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: c5ba8579-69bb-4010-b89b-08de39996352 X-MS-Exchange-CrossTenant-AuthSource: DS0PR11MB8205.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Dec 2025 16:13:29.4492 (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: jrGvtbVUVGBvSxSRIKIAja0dWLw6HPiZPZR4BXqcyWO0pqlP4vaSOpwtPD+BJaQ+SpyQhZZzIYRBeyBqarRwsw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM3PPF7468F7991 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjEyMDEyOSBTYWx0ZWRfX99hDAJrFfAE+ LsX0AzUj7zicXf8duUUBpbtOH5R4H0JN7whTO66fBsCPKG/IOv7R7glpw5ZEfiaQ9RGPZvCDUHO r46xR86K1INmtC/lbFmcZO1ph1ieCVjDWNiLipc8+Wxah6LdjxjTTllLuNtUL0QX8mKV1jxiRYp MHyy4tW1qyk7F2r4XSLNKuR1v1o4LaLiMZoImorhTRKeOZB5u8StgqXxhpuZWS3JwLhGxL8nJAw u9++8cvouS9AN/JABACJDM5QGudaWaL3Y764aryvgX/78niD1XCejJGUnAGnvswxGVIzkgHjoGe A4UCeJpfsSjTGOpk6ylp6Q+SLxSlGKo5QQcv80bzHiIKuVC8Pt3vwMURZp9dWrjFS/J+Ja5U4i1 WPBn8kbLP9O0Mnn3yEsrLzbHOM/YfQ== X-Authority-Analysis: v=2.4 cv=BKy+bVQG c=1 sm=1 tr=0 ts=693c3f2c cx=c_pps a=OsHIvx7z5txkqQhXuj38dg==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=wP3pNCr1ah4A:10 a=M51BFTxLslgA:10 a=i1IsUcr2s-wA:10 a=VkNPw1HP01LnGYTKEx00:22 a=2AEO0YjSAAAA:8 a=4ZPe5lWXlvbldCu1ft8A:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 X-Proofpoint-ORIG-GUID: SBDU9jBKtgJopJuTEydYA8WSSyUEsOXX X-Proofpoint-GUID: SBDU9jBKtgJopJuTEydYA8WSSyUEsOXX 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-12-12_04,2025-12-11_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 spamscore=0 lowpriorityscore=0 adultscore=0 impostorscore=0 suspectscore=0 bulkscore=0 phishscore=0 priorityscore=1501 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2512120129 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 | 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 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 7f0579fde26..ec43d33dfc6 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 b4dd4e173a1..ef8ff0cac24 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 @@ -84,3 +84,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