Commit a6694b7e authored by Paolo Abeni's avatar Paolo Abeni
Browse files

Merge tag 'wireless-2025-12-17' of...

Merge tag 'wireless-2025-12-17' of https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless

Johannes Berg says:

====================
Various fixes all over, most are recent regressions but
also some long-standing issues:

 - cfg80211:
    - fix an issue with overly long SSIDs

 - mac80211:
    - long-standing beacon protection issue on some devices
    - for for a multi-BSSID AP-side issue
    - fix a syzbot warning on OCB (not really used in practice)
    - remove WARN on connections using disabled channels,
      as that can happen due to changes in the disable flag
    - fix monitor mode list iteration

 - iwlwifi:
    - fix firmware loading on certain (really old) devices
    - add settime64 to PTP clock to avoid a warning and clock
      registration failure, but it's not actually supported

 - rtw88:
    - remove WQ_UNBOUND since it broke USB adapters
      (because it can't be used with WQ_BH)
    - fix SDIO issues with certain devices

 - rtl8192cu: fix TID array out-of-bounds (since 6.9)

 - wlcore (TI): add missing skb push headroom increase

* tag 'wireless-2025-12-17' of https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless:
  wifi: iwlwifi: Implement settime64 as stub for MVM/MLD PTP
  wifi: iwlwifi: Fix firmware version handling
  wifi: mac80211: ocb: skip rx_no_sta when interface is not joined
  wifi: mac80211: do not use old MBSSID elements
  wifi: mac80211: don't WARN for connections on invalid channels
  wifi: wlcore: ensure skb headroom before skb_push
  wifi: cfg80211: sme: store capped length in __cfg80211_connect_result()
  wifi: mac80211: fix list iteration in ieee80211_add_virtual_monitor()
  wifi: mac80211: Discard Beacon frames to non-broadcast address
  Revert "wifi: rtw88: add WQ_UNBOUND to alloc_workqueue users"
  wifi: rtlwifi: 8192cu: fix tid out of range in rtl92cu_tx_fill_desc()
  wifi: rtw88: limit indirect IO under powered off for RTL8822CS
====================

Link: https://patch.msgid.link/20251217201441.59876-3-johannes@sipsolutions.net


Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parents 85f4b0c6 81d90d93
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -1597,7 +1597,7 @@ static void _iwl_op_mode_stop(struct iwl_drv *drv)
 */
static void iwl_req_fw_callback(const struct firmware *ucode_raw, void *context)
{
	unsigned int min_core, max_core, loaded_core;
	int min_core, max_core, loaded_core;
	struct iwl_drv *drv = context;
	struct iwl_fw *fw = &drv->fw;
	const struct iwl_ucode_header *ucode;
@@ -1676,7 +1676,7 @@ static void iwl_req_fw_callback(const struct firmware *ucode_raw, void *context)
	if (loaded_core < min_core || loaded_core > max_core) {
		IWL_ERR(drv,
			"Driver unable to support your firmware API. "
			"Driver supports FW core %u..%u, firmware is %u.\n",
			"Driver supports FW core %d..%d, firmware is %d.\n",
			min_core, max_core, loaded_core);
		goto try_again;
	}
+7 −0
Original line number Diff line number Diff line
@@ -121,6 +121,12 @@ static int iwl_mld_ptp_gettime(struct ptp_clock_info *ptp,
	return 0;
}

static int iwl_mld_ptp_settime(struct ptp_clock_info *ptp,
			       const struct timespec64 *ts)
{
	return -EOPNOTSUPP;
}

static int iwl_mld_ptp_adjtime(struct ptp_clock_info *ptp, s64 delta)
{
	struct iwl_mld *mld = container_of(ptp, struct iwl_mld,
@@ -279,6 +285,7 @@ void iwl_mld_ptp_init(struct iwl_mld *mld)

	mld->ptp_data.ptp_clock_info.owner = THIS_MODULE;
	mld->ptp_data.ptp_clock_info.gettime64 = iwl_mld_ptp_gettime;
	mld->ptp_data.ptp_clock_info.settime64 = iwl_mld_ptp_settime;
	mld->ptp_data.ptp_clock_info.max_adj = 0x7fffffff;
	mld->ptp_data.ptp_clock_info.adjtime = iwl_mld_ptp_adjtime;
	mld->ptp_data.ptp_clock_info.adjfine = iwl_mld_ptp_adjfine;
+7 −0
Original line number Diff line number Diff line
@@ -220,6 +220,12 @@ static int iwl_mvm_ptp_gettime(struct ptp_clock_info *ptp,
	return 0;
}

static int iwl_mvm_ptp_settime(struct ptp_clock_info *ptp,
			       const struct timespec64 *ts)
{
	return -EOPNOTSUPP;
}

static int iwl_mvm_ptp_adjtime(struct ptp_clock_info *ptp, s64 delta)
{
	struct iwl_mvm *mvm = container_of(ptp, struct iwl_mvm,
@@ -281,6 +287,7 @@ void iwl_mvm_ptp_init(struct iwl_mvm *mvm)
	mvm->ptp_data.ptp_clock_info.adjfine = iwl_mvm_ptp_adjfine;
	mvm->ptp_data.ptp_clock_info.adjtime = iwl_mvm_ptp_adjtime;
	mvm->ptp_data.ptp_clock_info.gettime64 = iwl_mvm_ptp_gettime;
	mvm->ptp_data.ptp_clock_info.settime64 = iwl_mvm_ptp_settime;
	mvm->ptp_data.scaled_freq = SCALE_FACTOR;

	/* Give a short 'friendly name' to identify the PHC clock */
+2 −1
Original line number Diff line number Diff line
@@ -511,6 +511,7 @@ void rtl92cu_tx_fill_desc(struct ieee80211_hw *hw,
	if (sta) {
		sta_entry = (struct rtl_sta_info *)sta->drv_priv;
		tid = ieee80211_get_tid(hdr);
		if (tid < MAX_TID_COUNT)
			agg_state = sta_entry->tids[tid].agg.agg_state;
		ampdu_density = sta->deflink.ht_cap.ampdu_density;
	}
+3 −1
Original line number Diff line number Diff line
@@ -144,8 +144,10 @@ static u32 rtw_sdio_to_io_address(struct rtw_dev *rtwdev, u32 addr,

static bool rtw_sdio_use_direct_io(struct rtw_dev *rtwdev, u32 addr)
{
	bool might_indirect_under_power_off = rtwdev->chip->id == RTW_CHIP_TYPE_8822C;

	if (!test_bit(RTW_FLAG_POWERON, rtwdev->flags) &&
	    !rtw_sdio_is_bus_addr(addr))
	    !rtw_sdio_is_bus_addr(addr) && might_indirect_under_power_off)
		return false;

	return !rtw_sdio_is_sdio30_supported(rtwdev) ||
Loading