]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
wifi: iwlwifi: mld: decode EOF bit for AMPDUs
authorBenjamin Berg <benjamin.berg@intel.com>
Wed, 23 Jul 2025 06:45:11 +0000 (09:45 +0300)
committerMiri Korenblit <miriam.rachel.korenblit@intel.com>
Wed, 23 Jul 2025 11:10:24 +0000 (14:10 +0300)
Only the EOF bit handling for single frames was ported to the MLD
driver. The code to handle AMPDUs correctly was forgotten. Add it back
so that the bit is reported in the radiotap headers again.

Fixes: d1e879ec600f ("wifi: iwlwifi: add iwlmld sub-driver")
Signed-off-by: Benjamin Berg <benjamin.berg@intel.com>
Reviewed-by: Daniel Gabay <daniel.gabay@intel.com>
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://patch.msgid.link/20250723094230.195be86372d5.I4db4abf348f7b6dfc75f869770dd77655a204bc7@changeid
drivers/net/wireless/intel/iwlwifi/mld/rx.c

index 3d19cec3f6963b085aaa0e9f23da7e4024a0c1fb..b6dedd1ecd4d8182ada5d5bc57aa599390d575fc 100644 (file)
@@ -1089,6 +1089,15 @@ static void iwl_mld_rx_eht(struct iwl_mld *mld, struct sk_buff *skb,
                        rx_status->flag |= RX_FLAG_AMPDU_EOF_BIT;
        }
 
+       /* update aggregation data for monitor sake on default queue */
+       if (!queue && (phy_info & IWL_RX_MPDU_PHY_TSF_OVERLOAD) &&
+           (phy_info & IWL_RX_MPDU_PHY_AMPDU) && phy_data->first_subframe) {
+               rx_status->flag |= RX_FLAG_AMPDU_EOF_BIT_KNOWN;
+               if (phy_data->data0 &
+                   cpu_to_le32(IWL_RX_PHY_DATA0_EHT_DELIM_EOF))
+                       rx_status->flag |= RX_FLAG_AMPDU_EOF_BIT;
+       }
+
        if (phy_info & IWL_RX_MPDU_PHY_TSF_OVERLOAD)
                iwl_mld_decode_eht_phy_data(mld, phy_data, rx_status, eht, usig);