Re: [PATCH v2 0/5] wifi: add opt-in FIPS exception for iwlwifi
From: Jose Ignacio Tornos Martinez
Date: Mon Oct 05 2026 - 12:45:41 EST
Hi Johannes,
Following your guidance, I have been working on the v3 approach:
PTK/GTK software-only. Let me share my results, although spoiler,
I think I need a bit more of guidance.
With the minimum changes on top of the fips_allows() infrastructure
(patch below), I have bidirectional data working with SW crypto.
mac80211 handles CCMP encryption/decryption on the host, firmware
has no data keys.
However, I had to disable RX AMPDU aggregation to make RX work.
Without PTK in firmware, firmware does not set the correct bits
in the Block Ack bitmap, since it cannot validate the received
frames. The AP assumes frames were not received, retransmits,
and eventually gives up. TX AMPDU works fine because the AP has
the keys and sends correct BA back to the STA.
Disabling RX AMPDU forces individual frame ACKs, which work at
the PHY level without keys. The throughput cost is significant:
~12-30 Mbps instead of ~500 Mbps with HW crypto.
Analyzing the Block Ack protocol, I think the BA bitmap only
requires the Sequence Number (from the unencrypted MAC header) and
CRC validation (PHY-level). So neither could require decryption keys.
Could we allow this behavior?
Is there a firmware mode where firmware acknowledges all CRC-valid
frames in the BA regardless of decryption status?
That would allow RX aggregation with SW-only crypto and recover most of
the throughput.
The minimal diff on top of the fips_allows() infrastructure:
(only applying 1/5 and 5/5 patches)
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c
--- a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c
@@ -462,7 +462,7 @@
- if (!fips_enabled)
+ if (fips_allows(FIPS_EXCEPTION_WIFI_MFP))
ieee80211_hw_set(hw, MFP_CAPABLE);
@@ -1041,7 +1041,8 @@
- if (!iwl_enable_rx_ampdu()) {
+ if (!iwl_enable_rx_ampdu() ||
+ (fips_enabled && fips_allows(FIPS_EXCEPTION_WIFI_MFP))) {
ret = -EINVAL;
The first change restores MFP_CAPABLE when the FIPS exception is
set, so WPA3-SAE association works. The second change rejects
AddBA RX requests in FIPS mode, forcing individual PHY-level ACKs.
Thank you for your help
Best regards
Jose Ignacio