From nobody Sun Dec 14 12:13:45 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