Commit 126d85fb authored by Jakub Kicinski's avatar Jakub Kicinski
Browse files

Merge tag 'wireless-next-2025-07-24' of...

Merge tag 'wireless-next-2025-07-24' of https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next

Johannes Berg says:

====================
Another wireless update:
 - rtw89:
   - STA+P2P concurrency
   - support for USB devices RTL8851BU/RTL8852BU
 - ath9k: OF support
 - ath12k:
   - more EHT/Wi-Fi 7 features
   - encapsulation/decapsulation offload
 - iwlwifi: some FIPS interoperability
 - brcm80211: support SDIO 43751 device
 - rt2x00: better DT/OF support
 - cfg80211/mac80211:
   - improved S1G support
   - beacon monitor for MLO

* tag 'wireless-next-2025-07-24' of https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next: (199 commits)
  ssb: use new GPIO line value setter callbacks for the second GPIO chip
  wifi: Fix typos
  wifi: brcmsmac: Use str_true_false() helper
  wifi: brcmfmac: fix EXTSAE WPA3 connection failure due to AUTH TX failure
  wifi: brcm80211: Remove yet more unused functions
  wifi: brcm80211: Remove more unused functions
  wifi: brcm80211: Remove unused functions
  wifi: iwlwifi: Revert "wifi: iwlwifi: remove support of several iwl_ppag_table_cmd versions"
  wifi: iwlwifi: check validity of the FW API range
  wifi: iwlwifi: don't export symbols that we shouldn't
  wifi: iwlwifi: mld: use spec link id and not FW link id
  wifi: iwlwifi: mld: decode EOF bit for AMPDUs
  wifi: iwlwifi: Remove support for rx OMI bandwidth reduction
  wifi: iwlwifi: stop supporting iwl_omi_send_status_notif ver 1
  wifi: iwlwifi: remove SC2F firmware support
  wifi: iwlwifi: mvm: Remove NAN support
  wifi: iwlwifi: mld: avoid outdated reorder buffer head_sn
  wifi: iwlwifi: mvm: avoid outdated reorder buffer head_sn
  wifi: iwlwifi: disable certain features for fips_enabled
  wifi: iwlwifi: mld: support channel survey collection for ACS scans
  ...
====================

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


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parents 8b5a19b4 55c172c1
Loading
Loading
Loading
Loading
+17 −1
Original line number Diff line number Diff line
@@ -12,7 +12,7 @@ maintainers:
description: |
  This node provides properties for configuring the ath9k wireless device.
  The node is expected to be specified as a child node of the PCI controller
  to which the wireless chip is connected.
  or AHB bus to which the wireless chip is connected.

allOf:
  - $ref: ieee80211.yaml#
@@ -35,6 +35,12 @@ properties:
      - pci168c,0034  # AR9462
      - pci168c,0036  # AR9565
      - pci168c,0037  # AR1111 and AR9485
      - qca,ar9130-wifi
      - qca,ar9330-wifi
      - qca,ar9340-wifi
      - qca,qca9530-wifi
      - qca,qca9550-wifi
      - qca,qca9560-wifi

  reg:
    maxItems: 1
@@ -88,3 +94,13 @@ examples:
        nvmem-cell-names = "mac-address", "calibration";
      };
    };
  - |
    ahb {
      #address-cells = <1>;
      #size-cells = <1>;
      wifi@180c0000 {
        compatible = "qca,ar9130-wifi";
        reg = <0x180c0000 0x230000>;
        interrupts = <2>;
      };
    };
+6 −0
Original line number Diff line number Diff line
@@ -35,6 +35,12 @@ properties:
      string to uniquely identify variant of the calibration data for designs
      with colliding bus and device ids

  firmware-name:
    maxItems: 1
    description:
      If present, a board or platform specific string used to lookup
      usecase-specific firmware files for the device.

  vddrfacmn-supply:
    description: VDD_RFA_CMN supply regulator handle

+49 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/net/wireless/ralink,rt2880.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Ralink RT2880 wireless device

maintainers:
  - Stanislaw Gruszka <stf_xl@wp.pl>

description: |
  This node provides properties for configuring RT2880 SOC wifi devices.
  The node is expected to be specified as a root node of the device.

allOf:
  - $ref: ieee80211.yaml#

properties:
  compatible:
    enum:
      - ralink,rt2880-wifi

  reg:
    maxItems: 1

  clocks:
    maxItems: 1

  interrupts:
    maxItems: 1

required:
  - compatible
  - reg
  - clocks
  - interrupts

additionalProperties: false

examples:
  - |
    wifi@110180000 {
      compatible = "ralink,rt2880-wifi";
      reg = <0x10180000 0x40000>;
      clocks = <&sysc 16>;
      interrupt-parent = <&cpuintc>;
      interrupts = <6>;
    };
+10 −0
Original line number Diff line number Diff line
@@ -62,4 +62,14 @@ uartlite@c00 {
			reg-shift = <2>;
		};
	};

	wmac: wifi@10180000 {
		compatible = "ralink,rt2880-wifi";
		reg = <0x10180000 0x40000>;

		clocks = <&sysc 16>;

		interrupt-parent = <&cpuintc>;
		interrupts = <6>;
	};
};
+44 −6
Original line number Diff line number Diff line
@@ -1565,7 +1565,7 @@ static int ath10k_core_create_board_name(struct ath10k *ar, char *name,
					 bool with_chip_id)
{
	/* strlen(',variant=') + strlen(ar->id.bdf_ext) */
	char variant[9 + ATH10K_SMBIOS_BDF_EXT_STR_LENGTH] = { 0 };
	char variant[9 + ATH10K_SMBIOS_BDF_EXT_STR_LENGTH] = {};

	if (with_variant && ar->id.bdf_ext[0] != '\0')
		scnprintf(variant, sizeof(variant), ",variant=%s",
@@ -2493,12 +2493,50 @@ static int ath10k_init_hw_params(struct ath10k *ar)
	return 0;
}

static bool ath10k_core_needs_recovery(struct ath10k *ar)
{
	long time_left;

	/* Sometimes the recovery will fail and then the next all recovery fail,
	 * so avoid infinite recovery.
	 */
	if (atomic_read(&ar->fail_cont_count) >= ATH10K_RECOVERY_MAX_FAIL_COUNT) {
		ath10k_err(ar, "consecutive fail %d times, will shutdown driver!",
			   atomic_read(&ar->fail_cont_count));
		ar->state = ATH10K_STATE_WEDGED;
		return false;
	}

	ath10k_dbg(ar, ATH10K_DBG_BOOT, "total recovery count: %d", ++ar->recovery_count);

	if (atomic_read(&ar->pending_recovery)) {
		/* Sometimes it happened another recovery work before the previous one
		 * completed, then the second recovery work will destroy the previous
		 * one, thus below is to avoid that.
		 */
		time_left = wait_for_completion_timeout(&ar->driver_recovery,
							ATH10K_RECOVERY_TIMEOUT_HZ);
		if (time_left) {
			ath10k_warn(ar, "previous recovery succeeded, skip this!\n");
			return false;
		}

		/* Record the continuous recovery fail count when recovery failed. */
		atomic_inc(&ar->fail_cont_count);

		/* Avoid having multiple recoveries at the same time. */
		return false;
	}

	atomic_inc(&ar->pending_recovery);

	return true;
}

void ath10k_core_start_recovery(struct ath10k *ar)
{
	if (test_and_set_bit(ATH10K_FLAG_RESTARTING, &ar->dev_flags)) {
		ath10k_warn(ar, "already restarting\n");
	if (!ath10k_core_needs_recovery(ar))
		return;
	}

	queue_work(ar->workqueue, &ar->restart_work);
}
@@ -2534,6 +2572,8 @@ static void ath10k_core_restart(struct work_struct *work)
	struct ath10k *ar = container_of(work, struct ath10k, restart_work);
	int ret;

	reinit_completion(&ar->driver_recovery);

	set_bit(ATH10K_FLAG_CRASH_FLUSH, &ar->dev_flags);

	/* Place a barrier to make sure the compiler doesn't reorder
@@ -2598,8 +2638,6 @@ static void ath10k_core_restart(struct work_struct *work)
	if (ret)
		ath10k_warn(ar, "failed to send firmware crash dump via devcoredump: %d",
			    ret);

	complete(&ar->driver_recovery);
}

static void ath10k_core_set_coverage_class_work(struct work_struct *work)
Loading