diff mbox series

iwlwifi: mvm: Ignore NVM write status 0x1000

Message ID 20240512184932.25831-1-marex@denx.de
State New
Headers show
Series iwlwifi: mvm: Ignore NVM write status 0x1000 | expand

Commit Message

Marek Vasut May 12, 2024, 6:48 p.m. UTC
When loading custom NVM file on Wireless-AC 9260 160MHz, REV=0x324
8086:2526 (rev 29) Subsystem: 8086:001c firmware version 46.6b541b68.0
9260-th-b0-jf-b0-46.ucode , the NVM_WRITE_OPCODE return status is 0x1000
for all sections. What does this mean is unknown, however clearing the
top 4 bits permits the NVM to be written and the card operates as it
should.

Hexdump of the iNVM file is below, the iNVM file overrides antenna
settings to only use AUX antenna and disables MIMO .
00000000  54 4c 50 2a 2a 4d 56 4e  2c 11 00 00 08 10 21 20
00000010  c0 00 00 02 03 03 02 11  2f 00 00 00 00 00 00 00
00000020  00 00 00 00

Signed-off-by: Marek Vasut <marex@denx.de>
---
Cc: Abhishek Naik <abhishek.naik@intel.com>
Cc: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Cc: Gregory Greenman <gregory.greenman@intel.com>
Cc: Johannes Berg <johannes.berg@intel.com>
Cc: Kalle Valo <kvalo@kernel.org>
Cc: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Cc: linux-wireless@vger.kernel.org
---
 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Miri Korenblit May 13, 2024, 7:26 a.m. UTC | #1
> -----Original Message-----
> From: Marek Vasut <marex@denx.de>
> Sent: Sunday, 12 May 2024 21:49
> To: linux-wireless@vger.kernel.org
> Cc: Marek Vasut <marex@denx.de>; Abhishek Naik <abhishek.naik@intel.com>;
> Grumbach, Emmanuel <emmanuel.grumbach@intel.com>; Gregory Greenman
> <gregory.greenman@intel.com>; Berg, Johannes <johannes.berg@intel.com>;
> Kalle Valo <kvalo@kernel.org>; Korenblit, Miriam Rachel
> <miriam.rachel.korenblit@intel.com>
> Subject: [PATCH] iwlwifi: mvm: Ignore NVM write status 0x1000
> 
> When loading custom NVM file on Wireless-AC 9260 160MHz, REV=0x324
> 8086:2526 (rev 29) Subsystem: 8086:001c firmware version 46.6b541b68.0 9260-
> th-b0-jf-b0-46.ucode , the NVM_WRITE_OPCODE return status is 0x1000 for all
> sections. What does this mean is unknown, however clearing the top 4 bits
> permits the NVM to be written and the card operates as it should.
> 
> Hexdump of the iNVM file is below, the iNVM file overrides antenna settings to
> only use AUX antenna and disables MIMO .

The custom NVM is meant for internal use only.

To override antenna settings please use the nl80211 command: NL80211_CMD_SET_WIPHY
You can use the 'iw set antenna' command.

> 00000000  54 4c 50 2a 2a 4d 56 4e  2c 11 00 00 08 10 21 20
> 00000010  c0 00 00 02 03 03 02 11  2f 00 00 00 00 00 00 00
> 00000020  00 00 00 00
> 
> Signed-off-by: Marek Vasut <marex@denx.de>
> ---
> 2.43.0
Marek Vasut May 13, 2024, 2:44 p.m. UTC | #2
On 5/13/24 9:26 AM, Korenblit, Miriam Rachel wrote:
> 
>> -----Original Message-----
>> From: Marek Vasut <marex@denx.de>
>> Sent: Sunday, 12 May 2024 21:49
>> To: linux-wireless@vger.kernel.org
>> Cc: Marek Vasut <marex@denx.de>; Abhishek Naik <abhishek.naik@intel.com>;
>> Grumbach, Emmanuel <emmanuel.grumbach@intel.com>; Gregory Greenman
>> <gregory.greenman@intel.com>; Berg, Johannes <johannes.berg@intel.com>;
>> Kalle Valo <kvalo@kernel.org>; Korenblit, Miriam Rachel
>> <miriam.rachel.korenblit@intel.com>
>> Subject: [PATCH] iwlwifi: mvm: Ignore NVM write status 0x1000
>>
>> When loading custom NVM file on Wireless-AC 9260 160MHz, REV=0x324
>> 8086:2526 (rev 29) Subsystem: 8086:001c firmware version 46.6b541b68.0 9260-
>> th-b0-jf-b0-46.ucode , the NVM_WRITE_OPCODE return status is 0x1000 for all
>> sections. What does this mean is unknown, however clearing the top 4 bits
>> permits the NVM to be written and the card operates as it should.
>>
>> Hexdump of the iNVM file is below, the iNVM file overrides antenna settings to
>> only use AUX antenna and disables MIMO .
> 
> The custom NVM is meant for internal use only.

But why does NVM loading not work without this patch ?

> To override antenna settings please use the nl80211 command: NL80211_CMD_SET_WIPHY
> You can use the 'iw set antenna' command.

I need to use only the AUX antenna and disable MIMO entirely, the 'iw 
set antenna' didn't work, the custom NVM fragment does work.

But I do need this extra patch to load the NVM fragment.

Is the patch correct ? Why is the 0x1000 returned and why does it have 
to be masked out ?
diff mbox series

Patch

diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/nvm.c b/drivers/net/wireless/intel/iwlwifi/mvm/nvm.c
index ae81772228813..29342b9a6743e 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/nvm.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/nvm.c
@@ -59,7 +59,7 @@  static int iwl_nvm_write_chunk(struct iwl_mvm *mvm, u16 section,
 	pkt = cmd.resp_pkt;
 	/* Extract & check NVM write response */
 	nvm_resp = (void *)pkt->data;
-	if (le16_to_cpu(nvm_resp->status) != READ_NVM_CHUNK_SUCCEED) {
+	if ((le16_to_cpu(nvm_resp->status) & 0xfff) != READ_NVM_CHUNK_SUCCEED) {
 		IWL_ERR(mvm,
 			"NVM access write command failed for section %u (status = 0x%x)\n",
 			section, le16_to_cpu(nvm_resp->status));