From patchwork Tue Mar 18 05:07:39 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeff Chen X-Patchwork-Id: 14020325 X-Patchwork-Delegate: johannes@sipsolutions.net Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazon11013029.outbound.protection.outlook.com [40.107.162.29]) (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 341F71C700B; Tue, 18 Mar 2025 05:08:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.162.29 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742274522; cv=fail; b=gYF2MnmojAtWzxNvuU90q2ZP1qd6NWCXN7Hk7iWrX2uoGGIrKp0VUDUxMdhCCTnB4sjA/JhezaURLeYCx0jFaNN3LmXKv5jUTnjDru4q++yOsmacT0Q2BPTcZWzOn9resNta2wp4uYDsvh8Iv2zUt95pR3j0IOTJxbO0v4QWm60= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742274522; c=relaxed/simple; bh=Ulw0LJWPDjTqn38zyFdN5mMBAdNTkR41njDpRYKlG2I=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=M1JU6LK281W45tI5fMzySB5m1o0p2j05Qhs/OZdxEUHOS0//YGDP6Lq0VRfED64hJpbvNkaUzClbq1NmIb4sKQZqXa+TRMLpMot+D7XLk88pUxvkpOu0+QyjydH3kSfeFnuz2uCMUetLvcmjSxoATtajFD/u9ZbA5/U7033838M= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=Q628SxOr; arc=fail smtp.client-ip=40.107.162.29 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="Q628SxOr" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=T+8cJpRUXHMAZKTylnQvd6aS3YpZjvOngwPzxeOIRi6Z2Uz175vc0cC2a0OnMllh3OpkCcADhk2wzzhSHqXsqVc5wjmvVIJOg4qgExmtvUYFOiW7bzr8e61ZsoDnB6Ooxk3ek7msgQ4yjAQFgXoZSaHfD8BIOnpb5R3JsaJirJJh7qSmgZOHephw0lyWRLBV8nazAl2VSwa+yyOjJS8qTScG9jFoZXFkjoXzwmZ0zN16QfvPu1oiMZPEEyt8VycNmzhyOAjqEEmyBVI2w4osZKWticempYnJmXMx+1mebWhSyF4e0WTOZu5BSCOze8r9kNcka4Jt8Rme+EYIZtrftg== 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=TUWZi7GNsvO1xvgnuy82RDD2l8HnY12mO7Sl9wj+cBU=; b=M0wBl0HznjsQly0/c9NRlPgYBooUWVvp6aRAsP3AiEJU/kw946h0SdO7N4bvFULu0V+TT6YDuvynbcr8kE1dG0nY5iMJQ0F5H7Cltmjuhn/iriNRHBRclVdIk6MVqjdbwUdxPx1K33jOqIOFiufSIbPCpN2j35Wgh0k2twbv9UHaqEoH/5e89Dr+jYk6xTaBIdUisnKj6I+JJyP5g2wyjqQ3g6O0SDuIEO2iiiLv9Zv6QlHW47L2Aijl8SskmLb/KVmLDoX+smykiybYhCPPHAa7HJX5hmhh9A2RfufMsvdJOQevOe5nmsZenvWT72Qcs8rqDSoPcIJSsrQBDTeatQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=TUWZi7GNsvO1xvgnuy82RDD2l8HnY12mO7Sl9wj+cBU=; b=Q628SxOrH8MChddz5ymnwuai0PIrhy2YtTH8WykBDQdpQfP1pcXfbHJV6mI4FubkZPq3JoJBuKuojmo/2Z/YWb33qFGJoF8A08npfnEyqATcRbwtwPmd78Cu4sZq7SfgUnNPAnWen+nhAAUx7xQJ0EKfcKKdjk+rP14+4hFx/i978xocFHfyoQrv9jhm8VhS4h99lZajFIZb8sY7qMEddXAC51G7QN69ynqgZ1I2VUiRw7RWUJ+3PbW2xaw4MnSS6FIUpSVyboR8FIux9mCJ6p4+EoMhqAXiW8Qadob3nxlGdinAe6CJF3pXv2C2kSBWfU3E2sbpeihjcPXgqj1J+A== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAWPR04MB9910.eurprd04.prod.outlook.com (2603:10a6:102:380::7) by AS8PR04MB8022.eurprd04.prod.outlook.com (2603:10a6:20b:28a::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8534.33; Tue, 18 Mar 2025 05:08:37 +0000 Received: from PAWPR04MB9910.eurprd04.prod.outlook.com ([fe80::24b9:b9fd:bcc0:4ee6]) by PAWPR04MB9910.eurprd04.prod.outlook.com ([fe80::24b9:b9fd:bcc0:4ee6%7]) with mapi id 15.20.8534.031; Tue, 18 Mar 2025 05:08:37 +0000 From: Jeff Chen To: linux-wireless@vger.kernel.org Cc: linux-kernel@vger.kernel.org, briannorris@chromium.org, johannes@sipsolutions.net, francesco@dolcini.it, tsung-hsien.hsieh@nxp.com, s.hauer@pengutronix.de, Jeff Chen Subject: [PATCH v4 2/2] wifi: mwifiex: Fix RF calibration data download from file Date: Tue, 18 Mar 2025 13:07:39 +0800 Message-Id: <20250318050739.2239376-3-jeff.chen_1@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250220061143.1417420-2-jeff.chen_1@nxp.com> References: <20250220061143.1417420-2-jeff.chen_1@nxp.com> X-ClientProxiedBy: AS4P192CA0004.EURP192.PROD.OUTLOOK.COM (2603:10a6:20b:5da::12) To PAWPR04MB9910.eurprd04.prod.outlook.com (2603:10a6:102:380::7) 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: PAWPR04MB9910:EE_|AS8PR04MB8022:EE_ X-MS-Office365-Filtering-Correlation-Id: cfec5761-00e5-4976-e637-08dd65daf0e4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|52116014|366016|376014|38350700014; X-Microsoft-Antispam-Message-Info: HFx4RNI9Lbup5lHBbtXjZBd30saft0WZJeZPoOROmSC4J5EwOdOc2yr+XihRWOqqAmEQ+Zg0JeBGmyyvQojGVlh4/isshCUjGtQyQs+BIS/xsfgJWQbbIPD5x5r8/113FxSmZDXklEnPwLY8bqGIkBDl/Vgv6WTMPZTJxK1apt9E1YfYiB9Nla/p13kXp18oTFmKounUZ6pVyg4nS3WjlQfUfKKHTA5JrNG7IhQ8jm/0ITxkry/Wr3iFHzX+UdjtuzwrjaCsdYXo1kpoiyyBHQD788UB52DHHoGnjN2L6iP6XkHNFYgUBGsp7nMu7n141rHbEfGIwNP8UuI4gHbwJ5q9RjJqgVNg7tkCszU7MphVx28wKOA8mTv4UsTEjtTBoAwt8oWJ089p84yoc5oPNaExcvz4AcwowgSnPaa7uWMBnLjtCCg8nIGSf/GSfduCD3ftxjp2UK/xC4+FEVixEVwnUbAKxN9s62FU2wPOubFUh6ex/r5o+AycRd+cMmdY13GMNKmOFMLcXSAD1fclRYltSXFd9KviIwLlA6NJ1fJTOwbt7eeT2FdlmBaXyU0UBavt0FeguVt4vB3gh0WN+HT2YapPqXlXOt3K3bed/kjP/aeBiUYG8gTBA3P63APl4jjXVzFVUBiuQE3/VIsryHoG7uzqUqmkCq7FE8Ke1aurHq/t+ceCQ4r3oFv75H03d668KFD2w4gvHaF1Fxqw+YmI7NeqIplPAgwf6LMpzmX0+9aIARF88+Fif6MFO+L55WY1uAS30EOHQWZbFt010l2RAw671Ty/zPM08xx/CsITjjUaXt+ShLYMw67GpOMlRRYB0+e+LCZhBd9SRByNsXj6A/Rt/BA4QlR+9rVs7rOzzfj2hVq9uLY407h1Lcq5ghV4TwpE5JSd9JPTId1JxeyfpSUK4MwIJNFY7fYWxVDmfrV2T6SLMeryTLcP0WIOMedbZIi7znZ6dm/PVHeF0CtD3jWMVZUgIJqZe0u0Sps4ubIWxtP1eOslDYbk/HMNzIfCeDOLAwK7s9MeLKMQM+UOhGEBQiz82bYyxSPMXVyHYhsqYRF8JtZYfZS6v7f7WRQI2IFBpwoUK+mXFJG0jujt0lhl9WPqSh9AzEzODZnacKvHKcZQ5/2t9dVxKDL2/5O2SxM7EkAGJNru9eVJhOo2rlFhHHqw5PlFBn8/xfyO6o2NQDnhVyobNrMA83OdFiRelVyADmA+j2qcnVIpaOMDH/GlTZ9Vhn66F0BA9YukvQ7qVjX6NL77uRDfo5a6Sr9d3/G2oM3oKVQu8xuFx9pZR1f2M5z6ihKGZoXqRMkIhgCkEngoARnAPtU0go7xnW4eQ4zsljW4WsLtjFxlQRK4f4Hy9R2UOtSNrsej2rK0FPxYFbL+ajpv9ZKV7bHMh9v2SAHAQYkWEHP61RyMz/IbQtSPQ8f5se4+sa7MJobIQnBmllWLeQwFNNNasp5m X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAWPR04MB9910.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(52116014)(366016)(376014)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: xFEJAuTrXbf6eRedLlhKaPN8zsT9EgLuLmhqYGM0P9TFUWdqtSQjjrY/DQenVs35CQ5io/1FeF/mHAYc5rNdgzWZ7tnVoRxbtkD2KsOp6gXMv1URBi9gxSeMgMmLWWQe8zn0UBL2hJz4ogkatPm3mN/MudsT2pzfMAPiM+22wVXuTyiMwBI8YwoRXqimO3YBXGvh0h+xJNVRq42tUI7rlBw1acpoi0kb5H1OmAmB0W/cFTN/GOBkaFStW8BsW+DThMORj6j8RpgBrDby3YtQZ+nrX+gVKDg07qZLoMFSh5PUYmqtj4waec5lYv2S5N7MyvoOCqDsi5wIpBXbwEbMUXaCRtlLocAG1imWEZbi7KQFNAW00eDUoIfSJQhrSfZsWRc5yGWFaJW9Nt4JqfKJymHLtbCjWbi9TWHdToRNCW5IxLDX2CnZnU3/gmHsj3Vjd+NgfEC8XTehUeM76alWJysMrMiBnftqfPBQZHuIVH38epDGrTzaI+zR5iZV9Qd67ka8WfWgx+Ru4DFK3xQMaS1Sur3pIzhiWpxBqU1w0n+Agz+UIVPqF8Z7uLGSxMoa6UqtpxHCpjC4OO5cHUqfwy5h4azIguNjTGXur1WvauvjkeYCKhEux2/oNV6nLXcWoqpRs2vzxBAnluuWuhBevP1k4a1EN+ZkOhRYkOwn/BWulVY3YXCLCf47kQ+MphRrRlL2P1ukUV/RwcC/SOGWSC0Oyo7xI5jMzT1NQiYlPaWXg5t+X1/riWRB+/4TFgxznzuMgyFHQmdNnpJ/7o+VIye2EvUeKtKpl98cQGgqAfXxZXUDhg17IiYbdSUJMFDJqW1F1YRwB7fie9iS+yr02gHY87oKBiLmHROXr1HxbuxBtlN64kWF8ltGii2Iz5xq971FMErWPeha2Wa304QZX1p2Zv6RFPASKsDXIyb+3VAlzjyvlYYL4s0LlvnRt1878lshtld3ak4UVpCKtAOlzX5yxQ+u1ZbLkBruTIp74eyq/n46BO6ZFwTDsfgcAYgDAUYb9AkxFcxufOrMXddMWFjc0Hcl6mBGk+J6qMjnLJ9eDG7SNc4OJuzqnwQGIpQY6iemyNBClZHxX9OL24htrcRVKGM5dja+C1uZmcm817fTLkL0vJikNFeZkf+tFghIg3BufBVL0aw+SWMut22RLTfHDDu3KkDRmdc7KngyDhqWvfLpUsAHtUzwozM5DSaW324Ny6COqWKHKLTc5PDX9bF5d0Uphi7pK3MyJi8KLsYguQXEVbiGmr48dGJz6iX3kLJ2JepNYVRWrJqZN8Il2yg5oYULvEBqO04pxykCRU9UIM1CYK1Xq2zDdkvSoYID0th489Bc2oxvVANg0AgUAn/3haUPu4AxexCqyHyT6oD4jWjkAwHqK4bTl+5B5Xgwyqxem8qpKeL8mM/0Y21oQECTrgLfW7NYA8MToKiEwNp2XVQDV3I2E7PvAd0fRc3fmJpJRlY4LvrB+33ij2kP4hjPbXHOcuacEin1HsRVQeC0KHiK3QF3bSHpnyPaIq5pubiDSvaxB2o7lY1Z5zJV4icWO2LpSocz4X9gK78eIRAlh1a2d1pz+UqEncNShWgw X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: cfec5761-00e5-4976-e637-08dd65daf0e4 X-MS-Exchange-CrossTenant-AuthSource: PAWPR04MB9910.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Mar 2025 05:08:37.8254 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 4Yv+H++AyLEyUdZEhTZ37AmPfvh2824QVdhwD6Z6kzgrNJknROUgy1yyltdlBUBVln8d7MLiD7VWIKP4IUKNig== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8022 This patch resolves an issue where RF calibration data from a file could not be downloaded to the firmware. The feature to download calibration data from a file was broken by the commit: d39fbc88956e. The issue arose because the function `mwifiex_cmd_cfg_data()` was modified in a way that prevented proper handling of file-based calibration data. While this patch restores the ability to download RF calibration data from a file, it may inadvertently break the feature to download calibration data from the device tree. This is because the function `mwifiex_dnld_dt_cfgdata()`, which also relies on `mwifiex_cmd_cfg_data()`, is still used for device tree-based calibration data downloads. Fixes: d39fbc88956e ("mwifiex: remove cfg_data construction") Signed-off-by: Jeff Chen --- drivers/net/wireless/marvell/mwifiex/fw.h | 14 ++++++++++++++ drivers/net/wireless/marvell/mwifiex/sta_cmd.c | 11 +++++++++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/drivers/net/wireless/marvell/mwifiex/fw.h b/drivers/net/wireless/marvell/mwifiex/fw.h index 4a96281792cc..91458f3bd14a 100644 --- a/drivers/net/wireless/marvell/mwifiex/fw.h +++ b/drivers/net/wireless/marvell/mwifiex/fw.h @@ -454,6 +454,11 @@ enum mwifiex_channel_flags { #define HostCmd_RET_BIT 0x8000 #define HostCmd_ACT_GEN_GET 0x0000 #define HostCmd_ACT_GEN_SET 0x0001 +#define HOST_CMD_ACT_GEN_SET 0x0001 +/* Add this non-CamelCase-style macro to comply with checkpatch requirements. + * This macro will eventually replace all existing CamelCase-style macros in + * the future for consistency. + */ #define HostCmd_ACT_GEN_REMOVE 0x0004 #define HostCmd_ACT_BITWISE_SET 0x0002 #define HostCmd_ACT_BITWISE_CLR 0x0003 @@ -2352,6 +2357,14 @@ struct host_cmd_ds_add_station { u8 tlv[]; } __packed; +#define MWIFIEX_CFG_TYPE_CAL 0x2 + +struct host_cmd_ds_802_11_cfg_data { + __le16 action; + __le16 type; + __le16 data_len; +} __packed; + struct host_cmd_ds_command { __le16 command; __le16 size; @@ -2431,6 +2444,7 @@ struct host_cmd_ds_command { struct host_cmd_ds_pkt_aggr_ctrl pkt_aggr_ctrl; struct host_cmd_ds_sta_configure sta_cfg; struct host_cmd_ds_add_station sta_info; + struct host_cmd_ds_802_11_cfg_data cfg_data; } params; } __packed; diff --git a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c index c0e6ce1a82fe..52678e213050 100644 --- a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c +++ b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c @@ -1507,6 +1507,7 @@ static int mwifiex_cmd_cfg_data(struct mwifiex_private *priv, u32 len; u8 *data = (u8 *)cmd + S_DS_GEN; int ret; + struct host_cmd_ds_802_11_cfg_data *pcfg_data; if (prop) { len = prop->length; @@ -1514,12 +1515,19 @@ static int mwifiex_cmd_cfg_data(struct mwifiex_private *priv, data, len); if (ret) return ret; + + cmd->size = cpu_to_le16(S_DS_GEN + len); mwifiex_dbg(adapter, INFO, "download cfg_data from device tree: %s\n", prop->name); } else if (adapter->cal_data->data && adapter->cal_data->size > 0) { len = mwifiex_parse_cal_cfg((u8 *)adapter->cal_data->data, - adapter->cal_data->size, data); + adapter->cal_data->size, data + sizeof(*pcfg_data)); + pcfg_data = &cmd->params.cfg_data; + pcfg_data->action = cpu_to_le16(HOST_CMD_ACT_GEN_SET); + pcfg_data->type = cpu_to_le16(MWIFIEX_CFG_TYPE_CAL); + pcfg_data->data_len = cpu_to_le16(len); + cmd->size = cpu_to_le16(S_DS_GEN + sizeof(*pcfg_data) + len); mwifiex_dbg(adapter, INFO, "download cfg_data from config file\n"); } else { @@ -1527,7 +1535,6 @@ static int mwifiex_cmd_cfg_data(struct mwifiex_private *priv, } cmd->command = cpu_to_le16(HostCmd_CMD_CFG_DATA); - cmd->size = cpu_to_le16(S_DS_GEN + len); return 0; }