Kalle Valo says:
====================
wireless-next patches for v6.4
Most likely the last -next pull request for v6.4. We have changes all
over. rtw88 now supports SDIO bus and iwlwifi continues to work on
Wi-Fi 7 support. Not much stack changes this time.
Major changes:
cfg80211/mac80211
 - fix some Fine Time Measurement (FTM) frames not being bufferable
 - flush frames before key removal to avoid potential unencrypted
   transmission depending on the hardware design
iwlwifi
 - preparation for Wi-Fi 7 EHT and multi-link support
rtw88
 - SDIO bus support
 - RTL8822BS, RTL8822CS and RTL8821CS SDIO chipset support
rtw89
 - framework firmware backwards compatibility
brcmfmac
 - Cypress 43439 SDIO support
mt76
 - mt7921 P2P support
 - mt7996 mesh A-MSDU support
 - mt7996 EHT support
 - mt7996 coredump support
wcn36xx
 - support for pronto v3 hardware
ath11k
 - PCIe DeviceTree bindings
 - WCN6750: enable SAR support
ath10k
 - convert DeviceTree bindings to YAML
* tag 'wireless-next-2023-04-21' of git://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next: (261 commits)
  wifi: rtw88: Update spelling in main.h
  wifi: airo: remove ISA_DMA_API dependency
  wifi: rtl8xxxu: Simplify setting the initial gain
  wifi: rtl8xxxu: Add rtl8xxxu_write{8,16,32}_{set,clear}
  wifi: rtl8xxxu: Don't print the vendor/product/serial
  wifi: rtw88: Fix memory leak in rtw88_usb
  wifi: rtw88: call rtw8821c_switch_rf_set() according to chip variant
  wifi: rtw88: set pkg_type correctly for specific rtw8821c variants
  wifi: rtw88: rtw8821c: Fix rfe_option field width
  wifi: rtw88: usb: fix priority queue to endpoint mapping
  wifi: rtw88: 8822c: add iface combination
  wifi: rtw88: handle station mode concurrent scan with AP mode
  wifi: rtw88: prevent scan abort with other VIFs
  wifi: rtw88: refine reserved page flow for AP mode
  wifi: rtw88: disallow PS during AP mode
  wifi: rtw88: 8822c: extend reserved page number
  wifi: rtw88: add port switch for AP mode
  wifi: rtw88: add bitmap for dynamic port settings
  wifi: rtw89: mac: use regular int as return type of DLE buffer request
  wifi: mac80211: remove return value check of debugfs_create_dir()
  ...
====================
Link: https://lore.kernel.org/r/20230421104726.800BCC433D2@smtp.kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
        mt76_rmw(dev, MT_WTBLOFF_TOP_RSCR(band), mask, set);
  }
  
- u8 mt7921_check_offload_capability(struct device *dev, const char *fw_wm)
+ static u8
+ mt7921_get_offload_capability(struct device *dev, const char *fw_wm)
  {
 -      struct mt7921_fw_features *features = NULL;
        const struct mt76_connac2_fw_trailer *hdr;
        struct mt7921_realease_info *rel_info;
        const struct firmware *fw;
  out:
        release_firmware(fw);
  
 -      return features ? features->data : 0;
 +      return offload_caps;
  }
- EXPORT_SYMBOL_GPL(mt7921_check_offload_capability);
+ 
+ struct ieee80211_ops *
+ mt7921_get_mac80211_ops(struct device *dev, void *drv_data, u8 *fw_features)
+ {
+       struct ieee80211_ops *ops;
+ 
+       ops = devm_kmemdup(dev, &mt7921_ops, sizeof(mt7921_ops), GFP_KERNEL);
+       if (!ops)
+               return NULL;
+ 
+       *fw_features = mt7921_get_offload_capability(dev, drv_data);
+       if (!(*fw_features & MT7921_FW_CAP_CNM)) {
+               ops->remain_on_channel = NULL;
+               ops->cancel_remain_on_channel = NULL;
+               ops->add_chanctx = NULL;
+               ops->remove_chanctx = NULL;
+               ops->change_chanctx = NULL;
+               ops->assign_vif_chanctx = NULL;
+               ops->unassign_vif_chanctx = NULL;
+               ops->mgd_prepare_tx = NULL;
+               ops->mgd_complete_tx = NULL;
+       }
+       return ops;
+ }
+ EXPORT_SYMBOL_GPL(mt7921_get_mac80211_ops);
  
  int mt7921_mac_init(struct mt7921_dev *dev)
  {