From nobody Sun Dec 14 12:18:10 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