From patchwork Fri Feb 28 17:14:41 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?SsOpcsO0bWUgUG91aWxsZXI=?= X-Patchwork-Id: 869555 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 CAC201F4C97; Fri, 28 Feb 2025 18:24:24 +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=1740767066; cv=fail; b=jIs+sLqWB68Fg1BYjK3Wwhjw0vpW1m5NAYuVgrDmO5Thi3XyWkow0/ivg4/ntSrJASvbaoESPxeRw04FyLPoQZrPBERfknzEAVUJOpUQY/ei1gdMU56Uk5TT+YooQUzC277u9c6W0wbiZTwbAuvs1P3sLCDF6XHqNJdBaB/jT7U= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740767066; c=relaxed/simple; bh=TUSbefa1RtSOI1HW0RDRjuD6llP9MiM+MgG1VFe6g1w=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=euS4dsDqA+uhHqKo0or4iboLubMNnf0tAYPRlz/4P11Cr5EO/ztf/TL8NfvtqFXrpFXW2fU3L8NN7nnkbc2KYSbbQd0v19WVSX09f4G9Tn60O7KNBwr0dg6VP/eRO1o/DcDVOuTnKLVnVp1uMcr5Imh+3Vy+m9hBO5y5z6mnwU4= 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=xTDR+ZRM; dkim=pass (1024-bit key) header.d=silabs.com header.i=@silabs.com header.b=B11PPXz4; 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="xTDR+ZRM"; dkim=pass (1024-bit key) header.d=silabs.com header.i=@silabs.com header.b="B11PPXz4" Received: from pps.filterd (m0101742.ppops.net [127.0.0.1]) by mx0a-0024c301.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 51S8EhYK012718; Fri, 28 Feb 2025 11:15:01 -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=TUSbefa1RtSOI1HW0RDRjuD6llP9MiM+MgG1VFe6g1w=; b=xTDR+ZRMXPY5 eIj96M326NBLiRrABVkUFXznVUy66uMSHjy6nzfhPMOg0oP/h6J8T9L3vn6LuK7i 74PVLPrIvNtBWwKpW8SOIFtpK3igLiQIJp3tzgAlKMRUknwzzNJTVLcVLaXd1kUq iP4SSCpED+QoNnDyKkT75GH56cR3HK8zC3cUVfdMkN4d35Y/O+14/kSahwG5t1S8 MszRqhtjitlVqHG/18fzjtRLXDA2mN3l4gwwNdcrGQogFZ97FeoLX6dtlq611jLL +h2EIjdedRQef40t1e4sBLDvnZT0HhD0B2bIVKS8dWvPzHSebLZpCpNVifx7A/2t icNOroIWfQ== Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12lp2044.outbound.protection.outlook.com [104.47.66.44]) by mx0a-0024c301.pphosted.com (PPS) with ESMTPS id 4539fbrujd-4 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 28 Feb 2025 11:15:01 -0600 (CST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Y6K+GJpwvzJRWhSJIfr9yPx/Lqk0JKNZju1iDe92IoAcy9V8BAARMBzP6uKXqnFH0hlaffmYwtxA4IpKOHHftfZD0+QVYncVZvqWeA5NKqDXMkiSt+tps8TeCBlD50jdmK/YJYeljRp/UwRYxhNmLFXO4O3HCHGXH+ah6aO3RvA3XYqmhgW/CHUOmQdYxV+nm1f0NM0awkaZxGHicsp6fvnnXXbxAJjsoJPVEiJDhyRV/7JgMHWe7lnWykxZOq8Ny5c059MEsRGc1N2jbsyAgr2lY9aeFj7g63TU+MS+kDFrLTLJPxQSwrhND6nghtAQWYldVId3FqOcgdct7+V6oQ== 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=TUSbefa1RtSOI1HW0RDRjuD6llP9MiM+MgG1VFe6g1w=; b=gT5MEZrrqBzjVFxasWdiCQBF8NnjU8ZiUf1/wKRziQHIwAl5pBlrKo9uJ8XD9YP5WQu6H12wtGPRlS1F/6aAyRGc1/MSh4SZbvmAi6Qe+/RDXN0y8mFsTNrj2YzeBohNe8YQSFsqrU1SQHZWJfY13t9JMpg5nSjl64F7M/vMedqNkXeexZgLdML7s/fhwz/Yj759LyTukB5M641Puh7Xvok+2qvowB2ZMQIZxqVqBCZ2YoxJSTkFRvHidq6KmK3ti+SfALfCBOJ0kNwXpqRIfJXgeExTIUzuy+q9+TzhaeeQzh3k97WanAGubL4Fc9WeRl7LlJCioGBi8+XitlZFNw== 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=TUSbefa1RtSOI1HW0RDRjuD6llP9MiM+MgG1VFe6g1w=; b=B11PPXz4kc76v3qryBY8PflAFvk9mSptOSUGu0dNEuQLS4jlyUWXE67XjjqdaTOX8PFqVsWIvoey6Iu3aM/HQQaubchUvVucDPNeeEw6DIsTjRGX+j9V8tv00gUb7cJCOfFfKf2yXyT/DTgnbr9Ht00IaV5+yxxCiu4gxnmCXbI= Received: from IA1PR11MB7773.namprd11.prod.outlook.com (2603:10b6:208:3f0::21) by SJ2PR11MB8567.namprd11.prod.outlook.com (2603:10b6:a03:568::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8489.22; Fri, 28 Feb 2025 17:14:58 +0000 Received: from IA1PR11MB7773.namprd11.prod.outlook.com ([fe80::e78:8cb8:9f49:4005]) by IA1PR11MB7773.namprd11.prod.outlook.com ([fe80::e78:8cb8:9f49:4005%7]) with mapi id 15.20.8489.019; Fri, 28 Feb 2025 17:14:58 +0000 From: =?utf-8?b?SsOpcsO0bWUgUG91aWxsZXI=?= To: linux-wireless@vger.kernel.org Cc: linux-kernel@vger.kernel.org, Kalle Valo , linux-devel@silabs.com, =?utf-8?b?SsOpcsO0bWUgUG91aWxsZXI=?= Subject: [PATCH 5/5] wifi: wfx: allow to enable WoWLAN using NL80211 Date: Fri, 28 Feb 2025 18:14:41 +0100 Message-Id: <20250228171441.109321-6-jerome.pouiller@silabs.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250228171441.109321-1-jerome.pouiller@silabs.com> References: <20250228171441.109321-1-jerome.pouiller@silabs.com> X-ClientProxiedBy: PR1P264CA0058.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:2ca::12) To IA1PR11MB7773.namprd11.prod.outlook.com (2603:10b6:208:3f0::21) Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: IA1PR11MB7773:EE_|SJ2PR11MB8567:EE_ X-MS-Office365-Filtering-Correlation-Id: cf882eb3-1e93-4e9f-637e-08dd581b6dbb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|366016|52116014|376014|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?azleh9wdEALoA9J+4quQnmQARZdiY8A?= =?utf-8?q?3aq0qBNNLLPcJQZwZsNdc6wqU7j30tUIYJdLLpBGS1CFs+lGgmev1i3gmJOz0DolM?= =?utf-8?q?D5X82LPKetRunQJFOGmihlDlVjbvF1UXO4riV8kT3hJLTABezinMnQRY2ANAOva4F?= =?utf-8?q?WpWEhFWwuKRkHSsuqrT2MRfqhJl3Y3/gAMfQNogazVrNDeUYKWKPKdBiMbv5Bvb2z?= =?utf-8?q?3QGs45I/HjA6gFNJYCEUkpD6bvk3ul11k9KbBkCw9XraDuk/paN16caS4Ffj7TJgN?= =?utf-8?q?CHGYNkAm0q/v2cVLwIwin5lpJoqyfSNJd3VmLoQND9oIiStDbuqsv3Ag5fgweiSpX?= =?utf-8?q?vyuGgCqELEETs4BBC1+bX8wko73JQi6pb2ttVM/lZcctr3g4khbqRsiz7erHlsTqS?= =?utf-8?q?VUV5g5Y5h58i689Q74CoHz+0KPM+RmqLmdbaN3Yru+e5eincIeZ1rIr1OKkIr+YBx?= =?utf-8?q?7wib+5mU3GXHsvmrC7wMlGykX+LDNduOhPEne5eHnwGbstOj58ii0EwE7JrELnFDi?= =?utf-8?q?Hib2HI4t9a8WHvQMSF2wjptwXDmSXs2CQnIPCht9bKyH/X+80h4GUsivxxDw6e05R?= =?utf-8?q?Pvh1JfFVi/+jp1xdBPTi7FElfIopF0DAHme+Bsga9XxQZtMme79f6zfjQNRrRKktf?= =?utf-8?q?QhpAd2nJHP0lFm7aQSvUpFsCwJXRGblSaJmuuwvCJfsUe0hzegv4iLpQlckmMSBqo?= =?utf-8?q?vMm7Ssy6C4emXVgI7E5Q9NBrMow/lIAi4u1TWoP907Sn18cE01uy9fxri0DwFvLdQ?= =?utf-8?q?E0YH7vgpQMzoYpJ1H6htfGZpwThUQHhBKNZeF/SHkufAFs5fmSi6pn4o/RUppayd1?= =?utf-8?q?qDZwIAM3oGucvn5BE1wYrYib3Fyr17qp+ZxW77h1tr4v8YGcVxMFy3lA6FtRhGfMD?= =?utf-8?q?UKeKa1PxuU10mRX2yBSadDRtG28SUoryQ2UCYeAvwkFQRIhKy8giOf/GwC4kGQkkg?= =?utf-8?q?GdLw11/2jdQRcVCKlgcmafJzI8sPA97hEKY0GzDITeYWmPl9CwVBkHhMrYxJV13av?= =?utf-8?q?XbBkeON4gO/E8qcRx7Ls/rPjAosa8aJq6HBHlCvihtdnEhGEUXVVXTQE8f+VFN8KO?= =?utf-8?q?LVpOUnVZya2cWxDbeOZtWK7U6QfgSNrFyifL1Dzmc4ntf29tO8wh7ogf/nzb2gjaG?= =?utf-8?q?IBTozsz20WPUqhVnc8mclgtoI3mFOZTXoJJ55mLbDdZ6+xwnSNd1733wzSeMCR3gU?= =?utf-8?q?Q1TXdX24HxTnz4VArBIYEEChcTnZCzL1zXAN6ge/6eJN7rG3qdpJSbWiAQUF//KD2?= =?utf-8?q?hFS1DbaxAgc2Mrx0ln00nvgmbeFCSEWyFFAKxUK9XIPNn1YwxXVHPgW07gwgoxVuQ?= =?utf-8?q?Zg0t3zYkgmEnxd1a9jw7s4uiVSnBCK7z33bMplUy3+nZG1GKGv7/uixnMbCKOJNAH?= =?utf-8?q?FIlT4Jdd4eQ?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:IA1PR11MB7773.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(366016)(52116014)(376014)(38350700014); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?v93M/4TFSCEHg5/MXrCr+ppmqWVb?= =?utf-8?q?PZn6CAE2pCxDPY90NYwwqjsJOPvPHBWvc9je6TRdc4Trp5GMYFR5dJvF2KdqayIBd?= =?utf-8?q?Q74uwZTJmtvyh9UNj6tuSCSYCyZahWQJ9yAQzeWM11dbEeIZ5EEWH2To+g0MtI9oL?= =?utf-8?q?wquwZ2cvtErXXP4SfzDONLjsohK5VbW7kZYZDJaqnIxEW//wuE55vVXFcYeNlXKjt?= =?utf-8?q?kzsjEO0YlFAaUznDTrmbfcen5IMEIBBwvmtteaDYFb1xqLdrPfsgepAg7O0oLDnay?= =?utf-8?q?GgofA9IyHRuwH849P1Mk3x8LB4UCSeTfc39YEy1FFTj9rGDiZ6j2d44e4qRu7uSjI?= =?utf-8?q?WopSn0A3JW9hNF6tgX2TvSKjS6MJ6nFw53BbxwewD5EgwPjNobAasOboq8mU72O6V?= =?utf-8?q?nFcFhUgKPCYUWEqcLl2k0oKX3nfFuPL3Hzmi72qnRQ+O/30UQ14wkhhcm++4AmBYt?= =?utf-8?q?4vqyqPJNWCe2Cj40X+9n+cCiOH9a5DqfgItJqTSkbQ7jmprStPrV3rCt0PgCNlQEX?= =?utf-8?q?N1wYv9YT1c003DWwHWO+T95ZIOBlquaIv1h50KYutlfiE53Ke64K9u3xRPJjcTsdB?= =?utf-8?q?zY7OTLNAQoF3yqU2HA3vQ7iYjicbLnY3ObDbQo8lsAqm7rS11/d6t70ieFRnDt4Jv?= =?utf-8?q?sef0VpqLmvnJrrxBoTATT0o5H6RaFHxpDEMH3S/uYKXL0gStL8QZYlSXsnkOX9vYk?= =?utf-8?q?HV0bNp8iMNOrYZglSnwY3pSd9VTzprJp2vOZ3FvaSuw7qyiYFEnJWT/Zp4dTkHWjC?= =?utf-8?q?osx0ItwV7Yl//GzLN9aNUlcSyaeCmFWHphn+0/Pueh1kLiUgCXExwc+7Z9SbajJDs?= =?utf-8?q?c3LoPn1PcsXKhAIQsnBgpfFK5vfPpOBmW3Hr+Wvfv5Kw1pqqQSYno6/VnatfLdoGb?= =?utf-8?q?XGuQUWjqyduRztEevQB3J0s8U0tJMttGySs6GCKUIuD4cBZuO4DXrjrUM9WOFuBrj?= =?utf-8?q?Ys19rMKIFMODuRRMTaNTJcxXr57rksk3XBUcF5NhhR9w29LxrA3Rn5/uH9HRp95VO?= =?utf-8?q?eE4XvMRD/EmCKlAs8MRjfsnBOHTV4TmWJZJpxzgoIwbMuqZ2dn2eJavb05mAM1IWT?= =?utf-8?q?y8Hv1F/7IEiSlsrgRzkBxol+ZtIYAzhPX3PhbxH6A9aE/EkUxKQTD0CiWrukLceFy?= =?utf-8?q?z+Z1lHLl8gF54ugV8STRZXsEFXIA+HgNqHCxKM6WiXu/YIIYS7VrHd21Rk+Bra8U8?= =?utf-8?q?Gq2hjdZMLYAFvRdlURotEYJWHlof8mCzU1EqPMfe3onaaT8FVm5Qv59bbK+GWs3Gr?= =?utf-8?q?X3B9/eZd3c6Q/0M6l8bfJMy3AXcKwTxYw0jcoNdjbWBWTlM5eOgNO11r8G1GY9w+y?= =?utf-8?q?hTw0kGRvlJrY8UgMNNnjrxmUO0sd4p38ZTcJqJYjcHsyjuzQfZJlJGSADBaivbEp3?= =?utf-8?q?1Xq2iKW9rgB3kgrODZQWUkGK9DkW6oF9iPaBn9LrcS51QAWAmAe5O8dzpfZV/Ut1v?= =?utf-8?q?YFp9Bk6It8DCZp9khZ6JX0LY+qpLFZS5CddIvT5pGxoLUAi+0vN/4qO3Kjh5Bd0FE?= =?utf-8?q?Q3kK1f/SvIHp?= X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: cf882eb3-1e93-4e9f-637e-08dd581b6dbb X-MS-Exchange-CrossTenant-AuthSource: IA1PR11MB7773.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2025 17:14:58.6040 (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: jjxZLQ369uBVoIbJtctIVQa2d9Xj77cp+tQB0UI52d3EVNtEOxdoT1cIWPND/sHcxJk8uQL88zAlrWDkORHCGg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR11MB8567 X-Proofpoint-GUID: VgiV9FLJyyG_KBItkHQ-he41_EVTwrP- X-Authority-Analysis: v=2.4 cv=BptnwZX5 c=1 sm=1 tr=0 ts=67c1ef15 cx=c_pps a=+tN8zt48bv3aY6W8EltW8A==:117 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=T2h4t0Lz3GQA:10 a=M51BFTxLslgA:10 a=i1IsUcr2s-wA:10 a=2AEO0YjSAAAA:8 a=OlggIWMgOj6OOkBI_M4A:9 a=QEXdDO2ut3YA:10 a=d-TXpq5eZF0AJmg2YLt_:22 X-Proofpoint-ORIG-GUID: VgiV9FLJyyG_KBItkHQ-he41_EVTwrP- X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-02-28_05,2025-02-27_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxlogscore=999 bulkscore=0 lowpriorityscore=0 spamscore=0 impostorscore=0 mlxscore=0 phishscore=0 clxscore=1011 adultscore=0 suspectscore=0 malwarescore=0 priorityscore=1501 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.21.0-2502100000 definitions=main-2502280126 It is possible to use nl80211 to request to the driver to do allow the required bus configuration to wake-up the host. This patch implements the required API for nl80211. Signed-off-by: Jérôme Pouiller --- drivers/net/wireless/silabs/wfx/bus.h | 1 + drivers/net/wireless/silabs/wfx/bus_sdio.c | 8 ++++++++ drivers/net/wireless/silabs/wfx/bus_spi.c | 8 ++++++++ drivers/net/wireless/silabs/wfx/main.c | 1 + drivers/net/wireless/silabs/wfx/sta.c | 10 ++++++++++ drivers/net/wireless/silabs/wfx/sta.h | 1 + 6 files changed, 29 insertions(+) diff --git a/drivers/net/wireless/silabs/wfx/bus.h b/drivers/net/wireless/silabs/wfx/bus.h index ccadfdd6873c..79edaef20881 100644 --- a/drivers/net/wireless/silabs/wfx/bus.h +++ b/drivers/net/wireless/silabs/wfx/bus.h @@ -28,6 +28,7 @@ struct wfx_hwbus_ops { void (*lock)(void *bus_priv); void (*unlock)(void *bus_priv); size_t (*align_size)(void *bus_priv, size_t size); + void (*set_wakeup)(void *priv, bool enabled); }; extern struct sdio_driver wfx_sdio_driver; diff --git a/drivers/net/wireless/silabs/wfx/bus_sdio.c b/drivers/net/wireless/silabs/wfx/bus_sdio.c index bd8e1ffb61bb..5540f2c66075 100644 --- a/drivers/net/wireless/silabs/wfx/bus_sdio.c +++ b/drivers/net/wireless/silabs/wfx/bus_sdio.c @@ -173,6 +173,13 @@ static size_t wfx_sdio_align_size(void *priv, size_t size) return sdio_align_size(bus->func, size); } +static void wfx_sdio_set_wakeup(void *priv, bool enabled) +{ + struct wfx_sdio_priv *bus = priv; + + device_set_wakeup_enable(&bus->func->dev, enabled); +} + static const struct wfx_hwbus_ops wfx_sdio_hwbus_ops = { .copy_from_io = wfx_sdio_copy_from_io, .copy_to_io = wfx_sdio_copy_to_io, @@ -181,6 +188,7 @@ static const struct wfx_hwbus_ops wfx_sdio_hwbus_ops = { .lock = wfx_sdio_lock, .unlock = wfx_sdio_unlock, .align_size = wfx_sdio_align_size, + .set_wakeup = wfx_sdio_set_wakeup, }; static const struct of_device_id wfx_sdio_of_match[] = { diff --git a/drivers/net/wireless/silabs/wfx/bus_spi.c b/drivers/net/wireless/silabs/wfx/bus_spi.c index 1d6bf3525f4e..257bc3cd1197 100644 --- a/drivers/net/wireless/silabs/wfx/bus_spi.c +++ b/drivers/net/wireless/silabs/wfx/bus_spi.c @@ -180,6 +180,13 @@ static size_t wfx_spi_align_size(void *priv, size_t size) return ALIGN(size, 4); } +static void wfx_spi_set_wakeup(void *priv, bool enabled) +{ + struct wfx_spi_priv *bus = priv; + + device_set_wakeup_enable(&bus->func->dev, enabled); +} + static const struct wfx_hwbus_ops wfx_spi_hwbus_ops = { .copy_from_io = wfx_spi_copy_from_io, .copy_to_io = wfx_spi_copy_to_io, @@ -188,6 +195,7 @@ static const struct wfx_hwbus_ops wfx_spi_hwbus_ops = { .lock = wfx_spi_lock, .unlock = wfx_spi_unlock, .align_size = wfx_spi_align_size, + .set_wakeup = wfx_spi_set_wakeup, }; static int wfx_spi_suspend(struct device *dev) diff --git a/drivers/net/wireless/silabs/wfx/main.c b/drivers/net/wireless/silabs/wfx/main.c index 83fd278e615e..17ba2c59e53d 100644 --- a/drivers/net/wireless/silabs/wfx/main.c +++ b/drivers/net/wireless/silabs/wfx/main.c @@ -160,6 +160,7 @@ static const struct ieee80211_ops wfx_ops = { #ifdef CONFIG_PM .suspend = wfx_suspend, .resume = wfx_resume, + .set_wakeup = wfx_set_wakeup, #endif }; diff --git a/drivers/net/wireless/silabs/wfx/sta.c b/drivers/net/wireless/silabs/wfx/sta.c index 9e06f8b8b90d..e95b9ded17d9 100644 --- a/drivers/net/wireless/silabs/wfx/sta.c +++ b/drivers/net/wireless/silabs/wfx/sta.c @@ -10,6 +10,7 @@ #include "sta.h" #include "wfx.h" +#include "bus.h" #include "fwio.h" #include "bh.h" #include "key.h" @@ -816,6 +817,15 @@ int wfx_resume(struct ieee80211_hw *hw) { return 0; } + +void wfx_set_wakeup(struct ieee80211_hw *hw, bool enabled) +{ + struct wfx_dev *wdev = hw->priv; + + if (enabled) + dev_info(wdev->dev, "support for WoWLAN is experimental\n"); + wdev->hwbus_ops->set_wakeup(wdev->hwbus_priv, enabled); +} #endif int wfx_start(struct ieee80211_hw *hw) diff --git a/drivers/net/wireless/silabs/wfx/sta.h b/drivers/net/wireless/silabs/wfx/sta.h index 70ccc8cb7ec7..8702eed5267f 100644 --- a/drivers/net/wireless/silabs/wfx/sta.h +++ b/drivers/net/wireless/silabs/wfx/sta.h @@ -58,6 +58,7 @@ void wfx_unassign_vif_chanctx(struct ieee80211_hw *hw, struct ieee80211_vif *vif struct ieee80211_chanctx_conf *conf); int wfx_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan); int wfx_resume(struct ieee80211_hw *hw); +void wfx_set_wakeup(struct ieee80211_hw *hw, bool enabled); /* Hardware API Callbacks */ void wfx_cooling_timeout_work(struct work_struct *work);