Linux wireless drivers development
 help / color / mirror / Atom feed
* [PATCH] staging: sm750fb: fix naming styles and const declarations
From: dhyaan19022009-hue @ 2026-02-04 12:13 UTC (permalink / raw)
  To: kvalo; +Cc: linux-wireless, linux-kernel, dhyaan19022009-hue
In-Reply-To: <20260204121337.4819-1-dhyaan19022009@gmail.com>

Signed-off-by: dhyaan19022009-hue <dhyaan19022009@gmail.com>
---
 drivers/staging/sm750fb/sm750.c    | 26 +++++++++++++-------------
 drivers/staging/sm750fb/sm750.h    | 14 +++++++-------
 drivers/staging/sm750fb/sm750_hw.c | 22 +++++++++++-----------
 3 files changed, 31 insertions(+), 31 deletions(-)

diff --git a/drivers/staging/sm750fb/sm750.c b/drivers/staging/sm750fb/sm750.c
index 9bf3c0a37..13d513bff 100644
--- a/drivers/staging/sm750fb/sm750.c
+++ b/drivers/staging/sm750fb/sm750.c
@@ -33,7 +33,7 @@
 static int g_hwcursor = 1;
 static int g_noaccel;
 static int g_nomtrr;
-static const char *g_fbmode[] = {NULL, NULL};
+static const char * const g_fbmode[] = {NULL, NULL};
 static const char *g_def_fbmode = "1024x768-32@60";
 static char *g_settings;
 static int g_dualview;
@@ -740,7 +740,7 @@ static int lynxfb_set_fbinfo(struct fb_info *info, int index)
 		"kernel HELPERS prepared vesa_modes",
 	};
 
-	static const char *fixId[2] = {
+	static const char * const fix_id[2] = {
 		"sm750_fb1", "sm750_fb2",
 	};
 
@@ -764,7 +764,7 @@ static int lynxfb_set_fbinfo(struct fb_info *info, int index)
 	 * must be set after crtc member initialized
 	 */
 	crtc->cursor.offset = crtc->o_screen + crtc->vidmem_size - 1024;
-	crtc->cursor.mmio = sm750_dev->pvReg +
+	crtc->cursor.mmio = sm750_dev->pv_reg +
 		0x800f0 + (int)crtc->channel * 0x140;
 
 	pr_info("crtc->cursor.mmio = %p\n", crtc->cursor.mmio);
@@ -862,7 +862,7 @@ static int lynxfb_set_fbinfo(struct fb_info *info, int index)
 	fix->ywrapstep = crtc->ywrapstep;
 	fix->accel = FB_ACCEL_SMI;
 
-	strscpy(fix->id, fixId[index], sizeof(fix->id));
+	strscpy(fix->id, fix_id[index], sizeof(fix->id));
 
 	fix->smem_start = crtc->o_screen + sm750_dev->vidmem_start;
 	pr_info("fix->smem_start = %lx\n", fix->smem_start);
@@ -918,12 +918,12 @@ static void sm750fb_setup(struct sm750_dev *sm750_dev, char *src)
 
 	swap = 0;
 
-	sm750_dev->initParm.chip_clk = 0;
-	sm750_dev->initParm.mem_clk = 0;
-	sm750_dev->initParm.master_clk = 0;
-	sm750_dev->initParm.powerMode = 0;
-	sm750_dev->initParm.setAllEngOff = 0;
-	sm750_dev->initParm.resetMemory = 1;
+	sm750_dev->init_parm.chip_clk = 0;
+	sm750_dev->init_parm.mem_clk = 0;
+	sm750_dev->init_parm.master_clk = 0;
+	sm750_dev->init_parm.power_mode = 0;
+	sm750_dev->init_parm.set_all_eng_off = 0;
+	sm750_dev->init_parm.reset_memory = 1;
 
 	/* defaultly turn g_hwcursor on for both view */
 	g_hwcursor = 3;
@@ -942,9 +942,9 @@ static void sm750fb_setup(struct sm750_dev *sm750_dev, char *src)
 		} else if (!strncmp(opt, "nocrt", strlen("nocrt"))) {
 			sm750_dev->nocrt = 1;
 		} else if (!strncmp(opt, "36bit", strlen("36bit"))) {
-			sm750_dev->pnltype = sm750_doubleTFT;
+			sm750_dev->pnltype = sm750_double_tft;
 		} else if (!strncmp(opt, "18bit", strlen("18bit"))) {
-			sm750_dev->pnltype = sm750_dualTFT;
+			sm750_dev->pnltype = sm750_dual_tft;
 		} else if (!strncmp(opt, "24bit", strlen("24bit"))) {
 			sm750_dev->pnltype = sm750_24TFT;
 		} else if (!strncmp(opt, "nohwc0", strlen("nohwc0"))) {
@@ -1121,7 +1121,7 @@ static void lynxfb_pci_remove(struct pci_dev *pdev)
 	sm750fb_framebuffer_release(sm750_dev);
 	arch_phys_wc_del(sm750_dev->mtrr.vram);
 
-	iounmap(sm750_dev->pvReg);
+	iounmap(sm750_dev->pv_reg);
 	iounmap(sm750_dev->pv_mem);
 	kfree(g_settings);
 }
diff --git a/drivers/staging/sm750fb/sm750.h b/drivers/staging/sm750fb/sm750.h
index 2dc57bbe7..19dbb9120 100644
--- a/drivers/staging/sm750fb/sm750.h
+++ b/drivers/staging/sm750fb/sm750.h
@@ -14,8 +14,8 @@
 
 enum sm750_pnltype {
 	sm750_24TFT = 0,	/* 24bit tft */
-	sm750_dualTFT = 2,	/* dual 18 bit tft */
-	sm750_doubleTFT = 1,	/* 36 bit double pixel tft */
+	sm750_dual_tft = 2,	/* dual 18 bit tft */
+	sm750_double_tft = 1,	/* 36 bit double pixel tft */
 };
 
 /* vga channel is not concerned  */
@@ -39,13 +39,13 @@ enum sm750_path {
 };
 
 struct init_status {
-	ushort powerMode;
+	ushort power_mode;
 	/* below three clocks are in unit of MHZ*/
 	ushort chip_clk;
 	ushort mem_clk;
 	ushort master_clk;
-	ushort setAllEngOff;
-	ushort resetMemory;
+	ushort set_all_eng_off;
+	ushort reset_memory;
 };
 
 struct lynx_accel {
@@ -97,12 +97,12 @@ struct sm750_dev {
 	unsigned long vidreg_start;
 	__u32 vidmem_size;
 	__u32 vidreg_size;
-	void __iomem *pvReg;
+	void __iomem *pv_reg;
 	unsigned char __iomem *pv_mem;
 	/* locks*/
 	spinlock_t slock;
 
-	struct init_status initParm;
+	struct init_status init_parm;
 	enum sm750_pnltype pnltype;
 	enum sm750_dataflow dataflow;
 	int nocrt;
diff --git a/drivers/staging/sm750fb/sm750_hw.c b/drivers/staging/sm750fb/sm750_hw.c
index de1331c56..9e69f3387 100644
--- a/drivers/staging/sm750fb/sm750_hw.c
+++ b/drivers/staging/sm750fb/sm750_hw.c
@@ -49,19 +49,19 @@ int hw_sm750_map(struct sm750_dev *sm750_dev, struct pci_dev *pdev)
 	}
 
 	/* now map mmio and vidmem */
-	sm750_dev->pvReg =
+	sm750_dev->pv_reg =
 		ioremap(sm750_dev->vidreg_start, sm750_dev->vidreg_size);
-	if (!sm750_dev->pvReg) {
+	if (!sm750_dev->pv_reg) {
 		pr_err("mmio failed\n");
 		ret = -EFAULT;
 		goto exit;
 	}
-	pr_info("mmio virtual addr = %p\n", sm750_dev->pvReg);
+	pr_info("mmio virtual addr = %p\n", sm750_dev->pv_reg);
 
-	sm750_dev->accel.dpr_base = sm750_dev->pvReg + DE_BASE_ADDR_TYPE1;
-	sm750_dev->accel.dp_port_base = sm750_dev->pvReg + DE_PORT_ADDR_TYPE1;
+	sm750_dev->accel.dpr_base = sm750_dev->pv_reg + DE_BASE_ADDR_TYPE1;
+	sm750_dev->accel.dp_port_base = sm750_dev->pv_reg + DE_PORT_ADDR_TYPE1;
 
-	mmio750 = sm750_dev->pvReg;
+	mmio750 = sm750_dev->pv_reg;
 	sm750_set_chip_type(sm750_dev->devid, sm750_dev->revid);
 
 	sm750_dev->vidmem_start = pci_resource_start(pdev, 0);
@@ -79,7 +79,7 @@ int hw_sm750_map(struct sm750_dev *sm750_dev, struct pci_dev *pdev)
 	sm750_dev->pv_mem =
 		ioremap_wc(sm750_dev->vidmem_start, sm750_dev->vidmem_size);
 	if (!sm750_dev->pv_mem) {
-		iounmap(sm750_dev->pvReg);
+		iounmap(sm750_dev->pv_reg);
 		pr_err("Map video memory failed\n");
 		ret = -EFAULT;
 		goto exit;
@@ -93,7 +93,7 @@ int hw_sm750_inithw(struct sm750_dev *sm750_dev, struct pci_dev *pdev)
 {
 	struct init_status *parm;
 
-	parm = &sm750_dev->initParm;
+	parm = &sm750_dev->init_parm;
 	if (parm->chip_clk == 0)
 		parm->chip_clk = (sm750_get_chip_type() == SM750LE) ?
 					       DEFAULT_SM750LE_CHIP_CLOCK :
@@ -104,7 +104,7 @@ int hw_sm750_inithw(struct sm750_dev *sm750_dev, struct pci_dev *pdev)
 	if (parm->master_clk == 0)
 		parm->master_clk = parm->chip_clk / 3;
 
-	ddk750_init_hw((struct initchip_param *)&sm750_dev->initParm);
+	ddk750_init_hw((struct initchip_param *)&sm750_dev->init_parm);
 	/* for sm718, open pci burst */
 	if (sm750_dev->devid == 0x718) {
 		poke32(SYSTEM_CTRL,
@@ -136,10 +136,10 @@ int hw_sm750_inithw(struct sm750_dev *sm750_dev, struct pci_dev *pdev)
 		switch (sm750_dev->pnltype) {
 		case sm750_24TFT:
 			break;
-		case sm750_doubleTFT:
+		case sm750_double_tft:
 			val |= PANEL_DISPLAY_CTRL_DOUBLE_PIXEL;
 			break;
-		case sm750_dualTFT:
+		case sm750_dual_tft:
 			val |= PANEL_DISPLAY_CTRL_DUAL_DISPLAY;
 			break;
 		}
-- 
2.43.0


^ permalink raw reply related

* [PATCH] iwlwifi: dvm: fix NULL pointer dereference in rxon
From: dhyaan19022009-hue @ 2026-02-04 12:13 UTC (permalink / raw)
  To: kvalo; +Cc: linux-wireless, linux-kernel, dhyaan19022009-hue
In-Reply-To: <20260204121337.4819-1-dhyaan19022009@gmail.com>

Signed-off-by: dhyaan19022009-hue <dhyaan19022009@gmail.com>
---
 drivers/net/wireless/intel/iwlwifi/dvm/rxon.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/net/wireless/intel/iwlwifi/dvm/rxon.c b/drivers/net/wireless/intel/iwlwifi/dvm/rxon.c
index e08e44cae..2d480b1d1 100644
--- a/drivers/net/wireless/intel/iwlwifi/dvm/rxon.c
+++ b/drivers/net/wireless/intel/iwlwifi/dvm/rxon.c
@@ -1392,6 +1392,11 @@ void iwlagn_bss_info_changed(struct ieee80211_hw *hw,
 
 	mutex_lock(&priv->mutex);
 
+
+        if (!bss_conf) {
+		mutex_unlock(&priv->mutex);
+		return;
+	}
 	if (changes & BSS_CHANGED_IDLE && vif->cfg.idle) {
 		/*
 		 * If we go idle, then clearly no "passive-no-rx"
-- 
2.43.0


^ permalink raw reply related

* [PATCH] git commit --amend ```
From: dhyaan19022009-hue @ 2026-02-04 12:13 UTC (permalink / raw)
  To: kvalo; +Cc: linux-wireless, linux-kernel, dhyaan19022009-hue

When the editor opens, replace EVERYTHING with this:
```
iwlwifi: dvm: fix NULL pointer dereference in rxon

When bringing up the wireless interface via virtual monitor mode,
iwlagn_bss_info_changed() can be called with a NULL bss_conf pointer
during ieee80211_add_virtual_monitor() -> ieee80211_do_open() sequence.

This causes a NULL pointer dereference when the function attempts to
access bss_conf fields at offset +0x10.

Crash signature:
  BUG: kernel NULL pointer dereference, address: 0000000000000000
  RIP: 0010:iwlagn_bss_info_changed+0x19d/0x640 [iwldvm]
  Call Trace:
   drv_link_info_changed+0x2b5/0x2c0 [mac80211]
   ieee80211_link_info_change_notify+0x13d/0x160 [mac80211]
   ieee80211_recalc_txpower+0x5c/0x60 [mac80211]
   ieee80211_assign_link_chanctx+0x182/0x410 [mac80211]
   ieee80211_add_virtual_monitor+0x17c/0x2b0 [mac80211]
   ieee80211_do_open+0x6d8/0x740 [mac80211]

Add an early NULL check for bss_conf before accessing its members.

Hardware: Dell Latitude E6430
WiFi: Intel Centrino Advanced-N 6205 [8086:0085]
Kernel: 6.18.7-061807-generic

Signed-off-by: Dhyan K Prajapati <dhyaan19022009@gmail.com>
---
 drivers/net/wireless/intel/iwlwifi/dvm/rxon.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/net/wireless/intel/iwlwifi/dvm/rxon.c b/drivers/net/wireless/intel/iwlwifi/dvm/rxon.c
index e08e44cae..2d480b1d1 100644
--- a/drivers/net/wireless/intel/iwlwifi/dvm/rxon.c
+++ b/drivers/net/wireless/intel/iwlwifi/dvm/rxon.c
@@ -1392,6 +1392,11 @@ void iwlagn_bss_info_changed(struct ieee80211_hw *hw,
 
 	mutex_lock(&priv->mutex);
 
+
+        if (!bss_conf) {
+		mutex_unlock(&priv->mutex);
+		return;
+	}
 	if (changes & BSS_CHANGED_IDLE && vif->cfg.idle) {
 		/*
 		 * If we go idle, then clearly no "passive-no-rx"
-- 
2.43.0


^ permalink raw reply related

* [GIT PULL] wireless-next-2026-02-04
From: Johannes Berg @ 2026-02-04 12:09 UTC (permalink / raw)
  To: netdev; +Cc: linux-wireless

Hi,

And here's a final set of changes for the -next tree.
rtw seems to have the biggest changes, refactoring to
support a new device.

Please pull and let us know if there's any problem.

Thanks,
johannes



The following changes since commit 303c1a66a22068517793284524dd1d24b7316d1b:

  Merge tag 'wireless-next-2026-01-29' of https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next (2026-01-29 19:17:43 -0800)

are available in the Git repository at:

  https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next.git tags/wireless-next-2026-02-04

for you to fetch changes up to 9825fa8f49905275acef6c8e7fcd017d04616311:

  wifi: brcmsmac: phy: Remove unreachable error handling code (2026-02-03 13:11:12 +0100)

----------------------------------------------------------------
Some more changes, including pulls from drivers:
 - ath drivers: small features/cleanups
 - rtw drivers: mostly refactoring for rtw89 RTL8922DE support
 - mac80211: use hrtimers for CAC to avoid too long delays
 - cfg80211/mac80211: some initial UHR (Wi-Fi 8) support

----------------------------------------------------------------
Aaradhana Sahu (4):
      wifi: ath12k: Fix index decrement when array_len is zero
      wifi: ath12k: Add support RX PDEV stats
      wifi: ath12k: Add support TX hardware queue stats
      wifi: ath12k: clear stale link mapping of ahvif->links_map

Amith A (1):
      wifi: mac80211: use wiphy_hrtimer_work for CAC timeout

Chih-Kang Chang (1):
      wifi: rtw89: wow: disable interrupt before swapping FW for 8922D

Dian-Syuan Yang (1):
      wifi: rtw89: pci: restore LDO setting after device resume

Dmitry Baryshkov (1):
      wifi: ath10k: snoc: support powering on the device via pwrseq

Eric Huang (5):
      wifi: rtw89: phy: extend register to read history 2 of PHY env_monitor
      wifi: rtw89: phy: update bb wrapper TPU init
      wifi: rtw89: phy: handle C2H event for PS mode report
      wifi: rtw89: phy: add H2C command to send detail RX gain and link parameters for PS mode
      wifi: rtw89: phy: update edcca log parsing for RTL8922D

Ingyu Jang (1):
      wifi: brcmsmac: phy: Remove unreachable error handling code

Johannes Berg (5):
      Merge tag 'rtw-next-2026-01-30' of https://github.com/pkshih/rtw
      wifi: ieee80211: add some initial UHR definitions
      wifi: cfg80211: add initial UHR support
      wifi: mac80211: add initial UHR support
      Merge tag 'ath-next-20260202' of git://git.kernel.org/pub/scm/linux/kernel/git/ath/ath

Lachlan Hodges (1):
      wifi: mac80211: correct ieee80211-{s1g/eht}.h include guard comments

Lorenzo Bianconi (1):
      wifi: mac80211: Add eMLSR/eMLMR action frame parsing support

Marco Crivellari (1):
      wifi: rtw88: add WQ_PERCPU to alloc_workqueue users

Miaoqing Pan (2):
      wifi: ath11k: add usecase firmware handling based on device compatible
      dt-bindings: net: wireless: ath11k-pci: deprecate 'firmware-name' property

Ping-Ke Shih (22):
      wifi: rtw89: mac: clear global interrupt right after power-on
      wifi: rtw89: phy: add {read,write}_rf_v3 for RTL8922D
      wifi: rtw89: phy: add ops rtw89_phy_gen_be_v1 for RTL8922D
      wifi: rtw89: phy: abstract start address and EHT of PHY status bitmap
      wifi: rtw89: phy: abstract BB wrap registers to share initial flow
      wifi: rtw89: phy: update BB wrapper RFSI
      wifi: rtw89: phy: write BB wrapper registers with flush
      wifi: rtw89: phy: refine initial flow of BB wrapper
      wifi: rtw89: phy: add chip_ops to calculate RX gain from efuse to support PS mode
      wifi: rtw89: phy: add firmware element of digital TX power compensation
      wifi: rtw89: mac: clear DTOP disable excluding CID7090 variant for RTL8922D
      wifi: rtw89: mac: set force MBA duration to 0
      wifi: rtw89: rfk: add firmware command to do TX IQK
      wifi: rtw89: rfk: add to print debug log of TX IQK
      wifi: rtw89: rfk: add firmware command to do CIM3K
      wifi: rtw89: rfk: add to print debug log of CIM3K
      wifi: rtw89: rfk: update RFK report format of IQK, DACK and TXGAPK
      wifi: rtw89: fw: correct content of DACK H2C command
      wifi: rtw89: phy: add PHY C2H event dummy handler for func 1-7 and 2-10
      wifi: rtw89: pci: validate release report content before using for RTL8922DE
      wifi: rtw89: mac: set MU group membership and position to registers
      wifi: rtw89: pci: warn if SPS OCP happens for RTL8922DE

Po-Hao Huang (3):
      wifi: rtw89: phy: fix incorrect power limit by mac_id
      wifi: rtw89: fix unable to receive probe responses under MLO connection
      wifi: rtw89: 8922a: add digital compensation for 2GHz

Shin-Yi Lin (1):
      wifi: rtw89: Add default ID 28de:2432 for RTL8832CU

Wei Zhang (2):
      wifi: ath12k: add WMI support for spatial reuse parameter configuration
      wifi: ath12k: support OBSS PD configuration for AP mode

Zilin Guan (1):
      wifi: rtw89: debug: Fix memory leak in __print_txpwr_map()

Ziyi Guo (2):
      wifi: ath10k: fix lock protection in ath10k_wmi_event_peer_sta_ps_state_chg()
      wifi: ath10k: sdio: add missing lock protection in ath10k_sdio_fw_crashed_dump()

Zong-Zhe Yang (6):
      wifi: rtw89: phy: update TSSI flow for RTL8922D
      wifi: rtw89: 8922a: configure FW version for SIM_SER_L0L1_BY_HALT_H2C
      wifi: rtw89: get designated link to replace link instance 0
      wifi: rtw89: regd: update regulatory map to R73-R54
      wifi: rtw89: debug: rename mac/ctrl error to L0/L1 error
      wifi: rtw89: debug: tweak Wi-Fi 7 SER L0/L1 simulation methods

 .../bindings/net/wireless/qcom,ath11k-pci.yaml     |   1 +
 drivers/net/wireless/ath/ath10k/sdio.c             |   6 +
 drivers/net/wireless/ath/ath10k/snoc.c             |  53 +-
 drivers/net/wireless/ath/ath10k/snoc.h             |   3 +
 drivers/net/wireless/ath/ath10k/wmi.c              |   4 +-
 drivers/net/wireless/ath/ath11k/core.c             |  27 +
 drivers/net/wireless/ath/ath11k/core.h             |   4 +
 .../net/wireless/ath/ath12k/debugfs_htt_stats.c    | 197 ++++++-
 .../net/wireless/ath/ath12k/debugfs_htt_stats.h    |  81 +++
 drivers/net/wireless/ath/ath12k/mac.c              | 174 ++++++-
 drivers/net/wireless/ath/ath12k/mac.h              |   3 +
 drivers/net/wireless/ath/ath12k/wmi.c              | 142 ++++++
 drivers/net/wireless/ath/ath12k/wmi.h              |  47 ++
 .../broadcom/brcm80211/brcmsmac/phy/phy_lcn.c      |   9 +-
 drivers/net/wireless/realtek/rtw88/usb.c           |   3 +-
 drivers/net/wireless/realtek/rtw89/chan.c          |  31 +-
 drivers/net/wireless/realtek/rtw89/core.h          |  40 +-
 drivers/net/wireless/realtek/rtw89/debug.c         |  99 +++-
 drivers/net/wireless/realtek/rtw89/debug.h         |   1 +
 drivers/net/wireless/realtek/rtw89/fw.c            | 297 ++++++++++-
 drivers/net/wireless/realtek/rtw89/fw.h            | 188 ++++++-
 drivers/net/wireless/realtek/rtw89/mac.c           |  23 +-
 drivers/net/wireless/realtek/rtw89/mac.h           |  23 +
 drivers/net/wireless/realtek/rtw89/mac80211.c      |   4 +-
 drivers/net/wireless/realtek/rtw89/mac_be.c        |  23 +-
 drivers/net/wireless/realtek/rtw89/pci.c           |  17 +-
 drivers/net/wireless/realtek/rtw89/pci.h           |   1 +
 drivers/net/wireless/realtek/rtw89/pci_be.c        |   2 +
 drivers/net/wireless/realtek/rtw89/phy.c           | 381 ++++++++++++--
 drivers/net/wireless/realtek/rtw89/phy.h           |  36 +-
 drivers/net/wireless/realtek/rtw89/phy_be.c        | 563 ++++++++++++++++++++-
 drivers/net/wireless/realtek/rtw89/ps.c            |   2 +
 drivers/net/wireless/realtek/rtw89/reg.h           | 368 +++++++++++++-
 drivers/net/wireless/realtek/rtw89/regd.c          |  20 +-
 drivers/net/wireless/realtek/rtw89/rtw8851b.c      |   1 +
 drivers/net/wireless/realtek/rtw89/rtw8852a.c      |   1 +
 drivers/net/wireless/realtek/rtw89/rtw8852b.c      |   1 +
 drivers/net/wireless/realtek/rtw89/rtw8852bt.c     |   1 +
 drivers/net/wireless/realtek/rtw89/rtw8852c.c      |   1 +
 drivers/net/wireless/realtek/rtw89/rtw8852cu.c     |   2 +
 drivers/net/wireless/realtek/rtw89/rtw8922a.c      |  58 ++-
 drivers/net/wireless/realtek/rtw89/wow.c           |   6 +-
 include/linux/ieee80211-eht.h                      |  13 +-
 include/linux/ieee80211-s1g.h                      |   2 +-
 include/linux/ieee80211-uhr.h                      | 220 ++++++++
 include/linux/ieee80211.h                          |  39 +-
 include/net/cfg80211.h                             |  58 ++-
 include/net/mac80211.h                             |  67 ++-
 include/uapi/linux/nl80211.h                       |  30 ++
 net/mac80211/Makefile                              |   2 +-
 net/mac80211/cfg.c                                 |  24 +-
 net/mac80211/driver-ops.h                          |  21 +
 net/mac80211/eht.c                                 | 175 +++++++
 net/mac80211/ieee80211_i.h                         |  23 +-
 net/mac80211/iface.c                               |  12 +-
 net/mac80211/link.c                                |   4 +-
 net/mac80211/main.c                                |  15 +-
 net/mac80211/mlme.c                                | 115 ++++-
 net/mac80211/parse.c                               |  22 +-
 net/mac80211/rx.c                                  |  34 ++
 net/mac80211/sta_info.c                            |  13 +-
 net/mac80211/sta_info.h                            |  80 ++-
 net/mac80211/trace.h                               |  32 ++
 net/mac80211/uhr.c                                 |  30 ++
 net/mac80211/util.c                                |  38 +-
 net/wireless/nl80211.c                             | 102 +++-
 net/wireless/reg.c                                 |   4 +-
 net/wireless/util.c                                | 101 +++-
 68 files changed, 3973 insertions(+), 247 deletions(-)
 create mode 100644 include/linux/ieee80211-uhr.h
 create mode 100644 net/mac80211/uhr.c

^ permalink raw reply

* Re: [PATCH wireless-next 0/4] DFS/CAC changes
From: Johannes Berg @ 2026-02-04 12:05 UTC (permalink / raw)
  To: Janusz Dziedzic, linux-wireless
In-Reply-To: <20260203185717.103810-1-janusz.dziedzic@gmail.com>

Hmm.

This patchset causes dfs_cac_restart_on_enable and
dfs_us_chan_switch_precac tests from upstream hostap to fail for me, so
I'm dropping it for now.

johannes

^ permalink raw reply

* [PATCH] iwlwifi: dvm: fix NULL pointer dereference in rxon
From: dhyaan19022009-hue @ 2026-02-04 12:01 UTC (permalink / raw)
  To: kvalo; +Cc: linux-wireless, linux-kernel, Dhyan K Prajapati

From: Dhyan K Prajapati <dhyan19022009@gmail.com>

When bringing up the wireless interface via virtual monitor mode,
iwlagn_bss_info_changed() can be called with a NULL bss_conf pointer
during ieee80211_add_virtual_monitor() -> ieee80211_do_open() sequence.

This causes a NULL pointer dereference when the function attempts to
access bss_conf fields at offset +0x10.

Crash signature:
  BUG: kernel NULL pointer dereference, address: 0000000000000000
  RIP: 0010:iwlagn_bss_info_changed+0x19d/0x640 [iwldvm]
  Call Trace:
   drv_link_info_changed+0x2b5/0x2c0 [mac80211]
   ieee80211_link_info_change_notify+0x13d/0x160 [mac80211]
   ieee80211_recalc_txpower+0x5c/0x60 [mac80211]
   ieee80211_assign_link_chanctx+0x182/0x410 [mac80211]
   ieee80211_add_virtual_monitor+0x17c/0x2b0 [mac80211]
   ieee80211_do_open+0x6d8/0x740 [mac80211]

Add an early NULL check for bss_conf before accessing its members.

Hardware: Dell Latitude E6430
WiFi: Intel Centrino Advanced-N 6205 [8086:0085]
Kernel: 6.18.7-061807-generic

Signed-off-by: Dhyan K Prajapati <dhyan19022009@gmail.com>
---
 drivers/net/wireless/intel/iwlwifi/dvm/rxon.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/net/wireless/intel/iwlwifi/dvm/rxon.c b/drivers/net/wireless/intel/iwlwifi/dvm/rxon.c
index e08e44cae..2d480b1d1 100644
--- a/drivers/net/wireless/intel/iwlwifi/dvm/rxon.c
+++ b/drivers/net/wireless/intel/iwlwifi/dvm/rxon.c
@@ -1392,6 +1392,11 @@ void iwlagn_bss_info_changed(struct ieee80211_hw *hw,
 
 	mutex_lock(&priv->mutex);
 
+	if (!bss_conf) {
+		mutex_unlock(&priv->mutex);
+		return;
+	}
+
 	if (changes & BSS_CHANGED_IDLE && vif->cfg.idle) {
 		/*
 		 * If we go idle, then clearly no "passive-no-rx"
-- 
2.43.0

^ permalink raw reply related

* [PATCH] iwlwifi: dvm: fix NULL pointer dereference in rxon
From: dhyaan19022009-hue @ 2026-02-04 11:38 UTC (permalink / raw)
  To: Kalle Valo; +Cc: linux-wireless, linux-kernel, dhyaan19022009-hue

Signed-off-by: dhyaan19022009-hue <dhyaan19022009@gmail.com>
---
 drivers/net/wireless/intel/iwlwifi/dvm/rxon.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/net/wireless/intel/iwlwifi/dvm/rxon.c b/drivers/net/wireless/intel/iwlwifi/dvm/rxon.c
index e08e44cae..2d480b1d1 100644
--- a/drivers/net/wireless/intel/iwlwifi/dvm/rxon.c
+++ b/drivers/net/wireless/intel/iwlwifi/dvm/rxon.c
@@ -1392,6 +1392,11 @@ void iwlagn_bss_info_changed(struct ieee80211_hw *hw,
 
 	mutex_lock(&priv->mutex);
 
+
+        if (!bss_conf) {
+		mutex_unlock(&priv->mutex);
+		return;
+	}
 	if (changes & BSS_CHANGED_IDLE && vif->cfg.idle) {
 		/*
 		 * If we go idle, then clearly no "passive-no-rx"
-- 
2.43.0


^ permalink raw reply related

* [GIT PULL] wireless-2026-02-04
From: Johannes Berg @ 2026-02-04 11:35 UTC (permalink / raw)
  To: netdev; +Cc: linux-wireless

Hi,

So famous last words and all that, but two bugs in
iwlwifi were reported and fixed in the last week or
so, and here we have those fixes.

Please pull and let us know if there's any problem.

Thanks,
johannes



The following changes since commit 1cac38910ecb881b09f61f57545a771bbe57ba68:

  Merge tag 'net-6.19-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net (2026-01-29 10:21:52 -0800)

are available in the Git repository at:

  https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless.git tags/wireless-2026-02-04

for you to fetch changes up to 45a66b75bf10c84060c9948e3be664e03454515d:

  Merge tag 'iwlwifi-fixes-2026-02-03' of https://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-next (2026-02-04 12:31:58 +0100)

----------------------------------------------------------------
Two last-minute iwlwifi fixes:
 - cancel mlo_scan_work on disassoc to avoid
   use-after-free/init-after-queue issues
 - pause TCM work on suspend to avoid crashing
   the FW (and sometimes the host) on resume
   with traffic

----------------------------------------------------------------
Johannes Berg (1):
      Merge tag 'iwlwifi-fixes-2026-02-03' of https://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-next

Miri Korenblit (2):
      wifi: iwlwifi: mld: cancel mlo_scan_start_wk
      wifi: iwlwifi: mvm: pause TCM on fast resume

 drivers/net/wireless/intel/iwlwifi/mld/iface.c    | 2 --
 drivers/net/wireless/intel/iwlwifi/mld/mac80211.c | 2 ++
 drivers/net/wireless/intel/iwlwifi/mvm/d3.c       | 6 +++++-
 3 files changed, 7 insertions(+), 3 deletions(-)

^ permalink raw reply

* Re: [PATCH] wifi: nl80211: drop impossible negative band check
From: sun jian @ 2026-02-04 11:33 UTC (permalink / raw)
  To: Johannes Berg; +Cc: linux-wireless, linux-kernel
In-Reply-To: <a1989402f65d0a9a696eb85925db98f6b722fc11.camel@sipsolutions.net>

On Wed, Feb 4, 2026 at 7:29 PM Johannes Berg <johannes@sipsolutions.net> wrote:
>
> On Wed, 2026-02-04 at 19:21 +0800, sun jian wrote:
> > >
> > > applies _only_ to signed short, not to signed char?
> > Fair point, thanks. I'll drop this patch.
>
> I've thought the better way to address that warning would be to simply
> use 'int' instead of the enum there, but I forgot where the warning even
> appears. I don't think it's generally with gcc/clang, is it?
>

Right, I only saw it from sparse, not from gcc/clang.

It was reported for net/wireless/nl80211.c at the checks around lines
~5762 and ~10539 in my tree (both are "band < 0 || band >=
NUM_NL80211_BANDS" with band coming from nla_type()).

Thanks,
Sun Jian

^ permalink raw reply

* Re: [PATCH] wifi: nl80211: drop impossible negative band check
From: Johannes Berg @ 2026-02-04 11:29 UTC (permalink / raw)
  To: sun jian; +Cc: linux-wireless, linux-kernel
In-Reply-To: <CABFUUZFxH1noKq-=zSTrqpirJtTQ2AA6anb7Pk=BDGC3aTs+Og@mail.gmail.com>

On Wed, 2026-02-04 at 19:21 +0800, sun jian wrote:
> > 
> > applies _only_ to signed short, not to signed char?
> Fair point, thanks. I'll drop this patch.

I've thought the better way to address that warning would be to simply
use 'int' instead of the enum there, but I forgot where the warning even
appears. I don't think it's generally with gcc/clang, is it?

johannes

^ permalink raw reply

* Re: [PATCH] wifi: nl80211: drop impossible negative band check
From: sun jian @ 2026-02-04 11:21 UTC (permalink / raw)
  To: Johannes Berg; +Cc: linux-wireless, linux-kernel
In-Reply-To: <074b66ab3d63e6640ecd6962c074702225fba19e.camel@sipsolutions.net>

>
> applies _only_ to signed short, not to signed char?
Fair point, thanks. I'll drop this patch.

Regards,

Sun Jian

^ permalink raw reply

* Re: [PATCH] wifi: nl80211: drop impossible negative band check
From: Johannes Berg @ 2026-02-04 11:11 UTC (permalink / raw)
  To: sun jian; +Cc: linux-wireless, linux-kernel
In-Reply-To: <CABFUUZEiMFoGg4r+9q1FabbwD1Pfd0oZZeNxFqnM22nA1xn8UQ@mail.gmail.com>

On Wed, 2026-02-04 at 17:13 +0800, sun jian wrote:
> On Wed, Feb 4, 2026 at 4:36 PM Johannes Berg <johannes@sipsolutions.net> wrote:
> > 
> > On Wed, 2026-02-04 at 16:18 +0800, Sun Jian wrote:
> > > band is derived from nla_type() of a nested netlink attribute, which isAgreed — in general the enum underlying type can be signed.
> > > a masked u16 value and therefore cannot be negative. Drop the dead
> > > "band < 0" checks and keep the upper bound validation.
> > 
> > I've seen this before, but I'm not really convinced it is entirely
> > correct. C says:
> > 
> >    All enumerations have an underlying type. The underlying type can be
> >    explicitly specified using an enum type specifier and is its fixed
> >    underlying type. If it is not explicitly specified, the underlying
> >    type is the enumeration’s compatible type, which is either char or a
> >    standard or extended signed or unsigned integer type.
> > 
> 
> Agreed — in general the enum underlying type can be signed.

But nothing says it cannot be "signed char".

> > It would thus _seem_ to be possible for an enum to generally be a signed
> > type, and therefore a 'signed short', and therefore an nla_type() that's
> > a u16 could end up with a negative value...

I was just using 'signed short' as an example, but your argument:

> The key detail here is that band isn't assigned the raw __u16
> nla->nla_type, but nla_type().
> 
> And nla_type() is effectively:
> nla->nla_type & NLA_TYPE_MASK
> 
> and NLA_TYPE_MASK clears the two high flag bits:
> NLA_F_NESTED (1 << 15)
> NLA_F_NET_BYTEORDER (1 << 14)
> 
> So the result is restricted to the low 14 bits, i.e. 0..0x3fff.
> 
> With that restriction, even if enum nl80211_band ended up with a signed
> 16-bit underlying type, the sign bit (bit 15) can never be set by
> nla_type(), so the value cannot become negative.

applies _only_ to signed short, not to signed char?

Now we can argue a "sane compiler" won't do that, and we can also argue
that "gcc and clang are sane compilers", although sometimes I definitely
have doubts about the latter ;-)

johannes

^ permalink raw reply

* Re: [PATCH v2 0/3] Replace uses of system_wq and system_unbound_wq
From: Marco Crivellari @ 2026-02-04 11:03 UTC (permalink / raw)
  To: linux-kernel, linux-wireless
  Cc: Tejun Heo, Lai Jiangshan, Frederic Weisbecker,
	Sebastian Andrzej Siewior, Michal Hocko, Miri Korenblit,
	Johannes Berg
In-Reply-To: <CAAofZF7hFFH+pqojfrpgw2L8G9eLXxo1jO4kHxs9mtzbxboAMQ@mail.gmail.com>

On Wed, Dec 24, 2025 at 4:27 PM Marco Crivellari
<marco.crivellari@suse.com> wrote:
> [...]
> > Marco Crivellari (3):
> >   wifi: iwlwifi: replace use of system_unbound_wq with system_dfl_wq
> >   wifi: iwlwifi: fw: replace use of system_unbound_wq with system_dfl_wq
> >   wifi: iwlwifi: nvm: replace use of system_wq with system_percpu_wq
> >
> >  drivers/net/wireless/intel/iwlwifi/fw/dbg.c    | 4 ++--
> >  drivers/net/wireless/intel/iwlwifi/iwl-trans.h | 2 +-
> >  drivers/net/wireless/intel/iwlwifi/mvm/tdls.c  | 6 +++---
> >  3 files changed, 6 insertions(+), 6 deletions(-)
>
> Gentle ping.
>
> Thanks!

Gentle ping.

Thanks!

-- 

Marco Crivellari

L3 Support Engineer

^ permalink raw reply

* PCI ID conflict between ipw2x00 and i40e
From: Ethan Nelson-Moore @ 2026-02-04 10:15 UTC (permalink / raw)
  To: intel-wired-lan, netdev, linux-wireless
  Cc: Tony Nguyen, Przemek Kitszel, Andrew Lunn, David S. Miller,
	Eric Dumazet, Jakub Kicinski, Paolo Abeni, Stanislav Yakovlev

I have written a script to find device IDs that are claimed by
multiple drivers in the kernel. It has found that the PCI ID 8086:104f
is supported by both drivers/net/wireless/intel/ipw2x00 and
drivers/net/ethernet/intel/i40e. I assume the i40e one is correct,
since that's what the ID is assigned to in the pci.ids database. Can
anyone at Intel confirm this?

Ethan

^ permalink raw reply

* Re: [PATCH] wifi: nl80211: drop impossible negative band check
From: sun jian @ 2026-02-04  9:13 UTC (permalink / raw)
  To: Johannes Berg; +Cc: linux-wireless, linux-kernel
In-Reply-To: <bc92582d5de175ec325ae53ed3fe18a5e073438b.camel@sipsolutions.net>

On Wed, Feb 4, 2026 at 4:36 PM Johannes Berg <johannes@sipsolutions.net> wrote:
>
> On Wed, 2026-02-04 at 16:18 +0800, Sun Jian wrote:
> > band is derived from nla_type() of a nested netlink attribute, which isAgreed — in general the enum underlying type can be signed.
> > a masked u16 value and therefore cannot be negative. Drop the dead
> > "band < 0" checks and keep the upper bound validation.
>
> I've seen this before, but I'm not really convinced it is entirely
> correct. C says:
>
>    All enumerations have an underlying type. The underlying type can be
>    explicitly specified using an enum type specifier and is its fixed
>    underlying type. If it is not explicitly specified, the underlying
>    type is the enumeration’s compatible type, which is either char or a
>    standard or extended signed or unsigned integer type.
>

Agreed — in general the enum underlying type can be signed.

> It would thus _seem_ to be possible for an enum to generally be a signed
> type, and therefore a 'signed short', and therefore an nla_type() that's
> a u16 could end up with a negative value...

The key detail here is that band isn't assigned the raw __u16
nla->nla_type, but nla_type().

And nla_type() is effectively:
nla->nla_type & NLA_TYPE_MASK

and NLA_TYPE_MASK clears the two high flag bits:
NLA_F_NESTED (1 << 15)
NLA_F_NET_BYTEORDER (1 << 14)

So the result is restricted to the low 14 bits, i.e. 0..0x3fff.

With that restriction, even if enum nl80211_band ended up with a signed
16-bit underlying type, the sign bit (bit 15) can never be set by
nla_type(), so the value cannot become negative.

>
> Am I wrong?

I think the "enum may be signed" concern is valid in general, but for
this particular assignment the masking guarantees the value is always in
a non-negative range.

Thanks,
Sun Jian

^ permalink raw reply

* [wireless-next:main] BUILD SUCCESS 9825fa8f49905275acef6c8e7fcd017d04616311
From: kernel test robot @ 2026-02-04  9:05 UTC (permalink / raw)
  To: Johannes Berg; +Cc: linux-wireless

tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next.git main
branch HEAD: 9825fa8f49905275acef6c8e7fcd017d04616311  wifi: brcmsmac: phy: Remove unreachable error handling code

elapsed time: 1223m

configs tested: 277
configs skipped: 5

The following configs have been built successfully.
More configs may be tested in the coming days.

tested configs:
alpha                             allnoconfig    gcc-15.2.0
alpha                            allyesconfig    gcc-15.2.0
alpha                               defconfig    gcc-15.2.0
arc                              allmodconfig    clang-16
arc                              allmodconfig    gcc-15.2.0
arc                               allnoconfig    gcc-15.2.0
arc                              allyesconfig    clang-22
arc                          axs101_defconfig    gcc-15.2.0
arc                          axs103_defconfig    clang-22
arc                                 defconfig    gcc-15.2.0
arc                   randconfig-001-20260203    gcc-12.5.0
arc                   randconfig-001-20260203    gcc-8.5.0
arc                   randconfig-001-20260204    gcc-8.5.0
arc                   randconfig-002-20260203    gcc-12.5.0
arc                   randconfig-002-20260204    gcc-8.5.0
arm                              alldefconfig    gcc-15.2.0
arm                               allnoconfig    clang-22
arm                               allnoconfig    gcc-15.2.0
arm                              allyesconfig    clang-16
arm                              allyesconfig    gcc-15.2.0
arm                                 defconfig    gcc-15.2.0
arm                          ep93xx_defconfig    gcc-15.2.0
arm                         lpc32xx_defconfig    gcc-15.2.0
arm                          moxart_defconfig    clang-22
arm                        mvebu_v5_defconfig    gcc-15.2.0
arm                        mvebu_v7_defconfig    clang-22
arm                           omap1_defconfig    gcc-15.2.0
arm                          pxa910_defconfig    gcc-15.2.0
arm                            qcom_defconfig    gcc-15.2.0
arm                   randconfig-001-20260203    gcc-12.5.0
arm                   randconfig-001-20260203    gcc-8.5.0
arm                   randconfig-001-20260204    gcc-8.5.0
arm                   randconfig-002-20260203    clang-18
arm                   randconfig-002-20260203    gcc-12.5.0
arm                   randconfig-002-20260204    gcc-8.5.0
arm                   randconfig-003-20260203    gcc-10.5.0
arm                   randconfig-003-20260203    gcc-12.5.0
arm                   randconfig-003-20260204    gcc-8.5.0
arm                   randconfig-004-20260203    clang-16
arm                   randconfig-004-20260203    gcc-12.5.0
arm                   randconfig-004-20260204    gcc-8.5.0
arm                         socfpga_defconfig    gcc-15.2.0
arm                        spear3xx_defconfig    gcc-15.2.0
arm                           sunxi_defconfig    gcc-15.2.0
arm                       versatile_defconfig    gcc-15.2.0
arm                        vexpress_defconfig    gcc-15.2.0
arm64                            allmodconfig    clang-22
arm64                             allnoconfig    gcc-15.2.0
arm64                               defconfig    gcc-15.2.0
arm64                 randconfig-001-20260204    gcc-11.5.0
arm64                 randconfig-002-20260204    gcc-11.5.0
arm64                 randconfig-003-20260204    gcc-11.5.0
arm64                 randconfig-004-20260204    gcc-11.5.0
csky                             allmodconfig    gcc-15.2.0
csky                              allnoconfig    gcc-15.2.0
csky                                defconfig    gcc-15.2.0
csky                  randconfig-001-20260204    gcc-11.5.0
csky                  randconfig-002-20260204    gcc-11.5.0
hexagon                          alldefconfig    gcc-15.2.0
hexagon                          allmodconfig    clang-17
hexagon                          allmodconfig    gcc-15.2.0
hexagon                           allnoconfig    clang-22
hexagon                           allnoconfig    gcc-15.2.0
hexagon                             defconfig    gcc-15.2.0
hexagon               randconfig-001-20260204    gcc-15.2.0
hexagon               randconfig-002-20260204    gcc-15.2.0
i386                             allmodconfig    clang-20
i386                             allmodconfig    gcc-14
i386                              allnoconfig    gcc-14
i386                              allnoconfig    gcc-15.2.0
i386                             allyesconfig    clang-20
i386                             allyesconfig    gcc-14
i386        buildonly-randconfig-001-20260203    gcc-14
i386        buildonly-randconfig-001-20260204    gcc-14
i386        buildonly-randconfig-002-20260203    gcc-13
i386        buildonly-randconfig-002-20260204    gcc-14
i386        buildonly-randconfig-003-20260203    clang-20
i386        buildonly-randconfig-003-20260204    gcc-14
i386        buildonly-randconfig-004-20260203    clang-20
i386        buildonly-randconfig-004-20260204    gcc-14
i386        buildonly-randconfig-005-20260203    clang-20
i386        buildonly-randconfig-005-20260204    gcc-14
i386        buildonly-randconfig-006-20260203    clang-20
i386        buildonly-randconfig-006-20260204    gcc-14
i386                                defconfig    gcc-15.2.0
i386                  randconfig-001-20260204    gcc-14
i386                  randconfig-002-20260204    gcc-14
i386                  randconfig-003-20260204    clang-20
i386                  randconfig-003-20260204    gcc-14
i386                  randconfig-004-20260204    gcc-12
i386                  randconfig-004-20260204    gcc-14
i386                  randconfig-005-20260204    gcc-14
i386                  randconfig-006-20260204    gcc-14
i386                  randconfig-007-20260204    gcc-14
i386                  randconfig-011-20260203    gcc-14
i386                  randconfig-011-20260204    clang-20
i386                  randconfig-012-20260203    gcc-14
i386                  randconfig-012-20260204    clang-20
i386                  randconfig-012-20260204    gcc-14
i386                  randconfig-013-20260203    gcc-14
i386                  randconfig-013-20260204    clang-20
i386                  randconfig-014-20260203    gcc-14
i386                  randconfig-014-20260204    clang-20
i386                  randconfig-015-20260203    gcc-14
i386                  randconfig-015-20260204    clang-20
i386                  randconfig-015-20260204    gcc-13
i386                  randconfig-016-20260203    gcc-14
i386                  randconfig-016-20260204    clang-20
i386                  randconfig-017-20260203    gcc-14
i386                  randconfig-017-20260204    clang-20
loongarch                        allmodconfig    clang-22
loongarch                         allnoconfig    clang-22
loongarch                         allnoconfig    gcc-15.2.0
loongarch                           defconfig    clang-19
loongarch             randconfig-001-20260204    gcc-15.2.0
loongarch             randconfig-002-20260204    gcc-15.2.0
m68k                             allmodconfig    gcc-15.2.0
m68k                              allnoconfig    gcc-15.2.0
m68k                             allyesconfig    clang-16
m68k                             allyesconfig    gcc-15.2.0
m68k                                defconfig    clang-19
m68k                        m5272c3_defconfig    clang-22
microblaze                        allnoconfig    gcc-15.2.0
microblaze                       allyesconfig    gcc-15.2.0
microblaze                          defconfig    clang-19
mips                             allmodconfig    gcc-15.2.0
mips                              allnoconfig    gcc-15.2.0
mips                             allyesconfig    gcc-15.2.0
mips                          ath79_defconfig    gcc-15.2.0
mips                          eyeq5_defconfig    gcc-15.2.0
mips                            gpr_defconfig    clang-22
mips                      malta_kvm_defconfig    clang-22
mips                        vocore2_defconfig    clang-22
nios2                         10m50_defconfig    clang-22
nios2                         10m50_defconfig    gcc-15.2.0
nios2                            allmodconfig    clang-22
nios2                            allmodconfig    gcc-11.5.0
nios2                             allnoconfig    clang-22
nios2                             allnoconfig    gcc-11.5.0
nios2                               defconfig    clang-19
nios2                 randconfig-001-20260204    gcc-15.2.0
nios2                 randconfig-002-20260204    gcc-15.2.0
openrisc                         alldefconfig    gcc-15.2.0
openrisc                         allmodconfig    clang-22
openrisc                         allmodconfig    gcc-15.2.0
openrisc                          allnoconfig    clang-22
openrisc                          allnoconfig    gcc-15.2.0
openrisc                            defconfig    gcc-15.2.0
openrisc                    or1ksim_defconfig    gcc-15.2.0
parisc                           allmodconfig    gcc-15.2.0
parisc                            allnoconfig    clang-22
parisc                            allnoconfig    gcc-15.2.0
parisc                           allyesconfig    clang-19
parisc                           allyesconfig    gcc-15.2.0
parisc                              defconfig    gcc-15.2.0
parisc                randconfig-001-20260204    gcc-8.5.0
parisc                randconfig-002-20260204    gcc-8.5.0
parisc64                            defconfig    clang-19
powerpc                          allmodconfig    gcc-15.2.0
powerpc                           allnoconfig    clang-22
powerpc                           allnoconfig    gcc-15.2.0
powerpc                      bamboo_defconfig    gcc-15.2.0
powerpc                      cm5200_defconfig    clang-22
powerpc                     ep8248e_defconfig    gcc-15.2.0
powerpc                        icon_defconfig    clang-22
powerpc                     kmeter1_defconfig    clang-22
powerpc               randconfig-001-20260204    gcc-8.5.0
powerpc               randconfig-002-20260204    gcc-8.5.0
powerpc                     redwood_defconfig    clang-22
powerpc                     tqm8541_defconfig    gcc-15.2.0
powerpc64                        alldefconfig    clang-22
powerpc64             randconfig-001-20260204    gcc-8.5.0
powerpc64             randconfig-002-20260204    gcc-8.5.0
riscv                            allmodconfig    clang-22
riscv                             allnoconfig    clang-22
riscv                             allnoconfig    gcc-15.2.0
riscv                            allyesconfig    clang-16
riscv                               defconfig    gcc-15.2.0
riscv                    nommu_k210_defconfig    gcc-15.2.0
riscv             nommu_k210_sdcard_defconfig    clang-22
riscv                 randconfig-001-20260203    gcc-8.5.0
riscv                 randconfig-001-20260204    gcc-8.5.0
riscv                 randconfig-002-20260203    gcc-8.5.0
riscv                 randconfig-002-20260204    gcc-8.5.0
s390                             allmodconfig    clang-18
s390                             allmodconfig    clang-19
s390                              allnoconfig    clang-22
s390                             allyesconfig    gcc-15.2.0
s390                                defconfig    gcc-15.2.0
s390                  randconfig-001-20260203    gcc-8.5.0
s390                  randconfig-001-20260204    gcc-8.5.0
s390                  randconfig-002-20260203    gcc-8.5.0
s390                  randconfig-002-20260204    gcc-8.5.0
sh                               allmodconfig    gcc-15.2.0
sh                                allnoconfig    clang-22
sh                                allnoconfig    gcc-15.2.0
sh                               allyesconfig    clang-19
sh                               allyesconfig    gcc-15.2.0
sh                                  defconfig    gcc-14
sh                          lboxre2_defconfig    gcc-15.2.0
sh                    randconfig-001-20260203    gcc-8.5.0
sh                    randconfig-001-20260204    gcc-8.5.0
sh                    randconfig-002-20260203    gcc-8.5.0
sh                    randconfig-002-20260204    gcc-8.5.0
sh                          rsk7201_defconfig    clang-22
sh                     sh7710voipgw_defconfig    gcc-15.2.0
sh                   sh7724_generic_defconfig    gcc-15.2.0
sh                            shmin_defconfig    gcc-15.2.0
sparc                             allnoconfig    clang-22
sparc                             allnoconfig    gcc-15.2.0
sparc                               defconfig    gcc-15.2.0
sparc                 randconfig-001-20260204    gcc-8.5.0
sparc                 randconfig-002-20260204    gcc-8.5.0
sparc64                          allmodconfig    clang-22
sparc64                             defconfig    gcc-14
sparc64               randconfig-001-20260204    gcc-8.5.0
sparc64               randconfig-002-20260204    gcc-8.5.0
um                               allmodconfig    clang-19
um                                allnoconfig    clang-22
um                               allyesconfig    gcc-14
um                               allyesconfig    gcc-15.2.0
um                                  defconfig    gcc-14
um                             i386_defconfig    gcc-14
um                             i386_defconfig    gcc-15.2.0
um                    randconfig-001-20260204    gcc-8.5.0
um                    randconfig-002-20260204    gcc-8.5.0
um                           x86_64_defconfig    gcc-14
x86_64                           allmodconfig    clang-20
x86_64                            allnoconfig    clang-20
x86_64                            allnoconfig    clang-22
x86_64                           allyesconfig    clang-20
x86_64      buildonly-randconfig-001-20260203    clang-20
x86_64      buildonly-randconfig-001-20260204    clang-20
x86_64      buildonly-randconfig-002-20260203    clang-20
x86_64      buildonly-randconfig-002-20260204    clang-20
x86_64      buildonly-randconfig-003-20260203    clang-20
x86_64      buildonly-randconfig-003-20260204    clang-20
x86_64      buildonly-randconfig-004-20260203    clang-20
x86_64      buildonly-randconfig-004-20260204    clang-20
x86_64      buildonly-randconfig-005-20260203    clang-20
x86_64      buildonly-randconfig-005-20260204    clang-20
x86_64      buildonly-randconfig-006-20260203    clang-20
x86_64      buildonly-randconfig-006-20260204    clang-20
x86_64                              defconfig    gcc-14
x86_64                                  kexec    clang-20
x86_64                randconfig-001-20260204    gcc-14
x86_64                randconfig-002-20260204    gcc-14
x86_64                randconfig-003-20260204    gcc-14
x86_64                randconfig-004-20260204    gcc-14
x86_64                randconfig-005-20260204    gcc-14
x86_64                randconfig-006-20260204    gcc-14
x86_64                randconfig-011-20260204    clang-20
x86_64                randconfig-012-20260204    clang-20
x86_64                randconfig-013-20260204    clang-20
x86_64                randconfig-014-20260204    clang-20
x86_64                randconfig-015-20260204    clang-20
x86_64                randconfig-016-20260204    clang-20
x86_64                randconfig-071-20260204    gcc-14
x86_64                randconfig-072-20260204    gcc-14
x86_64                randconfig-073-20260204    gcc-14
x86_64                randconfig-074-20260204    gcc-14
x86_64                randconfig-075-20260204    gcc-14
x86_64                randconfig-076-20260204    gcc-14
x86_64                               rhel-9.4    clang-20
x86_64                           rhel-9.4-bpf    gcc-14
x86_64                          rhel-9.4-func    clang-20
x86_64                    rhel-9.4-kselftests    clang-20
x86_64                         rhel-9.4-kunit    gcc-14
x86_64                           rhel-9.4-ltp    gcc-14
x86_64                          rhel-9.4-rust    clang-20
xtensa                            allnoconfig    clang-22
xtensa                            allnoconfig    gcc-15.2.0
xtensa                           allyesconfig    clang-22
xtensa                           allyesconfig    gcc-15.2.0
xtensa                          iss_defconfig    gcc-15.2.0
xtensa                randconfig-001-20260204    gcc-8.5.0
xtensa                randconfig-002-20260204    gcc-8.5.0

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply

* Re: [PATCH] wifi: nl80211: drop impossible negative band check
From: Johannes Berg @ 2026-02-04  8:36 UTC (permalink / raw)
  To: Sun Jian; +Cc: linux-wireless, linux-kernel
In-Reply-To: <20260204081821.730673-1-sun.jian.kdev@gmail.com>

On Wed, 2026-02-04 at 16:18 +0800, Sun Jian wrote:
> band is derived from nla_type() of a nested netlink attribute, which is
> a masked u16 value and therefore cannot be negative. Drop the dead
> "band < 0" checks and keep the upper bound validation.

I've seen this before, but I'm not really convinced it is entirely
correct. C says:

   All enumerations have an underlying type. The underlying type can be
   explicitly specified using an enum type specifier and is its fixed
   underlying type. If it is not explicitly specified, the underlying
   type is the enumeration’s compatible type, which is either char or a
   standard or extended signed or unsigned integer type.

It would thus _seem_ to be possible for an enum to generally be a signed
type, and therefore a 'signed short', and therefore an nla_type() that's
a u16 could end up with a negative value...

Am I wrong?

johannes

^ permalink raw reply

* [PATCH] wifi: nl80211: drop impossible negative band check
From: Sun Jian @ 2026-02-04  8:18 UTC (permalink / raw)
  To: Johannes Berg; +Cc: linux-wireless, linux-kernel, Sun Jian

band is derived from nla_type() of a nested netlink attribute, which is
a masked u16 value and therefore cannot be negative. Drop the dead
"band < 0" checks and keep the upper bound validation.

No functional change intended.

Signed-off-by: Sun Jian <sun.jian.kdev@gmail.com>
---
 net/wireless/nl80211.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 03efd45c007f..a92b4e24b28b 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -5759,7 +5759,7 @@ static int nl80211_parse_tx_bitrate_mask(struct genl_info *info,
 		enum nl80211_band band = nla_type(tx_rates);
 		int err;
 
-		if (band < 0 || band >= NUM_NL80211_BANDS)
+		if (band >= NUM_NL80211_BANDS)
 			return -EINVAL;
 		sband = rdev->wiphy.bands[band];
 		if (sband == NULL)
@@ -10536,7 +10536,7 @@ static int nl80211_trigger_scan(struct sk_buff *skb, struct genl_info *info)
 				    tmp) {
 			enum nl80211_band band = nla_type(attr);
 
-			if (band < 0 || band >= NUM_NL80211_BANDS) {
+			if (band >= NUM_NL80211_BANDS) {
 				err = -EINVAL;
 				goto out_free;
 			}
-- 
2.43.0


^ permalink raw reply related

* [ANN] wireless-regdb: master-2026-02-04
From: Chen-Yu Tsai @ 2026-02-04  8:13 UTC (permalink / raw)
  To: wireless-regdb, linux-wireless

A new release of wireless-regdb (master-2026-02-04) is available at:

https://www.kernel.org/pub/software/network/wireless-regdb/wireless-regdb-2026.02.04.tar.xz

The short log of changes since the master-2025-10-07 release is below.

--

Andrew Yong (3):
      wireless-regdb: Update broken link in regulatory.bin(5) manpage
      wireless-regdb: Update regulatory info for Malaysia (MY) for 2024
      wireless-regdb: Update regulatory info for Malaysia (MY) for 2025

Chen-Yu Tsai (2):
      wireless-regdb: Update regulatory info for Canada (CA) for 2025
      wireless-regdb: update regulatory database based on preceding changes

Ping-Ke Shih (1):
      wireless-regdb: Update regulatory info for Tunisia (TN) on 6GHz for 2025

Richard Huynh (1):
      wireless-regdb: Update regulatory info for Australia (AU) for 2025

^ permalink raw reply

* Re: [ANN] wireless-regdb: master-2026-02-04
From: Chen-Yu Tsai @ 2026-02-04  8:00 UTC (permalink / raw)
  To: wireless-regdb, linux-wireless
In-Reply-To: <aYL8hbqyYUSaF9vn@wens.tw>

Oops, please ignore this email.

It has the wrong tag and URL.

ChenYu

On Wed, Feb 4, 2026 at 4:00 PM Chen-Yu Tsai <wens@kernel.org> wrote:
>
> A new release of wireless-regdb (master-2025-10-07) is available at:
>
> https://www.kernel.org/pub/software/network/wireless-regdb/wireless-regdb-2025.10.07.tar.xz
>
> The short log of changes since the master-2025-07-10 release is below.
>
> --
>
> Andrew Yong (3):
>       wireless-regdb: Update broken link in regulatory.bin(5) manpage
>       wireless-regdb: Update regulatory info for Malaysia (MY) for 2024
>       wireless-regdb: Update regulatory info for Malaysia (MY) for 2025
>
> Chen-Yu Tsai (2):
>       wireless-regdb: Update regulatory info for Canada (CA) for 2025
>       wireless-regdb: update regulatory database based on preceding changes
>
> Ping-Ke Shih (1):
>       wireless-regdb: Update regulatory info for Tunisia (TN) on 6GHz for 2025
>
> Richard Huynh (1):
>       wireless-regdb: Update regulatory info for Australia (AU) for 2025
>

^ permalink raw reply

* [ANN] wireless-regdb: master-2026-02-04
From: Chen-Yu Tsai @ 2026-02-04  8:00 UTC (permalink / raw)
  To: wireless-regdb, linux-wireless

A new release of wireless-regdb (master-2025-10-07) is available at:

https://www.kernel.org/pub/software/network/wireless-regdb/wireless-regdb-2025.10.07.tar.xz

The short log of changes since the master-2025-07-10 release is below.

--

Andrew Yong (3):
      wireless-regdb: Update broken link in regulatory.bin(5) manpage
      wireless-regdb: Update regulatory info for Malaysia (MY) for 2024
      wireless-regdb: Update regulatory info for Malaysia (MY) for 2025

Chen-Yu Tsai (2):
      wireless-regdb: Update regulatory info for Canada (CA) for 2025
      wireless-regdb: update regulatory database based on preceding changes

Ping-Ke Shih (1):
      wireless-regdb: Update regulatory info for Tunisia (TN) on 6GHz for 2025

Richard Huynh (1):
      wireless-regdb: Update regulatory info for Australia (AU) for 2025

^ permalink raw reply

* VEOLIA I WATER TECH - QUALCOMM : Greetings 2026
From: Florent P. @ 2026-02-04  7:09 UTC (permalink / raw)
  To: Linux-Wireless


[-- Attachment #1.1: Type: text/plain, Size: 13814 bytes --]

Hi QUALCOMM Team ,
I hope you are doing well
HAPPY NEW YEAR 2026 & Great Start of the Year ahead !
*We hope to have the chance to cooperate with QUALCOMM **in Asia Pacific in
2026.*
*As part of VEOLIA , we are the WATER TECH part of this family of
companies,* *I gently wanted to have a follow up with* *QUALCOMM During
this Winter to make you aware about our new services* * :*

*- Process Water Treatment (PW, DI System, UPW, WFI) with a better TOTAL
Water Use Within your plant or your customer plant*




*- STRONG portfolio in MEMBRANE Supply for RO/UF/MBR - We have multiple
manufacturing plants in Asia Pacific.- Waste Water Treatment (Biological &
New Technologies) to make sure to respect the discharge standards in the
sites !- Zero Liquid Discharge with Full/Partial re-use/Recycle of the
water treated- We can also assist on the OPERATION & MAINTENANCE of your
Water Treatment (Process & Waste Water Treatment systems)- Chemicals for
Water Treatment - Cooling Tower/Boiler/Chiller assistance*

and NEW services for :


*- MOBILE WATER SERVICES : Able to support on your site with our Mobile
Trucks to provide Emergency Water Solutions - RENTAL AVAILABLEMOBILE WATER
SERVICE Video
<https://veolia-dot-yamm-track.appspot.com/20LEDCLY3DDy-TRWULBCD0_lQSDVUpDOqpcgA2sTDEYKXyXsnnAH4dTpfxOFetAiPvwd8iiE3TLcq3Uvp1N137ihe1DeB_C8ajcgLc9aDfuvvUXVEGWqo8k4UyGUox5jvXETUMvf9e9AqYIDl3Nu9nGpoTXYN5x3bwRnl94Ps7y5rM1jDio16UJJs0DtQ1tq2SAWRNkUvGWpo9XaRNyc7QjYB7-n1S5lJq_u2xG8TM4Sa0CThlrxmW76aHHErI-bPFl-9lbdRUpgPUiR8UU5AgLe993xBKTyd9bp9xF_Xk9ZQV-RbBY_6DUK621NFe5dGjLNYPns6w9ZlroMO3_2TVukbbfaDo8qv3DRy_aA-0E-UMqE5ydzLofq7EZ5ECYoeyZ-8HyVaG5PvhuZpY6WddOsZWeTUl1gxmEJgoLSgc2LB-Rwci2Dbn5qSZR4y-Be-LplNB7_ZPhmMRCiWyMf9dT2vPjvTlhxGJNhZeyOukhMFmxf-MHMTCdXQh_6o6xuXSgdWfvFTuUM1wjgtWWlkJ8VT4vwSfbszUq_dNT1C8cHJu111BvPiDzlkpRyrOjDuIO7RArh9mGNUfxOPJmKaVJHrCTuUHx-KFTG2ofgH8rTOiUol9D2OUVCzxZjnYQ31NINi-8nnh0u_7r_7G9qqUdmVgW1ogW9GOgtQlcsfC5OynWIKUo8Zbp2Gn1dlgLb97igSKo1Z47BAaUte5_9gxS0n7H-GRB8t7UHScRKMcynMBGJWq2ytTzzkZzVvt7xh0EBLfynyV5KWKgnB7wJmU2V8nGjYEdkJRl2A-3eyZkLeATzhdCpUXIK8hllhwmI-_jGNkzwSVp8pCpA0KxdqzehbS_T83FT2sFIHtxRfoQRNGBG5bGpyG9USMH-vgd0SxGGBQn0S6n3zbdKuwE4CSqrRyFx7NFWVnBT1WXh9cgK5CFU2OeAvKtRIP6MpATdFR2REwq-83DbmkYN0sTApxyrAs4VHDGa-E22qdcgqYzaZag2VE9qtedkNL7PShED2oR5i-YISLW6dF0tK0d7knuqBDLrGEOcttPhNaVYBpMcCrmDnbxC5pZl45eyTrMBlXCEccG3s8jhnIoAMFRpPlea2HNweLxlHf8WNXmYykMQbk6xe92FLhAMFN_sMARF-UMcJIXmSg047a6xX24JKt2Cg6qlheaLvExDdFsZ-1veZ96DYQc-vN_623PtFcUsCsxpOnNMgihARhgLl5hDOSyiJyQn1gWAefufvEl5o7Nu1FjrJizUApDvDzXXUWMFpfd1oPwWZCtuZjzk6QuGYh4QQvZceCijlclfVx4wZt40>
& Have a look at our Trailer Arrival
<https://veolia-dot-yamm-track.appspot.com/2xLzM1e5zD_OJmmDJvjqsUlisaS12XRb_X8hNhd4JeLmbyXsnnAEYEiLTUL-OLdlpcDLuGNevtUC2nwBeBdwlxJrVs_kSd0bAXsW9lt8-o4vl1-T4e1Q2sZOXEr8xYXx5mpVtH7oZIxv_CHJO8Xytvp0tueOH5kbJO825bevm4H6oZez183CNiafftH1IYOh-cLrQIMUDsT3kgLg20LHSh5LAHceVRsKj4aiU1vXzoQhZUOklLPhUHrPRAv1xKnyQMaktD6NmQt2p0UfNsbZRCkeVSZ0p2HZjGRPxUq9HbYdkd_irsz8PxADrb38M5L4OU-pipbc5cGnSPRVLL1MkSXLVaQv0RRBJGZRR0C4fEb7ML3EoV_gC_-IcLWkh42x-JWV-AM2d9VRdmbvwba9_vZoOkA1mDe8Gaz2_ORZebjBIdSVQyNUIU10TCkrQ6hNPAygni9e1LU8V_GHr35G6o7pJIIDdzwp-KxQun6CzWqTp2Jp1D82n817a4MLja7YZTMp_dxR0MW-7D0VfXvbaKNVdFvjRYVf6YE5Ti9L5dosB-v67FR1rHNoClHDvfpWqDHGbtHdMiaDAWnMvtrHwmXfvDD0Ln5OJ_83PBDpPS8EQgZbk1xwfagNbp5vGbFVy54RTE5DcMJ4p8oJcAMArUyRB1n-H4WovTu3g2L7yhBAvfhkO3Q7cGNcZsTi38xaHFkShrXB-XgynMqBmNdkRWtTQkyAEMv73-5ow6sVEuxOuA495KPrbG64sQj4NW2r7fPeHdwW0dJQPAc9cg6koOlN3VE3y1xXGy3UOc40w_0MzBZib_pxSXZB9PkFWeWgoHMXCK59RHFMnPlFGz2MvOtTJzLdQNhB_hA58xuh6Pmd9zNCP6zwk0MRHxt2DW7J5K9Kl9JJob6g6qZeR30fCVos6X9wF1TS9UyKZn46ixm1AwJAHIAssnBq9tont_irM8lzDQ_KqHX_AfvKP3nl99slFLoftylwkUeCUXJAwwE5OZKjTgZ7hX_z4YfSgwvCX301yBHSOGE9rwp72MId3hYsMopVaUROlTt92XWVFfOkvhG8h6B7l7ctG3Bnd4H54pzt8oHQ3flBlC9bJxezs1KAwE6aWiDwvPj0655Ahd-sjrmg9eze_xmgUhqTdsFnAK2kAaMsTsqoax-ERVOgf1c3ADX_QI1E-j_VkJsVDO1Iui1HLT7YxrpLQR7J7E9aLAMGNfkdq2vbobppbH5RNXqSw8WLQvlZtOrGn8ooUB9u96DLZhY6DHuM3FDCdolQ1jAG_vMRDrQayJt_-tb61Ir1rtPA>
.*
*Our MOBILE SOS Audit is FREE OF CHARGE ! *

*- HUBGRADE & Digital Services to make sure we improve & anticipate your
Water & Waste Water Treatment systems*

Let me know your thoughts.
Thanks a lot

All the best

*Florent Puybaret*

*Asia Pacific Director - Strategic Growth & Development Lead*

*VEOLIA *I *WATER TECH   ---  **florent.puybaret@veolia.com
<florent.puybaret@veolia.com> *

*APAC HQ Malaysia:* off.: +603 2264 1887 / cell: +60 12 230 3930
KL Eco City / Level 20, Mercu 3 / No.3 Jalan Bangsar / 59200 Kuala Lumpur /
Malaysia
<https://veolia-dot-yamm-track.appspot.com/2LLoyMesv-wWoZndeymAamogiE4sWm4nVsBmVSbq3g8yfyXsnnAGVP4AR5UAWElNXQgrZEpjts7igca8MHt-w5-zlR0dDU-GFFVCkq30mLY9nnLUNDunqhR0nFDSxI5fTM1XEXq0Lrk1YeCfgXIQZnNtMr0G3smNMAVpAIGCCLD5WDxlNTJH2HTuI1YMT8qqTh4Q0OlCnf5H8e6qg8DnJ2Ews7TS7ZPSwXfK4xK-G1SJAMwHpHhKTNpjNzdfnUk_G5UPV9pQTsCFjdKndRzn5MKO28Ye4ust12YHniKi3IhJ73-gafFVk2eLvh335eSal4ZHX2spkhsavhIOUduZDlqUuB-Gv2JnCLoto-S82P_XEsrF1DgXn9ONlVM2mkHtQGz0jtWXleR9szH2kgcNa3dL75QSqPxHnQ5JA8k7Hrmfz-Vh1ALTdG-IrlcEKFDtog6Wx1KNYK_uQm14MvywID3gAo6nssRT1-tr7zgAFJzcATsOThvknx3OufPuQOPaEHrw875uk5wUhtqQClr58A5QXJKwY5CphnMLCDxSzDUd9l5Jyfn1un5PpAv-JTU5cH7vxcEJFLsj2KYIfyKX-PY_j6LkE7rXeqVp6uvoveP-etzFbr_a8WYHD95L13y8sALSxl_QS4A7WOTE3ZGcObuzDkHRVPgAUiVmcUYalmCcXlprF_ca3B_3ZRK75lBopySz3Om17o-ch_-8javSr7U_9AUMWWU0VLFsSp20z-YONvwXbLuxtON1TLV-DRNf4etDiQsiocox3JlLuTPE09M9kECQgGcYbSP3nF-Xyk_Bsg14dQS5DepOdnr9tzViZz3netO2rtceWeN_WmWdqi2Ju454xIe2sPXzsVIrCJUuYAtH7ddrlzczwrURTzuCiY0if20EZg2OpijS7mTh7o6t3tZbhoWdSuVziA55tdBkO2Gjh2T-B-2IOwOVubwc1f-TPMJd6wio7t96-tlXm6K37mp0J7uKw1W3j_fk3IlhaWMXEPpznEGV1cXII6S2zGHwjJNQxXAFXVWCDtrOeMeSwMzieTKJOQwUU8Y9xTj8LB8C1XDheoAaTad2KiaIrx1rZT6LVFDqORTjiKPRsuhUYi0auf1m8wxf_wdhdu9Z8uZNQiP6IMxPgUoClBuEG0XNAYZTr19_lyy5NrJ8cSJ_yuMoiklTmlYhwjI83--hPBaw76KAiF0qJ2N_WJSXieOh3_HOVbTvVSBiE_rqJllSNR12vZC6J-o2jwNNt3y1XSNUAe0yuTnJ90n4IZBS1knkDTuWi1V4NxyPhDkNHo7PHVffEJsxYBCPIo7Ey8wW80bMGnr522q1202QV8GwcyqibdAYTsI2R0JgSTYpJB40ik1KP4hSfJR7rj-qrLBXH5RQNfuwJEN2W-18QdQe6RY34o-pxNWkzOkMty_VdRI165CSLDWapvOoblvk3LCx_ykYfjjC9ACngVKIGfOfxKsgTLaeewMwjcJZelOyoBDsIcdoxIsqadLoNOvrXGychE9KWGLNEMCH1FVQHJ1urcRwxq1xlMA3PkbX77F4NUAEZZ6a9aLTFKjtm7qOWQ3OSmOZY4IAd2ZzfvnexaYGVqmm9-22HFhu0XnwiEffMvcdmWgzxZaQXlR55r9KvcDRlq-Yu1zpGTNr75P6nhp0Z_bQ7m2F6JlfTXmoinx5dNY0LZ7Sd0qmXpAhjx8dl7yW4x7mZKgzjZ2cs6IOokElMKp45DDBTCTtt5uT4k2XFz0qZNtqp5zlAxvmklI3CCkbP9GONEfOTaOjOOWnOwH6tTPLSDgtRtdGKBBB_4IQDKjFl7JKAUkBYP46BQ_igQoKmIO5BR2Al6easS7b2Dgz4M_XOoTV1bw89b5QbouZC3NUItDGCdxGEgvsLBtKoIjPlZAw6GTYSEKOA7pL6M3wRttnUFXVSD57Vlk2l3v2JHMamI4t4C62aGeghBqKySb8GiTAM7YMzoHNy5LQmzXrHeO5bVnd1XIaaxtQyG29za6YrL_e7t9SeuRPEFg705GUYtyGSAvXE1UykRIumV2PHkrUdS6MNtcXOfOyg2yOzKbS3JL4vYIWu3pGcKBeYMihAu_0YVS9bQO8y34boHKblAxeOgEsptGVJvsN9XVHxjJyHCa0Qd4zfdwZMIkIBfxBomjM98fOUKOMUnOWTmpjEz8-ohZnx4myGZqrPHHpO9Z3ABAiMVhGrSaAED69SBbjFTQ6i0LfqmQwo8L46sqYXVO62p6DPo0Ks5LaBl3LBuv7OaocK9GaGcGIL0HUUEektkB4fHUSoxdQRhSBdcm9a6976XtNVrRE7UhPpmAvvgunVPAtv7hjCgMzPez9JH80MBCWdWV5L7HTQCWRroOC41fIRPObNeeKWLthOEMkXJHUehJ1kip7AeZ6EKWcUCe3RQwI1LtJysbHg14Zqss98P4vfbLA21ooPmcMsWN8YX6tA7GxyGTBT7KdR-u17FOihBkEezqUv6isalfoWh9k9jdoeQY12QPCWEgFwXes25XIjYLhum9mL-BV0HS-AlWj2kQO9BI7IapbjQ6PETE4M548zXvWmpteBbFQadeLXqzonaDcgh26T5GY29KH2ByTG9d9Wx6D7EPXCtSt14mnFZynyOxQSITRLIhweTV7RyYu413lpq3Kim06GUbz5jnY5b4PUrBEd2Euy150HW191dN6meJ30LgYP4ulrG5osy_sZ31cDn9Xyob4xsWI1WUghLK6Do_-dNCAXyG-REYbEVa_pSdaeKLfUnsDVIWr51_C1MjOC35W_Bic5iC7-_Q3sdnmYanA1pJEdHPonF4Zybl6Qunysu87xFKyQz8DYRQz2S617maYvBjdfKxLniCFyMkqZijRbf5kWmlcbel-fJ4pUFN2g5wJI9w6jPXIUOToK9oj14TbOb5Ta3IpxiaXYi1908dmWScUuNN1qMLDyYamx0obistfgezHPQvqP1jeXZVH_sFIfZD7AUNAnZj3RitA380RfzTdUSaCCh32pxvzDAB1cw-lDJ2btsjsLtahxM8t2wb6vzF4Y5_i68dL1n3kj5Q9VkaJB923ZvrF11ha0BlZiTjiD0ZUtwDfn6bPxQdE-3FhXsOSJhngjrulVkw3TCwGaJGZoyqhkbv0Y9Xyuu7qIFZjFQwOMTflZIti6pjkMDYScd_HeoHMN3utkpBahp0RtV9dAUcZr3d7dzuMPnp4AQFu9R0oN7EnEuWVj0t-EIoLpG5yLrG8T-ubdCnbAL2gVxTGGhiVvRIQsamYfSEqg5qYmFn4zgo98-zKbtfNSQLayMVE75n4VRK8-qhUY3XVcaiHU1Br5KRHkjYESHeiC8ocQGuv55qek4SylJUyYgRVdpxS3HnwhK6O1dvbS87HpBnfvSmw_4q2OZBzfp1nyzqD_IBWtCH3NAta2L0fPF3ecp25QhcMWtUfYvhIBuq6gi216bjwf2gkNMPO09DSjesl7GDLFMC_GPcZm1_8C3-qayvGETktPqEEpeV0ujV4anWYfregsrgLU_6rPAZ5hckIrc7wbQum7w7PoHDoTqqPUfMu_9B9MqBTMqETfBo9PcD_Zvp3JFqpjXHUcR0Vv9o2ebgSfNQmJBIVqKXCqtnJeP1tbdt6U0tU1rqUwHNooXos3tsDGyfZ9n2SvP3_kPqRkR6iJXzBvFCt1oPwXTwMWGV1Rd62R4pezwpAmmNqE2zVZYjs7ScsklcwAFZjqYO4L07QaoYvzyReX0h4dDtvDNDkaxajvoL_3Jkq6QWgYSQJBoalYuHeFYmchHc1Fs-nmXwcX-01iK8u_ii8XmQZujE-OBcf8XTLjG_hTRXS80_I676OjZGZeWFbcecHNv38tZVHKUlT9qfwmtal4q0Wp__Tn3XsAR_Y9hjYfu44gCggIClRp_JfRHo6DQDMS1YRorqWkYLxOWDyrxPitGqK3KFicZG1kfRmcbkVSvCzguUF6glhkiwR7pSKV6IPLA_awq8guq6Gu2uxVlB-L3lDKcPM-419s90wsp2aDiqDc0lU6F0QvUPN_B7_68P0GDBaBcXnIzT-XKQkv-g2mv26qhqJCqm9HknkwoydjDTe25XWD4KDaj6rbLTvQXMq1Gvt4YKE5yw4XXOkznoZBdL0xHjx2Sl6Z1FufUmD_PHBmnvwhCSj2nvBPIeuHRoCBY-9KVF1QuofxbwCEsr7ZWOz10rQnLjHlFjmCPXWDaRreKya7DtgeHArp1F4r2Kq-Kow9iadJOlUZOISF5grLfH7O04GINc0MUUK72TAJjfgVKSdWtE-oTcrWq3CfoQzJKzmG4ff1YHzcV-iokzy0MgYoKQ-EeFpS1mFCtYGatnpw7e6kGS9ltF3IgKjG4Nn-pF6fa-eW093PEDt_RIAlkpVSrxn4LX_6OZTFz1xaaojIT9TdtJXKkr9g_X09TESYuYwsIwb_JnBvC147VVInQvkb_5x-ovkkVFSdpBkBEdbftYcNCCceMcS118NLeMwMdSTGFKrsISX1I5q7dvDcoNDFUKi4iDBPxBu7R4Pv8RmBGRUZ3EJ-5zEaRJMwIUg1yPFOIDQJ0oy0Dly_1wWd2425g_cpYfC8hek4w5tQ1mti4rZUj-qjg0YkdMAPlx9mZpbHObJbaB6wg_h0fStZ6SfLPtoIzYUueSVtyqtWECWG-mQyVRUxI2RiqDOeA3V3ksXnPBl1-iYzvkQF23U6caLtzAvt-3sVpaXjMUtUEF1geSiKYItpsY9NZbU5e-9O_00RHTynHsJoscc8TH9YBX0mbbKXEVX0cH3dyT55fvlwLujOrON9NjBKdEcscDLy7tJpp4ndsc7XIkUO7QZmndkAz2lpjHEk_6-6zSE0bC5gkpH75dcoyBVFaoYZRBHnn6EP5YUzHFKQ2tqLFj7wgSMG7KLIiV_aN5KUpwmo7-SED0QR80xPHfo6h4YapmFT1ptm87ipRK9Wv8TdNuQ0JG2Sy7XMp8lFzYgr4KAqWrlTXC1_5-5dC0_mQ1azcF7VDrFQ6b3-MiyeLsKqvKBXMjjp4vKuYiUTzNiK_3fCFKZM2uZ6dEZFzfZrzUmVzMZVlsPZyHg7sDOCIlVaLrdLSeo2CaV0QZdMLAfII_uTEMsmEasq2HNDONVMJ-Iq4qnQZ0GRkyO56A7zA1-KgBuE_VmXc3GelCLQNVeCd9COo4KszM_-4Fq86kQwHQI_PpTRfTEr-FkYKRArSmtUMlrO84kWkxlYiuZjHVvagjFY8oGJbQH92Wjfoxd-Z98svDAiNpv2nmsn1WKPTRX9ABzi2PIkH_ffCHvnZWqnDsP34qnI9IW7tG_V_Hq5JbK_nTLvBe_fAC9ODaWIexQOJPJpQYKqh_r2xXkQutImDg55xc_28XHvByF2l-dgJgAAoe7CWtd7L2IisQKDWoTwrJm2yQYHEb7TAwhrfOSMoMWaxt08Top7KsFNNhuG7Sm6JSeRYcOJna9Ygm7MkNoRWS9pyF499TPBFKIU_juqkZLZPHmOJs9c4idW3GdW8TVNJLvnLlbwLeSMYor0k1fd0jE4MY8Er4IsE9v_Yr97bF0KfSrpj8qGMU_5itFDeA0D2N4QJ_cxFEuugvkxWJ7mzJdiF3f0Z9q-OG0kalPiXVssIhgCdZmG91ZXaTNS6KZwRvduLpr43cWQdEcyo6WGWqpZo8Vel-ZCInNhkUuho9_QL4b0N4q7E90Zl5k3L_Fz6AxzrvqkU5abe7YveKV6Xd7AnTj_4uEhOZ4FUgDVCIHsaf4aYBI0FDrYzVOzSfriS-0tu0CtAnN1WMcfYpTzquuBJU8qi3N8EyVBdMUqWu1BFG-YS_sktqG65PZ1qyjep5dfNRI34poeznB7VMqxR75K7FPvWqTJTv-hjjCBHozM69_GEIG6Il-ez9PywcQ9S2zukl4MlhcVKsU0dC-7RoNLfzLyCyyZacLIZ6JVN3Hw0nJLclwjksVlirIsvPZFQqWw-BwltwWVESQv6lsuKjvr-HpdG-R6xghE40uAJb4fbQyHIORDZfyp5EQyMXrc8u0kBCa3E_E4vfLC1rUWOfLe_na_NsHX5qBsM_cty7lLV7LeZUk4lxzLH9_NFpZbl0lQcci6WBhPQpf7qogdxK0B7pUEf9lsQRcBNzXKCQ8bMRFJhUcpjoNqf_9DUlLQLWblvdDlmfuebGBsTML7wttVBmOr-njRxFXFk8bc1SeNT7Oxggtqd-gLwt5zjpncv_jJJyiUp87nU-ARnJisko2sutd3obKMiE1ZSMIiyiRiRk4At1Bq33U3ZLQFoDiZWXLsqLzPNFDIWJo58yW4qtxxY_H4Tnst2GYtkKdDXuTNZTLa-Xy0GwkWDnl6in9cXFne5tVX5nTfSi7FXp1wZIH8aqLRtNNmVYV5y8Og4b7ze-2Otv1TG5QXi8UK9AGs1jYC3SnD5s5WqDTCZqI7C80D1_Wkqx2RM-wiYlQ2uucADuJsTyodhwQk-AcAKi3p5kZ1S80qwP_5affGvAthO6fdiYQC-rFQt_vDV-YLMWRK3lfGk7Jdn7rliUZ1jJbeSX0H7ANVM2pbqihhL6-5fXpdqhP2uSPSsb33YwgLAQuTEmq5NIiiuIlTM_GIZhuizSd8QoVTqquSm4iT-Vmd4N0_JpapAZ4MfdlucVoeU5GiJ_PbK3icTRIKQVQo_FtImNUGfNyOckRH8jUXXCQ9O60WuION7lrQYD-J8qanxEu8F0qw5QBE24Dko2o2OYPlUdljqt4Dd9IRUXHKUdcTLuv5ZFfHOO5rTI7I313PFsvGTER1sDzzMa4r99bAlL2hrrmHCp2nan7KH_4j3uHiKP7x7oO9s-gQF-AAsz47EKzPNnoF3j5wH3N2PNjpb4Vc2P1sI9eSC0oXru1zCd4zQN0rmYUxKpV9409Bg6NcDn_-jdVArdpq03Ojeou-QWmRLuR_ubhnWkhg58GNjqO5wJas9ykxuEX38NfSpibwYLcNBhHxnL2dxKhCJu-xx_Sju1-5oNmEyoUAnt8kn8LOfb9d2BufTe192a_14uPROMUUY-IbUnmHtO6svJDJKELhL6s4pDIVrxDSMI1pFPxYQmGhusazCiDHUua0r7ypmaGxeAdwHFiIVl-M06F1j46R3zLzia5o7HV5maHOU1sq9rflIgelQQD9vAIGZKhsHuBQusnPiAlNa8Y1ArvTQnxtChn0sXkwEU6LJc5JPZbWUrMGAJyagDjVA1ghgcx5OEuqsCUy3YlwvjHF8fRO7DQIbWy-0mO22jeUfMPoX0WtuMeLYChgmWc1x71gt0QSsmYoGIlX5qSgCrC9O9yEAkWLzyfCI8uC5IN6-ZbM0nIYRUCRS1k7CbaRKxrW9EFmRstbDmrbiRyfQXsSZpLuikuH6vPIq6w6fh0YS3sUMqKMkqgKWo7-2eiI-Jx-_TN_5tf91JR6yMr2FGOunTyJx07ACg>

Click Here to Unsubscribe
<https://veolia-dot-yamm-track.appspot.com/2U2JZ9yAQdeTbDyPx40ECMzYriBswgIFaRNPBDht3yOCjyXsnnAHKqCCCuXdqaR0XOAuMGFZIJDRTR1B8YA874gp2dyJFOnmNaVrxvAl9R7M-kRLS1VP-Y_V5B05pEBLF1fymAkzmsPoYuogCTsyCEt-qH1VWzsywOkhGpCptPmhwLPBR0Skn9H4juoIFkQiFm75UsUI>
[image: beacon]
[image: beacon]
[image: beacon]
[image: beacon]
[image: beacon]
[image: beacon]
[image: beacon]
[image: beacon]
[image: beacon]

-- 


The information in this email and any associated files is confidential to 
Veolia Water Technologies (SASU) and/or any affiliate thereof and may be 
legally privileged. For the herein purposes, “affiliate” means any legal 
entity, partnership, joint venture, equity, company, including in 
particular any and all subsidiary which, directly or indirectly, controls 
Veolia Water Technologies (SASU) and/or is under the control thereof and/or 
is under the control of the ultimate parent company thereof, and “control” 
means the ability to directly or indirectly, direct the affairs of a third 
party by means of ownership, contract or otherwise. It may also contain 
information that is subject to copyright or constitutes a trade secret. It 
is intended solely for the named recipient. Access to this email by anyone 
else is unauthorized.

If you are not the intended recipient, please note 
that any use, disclosure, copying, distribution of this email or any action 
taken or omitted to be taken in reliance on its prohibited. 

Warning: 
Although this email and any attachment thereto are believed to be free from 
viruses, it is the responsibility of the recipient to ensure that they are 
virus free. No responsibility whatsoever is accepted by Veolia for any loss 
or damage arising from their receipt or opening.

[-- Attachment #1.2: Type: text/html, Size: 33747 bytes --]

[-- Attachment #2: _MWS APAC TECHNOLOGY PRESENTATION Dec 2024  for Customer_compressed.pdf --]
[-- Type: application/pdf, Size: 2952537 bytes --]

[-- Attachment #3: Official - Veolia Water Technologies - APAC Corporate presentation - FP TM 2k24_compressed (1)_compressed.pdf --]
[-- Type: application/pdf, Size: 3822905 bytes --]

^ permalink raw reply

* Re: [PATCH] wireless-regdb: Update regulatory info for Canada (CA) for 2025
From: Chen-Yu Tsai @ 2026-02-04  3:43 UTC (permalink / raw)
  To: druth, Ping-Ke Shih, Chen-Yu Tsai
  Cc: wireless-regdb, linux-wireless, Johannes Berg
In-Reply-To: <20260128074236.965019-1-wens@kernel.org>

On Wed, 28 Jan 2026 15:42:34 +0800, Chen-Yu Tsai wrote:
> Canada issued a new revision of its regulatory standards for 2.4 GHz
> and 5 GHz license-exempt local area network devices - RSS-247.
> 
> Update the rules to match the new version. Fix up band boundaries and
> power limit values and units to match the text.
> 
> Note: the database is supposed to have values for e.i.r.p.. Most
> regulatory documents specify e.i.r.p. as well, except for FCC ones and
> any regions that have rules based on FCC ones.
> 
> [...]

Applied to master in wens/wireless-regdb.git, thanks!

[1/1] wireless-regdb: Update regulatory info for Canada (CA) for 2025
      https://git.kernel.org/wens/wireless-regdb/c/1a729aef1a0d

Best regards,
-- 
Chen-Yu Tsai <wens@kernel.org>


^ permalink raw reply

* Re: Potential firmware selection issue with QCNFA765 on ThinkPad P14s Gen 5
From: Baochen Qiang @ 2026-02-04  2:50 UTC (permalink / raw)
  To: Mohamed Sallam, ath11k; +Cc: linux-wireless
In-Reply-To: <CALOnm7APGpVWcx45O78fa4hOCUGDc0-ywGoqicr51YtpxNueLg@mail.gmail.com>



On 2/4/2026 2:54 AM, Mohamed Sallam wrote:
> Hi ath11k maintainers,
> 
> I'm not very experienced with Linux - I'm an end user who noticed something
> strange with my WiFi and wanted to share my findings in case it helps others.
> 
> Full disclosure: I used AI tools to help me investigate this issue and
> understand the driver behavior. If I'm misunderstanding something fundamental,
> please let me know.
> 
> WHAT I OBSERVED
> ===============
> I have a Lenovo ThinkPad P14s Gen 5 AMD with a Qualcomm QCNFA765 WiFi card
> (PCI ID 17cb:1103, subsystem 17aa:9309). I'm running Arch Linux with kernel
> 6.12.68-1-lts and firmware package linux-firmware-atheros 20260110-1.
> 
> I noticed that channels 149-165 in the 5 GHz band are marked with (no IR),
> preventing me from using them. This happens consistently on my system.
> 
> WHAT I FOUND
> ============
> While trying to understand why this happens, I discovered that the
> linux-firmware package contains two different firmware files:
> - Generic: ath11k/WCN6855/hw2.0/amss.bin
> - Card-specific: ath11k/WCN6855/hw2.0/nfa765/amss.bin
> 
> When I manually create a symlink to use the nfa765 variant instead of the
> default, the (no IR) restrictions disappear and all channels work normally.
> This suggests the driver might not be selecting the optimal firmware for
> this specific card variant.
> 
> The AI analysis suggested that:
> - The driver looks for firmware at ath11k/<chip>/<hw_rev>/<filename>
> - There's a "firmware-name" property that can override this, but it seems
> to only work on ARM platforms with device trees, not x86 laptops
> - The PCI subsystem ID (17aa:9309) might be available to the driver but
> isn't being used to pick different firmware files
> 
> I don't know if this is accurate - it's just what the AI told me based on
> looking at the driver code. The key point is that the firmware swap fixes
> the issue for me.
> 
> REPRODUCTION STEPS
> ==================
> On my system, with the default setup:
> 1. Check channel flags: iw phy | grep -E "5745|5765|5785|5805|5825"
> 2. Channels 149-165 show (no IR)
> 
> After applying the workaround (symlink nfa765 firmware):
> 1. Same check shows channels without (no IR) restrictions
> 2. WiFi works on all channels
> 
> TECHNICAL DETAILS
> =================
> Hardware: Lenovo ThinkPad P14s Gen 5 AMD (21ME001MUS)
> WiFi: Qualcomm QCNFA765 (WCN6855 hw2.1)
> PCI: 17cb:1103, subsystem 17aa:9309 (Lenovo)
> Kernel: 6.12.68-1-lts
> Firmware: linux-firmware-atheros 20260110-1
> Firmware ver: WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3.6510.41
> 
> Logs from my system:
> $ dmesg | grep ath11k
> [    2.845632] ath11k_pci 0000:02:00.0: chip_id 0x0 chip_family 0x0
> board_id 0xff
> [    2.845778] ath11k_pci 0000:02:00.0: fw_version 0x1019B0E1
> fw_build_timestamp 2024-12-19
> [    2.845789] ath11k_pci 0000:02:00.0: fw_build_id
> WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3.6510.41
> [    2.845806] ath11k_pci 0000:02:00.0: qmi failed to load bdf
> [    2.845809] ath11k_pci 0000:02:00.0: qmi failed to load cal data,
> fallback to 0xff
> 
> $ lspci -vnns 02:00.0
> 02:00.0 0280: 17cb:1103 (rev 01)
>     Subsystem: 17aa:9309
>     Kernel driver in use: ath11k_pci
> 
> With default firmware:
> $ iw phy | grep -E "5745|5765|5785|5805|5825"
> * 5745.0 MHz [149] (14.0 dBm) (no IR)
> * 5765.0 MHz [153] (14.0 dBm) (no IR)
> * 5785.0 MHz [157] (14.0 dBm) (no IR)
> * 5805.0 MHz [161] (14.0 dBm) (no IR)
> * 5825.0 MHz [165] (14.0 dBm) (no IR)
> 
> With nfa765 firmware symlinked:
> * 5745.0 MHz [149] (23.0 dBm)
> * 5765.0 MHz [153] (23.0 dBm)
> * 5785.0 MHz [157] (23.0 dBm)
> * 5805.0 MHz [161] (23.0 dBm)
> * 5825.0 MHz [165] (23.0 dBm)
> 
> MY WORKAROUND
> =============
> I'm currently using this workaround:
>   sudo ln -sf ../hw2.0/nfa765/amss.bin.zst \
>       /lib/firmware/ath11k/WCN6855/hw2.1/amss.bin.zst
> 
> This fixes the issue for me, but I understand it's a hack, not a proper
> solution.
> 
> QUESTIONS
> =========
> 1. Is the driver supposed to automatically select card-specific firmware
>    based on PCI subsystem ID, or is this working as designed?
> 2. If it's supposed to work this way, could there be a bug in the firmware
>    path selection logic?
> 3. Is there a better workaround than manually symlinking firmware files?
> 
> Thank you for your time and for maintaining this driver. I appreciate
> any guidance you can provide, even if it's just to tell me this is
> expected behavior and I'm misunderstanding something.
> 

Thanks for reporting. This seems like a known issue and I have notified the dev team to
look into this. Likely we need to upload a new firmware to fix this, but I am not totally
sure now.

> Best regards,
> Mohamed Sallam
> 


^ permalink raw reply

* [PATCH wireless-next 4/4] wifi: mac80211_hwsim: background CAC support
From: Janusz Dziedzic @ 2026-02-03 18:53 UTC (permalink / raw)
  To: linux-wireless; +Cc: johannes, Janusz Dziedzic
In-Reply-To: <20260203185717.103810-1-janusz.dziedzic@gmail.com>

Report background CAC support and add allow
to cancel background CAC and simulate radar.

echo cancel > /sys/kernel/debug/ieee80211/phy2/hwsim/dfs_background_cac
echo radar > /sys/kernel/debug/ieee80211/phy2/hwsim/dfs_background_cac

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@gmail.com>
---
 drivers/net/wireless/virtual/mac80211_hwsim.c | 77 +++++++++++++++++++
 drivers/net/wireless/virtual/mac80211_hwsim.h |  2 +
 2 files changed, 79 insertions(+)

diff --git a/drivers/net/wireless/virtual/mac80211_hwsim.c b/drivers/net/wireless/virtual/mac80211_hwsim.c
index 4d9f5f87e814..8b5618c2111f 100644
--- a/drivers/net/wireless/virtual/mac80211_hwsim.c
+++ b/drivers/net/wireless/virtual/mac80211_hwsim.c
@@ -715,6 +715,7 @@ struct mac80211_hwsim_data {
 	} ps;
 	bool ps_poll_pending;
 	struct dentry *debugfs;
+	struct cfg80211_chan_def radar_background_chandef;
 
 	atomic_t pending_cookie;
 	struct sk_buff_head pending;	/* packets pending */
@@ -936,6 +937,7 @@ static const struct nla_policy hwsim_genl_policy[HWSIM_ATTR_MAX + 1] = {
 	[HWSIM_ATTR_PMSR_RESULT] = NLA_POLICY_NESTED(hwsim_pmsr_peers_result_policy),
 	[HWSIM_ATTR_MULTI_RADIO] = { .type = NLA_FLAG },
 	[HWSIM_ATTR_SUPPORT_NAN_DEVICE] = { .type = NLA_FLAG },
+	[HWSIM_ATTR_SUPPORT_BACKGROUND_RADAR] = { .type = NLA_FLAG },
 };
 
 #if IS_REACHABLE(CONFIG_VIRTIO)
@@ -1164,6 +1166,41 @@ static int hwsim_write_simulate_radar(void *dat, u64 val)
 DEFINE_DEBUGFS_ATTRIBUTE(hwsim_simulate_radar, NULL,
 			 hwsim_write_simulate_radar, "%llu\n");
 
+static ssize_t hwsim_background_cac_write(struct file *file,
+					  const char __user *user_buf,
+					  size_t count, loff_t *ppos)
+{
+	struct mac80211_hwsim_data *data = file->private_data;
+	char buf[8] = {};
+
+	if (count >= sizeof(buf))
+		return -EINVAL;
+
+	if (copy_from_user(buf, user_buf, count))
+		return -EFAULT;
+
+	/* Check if background radar channel is configured */
+	if (!data->radar_background_chandef.chan)
+		return -ENOENT;
+
+	if (sysfs_streq(buf, "radar"))
+		cfg80211_background_radar_event(data->hw->wiphy,
+						&data->radar_background_chandef,
+						GFP_KERNEL);
+	else if (sysfs_streq(buf, "cancel"))
+		cfg80211_background_cac_abort(data->hw->wiphy);
+	else
+		return -EINVAL;
+
+	return count;
+}
+
+static const struct file_operations hwsim_background_cac_ops = {
+	.write = hwsim_background_cac_write,
+	.open = simple_open,
+	.llseek = default_llseek,
+};
+
 static int hwsim_fops_group_read(void *dat, u64 *val)
 {
 	struct mac80211_hwsim_data *data = dat;
@@ -4154,6 +4191,24 @@ static int mac80211_hwsim_change_nan_config(struct ieee80211_hw *hw,
 	return 0;
 }
 
+static int mac80211_hwsim_set_radar_background(struct ieee80211_hw *hw,
+					       struct cfg80211_chan_def *chan)
+{
+	struct mac80211_hwsim_data *data = hw->priv;
+
+	if (!wiphy_ext_feature_isset(hw->wiphy,
+				     NL80211_EXT_FEATURE_RADAR_BACKGROUND))
+		return -EOPNOTSUPP;
+
+	if (chan)
+		data->radar_background_chandef = *chan;
+	else
+		memset(&data->radar_background_chandef, 0,
+		       sizeof(data->radar_background_chandef));
+
+	return 0;
+}
+
 #ifdef CONFIG_MAC80211_DEBUGFS
 #define HWSIM_DEBUGFS_OPS					\
 	.link_add_debugfs = mac80211_hwsim_link_add_debugfs,
@@ -4189,6 +4244,7 @@ static int mac80211_hwsim_change_nan_config(struct ieee80211_hw *hw,
 	.start_nan = mac80211_hwsim_start_nan,                  \
 	.stop_nan = mac80211_hwsim_stop_nan,                    \
 	.nan_change_conf = mac80211_hwsim_change_nan_config,    \
+	.set_radar_background = mac80211_hwsim_set_radar_background, \
 	HWSIM_DEBUGFS_OPS
 
 #define HWSIM_NON_MLO_OPS					\
@@ -4255,6 +4311,7 @@ struct hwsim_new_radio_params {
 	bool mlo;
 	const struct cfg80211_pmsr_capabilities *pmsr_capa;
 	bool nan_device;
+	bool background_radar;
 };
 
 static void hwsim_mcast_config_msg(struct sk_buff *mcast_skb,
@@ -4340,6 +4397,12 @@ static int append_radio_msg(struct sk_buff *skb, int id,
 		if (ret < 0)
 			return ret;
 	}
+
+	if (param->background_radar) {
+		ret = nla_put_flag(skb, HWSIM_ATTR_SUPPORT_BACKGROUND_RADAR);
+		if (ret < 0)
+			return ret;
+	}
 	return 0;
 }
 
@@ -5794,6 +5857,9 @@ static int mac80211_hwsim_new_radio(struct genl_info *info,
 
 	wiphy_ext_feature_set(hw->wiphy,
 			      NL80211_EXT_FEATURE_DFS_CONCURRENT);
+	if (param->background_radar)
+		wiphy_ext_feature_set(hw->wiphy,
+				      NL80211_EXT_FEATURE_RADAR_BACKGROUND);
 
 	if (param->no_vif)
 		ieee80211_hw_set(hw, NO_AUTO_VIF);
@@ -5832,6 +5898,10 @@ static int mac80211_hwsim_new_radio(struct genl_info *info,
 		debugfs_create_file("dfs_simulate_radar", 0222,
 				    data->debugfs,
 				    data, &hwsim_simulate_radar);
+	if (param->background_radar)
+		debugfs_create_file("dfs_background_cac", 0200,
+				    data->debugfs,
+				    data, &hwsim_background_cac_ops);
 
 	if (param->pmsr_capa) {
 		data->pmsr_capa = *param->pmsr_capa;
@@ -5950,6 +6020,9 @@ static int mac80211_hwsim_get_radio(struct sk_buff *skb,
 	param.channels = data->channels;
 	param.hwname = wiphy_name(data->hw->wiphy);
 	param.pmsr_capa = &data->pmsr_capa;
+	param.background_radar =
+		wiphy_ext_feature_isset(data->hw->wiphy,
+					NL80211_EXT_FEATURE_RADAR_BACKGROUND);
 
 	res = append_radio_msg(skb, data->idx, &param);
 	if (res < 0)
@@ -6387,6 +6460,9 @@ static int hwsim_new_radio_nl(struct sk_buff *msg, struct genl_info *info)
 	if (info->attrs[HWSIM_ATTR_MULTI_RADIO])
 		param.multi_radio = true;
 
+	if (info->attrs[HWSIM_ATTR_SUPPORT_BACKGROUND_RADAR])
+		param.background_radar = true;
+
 	if (info->attrs[HWSIM_ATTR_REG_HINT_ALPHA2])
 		param.reg_alpha2 =
 			nla_data(info->attrs[HWSIM_ATTR_REG_HINT_ALPHA2]);
@@ -7165,6 +7241,7 @@ static int __init init_mac80211_hwsim(void)
 		param.p2p_device = support_p2p_device;
 		param.mlo = mlo;
 		param.multi_radio = multi_radio;
+		param.background_radar = true;
 		param.use_chanctx = channels > 1 || mlo || multi_radio;
 		param.iftypes = HWSIM_IFTYPE_SUPPORT_MASK;
 		if (param.p2p_device)
diff --git a/drivers/net/wireless/virtual/mac80211_hwsim.h b/drivers/net/wireless/virtual/mac80211_hwsim.h
index c2d06cf852a5..a022cd5c0f1c 100644
--- a/drivers/net/wireless/virtual/mac80211_hwsim.h
+++ b/drivers/net/wireless/virtual/mac80211_hwsim.h
@@ -161,6 +161,7 @@ enum hwsim_commands {
  *	Adds one radio for each band. Number of supported channels will be set for
  *	each radio instead of for the wiphy.
  * @HWSIM_ATTR_SUPPORT_NAN_DEVICE: support NAN Device virtual interface (flag)
+ * @HWSIM_ATTR_SUPPORT_BACKGROUND_RADAR: background radar/CAC support (flag)
  * @__HWSIM_ATTR_MAX: enum limit
  */
 enum hwsim_attrs {
@@ -195,6 +196,7 @@ enum hwsim_attrs {
 	HWSIM_ATTR_PMSR_RESULT,
 	HWSIM_ATTR_MULTI_RADIO,
 	HWSIM_ATTR_SUPPORT_NAN_DEVICE,
+	HWSIM_ATTR_SUPPORT_BACKGROUND_RADAR,
 	__HWSIM_ATTR_MAX,
 };
 #define HWSIM_ATTR_MAX (__HWSIM_ATTR_MAX - 1)
-- 
2.43.0


^ permalink raw reply related


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox