* Re: Problems building rtw89
From: Iohann Tachy @ 2026-01-31 2:19 UTC (permalink / raw)
To: Ping-Ke Shih; +Cc: linux-wireless@vger.kernel.org
In-Reply-To: <CAPVS0eKLicu1Y+MUpLcuwqTU0agEn9m7zyOO_5rgB3vA+gM9Bg@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 1171 bytes --]
Good evening,
I attached the results of the commands you requested.
Regards,
Iohann
On Fri, Jan 30, 2026 at 1:58 PM Iohann Tachy <iohann.tachy@gmail.com> wrote:
>
> Good afternoon!
> I'll run the " - dmidecode
> - lspci -vt
> - lspci -x"
> commands today evening.
> and I'll let you know what's the output results.
>
> Regards,
> Iohann
>
> On Thu, Jan 29, 2026 at 9:36 PM Ping-Ke Shih <pkshih@realtek.com> wrote:
> >
> > Iohann Tachy <iohann.tachy@gmail.com> wrote:
> > > Good morning,
> > >
> > > Currently there's an issue where it's not possible to build the rtw89 driver.
> > > The RTL8852BE card has a compatibility problem with Intel X99 chipset
> > > and a hacked rtw89 driver is needed to make it work.
> > >
> > > I kindly request to read the Github issue:
> > > https://github.com/lwfinger/rtw89/issues/396
> >
> > A fix in Github is to disable 36-bit DMA [1]. I'd like to collect platform
> > info to add a quirk. Please share outputs of below commands
> > - dmidecode
> > - lspci -vt
> > - lspci -x
> >
> > [1] https://github.com/a5a5aa555oo/rtw89-1/commit/629756ee0232089d298bb398790d4a745b950058
> >
> >
[-- Attachment #2: dmidecode.txt --]
[-- Type: text/plain, Size: 26791 bytes --]
# dmidecode 3.5
Getting SMBIOS data from sysfs.
SMBIOS 3.0.0 present.
Table at 0x773AF000.
Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
Vendor: American Megatrends Inc.
Version: 5.11
Release Date: 12/21/2021
Address: 0xF0000
Runtime Size: 64 kB
ROM Size: 8 MB
Characteristics:
PCI is supported
BIOS is upgradeable
BIOS shadowing is allowed
Boot from CD is supported
Selectable boot is supported
BIOS ROM is socketed
EDD is supported
5.25"/1.2 MB floppy services are supported (int 13h)
3.5"/720 kB floppy services are supported (int 13h)
3.5"/2.88 MB floppy services are supported (int 13h)
Print screen service is supported (int 5h)
8042 keyboard services are supported (int 9h)
Serial services are supported (int 14h)
Printer services are supported (int 17h)
ACPI is supported
USB legacy is supported
BIOS boot specification is supported
Targeted content distribution is supported
UEFI is supported
BIOS Revision: 5.11
Handle 0x0001, DMI type 1, 27 bytes
System Information
Manufacturer: Default string
Product Name: Default string
Version: Default string
Serial Number: Default string
UUID: 03000200-0400-0500-0006-000700080009
Wake-up Type: Power Switch
SKU Number: Default string
Family: Default string
Handle 0x0002, DMI type 2, 15 bytes
Base Board Information
Manufacturer: MACHINIST
Product Name: X99-RS9
Version: V2.0
Serial Number: MB-202112242021
Asset Tag: Default string
Features:
Board is a hosting board
Board is replaceable
Location In Chassis: Default string
Chassis Handle: 0x0003
Type: Motherboard
Contained Object Handles: 0
Handle 0x0003, DMI type 3, 22 bytes
Chassis Information
Manufacturer: Default string
Type: Desktop
Lock: Not Present
Version: Default string
Serial Number: Default string
Asset Tag: Default string
Boot-up State: Safe
Power Supply State: Safe
Thermal State: Safe
Security Status: None
OEM Information: 0x00000000
Height: Unspecified
Number Of Power Cords: 1
Contained Elements: 0
SKU Number: Default string
Handle 0x0004, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J1A1
Internal Connector Type: None
External Reference Designator: PS2Mouse
External Connector Type: PS/2
Port Type: Mouse Port
Handle 0x0005, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J1A1
Internal Connector Type: None
External Reference Designator: Keyboard
External Connector Type: PS/2
Port Type: Keyboard Port
Handle 0x0006, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J2A1
Internal Connector Type: None
External Reference Designator: TV Out
External Connector Type: Mini Centronics Type-14
Port Type: Other
Handle 0x0007, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J2A2A
Internal Connector Type: None
External Reference Designator: COM A
External Connector Type: DB-9 male
Port Type: Serial Port 16550A Compatible
Handle 0x0008, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J2A2B
Internal Connector Type: None
External Reference Designator: Video
External Connector Type: DB-15 female
Port Type: Video Port
Handle 0x0009, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J3A1
Internal Connector Type: None
External Reference Designator: USB1
External Connector Type: Access Bus (USB)
Port Type: USB
Handle 0x000A, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J3A1
Internal Connector Type: None
External Reference Designator: USB2
External Connector Type: Access Bus (USB)
Port Type: USB
Handle 0x000B, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J3A1
Internal Connector Type: None
External Reference Designator: USB3
External Connector Type: Access Bus (USB)
Port Type: USB
Handle 0x000C, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J9A1 - TPM HDR
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other
Handle 0x000D, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J9C1 - PCIE DOCKING CONN
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other
Handle 0x000E, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J2B3 - CPU FAN
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other
Handle 0x000F, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J6C2 - EXT HDMI
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other
Handle 0x0010, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J3C1 - GMCH FAN
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other
Handle 0x0011, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J1D1 - ITP
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other
Handle 0x0012, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J9E2 - MDC INTPSR
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other
Handle 0x0013, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J9E4 - MDC INTPSR
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other
Handle 0x0014, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J9E3 - LPC HOT DOCKING
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other
Handle 0x0015, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J9E1 - SCAN MATRIX
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other
Handle 0x0016, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J9G1 - LPC SIDE BAND
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other
Handle 0x0017, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J8F1 - UNIFIED
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other
Handle 0x0018, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J6F1 - LVDS
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other
Handle 0x0019, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J2F1 - LAI FAN
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other
Handle 0x001A, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J2G1 - GFX VID
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other
Handle 0x001B, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J1G6 - AC JACK
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other
Handle 0x001C, DMI type 9, 17 bytes
System Slot Information
Designation: Slot1
Type: x1 PCI Express 3 x1
Current Usage: In Use
Length: Short
ID: 1
Characteristics:
3.3 V is provided
Opening is shared
PME signal is supported
Bus Address: 0000:03:00.3
Handle 0x001D, DMI type 9, 17 bytes
System Slot Information
Designation: Slot2
Type: x8 PCI Express 3 x8
Current Usage: Unknown
Length: Short
ID: 2
Characteristics:
3.3 V is provided
Opening is shared
PME signal is supported
Bus Address: 0000:ff:00.0
Handle 0x001E, DMI type 9, 17 bytes
System Slot Information
Designation: Slot3
Type: x1 PCI Express 3 x1
Current Usage: Unknown
Length: Short
ID: 3
Characteristics:
3.3 V is provided
Opening is shared
PME signal is supported
Bus Address: 0000:ff:00.0
Handle 0x001F, DMI type 9, 17 bytes
System Slot Information
Designation: Slot4
Type: x16 PCI Express 3 x16
Current Usage: Unknown
Length: Long
ID: 4
Characteristics:
3.3 V is provided
Opening is shared
PME signal is supported
Bus Address: 0000:ff:00.0
Handle 0x0020, DMI type 9, 17 bytes
System Slot Information
Designation: Slot5
Type: x4 PCI Express 3 x4
Current Usage: Unknown
Length: Short
ID: 5
Characteristics:
3.3 V is provided
Opening is shared
PME signal is supported
Bus Address: 0000:ff:00.4
Handle 0x0021, DMI type 9, 17 bytes
System Slot Information
Designation: Slot6
Type: x16 PCI Express 3 x16
Current Usage: Available
Length: Long
ID: 6
Characteristics:
3.3 V is provided
Opening is shared
PME signal is supported
Bus Address: 0000:01:00.0
Handle 0x0022, DMI type 9, 17 bytes
System Slot Information
Designation: Slot7
Type: x1 PCI Express 3 x1
Current Usage: In Use
Length: Short
ID: 7
Characteristics:
3.3 V is provided
Opening is shared
PME signal is supported
Bus Address: 0000:06:00.1
Handle 0x0023, DMI type 10, 6 bytes
On Board Device Information
Type: Video
Status: Enabled
Description: To Be Filled By O.E.M.
Handle 0x0024, DMI type 11, 5 bytes
OEM Strings
String 1: Default string
Handle 0x0025, DMI type 12, 5 bytes
System Configuration Options
Option 1: Default string
Handle 0x0026, DMI type 32, 20 bytes
System Boot Information
Status: No errors detected
Handle 0x0027, DMI type 34, 11 bytes
Management Device
Description: UNKNOWN
Type: Unknown
Address: 0x00000000
Address Type: Unknown
Handle 0x0028, DMI type 26, 22 bytes
Voltage Probe
Description: LM78A
Location: <OUT OF SPEC>
Status: <OUT OF SPEC>
Maximum Value: Unknown
Minimum Value: Unknown
Resolution: Unknown
Tolerance: Unknown
Accuracy: Unknown
OEM-specific Information: 0x00000000
Nominal Value: Unknown
Handle 0x0029, DMI type 36, 16 bytes
Management Device Threshold Data
Lower Non-critical Threshold: 1
Upper Non-critical Threshold: 2
Lower Critical Threshold: 3
Upper Critical Threshold: 4
Lower Non-recoverable Threshold: 5
Upper Non-recoverable Threshold: 6
Handle 0x002A, DMI type 35, 11 bytes
Management Device Component
Description: Default string
Management Device Handle: 0x0027
Component Handle: 0x0027
Threshold Handle: 0x0028
Handle 0x002B, DMI type 28, 22 bytes
Temperature Probe
Description: LM78A
Location: <OUT OF SPEC>
Status: <OUT OF SPEC>
Maximum Value: Unknown
Minimum Value: Unknown
Resolution: Unknown
Tolerance: Unknown
Accuracy: Unknown
OEM-specific Information: 0x00000000
Nominal Value: Unknown
Handle 0x002C, DMI type 36, 16 bytes
Management Device Threshold Data
Lower Non-critical Threshold: 1
Upper Non-critical Threshold: 2
Lower Critical Threshold: 3
Upper Critical Threshold: 4
Lower Non-recoverable Threshold: 5
Upper Non-recoverable Threshold: 6
Handle 0x002D, DMI type 35, 11 bytes
Management Device Component
Description: Default string
Management Device Handle: 0x0027
Component Handle: 0x002A
Threshold Handle: 0x002B
Handle 0x002E, DMI type 27, 15 bytes
Cooling Device
Temperature Probe Handle: 0x002B
Type: <OUT OF SPEC>
Status: <OUT OF SPEC>
Cooling Unit Group: 1
OEM-specific Information: 0x00000000
Nominal Speed: Unknown Or Non-rotating
Description: Cooling Dev 1
Handle 0x002F, DMI type 36, 16 bytes
Management Device Threshold Data
Lower Non-critical Threshold: 1
Upper Non-critical Threshold: 2
Lower Critical Threshold: 3
Upper Critical Threshold: 4
Lower Non-recoverable Threshold: 5
Upper Non-recoverable Threshold: 6
Handle 0x0030, DMI type 35, 11 bytes
Management Device Component
Description: Default string
Management Device Handle: 0x0027
Component Handle: 0x002D
Threshold Handle: 0x002E
Handle 0x0031, DMI type 27, 15 bytes
Cooling Device
Temperature Probe Handle: 0x002B
Type: <OUT OF SPEC>
Status: <OUT OF SPEC>
Cooling Unit Group: 1
OEM-specific Information: 0x00000000
Nominal Speed: Unknown Or Non-rotating
Description: Not Specified
Handle 0x0032, DMI type 36, 16 bytes
Management Device Threshold Data
Lower Non-critical Threshold: 1
Upper Non-critical Threshold: 2
Lower Critical Threshold: 3
Upper Critical Threshold: 4
Lower Non-recoverable Threshold: 5
Upper Non-recoverable Threshold: 6
Handle 0x0033, DMI type 35, 11 bytes
Management Device Component
Description: Default string
Management Device Handle: 0x0027
Component Handle: 0x0030
Threshold Handle: 0x0031
Handle 0x0034, DMI type 29, 22 bytes
Electrical Current Probe
Description: ABC
Location: <OUT OF SPEC>
Status: <OUT OF SPEC>
Maximum Value: Unknown
Minimum Value: Unknown
Resolution: Unknown
Tolerance: Unknown
Accuracy: Unknown
OEM-specific Information: 0x00000000
Nominal Value: Unknown
Handle 0x0035, DMI type 36, 16 bytes
Management Device Threshold Data
Handle 0x0036, DMI type 35, 11 bytes
Management Device Component
Description: Default string
Management Device Handle: 0x0027
Component Handle: 0x0033
Threshold Handle: 0x0031
Handle 0x0037, DMI type 34, 16 bytes
Management Device
Description: UNKNOWN-2
Type: Unknown
Address: 0x00000000
Address Type: Unknown
Handle 0x0038, DMI type 26, 22 bytes
Voltage Probe
Description: LM78B
Location: <OUT OF SPEC>
Status: <OUT OF SPEC>
Maximum Value: Unknown
Minimum Value: Unknown
Resolution: Unknown
Tolerance: Unknown
Accuracy: Unknown
OEM-specific Information: 0x00000000
Nominal Value: Unknown
Handle 0x0039, DMI type 36, 16 bytes
Management Device Threshold Data
Lower Non-critical Threshold: 7
Upper Non-critical Threshold: 8
Lower Critical Threshold: 8
Upper Critical Threshold: 10
Lower Non-recoverable Threshold: 11
Upper Non-recoverable Threshold: 12
Handle 0x003A, DMI type 35, 11 bytes
Management Device Component
Description: Default string
Management Device Handle: 0x0037
Component Handle: 0x0037
Threshold Handle: 0x0038
Handle 0x003B, DMI type 26, 22 bytes
Voltage Probe
Description: LM78B
Location: <OUT OF SPEC>
Status: <OUT OF SPEC>
Maximum Value: Unknown
Minimum Value: Unknown
Resolution: Unknown
Tolerance: Unknown
Accuracy: Unknown
OEM-specific Information: 0x00000000
Nominal Value: Unknown
Handle 0x003C, DMI type 36, 16 bytes
Management Device Threshold Data
Lower Non-critical Threshold: 13
Upper Non-critical Threshold: 14
Lower Critical Threshold: 15
Upper Critical Threshold: 16
Lower Non-recoverable Threshold: 17
Upper Non-recoverable Threshold: 18
Handle 0x003D, DMI type 35, 11 bytes
Management Device Component
Description: Default string
Management Device Handle: 0x0037
Component Handle: 0x003A
Threshold Handle: 0x003B
Handle 0x003E, DMI type 28, 22 bytes
Temperature Probe
Description: LM78B
Location: <OUT OF SPEC>
Status: <OUT OF SPEC>
Maximum Value: Unknown
Minimum Value: Unknown
Resolution: Unknown
Tolerance: Unknown
Accuracy: Unknown
OEM-specific Information: 0x00000000
Nominal Value: Unknown
Handle 0x003F, DMI type 36, 16 bytes
Management Device Threshold Data
Lower Non-critical Threshold: 1
Upper Non-critical Threshold: 2
Lower Critical Threshold: 3
Upper Critical Threshold: 4
Lower Non-recoverable Threshold: 5
Upper Non-recoverable Threshold: 6
Handle 0x0040, DMI type 35, 11 bytes
Management Device Component
Description: Default string
Management Device Handle: 0x0037
Component Handle: 0x003D
Threshold Handle: 0x003E
Handle 0x0041, DMI type 27, 15 bytes
Cooling Device
Temperature Probe Handle: 0x003E
Type: <OUT OF SPEC>
Status: <OUT OF SPEC>
Cooling Unit Group: 1
OEM-specific Information: 0x00000000
Nominal Speed: Unknown Or Non-rotating
Description: Cooling Dev 2
Handle 0x0042, DMI type 36, 16 bytes
Management Device Threshold Data
Lower Non-critical Threshold: 1
Upper Non-critical Threshold: 2
Lower Critical Threshold: 3
Upper Critical Threshold: 4
Lower Non-recoverable Threshold: 5
Upper Non-recoverable Threshold: 6
Handle 0x0043, DMI type 35, 11 bytes
Management Device Component
Description: Default string
Management Device Handle: 0x0037
Component Handle: 0x0040
Threshold Handle: 0x0041
Handle 0x0044, DMI type 28, 22 bytes
Temperature Probe
Description: LM78B
Location: <OUT OF SPEC>
Status: <OUT OF SPEC>
Maximum Value: Unknown
Minimum Value: Unknown
Resolution: Unknown
Tolerance: Unknown
Accuracy: Unknown
OEM-specific Information: 0x00000000
Nominal Value: Unknown
Handle 0x0045, DMI type 36, 16 bytes
Management Device Threshold Data
Lower Non-critical Threshold: 1
Upper Non-critical Threshold: 2
Lower Critical Threshold: 3
Upper Critical Threshold: 4
Lower Non-recoverable Threshold: 5
Upper Non-recoverable Threshold: 6
Handle 0x0046, DMI type 35, 11 bytes
Management Device Component
Description: Default string
Management Device Handle: 0x0037
Component Handle: 0x0043
Threshold Handle: 0x0044
Handle 0x0047, DMI type 27, 15 bytes
Cooling Device
Temperature Probe Handle: 0x0044
Type: <OUT OF SPEC>
Status: <OUT OF SPEC>
Cooling Unit Group: 1
OEM-specific Information: 0x00000000
Nominal Speed: Unknown Or Non-rotating
Description: Cooling Dev 2
Handle 0x0048, DMI type 36, 16 bytes
Management Device Threshold Data
Lower Non-critical Threshold: 1
Upper Non-critical Threshold: 2
Lower Critical Threshold: 3
Upper Critical Threshold: 4
Lower Non-recoverable Threshold: 5
Upper Non-recoverable Threshold: 6
Handle 0x0049, DMI type 35, 11 bytes
Management Device Component
Description: Default string
Management Device Handle: 0x0037
Component Handle: 0x0046
Threshold Handle: 0x0047
Handle 0x004A, DMI type 29, 22 bytes
Electrical Current Probe
Description: DEF
Location: <OUT OF SPEC>
Status: <OUT OF SPEC>
Maximum Value: Unknown
Minimum Value: Unknown
Resolution: Unknown
Tolerance: Unknown
Accuracy: Unknown
OEM-specific Information: 0x00000000
Nominal Value: Unknown
Handle 0x004B, DMI type 36, 16 bytes
Management Device Threshold Data
Handle 0x004C, DMI type 35, 11 bytes
Management Device Component
Description: Default string
Management Device Handle: 0x0037
Component Handle: 0x0049
Threshold Handle: 0x0047
Handle 0x004D, DMI type 29, 22 bytes
Electrical Current Probe
Description: GHI
Location: <OUT OF SPEC>
Status: <OUT OF SPEC>
Maximum Value: Unknown
Minimum Value: Unknown
Resolution: Unknown
Tolerance: Unknown
Accuracy: Unknown
OEM-specific Information: 0x00000000
Nominal Value: Unknown
Handle 0x004E, DMI type 36, 16 bytes
Management Device Threshold Data
Handle 0x004F, DMI type 35, 11 bytes
Management Device Component
Description: Default string
Management Device Handle: 0x0037
Component Handle: 0x004C
Threshold Handle: 0x0047
Handle 0x0050, DMI type 26, 22 bytes
Voltage Probe
Description: LM78A
Location: Power Unit
Status: OK
Maximum Value: Unknown
Minimum Value: Unknown
Resolution: Unknown
Tolerance: Unknown
Accuracy: Unknown
OEM-specific Information: 0x00000000
Nominal Value: Unknown
Handle 0x0051, DMI type 28, 22 bytes
Temperature Probe
Description: LM78A
Location: Power Unit
Status: OK
Maximum Value: Unknown
Minimum Value: Unknown
Resolution: Unknown
Tolerance: Unknown
Accuracy: Unknown
OEM-specific Information: 0x00000000
Nominal Value: Unknown
Handle 0x0052, DMI type 27, 15 bytes
Cooling Device
Temperature Probe Handle: 0x0051
Type: Power Supply Fan
Status: OK
Cooling Unit Group: 1
OEM-specific Information: 0x00000000
Nominal Speed: Unknown Or Non-rotating
Description: Cooling Dev 1
Handle 0x0053, DMI type 29, 22 bytes
Electrical Current Probe
Description: ABC
Location: Power Unit
Status: OK
Maximum Value: Unknown
Minimum Value: Unknown
Resolution: Unknown
Tolerance: Unknown
Accuracy: Unknown
OEM-specific Information: 0x00000000
Nominal Value: Unknown
Handle 0x0054, DMI type 39, 22 bytes
System Power Supply
Power Unit Group: 1
Location: To Be Filled By O.E.M.
Name: To Be Filled By O.E.M.
Manufacturer: To Be Filled By O.E.M.
Serial Number: To Be Filled By O.E.M.
Asset Tag: To Be Filled By O.E.M.
Model Part Number: To Be Filled By O.E.M.
Revision: To Be Filled By O.E.M.
Max Power Capacity: Unknown
Status: Present, OK
Type: Switching
Input Voltage Range Switching: Auto-switch
Plugged: Yes
Hot Replaceable: No
Input Voltage Probe Handle: 0x0050
Cooling Device Handle: 0x0052
Input Current Probe Handle: 0x0053
Handle 0x0055, DMI type 41, 11 bytes
Onboard Device
Reference Designation: Onboard LAN
Type: Ethernet
Status: Enabled
Type Instance: 1
Bus Address: 0000:00:19.0
Handle 0x0056, DMI type 16, 23 bytes
Physical Memory Array
Location: System Board Or Motherboard
Use: System Memory
Error Correction Type: Multi-bit ECC
Maximum Capacity: 256 GB
Error Information Handle: Not Provided
Number Of Devices: 4
Handle 0x0057, DMI type 19, 31 bytes
Memory Array Mapped Address
Starting Address: 0x00000000000
Ending Address: 0x007FFFFFFFF
Range Size: 32 GB
Physical Array Handle: 0x0056
Partition Width: 2
Handle 0x0058, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x0056
Error Information Handle: Not Provided
Total Width: Unknown
Data Width: Unknown
Size: No Module Installed
Form Factor: Unknown
Set: None
Locator: NO DIMM
Bank Locator: NO DIMM
Type: Unknown
Type Detail: Unknown
Handle 0x0059, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x0056
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 72 bits
Size: 16 GB
Form Factor: DIMM
Set: None
Locator: DIMM_B1
Bank Locator: NODE 1
Type: DDR4
Type Detail: Synchronous
Speed: 2133 MT/s
Manufacturer: Micron
Serial Number: 0DEC8505
Asset Tag: DIMM_B1_AssetTag
Part Number: 36ASF2G72PZ-2G1A2
Rank: 2
Configured Memory Speed: 1866 MT/s
Minimum Voltage: 1.14 V
Maximum Voltage: 1.26 V
Configured Voltage: 1.2 V
Handle 0x005A, DMI type 20, 35 bytes
Memory Device Mapped Address
Starting Address: 0x00000000000
Ending Address: 0x003FFFFFFFF
Range Size: 16 GB
Physical Device Handle: 0x0059
Memory Array Mapped Address Handle: 0x0057
Partition Row Position: 1
Handle 0x005B, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x0056
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 72 bits
Size: 16 GB
Form Factor: DIMM
Set: None
Locator: DIMM_C1
Bank Locator: NODE 1
Type: DDR4
Type Detail: Synchronous
Speed: 2133 MT/s
Manufacturer: Hynix Semiconductor
Serial Number: 91709545
Asset Tag: DIMM_C1_AssetTag
Part Number: HMA42GR7MFR4N-TF
Rank: 2
Configured Memory Speed: 1866 MT/s
Minimum Voltage: 1.14 V
Maximum Voltage: 1.26 V
Configured Voltage: 1.2 V
Handle 0x005C, DMI type 20, 35 bytes
Memory Device Mapped Address
Starting Address: 0x00400000000
Ending Address: 0x007FFFFFFFF
Range Size: 16 GB
Physical Device Handle: 0x005B
Memory Array Mapped Address Handle: 0x0057
Partition Row Position: 1
Handle 0x005D, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x0056
Error Information Handle: Not Provided
Total Width: Unknown
Data Width: Unknown
Size: No Module Installed
Form Factor: Unknown
Set: None
Locator: NO DIMM
Bank Locator: NO DIMM
Type: Unknown
Type Detail: Unknown
Handle 0x005E, DMI type 7, 19 bytes
Cache Information
Socket Designation: CPU Internal L1
Configuration: Enabled, Not Socketed, Level 1
Operational Mode: Write Back
Location: Internal
Installed Size: 512 kB
Maximum Size: 512 kB
Supported SRAM Types:
Unknown
Installed SRAM Type: Unknown
Speed: Unknown
Error Correction Type: Parity
System Type: Other
Associativity: 8-way Set-associative
Handle 0x005F, DMI type 7, 19 bytes
Cache Information
Socket Designation: CPU Internal L2
Configuration: Enabled, Not Socketed, Level 2
Operational Mode: Write Back
Location: Internal
Installed Size: 2 MB
Maximum Size: 2 MB
Supported SRAM Types:
Unknown
Installed SRAM Type: Unknown
Speed: Unknown
Error Correction Type: Single-bit ECC
System Type: Unified
Associativity: 8-way Set-associative
Handle 0x0060, DMI type 7, 19 bytes
Cache Information
Socket Designation: CPU Internal L3
Configuration: Enabled, Not Socketed, Level 3
Operational Mode: Write Back
Location: Internal
Installed Size: 20 MB
Maximum Size: 20 MB
Supported SRAM Types:
Unknown
Installed SRAM Type: Unknown
Speed: Unknown
Error Correction Type: Single-bit ECC
System Type: Unified
Associativity: 20-way Set-associative
Handle 0x0061, DMI type 4, 48 bytes
Processor Information
Socket Designation: SOCKET 0
Type: Central Processor
Family: Xeon
Manufacturer: Intel
ID: F2 06 03 00 FF FB EB BF
Signature: Type 0, Family 6, Model 63, Stepping 2
Flags:
FPU (Floating-point unit on-chip)
VME (Virtual mode extension)
DE (Debugging extension)
PSE (Page size extension)
TSC (Time stamp counter)
MSR (Model specific registers)
PAE (Physical address extension)
MCE (Machine check exception)
CX8 (CMPXCHG8 instruction supported)
APIC (On-chip APIC hardware supported)
SEP (Fast system call)
MTRR (Memory type range registers)
PGE (Page global enable)
MCA (Machine check architecture)
CMOV (Conditional move instruction supported)
PAT (Page attribute table)
PSE-36 (36-bit page size extension)
CLFSH (CLFLUSH instruction supported)
DS (Debug store)
ACPI (ACPI supported)
MMX (MMX technology supported)
FXSR (FXSAVE and FXSTOR instructions supported)
SSE (Streaming SIMD extensions)
SSE2 (Streaming SIMD extensions 2)
SS (Self-snoop)
HTT (Multi-threading)
TM (Thermal monitor supported)
PBE (Pending break enabled)
Version: Intel(R) Xeon(R) CPU E5-2640 v3 @ 2.60GHz
Voltage: 0.2 V
External Clock: 100 MHz
Max Speed: 4000 MHz
Current Speed: 2600 MHz
Status: Populated, Enabled
Upgrade: Socket LGA2011-3
L1 Cache Handle: 0x005E
L2 Cache Handle: 0x005F
L3 Cache Handle: 0x0060
Serial Number: Not Specified
Asset Tag: Not Specified
Part Number: Not Specified
Core Count: 8
Core Enabled: 8
Thread Count: 16
Characteristics:
64-bit capable
Multi-Core
Hardware Thread
Execute Protection
Enhanced Virtualization
Power/Performance Control
Handle 0x0062, DMI type 13, 22 bytes
BIOS Language Information
Language Description Format: Long
Installable Languages: 1
en|US|iso8859-1
Currently Installed Language: en|US|iso8859-1
Handle 0x0063, DMI type 127, 4 bytes
End Of Table
[-- Attachment #3: lspci_x.txt --]
[-- Type: text/plain, Size: 26067 bytes --]
00:00.0 Host bridge: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 DMI2 (rev 02)
00: 86 80 00 2f 00 04 10 00 02 00 00 06 10 00 00 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 00 00
30: 00 00 00 00 90 00 00 00 00 00 00 00 00 01 00 00
00:01.0 PCI bridge: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 1 (rev 02)
00: 86 80 02 2f 07 04 10 00 02 00 04 06 10 00 81 00
10: 00 00 00 00 00 00 00 00 00 01 01 00 f0 00 00 00
20: f0 ff 00 00 f1 ff 01 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 40 00 00 00 00 00 00 00 ff 01 12 00
00:01.1 PCI bridge: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 1 (rev 02)
00: 86 80 03 2f 07 04 10 00 02 00 04 06 10 00 81 00
10: 00 00 00 00 00 00 00 00 00 02 02 00 f0 00 00 00
20: 30 fb 30 fb f1 ff 01 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 40 00 00 00 00 00 00 00 ff 01 12 00
00:03.0 PCI bridge: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 3 (rev 02)
00: 86 80 08 2f 07 04 10 00 02 00 04 06 10 00 01 00
10: 00 00 00 00 00 00 00 00 00 03 03 00 e0 e0 00 00
20: 00 fa 00 fb 01 e0 f1 f1 00 00 00 00 00 00 00 00
30: 00 00 00 00 40 00 00 00 00 00 00 00 ff 01 12 00
00:05.0 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Address Map, VTd_Misc, System Management (rev 02)
00: 86 80 28 2f 00 00 10 00 02 00 80 08 10 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 00 00
30: 00 00 00 00 40 00 00 00 00 00 00 00 00 00 00 00
00:05.1 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Hot Plug (rev 02)
00: 86 80 29 2f 00 00 10 00 02 00 80 08 10 00 00 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 00 00
30: 00 00 00 00 40 00 00 00 00 00 00 00 00 00 00 00
00:05.2 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 RAS, Control Status and Global Errors (rev 02)
00: 86 80 2a 2f 00 00 10 00 02 00 80 08 10 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 00 00
30: 00 00 00 00 40 00 00 00 00 00 00 00 00 00 00 00
00:05.4 PIC: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 I/O APIC (rev 02)
00: 86 80 2c 2f 06 00 10 00 02 20 00 08 10 00 80 00
10: 00 90 41 fb 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 00 00
30: 00 00 00 00 44 00 00 00 00 00 00 00 00 00 00 00
00:14.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI (rev 05)
00: 86 80 31 8c 06 00 90 02 05 30 03 0c 00 00 00 00
10: 04 00 40 fb 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 70 72
30: 00 00 00 00 70 00 00 00 00 00 00 00 ff 04 00 00
00:1a.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #2 (rev 05)
00: 86 80 2d 8c 06 00 90 02 05 20 03 0c 00 00 00 00
10: 00 80 41 fb 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 70 72
30: 00 00 00 00 50 00 00 00 00 00 00 00 ff 03 00 00
00:1b.0 Audio device: Intel Corporation 8 Series/C220 Series Chipset High Definition Audio Controller (rev 05)
00: 86 80 20 8c 06 04 10 00 05 00 03 04 10 00 00 00
10: 04 00 41 fb 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 70 72
30: 00 00 00 00 50 00 00 00 00 00 00 00 ff 01 00 00
00:1c.0 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #1 (rev d5)
00: 86 80 10 8c 07 04 10 00 d5 00 04 06 10 00 81 00
10: 00 00 00 00 00 00 00 00 00 04 04 00 10 10 00 00
20: 00 90 10 90 21 90 31 90 00 00 00 00 00 00 00 00
30: 00 00 00 00 40 00 00 00 00 00 00 00 ff 01 12 00
00:1c.3 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #4 (rev d5)
00: 86 80 16 8c 07 04 10 00 d5 00 04 06 10 00 81 00
10: 00 00 00 00 00 00 00 00 00 05 05 00 d0 d0 00 00
20: 20 fb 20 fb 11 f2 11 f2 00 00 00 00 00 00 00 00
30: 00 00 00 00 40 00 00 00 00 00 00 00 ff 04 12 00
00:1c.4 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #5 (rev d5)
00: 86 80 18 8c 07 04 10 00 d5 00 04 06 10 00 81 00
10: 00 00 00 00 00 00 00 00 00 06 06 00 c0 c0 00 00
20: 10 fb 10 fb f1 ff 01 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 40 00 00 00 00 00 00 00 ff 01 12 00
00:1d.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #1 (rev 05)
00: 86 80 26 8c 06 00 90 02 05 20 03 0c 00 00 00 00
10: 00 70 41 fb 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 70 72
30: 00 00 00 00 50 00 00 00 00 00 00 00 ff 03 00 00
00:1f.0 ISA bridge: Intel Corporation B85 Express LPC Controller (rev 05)
00: 86 80 50 8c 07 00 10 02 05 00 01 06 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 70 72
30: 00 00 00 00 e0 00 00 00 00 00 00 00 00 00 00 00
00:1f.2 SATA controller: Intel Corporation 8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode] (rev 05)
00: 86 80 02 8c 07 04 b0 02 05 01 06 01 00 00 00 00
10: 71 f0 00 00 61 f0 00 00 51 f0 00 00 41 f0 00 00
20: 21 f0 00 00 00 60 41 fb 00 00 00 00 86 80 70 72
30: 00 00 00 00 80 00 00 00 00 00 00 00 ff 01 00 00
00:1f.3 SMBus: Intel Corporation 8 Series/C220 Series Chipset Family SMBus Controller (rev 05)
00: 86 80 22 8c 03 00 80 02 05 00 05 0c 00 00 00 00
10: 04 50 41 fb 00 00 00 00 00 00 00 00 00 00 00 00
20: 01 f0 00 00 00 00 00 00 00 00 00 00 86 80 70 72
30: 00 00 00 00 00 00 00 00 00 00 00 00 ff 03 00 00
02:00.0 Non-Volatile memory controller: Kingston Technology Company, Inc. Device 502b (rev 01)
00: 46 26 2b 50 06 05 10 00 01 02 08 01 08 00 00 00
10: 04 00 30 fb 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 46 26 2b 50
30: 00 00 00 00 80 00 00 00 00 00 00 00 ff 01 00 00
03:00.0 VGA compatible controller: NVIDIA Corporation GP106 [GeForce GTX 1060 5GB] (rev a1)
00: de 10 04 1c 07 05 10 00 a1 00 00 03 00 00 80 00
10: 00 00 00 fa 0c 00 00 e0 00 00 00 00 0c 00 00 f0
20: 00 00 00 00 01 e0 00 00 00 00 00 00 58 14 97 37
30: 00 00 00 00 60 00 00 00 00 00 00 00 ff 01 00 00
03:00.1 Audio device: NVIDIA Corporation GP106 High Definition Audio Controller (rev a1)
00: de 10 f1 10 06 01 10 00 a1 00 03 04 08 00 80 00
10: 00 00 08 fb 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 58 14 97 37
30: 00 00 00 00 60 00 00 00 00 00 00 00 ff 02 00 00
05:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8211/8411 PCI Express Gigabit Ethernet Controller (rev 09)
00: ec 10 68 81 07 04 10 00 09 00 00 02 10 00 00 00
10: 01 d0 00 00 00 00 00 00 04 00 20 fb 00 00 00 00
20: 0c 00 10 f2 00 00 00 00 00 00 00 00 ec 10 23 01
30: 00 00 00 00 40 00 00 00 00 00 00 00 ff 01 00 00
06:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8852BE PCIe 802.11ax Wireless Network Controller
00: ec 10 52 b8 07 04 10 00 00 00 80 02 10 00 00 00
10: 01 c0 00 00 00 00 00 00 04 00 10 fb 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 3b 1a 70 54
30: 00 00 00 00 40 00 00 00 00 00 00 00 ff 01 00 00
ff:0b.0 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 R3 QPI Link 0 & 1 Monitoring (rev 02)
00: 86 80 81 2f 00 00 00 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 81 2f
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:0b.1 Performance counters: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 R3 QPI Link 0 & 1 Monitoring (rev 02)
00: 86 80 36 2f 00 00 00 00 02 00 01 11 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 36 2f
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:0b.2 Performance counters: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 R3 QPI Link 0 & 1 Monitoring (rev 02)
00: 86 80 37 2f 00 00 00 00 02 00 01 11 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 37 2f
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:0c.0 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers (rev 02)
00: 86 80 e0 2f 00 00 00 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 e0 2f
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:0c.1 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers (rev 02)
00: 86 80 e1 2f 00 00 00 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 e1 2f
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:0c.2 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers (rev 02)
00: 86 80 e2 2f 00 00 00 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 e2 2f
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:0c.3 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers (rev 02)
00: 86 80 e3 2f 00 00 00 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 e3 2f
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:0c.4 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers (rev 02)
00: 86 80 e4 2f 00 00 00 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 e4 2f
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:0c.5 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers (rev 02)
00: 86 80 e5 2f 00 00 00 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 e5 2f
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:0c.6 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers (rev 02)
00: 86 80 e6 2f 00 00 00 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 e6 2f
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:0c.7 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers (rev 02)
00: 86 80 e7 2f 00 00 00 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 e7 2f
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:0f.0 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Buffered Ring Agent (rev 02)
00: 86 80 f8 2f 00 00 00 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:0f.1 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Buffered Ring Agent (rev 02)
00: 86 80 f9 2f 00 00 00 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:0f.4 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 System Address Decoder & Broadcast Registers (rev 02)
00: 86 80 fc 2f 00 00 00 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 e0 2f
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:0f.5 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 System Address Decoder & Broadcast Registers (rev 02)
00: 86 80 fd 2f 00 00 00 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 e0 2f
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:0f.6 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 System Address Decoder & Broadcast Registers (rev 02)
00: 86 80 fe 2f 00 00 00 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 e0 2f
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:10.0 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 PCIe Ring Interface (rev 02)
00: 86 80 1d 2f 00 00 00 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 1d 2f
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:10.1 Performance counters: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 PCIe Ring Interface (rev 02)
00: 86 80 34 2f 00 00 00 00 02 00 01 11 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 34 2f
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:10.5 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Scratchpad & Semaphore Registers (rev 02)
00: 86 80 1e 2f 00 00 00 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 1e 2f
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:10.6 Performance counters: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Scratchpad & Semaphore Registers (rev 02)
00: 86 80 7d 2f 00 00 00 00 02 00 01 11 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 7d 2f
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:10.7 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Scratchpad & Semaphore Registers (rev 02)
00: 86 80 1f 2f 00 00 00 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 1f 2f
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:12.0 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Home Agent 0 (rev 02)
00: 86 80 a0 2f 00 00 00 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 a0 2f
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:12.1 Performance counters: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Home Agent 0 (rev 02)
00: 86 80 30 2f 00 00 00 00 02 00 01 11 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 30 2f
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:13.0 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Target Address, Thermal & RAS Registers (rev 02)
00: 86 80 a8 2f 00 00 10 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 a8 2f
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:13.1 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Target Address, Thermal & RAS Registers (rev 02)
00: 86 80 71 2f 00 00 10 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 71 2f
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:13.2 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder (rev 02)
00: 86 80 aa 2f 00 00 10 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 aa 2f
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:13.3 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder (rev 02)
00: 86 80 ab 2f 00 00 10 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 ab 2f
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:13.4 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder (rev 02)
00: 86 80 ac 2f 00 00 10 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 ac 2f
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:13.5 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder (rev 02)
00: 86 80 ad 2f 00 00 10 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 ad 2f
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:13.6 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO Channel 0/1 Broadcast (rev 02)
00: 86 80 ae 2f 00 00 00 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:13.7 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO Global Broadcast (rev 02)
00: 86 80 af 2f 00 00 00 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:14.0 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 0 Thermal Control (rev 02)
00: 86 80 b0 2f 00 00 10 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 b0 2f
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:14.1 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 1 Thermal Control (rev 02)
00: 86 80 b1 2f 00 00 10 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 b1 2f
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:14.2 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 0 ERROR Registers (rev 02)
00: 86 80 b2 2f 00 00 10 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 b2 2f
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:14.3 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 1 ERROR Registers (rev 02)
00: 86 80 b3 2f 00 00 10 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 b3 2f
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:14.4 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 0 & 1 (rev 02)
00: 86 80 bc 2f 00 00 00 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:14.5 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 0 & 1 (rev 02)
00: 86 80 bd 2f 00 00 00 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:14.6 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 0 & 1 (rev 02)
00: 86 80 be 2f 00 00 00 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:14.7 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 0 & 1 (rev 02)
00: 86 80 bf 2f 00 00 00 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:15.0 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 2 Thermal Control (rev 02)
00: 86 80 b4 2f 00 00 10 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 b4 2f
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:15.1 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 3 Thermal Control (rev 02)
00: 86 80 b5 2f 00 00 10 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 b5 2f
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:15.2 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 2 ERROR Registers (rev 02)
00: 86 80 b6 2f 00 00 10 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 b6 2f
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:15.3 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 3 ERROR Registers (rev 02)
00: 86 80 b7 2f 00 00 10 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 b7 2f
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:16.0 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Target Address, Thermal & RAS Registers (rev 02)
00: 86 80 68 2f 00 00 10 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:16.6 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO Channel 2/3 Broadcast (rev 02)
00: 86 80 6e 2f 00 00 00 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:16.7 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO Global Broadcast (rev 02)
00: 86 80 6f 2f 00 00 00 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:17.0 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 0 Thermal Control (rev 02)
00: 86 80 d0 2f 00 00 10 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:17.4 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 2 & 3 (rev 02)
00: 86 80 b8 2f 00 00 00 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:17.5 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 2 & 3 (rev 02)
00: 86 80 b9 2f 00 00 00 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:17.6 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 2 & 3 (rev 02)
00: 86 80 ba 2f 00 00 00 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:17.7 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 2 & 3 (rev 02)
00: 86 80 bb 2f 00 00 00 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:1e.0 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit (rev 02)
00: 86 80 98 2f 00 00 00 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 98 2f
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:1e.1 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit (rev 02)
00: 86 80 99 2f 00 00 00 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 99 2f
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:1e.2 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit (rev 02)
00: 86 80 9a 2f 00 00 00 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 9a 2f
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:1e.3 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit (rev 02)
00: 86 80 c0 2f 00 00 00 00 02 00 80 08 00 00 80 00
10: 1a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 c0 2f
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:1e.4 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit (rev 02)
00: 86 80 9c 2f 00 00 00 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 9c 2f
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:1f.0 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 VCU (rev 02)
00: 86 80 88 2f 00 00 00 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff:1f.2 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 VCU (rev 02)
00: 86 80 8a 2f 00 00 00 00 02 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[-- Attachment #4: lspci_vt.txt --]
[-- Type: text/plain, Size: 7535 bytes --]
-+-[0000:00]-+-00.0 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 DMI2
| +-01.0-[01]--
| +-01.1-[02]----00.0 Kingston Technology Company, Inc. Device 502b
| +-03.0-[03]--+-00.0 NVIDIA Corporation GP106 [GeForce GTX 1060 5GB]
| | \-00.1 NVIDIA Corporation GP106 High Definition Audio Controller
| +-05.0 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Address Map, VTd_Misc, System Management
| +-05.1 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Hot Plug
| +-05.2 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 RAS, Control Status and Global Errors
| +-05.4 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 I/O APIC
| +-14.0 Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI
| +-1a.0 Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #2
| +-1b.0 Intel Corporation 8 Series/C220 Series Chipset High Definition Audio Controller
| +-1c.0-[04]--
| +-1c.3-[05]----00.0 Realtek Semiconductor Co., Ltd. RTL8111/8168/8211/8411 PCI Express Gigabit Ethernet Controller
| +-1c.4-[06]----00.0 Realtek Semiconductor Co., Ltd. RTL8852BE PCIe 802.11ax Wireless Network Controller
| +-1d.0 Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #1
| +-1f.0 Intel Corporation B85 Express LPC Controller
| +-1f.2 Intel Corporation 8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode]
| \-1f.3 Intel Corporation 8 Series/C220 Series Chipset Family SMBus Controller
\-[0000:ff]-+-0b.0 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 R3 QPI Link 0 & 1 Monitoring
+-0b.1 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 R3 QPI Link 0 & 1 Monitoring
+-0b.2 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 R3 QPI Link 0 & 1 Monitoring
+-0c.0 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers
+-0c.1 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers
+-0c.2 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers
+-0c.3 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers
+-0c.4 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers
+-0c.5 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers
+-0c.6 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers
+-0c.7 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers
+-0f.0 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Buffered Ring Agent
+-0f.1 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Buffered Ring Agent
+-0f.4 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 System Address Decoder & Broadcast Registers
+-0f.5 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 System Address Decoder & Broadcast Registers
+-0f.6 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 System Address Decoder & Broadcast Registers
+-10.0 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 PCIe Ring Interface
+-10.1 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 PCIe Ring Interface
+-10.5 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Scratchpad & Semaphore Registers
+-10.6 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Scratchpad & Semaphore Registers
+-10.7 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Scratchpad & Semaphore Registers
+-12.0 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Home Agent 0
+-12.1 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Home Agent 0
+-13.0 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Target Address, Thermal & RAS Registers
+-13.1 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Target Address, Thermal & RAS Registers
+-13.2 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder
+-13.3 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder
+-13.4 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder
+-13.5 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder
+-13.6 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO Channel 0/1 Broadcast
+-13.7 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO Global Broadcast
+-14.0 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 0 Thermal Control
+-14.1 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 1 Thermal Control
+-14.2 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 0 ERROR Registers
+-14.3 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 1 ERROR Registers
+-14.4 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 0 & 1
+-14.5 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 0 & 1
+-14.6 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 0 & 1
+-14.7 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 0 & 1
+-15.0 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 2 Thermal Control
+-15.1 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 3 Thermal Control
+-15.2 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 2 ERROR Registers
+-15.3 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 3 ERROR Registers
+-16.0 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Target Address, Thermal & RAS Registers
+-16.6 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO Channel 2/3 Broadcast
+-16.7 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO Global Broadcast
+-17.0 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 0 Thermal Control
+-17.4 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 2 & 3
+-17.5 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 2 & 3
+-17.6 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 2 & 3
+-17.7 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 2 & 3
+-1e.0 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit
+-1e.1 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit
+-1e.2 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit
+-1e.3 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit
+-1e.4 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit
+-1f.0 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 VCU
\-1f.2 Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 VCU
^ permalink raw reply
* Re: [PATCH] wifi: mt76: add missing lock protection in mt76_sta_state for sta_event callback
From: Ziyi Guo @ 2026-01-31 2:05 UTC (permalink / raw)
To: Sean Wang
Cc: Felix Fietkau, Lorenzo Bianconi, Ryder Lee, Shayne Chen,
Sean Wang, Matthias Brugger, AngeloGioacchino Del Regno,
linux-wireless, linux-kernel, linux-mediatek, linux-arm-kernel
In-Reply-To: <CAGp9LzqQ45LAeeG1Cijs1QmtzBjOmML_qY=9Y5zH8tYmZeQWZQ@mail.gmail.com>
On Fri, Jan 30, 2026 at 8:37 PM Sean Wang <sean.wang@kernel.org> wrote:
>
> The mt7921 / mt7925 .sta_event callback already holds the lock; this
> patch would cause a deadlock. Suggest adding the implementation to
> MT7915.
>
Thanks for the review, I'll add to MT7915, and send a v2 patch.
^ permalink raw reply
* Re: [PATCH] wifi: mt76: add missing lock protection in mt76_sta_state for sta_event callback
From: Sean Wang @ 2026-01-31 1:36 UTC (permalink / raw)
To: Ziyi Guo
Cc: Felix Fietkau, Lorenzo Bianconi, Ryder Lee, Shayne Chen,
Sean Wang, Matthias Brugger, AngeloGioacchino Del Regno,
linux-wireless, linux-kernel, linux-mediatek, linux-arm-kernel
In-Reply-To: <20260130032517.173590-1-n7l8m4@u.northwestern.edu>
On Thu, Jan 29, 2026 at 9:25 PM Ziyi Guo <n7l8m4@u.northwestern.edu> wrote:
>
> mt76_sta_state() calls the sta_event callback without holding dev->mutex.
> However, mt7915_mac_sta_event() (MT7915 implementation of this callback)
> calls mt7915_mac_twt_teardown_flow() which has
> lockdep_assert_held(&dev->mt76.mutex) indicating that callers must
> hold this lock.
>
> The locking pattern in mt76_sta_state() is inconsistent:
> - mt76_sta_add() acquires dev->mutex before calling dev->drv->sta_add
> - mt76_sta_remove() acquires dev->mutex before calling __mt76_sta_remove
> - But sta_event callback is called without acquiring the lock
>
> Add mutex_lock()/mutex_unlock() around the sta_event callback invocation
> to fix the missing lock protection and maintain consistency with the
> existing locking pattern.
>
The mt7921 / mt7925 .sta_event callback already holds the lock; this
patch would cause a deadlock. Suggest adding the implementation to
MT7915.
> Signed-off-by: Ziyi Guo <n7l8m4@u.northwestern.edu>
> ---
> drivers/net/wireless/mediatek/mt76/mac80211.c | 7 ++++++-
> 1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/wireless/mediatek/mt76/mac80211.c b/drivers/net/wireless/mediatek/mt76/mac80211.c
> index 75772979f438..468bc176bacb 100644
> --- a/drivers/net/wireless/mediatek/mt76/mac80211.c
> +++ b/drivers/net/wireless/mediatek/mt76/mac80211.c
> @@ -1640,6 +1640,7 @@ int mt76_sta_state(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
> struct mt76_phy *phy = hw->priv;
> struct mt76_dev *dev = phy->dev;
> enum mt76_sta_event ev;
> + int ret;
>
> phy = mt76_vif_phy(hw, vif);
> if (!phy)
> @@ -1668,7 +1669,11 @@ int mt76_sta_state(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
> else
> return 0;
>
> - return dev->drv->sta_event(dev, vif, sta, ev);
> + mutex_lock(&dev->mutex);
> + ret = dev->drv->sta_event(dev, vif, sta, ev);
> + mutex_unlock(&dev->mutex);
> +
> + return ret;
> }
> EXPORT_SYMBOL_GPL(mt76_sta_state);
>
> --
> 2.34.1
>
>
^ permalink raw reply
* [wireless-next:main] BUILD SUCCESS 303c1a66a22068517793284524dd1d24b7316d1b
From: kernel test robot @ 2026-01-31 1:07 UTC (permalink / raw)
To: Jakub Kicinski; +Cc: Johannes Berg, linux-wireless
tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next.git main
branch HEAD: 303c1a66a22068517793284524dd1d24b7316d1b Merge tag 'wireless-next-2026-01-29' of https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next
elapsed time: 1002m
configs tested: 311
configs skipped: 9
The following configs have been built successfully.
More configs may be tested in the coming days.
tested configs:
alpha alldefconfig gcc-15.2.0
alpha allnoconfig gcc-15.2.0
alpha allyesconfig gcc-15.2.0
alpha defconfig gcc-15.2.0
arc alldefconfig clang-22
arc allmodconfig clang-16
arc allmodconfig gcc-15.2.0
arc allnoconfig gcc-15.2.0
arc allyesconfig clang-22
arc allyesconfig gcc-15.2.0
arc defconfig gcc-15.2.0
arc randconfig-001-20260130 clang-17
arc randconfig-001-20260131 gcc-8.5.0
arc randconfig-002-20260130 clang-17
arc randconfig-002-20260131 gcc-8.5.0
arm allnoconfig clang-22
arm allnoconfig gcc-15.2.0
arm allyesconfig clang-16
arm allyesconfig gcc-15.2.0
arm defconfig clang-22
arm defconfig gcc-15.2.0
arm dove_defconfig clang-22
arm jornada720_defconfig clang-22
arm mvebu_v5_defconfig gcc-15.2.0
arm pxa910_defconfig clang-22
arm randconfig-001-20260130 clang-17
arm randconfig-001-20260131 gcc-8.5.0
arm randconfig-002-20260130 clang-17
arm randconfig-002-20260131 gcc-8.5.0
arm randconfig-003-20260130 clang-17
arm randconfig-003-20260131 gcc-8.5.0
arm randconfig-004-20260130 clang-17
arm randconfig-004-20260131 gcc-8.5.0
arm64 allmodconfig clang-19
arm64 allmodconfig clang-22
arm64 allnoconfig gcc-15.2.0
arm64 defconfig gcc-15.2.0
arm64 randconfig-001-20260130 gcc-8.5.0
arm64 randconfig-001-20260131 clang-22
arm64 randconfig-002-20260130 gcc-8.5.0
arm64 randconfig-002-20260131 clang-22
arm64 randconfig-003-20260130 gcc-8.5.0
arm64 randconfig-003-20260131 clang-22
arm64 randconfig-004-20260130 clang-22
arm64 randconfig-004-20260130 gcc-8.5.0
arm64 randconfig-004-20260131 clang-22
csky allmodconfig gcc-15.2.0
csky allnoconfig gcc-15.2.0
csky defconfig gcc-15.2.0
csky randconfig-001-20260130 gcc-15.2.0
csky randconfig-001-20260130 gcc-8.5.0
csky randconfig-001-20260131 clang-22
csky randconfig-002-20260130 gcc-15.2.0
csky randconfig-002-20260130 gcc-8.5.0
csky randconfig-002-20260131 clang-22
hexagon allmodconfig clang-17
hexagon allmodconfig gcc-15.2.0
hexagon allnoconfig clang-22
hexagon allnoconfig gcc-15.2.0
hexagon defconfig clang-22
hexagon defconfig gcc-15.2.0
hexagon randconfig-001-20260130 clang-19
hexagon randconfig-001-20260130 gcc-11.5.0
hexagon randconfig-001-20260131 gcc-11.5.0
hexagon randconfig-002-20260130 clang-18
hexagon randconfig-002-20260130 gcc-11.5.0
hexagon randconfig-002-20260131 gcc-11.5.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-20260130 clang-20
i386 buildonly-randconfig-001-20260131 clang-20
i386 buildonly-randconfig-002-20260130 clang-20
i386 buildonly-randconfig-002-20260131 clang-20
i386 buildonly-randconfig-003-20260130 clang-20
i386 buildonly-randconfig-003-20260131 clang-20
i386 buildonly-randconfig-004-20260130 clang-20
i386 buildonly-randconfig-004-20260130 gcc-14
i386 buildonly-randconfig-004-20260131 clang-20
i386 buildonly-randconfig-005-20260130 clang-20
i386 buildonly-randconfig-005-20260131 clang-20
i386 buildonly-randconfig-006-20260130 clang-20
i386 buildonly-randconfig-006-20260130 gcc-14
i386 buildonly-randconfig-006-20260131 clang-20
i386 defconfig clang-20
i386 defconfig gcc-15.2.0
i386 randconfig-001-20260130 gcc-14
i386 randconfig-002-20260130 gcc-14
i386 randconfig-003-20260130 gcc-14
i386 randconfig-004-20260130 gcc-14
i386 randconfig-005-20260130 gcc-14
i386 randconfig-006-20260130 gcc-14
i386 randconfig-007-20260130 gcc-14
i386 randconfig-011-20260130 clang-20
i386 randconfig-011-20260130 gcc-14
i386 randconfig-011-20260131 gcc-14
i386 randconfig-012-20260130 clang-20
i386 randconfig-012-20260130 gcc-14
i386 randconfig-012-20260131 gcc-14
i386 randconfig-013-20260130 clang-20
i386 randconfig-013-20260130 gcc-14
i386 randconfig-013-20260131 gcc-14
i386 randconfig-014-20260130 clang-20
i386 randconfig-014-20260131 gcc-14
i386 randconfig-015-20260130 clang-20
i386 randconfig-015-20260130 gcc-14
i386 randconfig-015-20260131 gcc-14
i386 randconfig-016-20260130 clang-20
i386 randconfig-016-20260130 gcc-14
i386 randconfig-016-20260131 gcc-14
i386 randconfig-017-20260130 clang-20
i386 randconfig-017-20260130 gcc-14
i386 randconfig-017-20260131 gcc-14
loongarch allmodconfig clang-19
loongarch allmodconfig clang-22
loongarch allnoconfig clang-22
loongarch allnoconfig gcc-15.2.0
loongarch defconfig clang-19
loongarch randconfig-001-20260130 clang-22
loongarch randconfig-001-20260130 gcc-11.5.0
loongarch randconfig-001-20260131 gcc-11.5.0
loongarch randconfig-002-20260130 clang-18
loongarch randconfig-002-20260130 gcc-11.5.0
loongarch randconfig-002-20260131 gcc-11.5.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 defconfig gcc-15.2.0
m68k m5275evb_defconfig gcc-15.2.0
m68k m5307c3_defconfig clang-22
m68k sun3x_defconfig gcc-15.2.0
microblaze allnoconfig gcc-15.2.0
microblaze allyesconfig gcc-15.2.0
microblaze defconfig clang-19
microblaze defconfig gcc-15.2.0
mips allmodconfig gcc-15.2.0
mips allnoconfig gcc-15.2.0
mips allyesconfig gcc-15.2.0
mips ath25_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 defconfig gcc-11.5.0
nios2 randconfig-001-20260130 gcc-11.5.0
nios2 randconfig-001-20260130 gcc-8.5.0
nios2 randconfig-001-20260131 gcc-11.5.0
nios2 randconfig-002-20260130 gcc-11.5.0
nios2 randconfig-002-20260131 gcc-11.5.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
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-20260130 gcc-14.3.0
parisc randconfig-001-20260130 gcc-8.5.0
parisc randconfig-001-20260131 gcc-8.5.0
parisc randconfig-002-20260130 gcc-8.5.0
parisc randconfig-002-20260131 gcc-8.5.0
parisc64 defconfig clang-19
parisc64 defconfig gcc-15.2.0
powerpc allmodconfig gcc-15.2.0
powerpc allnoconfig clang-22
powerpc allnoconfig gcc-15.2.0
powerpc mgcoge_defconfig clang-22
powerpc mpc5200_defconfig clang-22
powerpc randconfig-001-20260130 gcc-14.3.0
powerpc randconfig-001-20260130 gcc-8.5.0
powerpc randconfig-001-20260131 gcc-8.5.0
powerpc randconfig-002-20260130 gcc-10.5.0
powerpc randconfig-002-20260130 gcc-8.5.0
powerpc randconfig-002-20260131 gcc-8.5.0
powerpc tqm5200_defconfig gcc-15.2.0
powerpc64 randconfig-001-20260130 clang-22
powerpc64 randconfig-001-20260130 gcc-8.5.0
powerpc64 randconfig-001-20260131 gcc-8.5.0
powerpc64 randconfig-002-20260130 clang-22
powerpc64 randconfig-002-20260130 gcc-8.5.0
powerpc64 randconfig-002-20260131 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 randconfig-001-20260130 clang-22
riscv randconfig-001-20260130 gcc-14.3.0
riscv randconfig-001-20260131 gcc-8.5.0
riscv randconfig-002-20260130 clang-22
riscv randconfig-002-20260131 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-20260130 clang-22
s390 randconfig-001-20260131 gcc-8.5.0
s390 randconfig-002-20260130 clang-22
s390 randconfig-002-20260131 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 randconfig-001-20260130 clang-22
sh randconfig-001-20260130 gcc-9.5.0
sh randconfig-001-20260131 gcc-8.5.0
sh randconfig-002-20260130 clang-22
sh randconfig-002-20260130 gcc-13.4.0
sh randconfig-002-20260131 gcc-8.5.0
sh sh7710voipgw_defconfig gcc-15.2.0
sparc allnoconfig clang-22
sparc allnoconfig gcc-15.2.0
sparc defconfig gcc-15.2.0
sparc randconfig-001-20260131 gcc-14
sparc randconfig-002-20260131 gcc-14
sparc64 allmodconfig clang-22
sparc64 defconfig gcc-14
sparc64 randconfig-001-20260131 gcc-14
sparc64 randconfig-002-20260131 gcc-14
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 randconfig-001-20260131 gcc-14
um randconfig-002-20260131 gcc-14
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-20260130 clang-20
x86_64 buildonly-randconfig-001-20260131 gcc-14
x86_64 buildonly-randconfig-002-20260130 clang-20
x86_64 buildonly-randconfig-002-20260131 gcc-14
x86_64 buildonly-randconfig-003-20260130 clang-20
x86_64 buildonly-randconfig-003-20260131 gcc-14
x86_64 buildonly-randconfig-004-20260130 clang-20
x86_64 buildonly-randconfig-004-20260131 gcc-14
x86_64 buildonly-randconfig-005-20260130 clang-20
x86_64 buildonly-randconfig-005-20260131 gcc-14
x86_64 buildonly-randconfig-006-20260130 clang-20
x86_64 buildonly-randconfig-006-20260131 gcc-14
x86_64 defconfig gcc-14
x86_64 kexec clang-20
x86_64 randconfig-001-20260130 clang-20
x86_64 randconfig-001-20260131 clang-20
x86_64 randconfig-002-20260130 clang-20
x86_64 randconfig-002-20260131 clang-20
x86_64 randconfig-003-20260130 clang-20
x86_64 randconfig-003-20260131 clang-20
x86_64 randconfig-004-20260130 clang-20
x86_64 randconfig-004-20260131 clang-20
x86_64 randconfig-005-20260130 clang-20
x86_64 randconfig-005-20260131 clang-20
x86_64 randconfig-006-20260130 clang-20
x86_64 randconfig-006-20260131 clang-20
x86_64 randconfig-011-20260130 clang-20
x86_64 randconfig-011-20260131 clang-20
x86_64 randconfig-012-20260130 clang-20
x86_64 randconfig-012-20260131 clang-20
x86_64 randconfig-013-20260130 clang-20
x86_64 randconfig-013-20260131 clang-20
x86_64 randconfig-014-20260130 clang-20
x86_64 randconfig-014-20260130 gcc-14
x86_64 randconfig-014-20260131 clang-20
x86_64 randconfig-015-20260130 clang-20
x86_64 randconfig-015-20260131 clang-20
x86_64 randconfig-016-20260130 clang-20
x86_64 randconfig-016-20260130 gcc-14
x86_64 randconfig-016-20260131 clang-20
x86_64 randconfig-071-20260130 clang-20
x86_64 randconfig-071-20260131 gcc-14
x86_64 randconfig-072-20260130 clang-20
x86_64 randconfig-072-20260131 gcc-14
x86_64 randconfig-073-20260130 clang-20
x86_64 randconfig-073-20260131 gcc-14
x86_64 randconfig-074-20260130 clang-20
x86_64 randconfig-074-20260131 gcc-14
x86_64 randconfig-075-20260130 clang-20
x86_64 randconfig-075-20260131 gcc-14
x86_64 randconfig-076-20260130 clang-20
x86_64 randconfig-076-20260131 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 randconfig-001-20260131 gcc-14
xtensa randconfig-002-20260131 gcc-14
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply
* [PATCH net-next] net: remove unnecessary module_init/exit functions
From: Ethan Nelson-Moore @ 2026-01-31 0:42 UTC (permalink / raw)
To: netdev, linux-can, linux-wireless
Cc: Ethan Nelson-Moore, Michael Grzeschik, Andrew Lunn,
David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Marc Kleine-Budde, Vincent Mailhol, Ido Schimmel, Petr Machata,
Sridhar Samudrala, Toke Høiland-Jørgensen, Ping-Ke Shih,
Thomas Mühlbacher, Oliver Hartkopp
Many network drivers have unnecessary empty module_init and module_exit
functions. Remove them (including some that just print a message). Note
that if a module_init function exists, a module_exit function must also
exist; otherwise, the module cannot be unloaded.
Signed-off-by: Ethan Nelson-Moore <enelsonmoore@gmail.com>
---
drivers/net/arcnet/com20020.c | 16 ----------
drivers/net/can/sja1000/sja1000.c | 16 ----------
drivers/net/ethernet/8390/8390.c | 14 ---------
drivers/net/ethernet/8390/8390p.c | 11 -------
drivers/net/ethernet/mellanox/mlxsw/pci.c | 12 --------
drivers/net/hamradio/hdlcdrv.c | 20 -------------
drivers/net/net_failover.c | 13 ---------
drivers/net/wireless/ath/ath9k/common.c | 12 --------
.../realtek/rtlwifi/btcoexist/rtl_btc.c | 13 ---------
drivers/net/wireless/rsi/rsi_91x_main.c | 29 -------------------
10 files changed, 156 deletions(-)
diff --git a/drivers/net/arcnet/com20020.c b/drivers/net/arcnet/com20020.c
index a0053e3992a3..b8526805ffac 100644
--- a/drivers/net/arcnet/com20020.c
+++ b/drivers/net/arcnet/com20020.c
@@ -401,19 +401,3 @@ EXPORT_SYMBOL(com20020_netdev_ops);
MODULE_DESCRIPTION("ARCnet COM20020 chipset core driver");
MODULE_LICENSE("GPL");
-
-#ifdef MODULE
-
-static int __init com20020_module_init(void)
-{
- if (BUGLVL(D_NORMAL))
- pr_info("%s\n", "COM20020 chipset support (by David Woodhouse et al.)");
- return 0;
-}
-
-static void __exit com20020_module_exit(void)
-{
-}
-module_init(com20020_module_init);
-module_exit(com20020_module_exit);
-#endif /* MODULE */
diff --git a/drivers/net/can/sja1000/sja1000.c b/drivers/net/can/sja1000/sja1000.c
index a8fa0d6516b9..7c5aa8d399d4 100644
--- a/drivers/net/can/sja1000/sja1000.c
+++ b/drivers/net/can/sja1000/sja1000.c
@@ -725,19 +725,3 @@ void unregister_sja1000dev(struct net_device *dev)
unregister_candev(dev);
}
EXPORT_SYMBOL_GPL(unregister_sja1000dev);
-
-static __init int sja1000_init(void)
-{
- printk(KERN_INFO "%s CAN netdevice driver\n", DRV_NAME);
-
- return 0;
-}
-
-module_init(sja1000_init);
-
-static __exit void sja1000_exit(void)
-{
- printk(KERN_INFO "%s: driver removed\n", DRV_NAME);
-}
-
-module_exit(sja1000_exit);
diff --git a/drivers/net/ethernet/8390/8390.c b/drivers/net/ethernet/8390/8390.c
index c5636245f1ca..8e4354568f04 100644
--- a/drivers/net/ethernet/8390/8390.c
+++ b/drivers/net/ethernet/8390/8390.c
@@ -86,19 +86,5 @@ void NS8390_init(struct net_device *dev, int startp)
}
EXPORT_SYMBOL(NS8390_init);
-#if defined(MODULE)
-
-static int __init ns8390_module_init(void)
-{
- return 0;
-}
-
-static void __exit ns8390_module_exit(void)
-{
-}
-
-module_init(ns8390_module_init);
-module_exit(ns8390_module_exit);
-#endif /* MODULE */
MODULE_DESCRIPTION("National Semiconductor 8390 core driver");
MODULE_LICENSE("GPL");
diff --git a/drivers/net/ethernet/8390/8390p.c b/drivers/net/ethernet/8390/8390p.c
index 6d429b11e9c6..a0bfc8e34f79 100644
--- a/drivers/net/ethernet/8390/8390p.c
+++ b/drivers/net/ethernet/8390/8390p.c
@@ -91,16 +91,5 @@ void NS8390p_init(struct net_device *dev, int startp)
}
EXPORT_SYMBOL(NS8390p_init);
-static int __init NS8390p_init_module(void)
-{
- return 0;
-}
-
-static void __exit NS8390p_cleanup_module(void)
-{
-}
-
-module_init(NS8390p_init_module);
-module_exit(NS8390p_cleanup_module);
MODULE_DESCRIPTION("National Semiconductor 8390 core for ISA driver");
MODULE_LICENSE("GPL");
diff --git a/drivers/net/ethernet/mellanox/mlxsw/pci.c b/drivers/net/ethernet/mellanox/mlxsw/pci.c
index 8769cba2c746..7da9ef254b72 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/pci.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/pci.c
@@ -2542,18 +2542,6 @@ void mlxsw_pci_driver_unregister(struct pci_driver *pci_driver)
}
EXPORT_SYMBOL(mlxsw_pci_driver_unregister);
-static int __init mlxsw_pci_module_init(void)
-{
- return 0;
-}
-
-static void __exit mlxsw_pci_module_exit(void)
-{
-}
-
-module_init(mlxsw_pci_module_init);
-module_exit(mlxsw_pci_module_exit);
-
MODULE_LICENSE("Dual BSD/GPL");
MODULE_AUTHOR("Jiri Pirko <jiri@mellanox.com>");
MODULE_DESCRIPTION("Mellanox switch PCI interface driver");
diff --git a/drivers/net/hamradio/hdlcdrv.c b/drivers/net/hamradio/hdlcdrv.c
index 2263029d1a20..3b88e465d08f 100644
--- a/drivers/net/hamradio/hdlcdrv.c
+++ b/drivers/net/hamradio/hdlcdrv.c
@@ -742,26 +742,6 @@ EXPORT_SYMBOL(hdlcdrv_unregister);
/* --------------------------------------------------------------------- */
-static int __init hdlcdrv_init_driver(void)
-{
- printk(KERN_INFO "hdlcdrv: (C) 1996-2000 Thomas Sailer HB9JNX/AE4WA\n");
- printk(KERN_INFO "hdlcdrv: version 0.8\n");
- return 0;
-}
-
-/* --------------------------------------------------------------------- */
-
-static void __exit hdlcdrv_cleanup_driver(void)
-{
- printk(KERN_INFO "hdlcdrv: cleanup\n");
-}
-
-/* --------------------------------------------------------------------- */
-
MODULE_AUTHOR("Thomas M. Sailer, sailer@ife.ee.ethz.ch, hb9jnx@hb9w.che.eu");
MODULE_DESCRIPTION("Packet Radio network interface HDLC encoder/decoder");
MODULE_LICENSE("GPL");
-module_init(hdlcdrv_init_driver);
-module_exit(hdlcdrv_cleanup_driver);
-
-/* --------------------------------------------------------------------- */
diff --git a/drivers/net/net_failover.c b/drivers/net/net_failover.c
index 5b50d9186f12..d0361aaf25ef 100644
--- a/drivers/net/net_failover.c
+++ b/drivers/net/net_failover.c
@@ -819,18 +819,5 @@ void net_failover_destroy(struct failover *failover)
}
EXPORT_SYMBOL_GPL(net_failover_destroy);
-static __init int
-net_failover_init(void)
-{
- return 0;
-}
-module_init(net_failover_init);
-
-static __exit
-void net_failover_exit(void)
-{
-}
-module_exit(net_failover_exit);
-
MODULE_DESCRIPTION("Failover driver for Paravirtual drivers");
MODULE_LICENSE("GPL v2");
diff --git a/drivers/net/wireless/ath/ath9k/common.c b/drivers/net/wireless/ath/ath9k/common.c
index ffcf2276eb92..f55b3afb3777 100644
--- a/drivers/net/wireless/ath/ath9k/common.c
+++ b/drivers/net/wireless/ath/ath9k/common.c
@@ -403,15 +403,3 @@ void ath9k_cmn_init_crypto(struct ath_hw *ah)
ath_hw_keyreset(common, (u16) i);
}
EXPORT_SYMBOL(ath9k_cmn_init_crypto);
-
-static int __init ath9k_cmn_init(void)
-{
- return 0;
-}
-module_init(ath9k_cmn_init);
-
-static void __exit ath9k_cmn_exit(void)
-{
- return;
-}
-module_exit(ath9k_cmn_exit);
diff --git a/drivers/net/wireless/realtek/rtlwifi/btcoexist/rtl_btc.c b/drivers/net/wireless/realtek/rtlwifi/btcoexist/rtl_btc.c
index 4641999f3fe9..e88d92d3ae7a 100644
--- a/drivers/net/wireless/realtek/rtlwifi/btcoexist/rtl_btc.c
+++ b/drivers/net/wireless/realtek/rtlwifi/btcoexist/rtl_btc.c
@@ -519,16 +519,3 @@ MODULE_AUTHOR("Realtek WlanFAE <wlanfae@realtek.com>");
MODULE_AUTHOR("Larry Finger <Larry.FInger@lwfinger.net>");
MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("Realtek 802.11n PCI wireless core");
-
-static int __init rtl_btcoexist_module_init(void)
-{
- return 0;
-}
-
-static void __exit rtl_btcoexist_module_exit(void)
-{
- return;
-}
-
-module_init(rtl_btcoexist_module_init);
-module_exit(rtl_btcoexist_module_exit);
diff --git a/drivers/net/wireless/rsi/rsi_91x_main.c b/drivers/net/wireless/rsi/rsi_91x_main.c
index 2112d8d277a9..a9bb37d5d581 100644
--- a/drivers/net/wireless/rsi/rsi_91x_main.c
+++ b/drivers/net/wireless/rsi/rsi_91x_main.c
@@ -425,35 +425,6 @@ void rsi_91x_deinit(struct rsi_hw *adapter)
}
EXPORT_SYMBOL_GPL(rsi_91x_deinit);
-/**
- * rsi_91x_hal_module_init() - This function is invoked when the module is
- * loaded into the kernel.
- * It registers the client driver.
- * @void: Void.
- *
- * Return: 0 on success, -1 on failure.
- */
-static int rsi_91x_hal_module_init(void)
-{
- rsi_dbg(INIT_ZONE, "%s: Module init called\n", __func__);
- return 0;
-}
-
-/**
- * rsi_91x_hal_module_exit() - This function is called at the time of
- * removing/unloading the module.
- * It unregisters the client driver.
- * @void: Void.
- *
- * Return: None.
- */
-static void rsi_91x_hal_module_exit(void)
-{
- rsi_dbg(INIT_ZONE, "%s: Module exit called\n", __func__);
-}
-
-module_init(rsi_91x_hal_module_init);
-module_exit(rsi_91x_hal_module_exit);
MODULE_AUTHOR("Redpine Signals Inc");
MODULE_DESCRIPTION("Station driver for RSI 91x devices");
MODULE_VERSION("0.1");
--
2.43.0
^ permalink raw reply related
* [PATCH 1/1] wifi: ath12k: support calibration-variant from device tree
From: Andrew LaMarche @ 2026-01-31 0:32 UTC (permalink / raw)
To: Jeff Johnson; +Cc: linux-wireless, ath12k, linux-kernel, andrewjlamarche
ath10k and ath11k support reading calibration variants from the device
tree to locate the correct Board Description File (BDF). The ath12k-wsi
binding already describes using qcom,calibration-variant and
qcom,ath12k-calibration-variant, but it is not implemented in the code.
Many ath12k designs expose all the radios under a single phy, each of
which typically require a separate BDF. Without this, the radios may not
come up or will not be calibrated correctly.
Fix this by parsing the device tree for the generation-agnostic
qcom,calibration-variant node or ath12k-specific
qcom,ath12k-calibration-variant node. This allows the driver to properly
select, read and apply the correct BDF.
Signed-off-by: Andrew LaMarche <andrewjlamarche@gmail.com>
---
drivers/net/wireless/ath/ath12k/core.c | 25 +++++++++++++++++++++++++
drivers/net/wireless/ath/ath12k/core.h | 2 +-
drivers/net/wireless/ath/ath12k/qmi.c | 4 ++++
3 files changed, 30 insertions(+), 1 deletion(-)
diff --git a/drivers/net/wireless/ath/ath12k/core.c b/drivers/net/wireless/ath/ath12k/core.c
index cc352eef1939..e45f76d81337 100644
--- a/drivers/net/wireless/ath/ath12k/core.c
+++ b/drivers/net/wireless/ath/ath12k/core.c
@@ -806,6 +806,31 @@ int ath12k_core_check_smbios(struct ath12k_base *ab)
return 0;
}
+int ath12k_core_check_dt(struct ath12k_base *ab)
+{
+ size_t max_len = sizeof(ab->qmi.target.bdf_ext);
+ const char *variant = NULL;
+ struct device_node *node;
+
+ node = ab->dev->of_node;
+ if (!node)
+ return -ENOENT;
+
+ of_property_read_string(node, "qcom,calibration-variant",
+ &variant);
+ if (!variant)
+ of_property_read_string(node, "qcom,ath12k-calibration-variant",
+ &variant);
+ if (!variant)
+ return -ENODATA;
+
+ if (strscpy(ab->qmi.target.bdf_ext, variant, max_len) < 0)
+ ath12k_dbg(ab, ATH12K_DBG_BOOT,
+ "bdf variant string is longer than the buffer can accommodate (variant: %s)\n", variant);
+
+ return 0;
+}
+
static int ath12k_core_soc_create(struct ath12k_base *ab)
{
int ret;
diff --git a/drivers/net/wireless/ath/ath12k/core.h b/drivers/net/wireless/ath/ath12k/core.h
index 3c1e0069be1e..39700a780ee2 100644
--- a/drivers/net/wireless/ath/ath12k/core.h
+++ b/drivers/net/wireless/ath/ath12k/core.h
@@ -1352,7 +1352,7 @@ int ath12k_core_fetch_bdf(struct ath12k_base *ath12k,
struct ath12k_board_data *bd);
void ath12k_core_free_bdf(struct ath12k_base *ab, struct ath12k_board_data *bd);
int ath12k_core_fetch_regdb(struct ath12k_base *ab, struct ath12k_board_data *bd);
-int ath12k_core_check_dt(struct ath12k_base *ath12k);
+int ath12k_core_check_dt(struct ath12k_base *ab);
int ath12k_core_check_smbios(struct ath12k_base *ab);
void ath12k_core_halt(struct ath12k *ar);
int ath12k_core_resume_early(struct ath12k_base *ab);
diff --git a/drivers/net/wireless/ath/ath12k/qmi.c b/drivers/net/wireless/ath/ath12k/qmi.c
index b7c48b6706df..22ef5aab871f 100644
--- a/drivers/net/wireless/ath/ath12k/qmi.c
+++ b/drivers/net/wireless/ath/ath12k/qmi.c
@@ -2903,6 +2903,10 @@ int ath12k_qmi_request_target_cap(struct ath12k_base *ab)
if (r)
ath12k_dbg(ab, ATH12K_DBG_QMI, "SMBIOS bdf variant name not set.\n");
+ r = ath12k_core_check_dt(ab);
+ if (r)
+ ath12k_dbg(ab, ATH12K_DBG_QMI, "DT bdf variant name not set.\n");
+
r = ath12k_acpi_start(ab);
if (r)
/* ACPI is optional so continue in case of an error */
--
2.43.0
^ permalink raw reply related
* Re: [PATCH] Revert "wifi: iwlwifi: trans: remove STATUS_SUSPENDED"
From: Chris Bainbridge @ 2026-01-30 23:44 UTC (permalink / raw)
To: Korenblit, Miriam Rachel
Cc: kvalo@kernel.org, Berg, Johannes, benjamin@sipsolutions.net,
gustavoars@kernel.org, linux-intel-wifi@intel.com,
linux-wireless@vger.kernel.org, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org, stable@vger.kernel.org
In-Reply-To: <aXit5795WQLL290t@debian.local>
Hi,
I've been running a kernel with both of the suspend fixes (pause TCM on
fast resume, cleanup IWL_MVM_STATUS_IN_HW_RESTART in resume) here for
the last few days. I just experienced this fault - not from
suspend/resume this time though, the laptop wasn't doing anything
particular at the time, so no idea how to reproduce it.
Maybe it's related though (?) as it has the same
"Error sending SYSTEM_STATISTICS_CMD: time out after 2000ms."
It recovered ok, wifi was functional afterwards.
[37410.975565] iwlwifi 0000:01:00.0: Error sending SYSTEM_STATISTICS_CMD: time out after 2000ms.
[37410.975741] iwlwifi 0000:01:00.0: Current CMD queue read_ptr 39088 write_ptr 39089
[37410.977474] iwlwifi 0000:01:00.0: Start IWL Error Log Dump:
[37410.977480] iwlwifi 0000:01:00.0: Transport status: 0x0000004A, valid: 6
[37410.977486] iwlwifi 0000:01:00.0: Loaded firmware version: 89.7f71c7f4.0 ty-a0-gf-a0-89.ucode
[37410.977491] iwlwifi 0000:01:00.0: 0x00000084 | NMI_INTERRUPT_UNKNOWN
[37410.977497] iwlwifi 0000:01:00.0: 0x00008210 | trm_hw_status0
[37410.977502] iwlwifi 0000:01:00.0: 0x00000000 | trm_hw_status1
[37410.977506] iwlwifi 0000:01:00.0: 0x004DAD04 | branchlink2
[37410.977511] iwlwifi 0000:01:00.0: 0x004D092A | interruptlink1
[37410.977515] iwlwifi 0000:01:00.0: 0x004D092A | interruptlink2
[37410.977520] iwlwifi 0000:01:00.0: 0x00016AD2 | data1
[37410.977524] iwlwifi 0000:01:00.0: 0x01000000 | data2
[37410.977529] iwlwifi 0000:01:00.0: 0x00000000 | data3
[37410.977533] iwlwifi 0000:01:00.0: 0x70C01827 | beacon time
[37410.977538] iwlwifi 0000:01:00.0: 0xAD47B7F5 | tsf low
[37410.977542] iwlwifi 0000:01:00.0: 0x0000066B | tsf hi
[37410.977547] iwlwifi 0000:01:00.0: 0x00000000 | time gp1
[37410.977551] iwlwifi 0000:01:00.0: 0xB3FD3A22 | time gp2
[37410.977555] iwlwifi 0000:01:00.0: 0x00000001 | uCode revision type
[37410.977560] iwlwifi 0000:01:00.0: 0x00000059 | uCode version major
[37410.977565] iwlwifi 0000:01:00.0: 0x7F71C7F4 | uCode version minor
[37410.977569] iwlwifi 0000:01:00.0: 0x00000420 | hw version
[37410.977574] iwlwifi 0000:01:00.0: 0x00C80002 | board version
[37410.977578] iwlwifi 0000:01:00.0: 0x80F3FD26 | hcmd
[37410.977583] iwlwifi 0000:01:00.0: 0x24020000 | isr0
[37410.977587] iwlwifi 0000:01:00.0: 0x00000000 | isr1
[37410.977591] iwlwifi 0000:01:00.0: 0x40F84002 | isr2
[37410.977596] iwlwifi 0000:01:00.0: 0x04C3081C | isr3
[37410.977600] iwlwifi 0000:01:00.0: 0x00000000 | isr4
[37410.977604] iwlwifi 0000:01:00.0: 0x0326001C | last cmd Id
[37410.977609] iwlwifi 0000:01:00.0: 0x00016AD2 | wait_event
[37410.977613] iwlwifi 0000:01:00.0: 0x00000080 | l2p_control
[37410.977618] iwlwifi 0000:01:00.0: 0x00010014 | l2p_duration
[37410.977622] iwlwifi 0000:01:00.0: 0x0000003F | l2p_mhvalid
[37410.977627] iwlwifi 0000:01:00.0: 0x00001800 | l2p_addr_match
[37410.977631] iwlwifi 0000:01:00.0: 0x00000008 | lmpm_pmg_sel
[37410.977635] iwlwifi 0000:01:00.0: 0x00000000 | timestamp
[37410.977640] iwlwifi 0000:01:00.0: 0x06647878 | flow_handler
[37410.977678] iwlwifi 0000:01:00.0: Start IWL Error Log Dump:
[37410.977682] iwlwifi 0000:01:00.0: Transport status: 0x0000004A, valid: 7
[37410.977687] iwlwifi 0000:01:00.0: 0x20000066 | NMI_INTERRUPT_HOST
[37410.977692] iwlwifi 0000:01:00.0: 0x00000000 | umac branchlink1
[37410.977697] iwlwifi 0000:01:00.0: 0x804838BE | umac branchlink2
[37410.977701] iwlwifi 0000:01:00.0: 0x804A5D36 | umac interruptlink1
[37410.977706] iwlwifi 0000:01:00.0: 0x804A5D36 | umac interruptlink2
[37410.977710] iwlwifi 0000:01:00.0: 0x01000000 | umac data1
[37410.977715] iwlwifi 0000:01:00.0: 0x804A5D36 | umac data2
[37410.977719] iwlwifi 0000:01:00.0: 0x00000000 | umac data3
[37410.977723] iwlwifi 0000:01:00.0: 0x00000059 | umac major
[37410.977728] iwlwifi 0000:01:00.0: 0x7F71C7F4 | umac minor
[37410.977732] iwlwifi 0000:01:00.0: 0xB3FD3A20 | frame pointer
[37410.977736] iwlwifi 0000:01:00.0: 0xC0886258 | stack pointer
[37410.977741] iwlwifi 0000:01:00.0: 0x00B0020F | last host cmd
[37410.977745] iwlwifi 0000:01:00.0: 0x00000400 | isr status reg
[37410.977759] iwlwifi 0000:01:00.0: IML/ROM dump:
[37410.977764] iwlwifi 0000:01:00.0: 0x00000B03 | IML/ROM error/state
[37410.977778] iwlwifi 0000:01:00.0: 0x00008EBB | IML/ROM data1
[37410.977792] iwlwifi 0000:01:00.0: 0x00000090 | IML/ROM WFPM_AUTH_KEY_0
[37410.977802] iwlwifi 0000:01:00.0: Fseq Registers:
[37410.977868] iwlwifi 0000:01:00.0: 0x60000000 | FSEQ_ERROR_CODE
[37410.977875] iwlwifi 0000:01:00.0: 0x80440007 | FSEQ_TOP_INIT_VERSION
[37410.977882] iwlwifi 0000:01:00.0: 0x00080009 | FSEQ_CNVIO_INIT_VERSION
[37410.977889] iwlwifi 0000:01:00.0: 0x0000A652 | FSEQ_OTP_VERSION
[37410.977896] iwlwifi 0000:01:00.0: 0x00000002 | FSEQ_TOP_CONTENT_VERSION
[37410.977902] iwlwifi 0000:01:00.0: 0x4552414E | FSEQ_ALIVE_TOKEN
[37410.977909] iwlwifi 0000:01:00.0: 0x00400410 | FSEQ_CNVI_ID
[37410.977915] iwlwifi 0000:01:00.0: 0x00400410 | FSEQ_CNVR_ID
[37410.977922] iwlwifi 0000:01:00.0: 0x00400410 | CNVI_AUX_MISC_CHIP
[37410.977930] iwlwifi 0000:01:00.0: 0x00400410 | CNVR_AUX_MISC_CHIP
[37410.977939] iwlwifi 0000:01:00.0: 0x00009061 | CNVR_SCU_SD_REGS_SD_REG_DIG_DCDC_VTRIM
[37410.977948] iwlwifi 0000:01:00.0: 0x00000061 | CNVR_SCU_SD_REGS_SD_REG_ACTIVE_VDIG_MIRROR
[37410.977954] iwlwifi 0000:01:00.0: 0x00080009 | FSEQ_PREV_CNVIO_INIT_VERSION
[37410.977961] iwlwifi 0000:01:00.0: 0x00440007 | FSEQ_WIFI_FSEQ_VERSION
[37410.977968] iwlwifi 0000:01:00.0: 0x00440007 | FSEQ_BT_FSEQ_VERSION
[37410.977974] iwlwifi 0000:01:00.0: 0x000000E6 | FSEQ_CLASS_TP_VERSION
[37410.977988] iwlwifi 0000:01:00.0: UMAC CURRENT PC: 0x804a57fc
[37410.977995] iwlwifi 0000:01:00.0: LMAC1 CURRENT PC: 0xd0
[37410.978994] iwlwifi 0000:01:00.0: WRT: Collecting data: ini trigger 4 fired (delay=0ms).
[37411.452630] iwlwifi 0000:01:00.0: Device error - SW reset
[37411.452783] ieee80211 phy0: Hardware restart was requested
[37411.699230] iwlwifi 0000:01:00.0: WFPM_UMAC_PD_NOTIFICATION: 0x20
[37411.699393] iwlwifi 0000:01:00.0: WFPM_LMAC2_PD_NOTIFICATION: 0x1f
[37411.699479] iwlwifi 0000:01:00.0: WFPM_AUTH_KEY_0: 0x90
[37411.699553] iwlwifi 0000:01:00.0: CNVI_SCU_SEQ_DATA_DW9: 0x0
[37411.837813] iwlwifi 0000:01:00.0: restart completed
^ permalink raw reply
* Re: [PATCH v2] wifi: mt76: mt7921: fix txpower reporting
From: Lucid Duck @ 2026-01-30 21:58 UTC (permalink / raw)
To: nbd; +Cc: lorenzo, linux-wireless, Lucid Duck
In-Reply-To: <20260125222235.36565-1-lucid_duck@justthetip.ca>
On Tue, 27 Jan 2026, Felix Fietkau wrote:
> phy->hw->conf.power_level is the user configured power level, not what
> the hardware is capable of transmitting.
>
> To fix it properly, I think you should determine the maximum rate power
> used in the loop within mt76_connac_mcu_rate_txpower_band (updated with
> each call).
Thanks for the feedback, Felix.
I looked into tracking the max rate power in mt76_connac_mcu_rate_txpower_band()
as you suggested. However, I found that this function is only called from
mt7921_set_sar_specs() during SAR configuration changes - it's not in the
normal connection code path when a user associates with an AP.
As an alternative, this patch updates txpower_cur in mt7921_bss_info_changed()
when BSS_CHANGED_TXPOWER is set. It uses info->txpower from bss_conf as the
primary source, with a fallback to chan->max_reg_power for cases where
bss_conf.txpower isn't populated (which can happen on newer kernels).
If I've misunderstood your suggestion or there's a better approach, I'd be
happy to revise.
Background:
I originally started debugging this driver because hcxdumptool was
crashing repeatedly on my new Alfa AWUS036AXML adapter. The crashes
appeared related to the bogus txpower values being reported (3 dBm or
67 dBm). After applying this patch, hcxdumptool runs without crashing
and txpower values are reported correctly.
Test Results:
Tested on Alfa AWUS036AXML (MT7921AU), kernel 6.18.6:
Test Expected Actual Status
-------------- ---------- ---------- ------
2.4GHz ch1 ~33 dBm 33.00 dBm PASS
5GHz ch100 ~27 dBm 27.00 dBm PASS
6GHz ch5 ~15 dBm 15.00 dBm PASS
Band switching Updates Correct PASS
Consistency Stable 5/5 PASS
hcxdumptool No crash 8927 pkts PASS
Regulatory baseline (Canada):
- 2.4GHz: 30 dBm limit + 3 dBm path delta = 33 dBm reported
- 5GHz DFS: 24 dBm limit + 3 dBm path delta = 27 dBm reported
- 6GHz: 12 dBm limit + 3 dBm path delta = 15 dBm reported
Before patch:
$ iw dev wlan0 info | grep txpower
txpower 3.00 dBm # bogus value
After patch:
$ iw dev wlan0 info | grep txpower
txpower 33.00 dBm # matches regulatory limit
Lucid
^ permalink raw reply
* [PATCH v2] wifi: mt76: mt7921: fix txpower reporting
From: Lucid Duck @ 2026-01-30 21:54 UTC (permalink / raw)
To: nbd; +Cc: lorenzo, linux-wireless, Lucid Duck
In-Reply-To: <20260125222235.36565-1-lucid_duck@justthetip.ca>
The mt7921 driver never updates phy->txpower_cur, causing
mt76_get_txpower() to report incorrect values via nl80211.
Users see bogus txpower readings (typically 3 dBm or 67 dBm)
regardless of actual regulatory limits.
Fix this by updating txpower_cur in mt7921_bss_info_changed()
when BSS_CHANGED_TXPOWER is set. Use bss_conf.txpower as the
primary source, with a fallback to the channel's max_reg_power
for cases where bss_conf.txpower is not populated (INT_MIN).
Tested on Alfa AWUS036AXML (MT7921AU), kernel 6.18.6:
- 2.4GHz ch1: 33 dBm (30 dBm limit + 3 dBm path delta) - PASS
- 5GHz ch100: 27 dBm (24 dBm limit + 3 dBm path delta) - PASS
- 6GHz ch5: 15 dBm (12 dBm limit + 3 dBm path delta) - PASS
Signed-off-by: Lucid Duck <lucid_duck@justthetip.ca>
---
drivers/net/wireless/mediatek/mt76/mt7921/main.c | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/main.c b/drivers/net/wireless/mediatek/mt76/mt7921/main.c
index f37a35b..99fe46d 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7921/main.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7921/main.c
@@ -725,6 +725,25 @@ static void mt7921_bss_info_changed(struct ieee80211_hw *hw,
if (changed & BSS_CHANGED_CQM)
mt7921_mcu_set_rssimonitor(dev, vif);
+ if (changed & BSS_CHANGED_TXPOWER) {
+ int tx_power = info->txpower;
+
+ /*
+ * Workaround for kernel 6.18+: bss_conf.txpower may not be
+ * populated (INT_MIN) even when BSS_CHANGED_TXPOWER is set.
+ * In this case, use the channel's max regulatory power.
+ */
+ if (tx_power == INT_MIN || tx_power <= 0) {
+ struct ieee80211_channel *chan = phy->mt76->chandef.chan;
+ if (chan)
+ tx_power = chan->max_reg_power;
+ }
+
+ /* txpower is in dBm, txpower_cur is in 0.5dBm units */
+ if (tx_power > 0 && tx_power < 127)
+ phy->mt76->txpower_cur = tx_power * 2;
+ }
+
if (changed & BSS_CHANGED_ASSOC) {
mt7921_mcu_sta_update(dev, NULL, vif, true,
MT76_STA_INFO_STATE_ASSOC);
--
2.43.0
^ permalink raw reply related
* [PULL linux-firmware] ath10k, ath11k and ath12k firmware ath-20260130
From: Jeff Johnson @ 2026-01-30 20:29 UTC (permalink / raw)
To: linux-firmware; +Cc: linux-wireless, ath10k, ath11k, ath12k, jjohnson
Hi,
Here's a new pull request for ath10k, ath11k and ath12k.
No updates for ath10k.
For ath11k:
Update board file for QCA6698AQ/hw2.1 to support:
bus=pci,vendor=17cb,device=1103,subsystem-vendor=105b,subsystem-device=e105,qmi-chip-id=2,qmi-board-id=268
bus=pci,vendor=17cb,device=1103,subsystem-vendor=105b,subsystem-device=e105,qmi-chip-id=2,qmi-board-id=268,variant=QC_SA8775P_Ride
bus=pci,vendor=17cb,device=1103,subsystem-vendor=105b,subsystem-device=e105,qmi-chip-id=2,qmi-board-id=255,variant=QC_SA8775P_Ride
bus=pci,vendor=17cb,device=1103,subsystem-vendor=17cb,subsystem-device=0108,qmi-chip-id=2,qmi-board-id=34618
bus=pci,vendor=17cb,device=1103,subsystem-vendor=17cb,subsystem-device=0108,qmi-chip-id=2,qmi-board-id=34618,variant=QC_QCS615_Ride
Update board file for WCN6855/hw2.0 to support:
bus=pci,vendor=17cb,device=1103,subsystem-vendor=105b,subsystem-device=e105,qmi-chip-id=2,qmi-board-id=268
bus=pci,vendor=17cb,device=1103,subsystem-vendor=105b,subsystem-device=e105,qmi-chip-id=2,qmi-board-id=268,variant=QC_Hamoa_IOT_EVK
bus=pci,vendor=17cb,device=1103,subsystem-vendor=105b,subsystem-device=e105,qmi-chip-id=2,qmi-board-id=268,variant=QC_SA8775P_Ride
bus=pci,vendor=17cb,device=1103,subsystem-vendor=17cb,subsystem-device=0108,qmi-chip-id=2,qmi-board-id=34618
bus=pci,vendor=17cb,device=1103,subsystem-vendor=17cb,subsystem-device=0108,qmi-chip-id=2,qmi-board-id=34618,variant=QC_QCS615_Ride
For ath12k:
Update firmware for QCN9274/hw2.0.
Update board file for WCN7850/hw2.0 to support:
bus=pci,vendor=17cb,device=1107,subsystem-vendor=1eac,subsystem-device=8001,qmi-chip-id=2,qmi-board-id=255
bus=pci,vendor=17cb,device=1107,subsystem-vendor=1eac,subsystem-device=8004,qmi-chip-id=2,qmi-board-id=255
Please let me know if there are any problems.
Thanks,
/jeff
---
The following changes since commit 0882248d05045565bfefe1f07cbfc22276c9f058:
Merge branch 'lenovo-ish-uspstream-clean' into 'main' (2026-01-23 19:26:31 +0000)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/ath/linux-firmware.git ath-20260130
for you to fetch changes up to 09167289ec698099435e499e45c5788015d26783:
ath12k: WCN7850 hw2.0: update board-2.bin (2026-01-30 12:17:30 -0800)
----------------------------------------------------------------
Jeff Johnson (4):
ath11k: QCA6698AQ hw2.1: update board-2.bin
ath11k: WCN6855 hw2.0: update board-2.bin
ath12k: QCN9274 hw2.0: update to WLAN.WBE.1.6-01243-QCAHKSWPL_SILICONZ-1
ath12k: WCN7850 hw2.0: update board-2.bin
WHENCE | 2 +-
ath11k/QCA6698AQ/hw2.1/board-2.bin | Bin 986384 -> 1046928 bytes
ath11k/WCN6855/hw2.0/board-2.bin | Bin 7056532 -> 7117076 bytes
ath12k/QCN9274/hw2.0/firmware-2.bin | Bin 15183928 -> 16035896 bytes
ath12k/WCN7850/hw2.0/board-2.bin | Bin 2253732 -> 2253964 bytes
5 files changed, 1 insertion(+), 1 deletion(-)
^ permalink raw reply
* Re: [PULL linux-firmware] ath10k, ath11k and ath12k firmware ath-20260127
From: Jeff Johnson @ 2026-01-30 20:00 UTC (permalink / raw)
To: Dmitry Baryshkov
Cc: linux-firmware, linux-wireless, ath10k, ath11k, ath12k, jjohnson
In-Reply-To: <usrawtmodalbj4b4i22tk3hzgbrpt3gdbji4x7vfzdhp6qsb3g@rw2bl7jdnp22>
On 1/27/2026 10:36 AM, Dmitry Baryshkov wrote:
> On Tue, Jan 27, 2026 at 10:04:46AM -0800, Jeff Johnson wrote:
>> Hi,
>> Here's a new pull request for ath10k, ath11k and ath12k.
>>
>> No updates for ath10k.
>>
>> For ath11k update board files for QCA6698AQ/hw2.1 and WCN6855/hw2.0 to support:
>> bus=pci,vendor=17cb,device=1103,subsystem-vendor=105b,subsystem-device=e105,qmi-chip-id=2,qmi-board-id=268
>> bus=pci,vendor=17cb,device=1103,subsystem-vendor=105b,subsystem-device=e105,qmi-chip-id=2,qmi-board-id=255
>
> Don't we need the variant for this one? Otherwise it's too easy to clash
> with another unprogrammed board.
>
>> bus=pci,vendor=17cb,device=1103,subsystem-vendor=17cb,subsystem-device=0108,qmi-chip-id=2,qmi-board-id=34618,variant=QC_QCS615_Ride
>> bus=pci,vendor=17cb,device=1103,subsystem-vendor=105b,subsystem-device=e105,qmi-chip-id=2,qmi-board-id=268
>> bus=pci,vendor=17cb,device=1103,subsystem-vendor=105b,subsystem-device=e105,qmi-chip-id=2,qmi-board-id=268,variant=QC_Hamoa_IOT_EVK
>> bus=pci,vendor=17cb,device=1103,subsystem-vendor=17cb,subsystem-device=0108,qmi-chip-id=2,qmi-board-id=34618
>> bus=pci,vendor=17cb,device=1103,subsystem-vendor=17cb,subsystem-device=0108,qmi-chip-id=2,qmi-board-id=34618,variant=QC_QCS615_Ride
>>
>> For ath12k update firmware for QCN9274/hw2.0.
>>
>> Please let me know if there are any problems.
>>
>> Thanks,
>> /jeff
Please drop this PR.
We've spun a new board file that addresses your concern and I will be issuing
a new PR.
/jeff
^ permalink raw reply
* Re: [PATCH 00/13] Ranging support enhancements
From: Jeff Johnson @ 2026-01-30 18:52 UTC (permalink / raw)
To: Peddolla Harshavardhan Reddy, johannes; +Cc: linux-wireless
In-Reply-To: <20260130160039.2823409-1-peddolla.reddy@oss.qualcomm.com>
On 1/30/2026 8:00 AM, Peddolla Harshavardhan Reddy wrote:
> This patch series introduces Fine Timing Measurement (FTM)
> enhancements and Proximity Detection (PD) capabilities. The
> implementation follows the Wi-Fi Alliance "PR Implementation
> Consideration Draft 1.9 Rev 1" specification and extends the
> existing peer measurement framework with advanced ranging
> features.
>
> Kavita Kavita (1):
> mac80211_hwsim: Add support for extended FTM ranging
>
> Peddolla Harshavardhan Reddy (12):
> wifi: nl80211/cfg80211: Allow RSTA role to be enabled without LMR
> request
> wifi: nl80211/cfg80211: add proximity detection capabilities to PMSR
> wifi: nl80211/cfg80211: add continuous ranging and PD request support
> wifi: nl80211/cfg80211: extend PMSR FTM response for proximity ranging
> wifi: nl80211/cfg80211: add peer measurement abort command
> wifi: nl80211/cfg80211: add role-based PD peer limits
> wifi: nl80211/cfg80211: add ingress/egress distance thresholds for FTM
> wifi: nl80211/cfg80211: add PD-specific bandwidth capabilities for FTM
> wifi: nl80211/cfg80211: add FTM range report negotiation support
> wifi: nl80211/cfg80211: add result reporting control for PD requests
> wifi: nl80211/cfg80211: add MAC randomization support for PD requests
> wifi: nl80211/cfg80211: add LTF keyseed support for secure ranging
>
> drivers/net/wireless/virtual/mac80211_hwsim.c | 141 +++++++++++++
> include/net/cfg80211.h | 163 ++++++++++++++-
> include/uapi/linux/nl80211.h | 177 +++++++++++++++-
> net/wireless/nl80211.c | 87 ++++++++
> net/wireless/nl80211.h | 1 +
> net/wireless/pmsr.c | 194 ++++++++++++++++--
> 6 files changed, 738 insertions(+), 25 deletions(-)
>
This was not submitted through the Qualcomm internal review process, and it
has plenty of issues that should be addressed.
Please follow the process communicated privately to have this series go
through the internal processes so that your v2 will be better polished.
/jeff
^ permalink raw reply
* Re: [PATCH wireless-next v8 3/3] wifi: mac80211: add initial UHR support
From: Pablo MARTIN-GOMEZ @ 2026-01-30 18:29 UTC (permalink / raw)
To: Johannes Berg, linux-wireless; +Cc: Johannes Berg
In-Reply-To: <20260130164259.7185980484eb.Ieec940b58dbf8115dab7e1e24cb5513f52c8cb2f@changeid>
On 30/01/2026 16:21, Johannes Berg wrote:
> From: Johannes Berg <johannes.berg@intel.com>
>
> Add support for making UHR connections and accepting AP
> stations with UHR support.
>
> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
> ---
> v7:
> - adjust and normalize naming
> v6:
> - fix ieee80211_uhr_phy_cap() usage
> v5:
> - parse UHR capa as from AP
> v4:
> - fix NPCA validation
> v3:
> - use uhr_oper instead of removed uhr_capa
> - fix indentation (Jeff Johnson)
> ---
> include/net/mac80211.h | 35 ++++++++++-
> net/mac80211/Makefile | 2 +-
> net/mac80211/cfg.c | 16 +++++-
> net/mac80211/ieee80211_i.h | 19 +++++-
> net/mac80211/main.c | 15 ++++-
> net/mac80211/mlme.c | 115 ++++++++++++++++++++++++++++++++++---
> net/mac80211/parse.c | 22 ++++++-
> net/mac80211/rx.c | 26 +++++++++
> net/mac80211/sta_info.c | 13 ++++-
> net/mac80211/sta_info.h | 80 +++++++++++++++++++-------
> net/mac80211/uhr.c | 30 ++++++++++
> net/mac80211/util.c | 36 +++++++++++-
> 12 files changed, 370 insertions(+), 39 deletions(-)
> create mode 100644 net/mac80211/uhr.c
>
[...]
> diff --git a/net/mac80211/uhr.c b/net/mac80211/uhr.c
> new file mode 100644
> index 000000000000..2d8f5e5480ef
> --- /dev/null
> +++ b/net/mac80211/uhr.c
> @@ -0,0 +1,30 @@
> +// SPDX-License-Identifier: GPL-2.0-only
> +/*
> + * UHR handling
> + *
> + * Copyright(c) 2025-2026 Intel Corporation
> + */
> +
> +#include "ieee80211_i.h"
> +
> +void
> +ieee80211_uhr_cap_ie_to_sta_uhr_cap(struct ieee80211_sub_if_data *sdata,
> + struct ieee80211_supported_band *sband,
> + const struct ieee80211_uhr_cap *uhr_cap,
> + u8 uhr_cap_len,
> + struct link_sta_info *link_sta)
> +{
> + struct ieee80211_sta_uhr_cap *sta_uhr_cap = &link_sta->pub->uhr_cap;
> + bool from_ap;
> +
> + memset(sta_uhr_cap, 0, sizeof(*sta_uhr_cap));
> +
> + if (!ieee80211_get_uhr_iftype_cap_vif(sband, &sdata->vif))
> + return;
> +
> + sta_uhr_cap->has_uhr = true;
> +
> + sta_uhr_cap->mac = uhr_cap->mac;
> + from_ap = sdata->vif.type == NL80211_IFTYPE_STATION;
My knowledge of mac80211 is quite limited so I might be very well wrong
but it feels that either this is wrong and it should be `sdata->vif.type
== NL80211_IFTYPE_AP` or this is correct but it won't work with mesh
point for example and that `sdata->vif.type != NL80211_IFTYPE_AP` would
be better.
> + sta_uhr_cap->phy = *ieee80211_uhr_phy_cap(uhr_cap, from_ap);
> +}
Pablo MG
^ permalink raw reply
* Re: [PATCH ath-next 0/2] wifi: ath12k: fixes to station statistics request
From: Jeff Johnson @ 2026-01-30 17:56 UTC (permalink / raw)
To: Baochen Qiang, Jeff Johnson; +Cc: linux-wireless, ath12k, Saikiran B
In-Reply-To: <20260129-ath12k-fw-stats-fixes-v1-0-55d66064f4d5@oss.qualcomm.com>
On 1/28/2026 6:24 PM, Baochen Qiang wrote:
> ath12k hits timeout and memory leak when requesting firmware statistics,
> fix them.
>
> Signed-off-by: Baochen Qiang <baochen.qiang@oss.qualcomm.com>
> ---
> Baochen Qiang (2):
> wifi: ath12k: use correct pdev id when requesting firmware stats
> wifi: ath12k: fix station lookup failure when disconnecting from AP
>
> drivers/net/wireless/ath/ath12k/mac.c | 6 +++---
> drivers/net/wireless/ath/ath12k/wmi.c | 36 +++++++++++++----------------------
> 2 files changed, 16 insertions(+), 26 deletions(-)
> ---
> base-commit: 8c6bd5e9db28152563c984d8c48322610cac8609
> change-id: 20251121-ath12k-fw-stats-fixes-6e008a4054fd
>
> Best regards,
As confirmed in https://msgid.link/CAAFDt1vck6=sp4N+yEi6J8WwOmW-ZLfHaFXOaB+R9tMGophMDQ@mail.gmail.com
Tested-by: Saikiran B <bjsaikiran@gmail.com>
^ permalink raw reply
* Re: Problems building rtw89
From: Iohann Tachy @ 2026-01-30 16:58 UTC (permalink / raw)
To: Ping-Ke Shih; +Cc: linux-wireless@vger.kernel.org
In-Reply-To: <f730f3ca7b1d4fd08795831e13cc8f2f@realtek.com>
Good afternoon!
I'll run the " - dmidecode
- lspci -vt
- lspci -x"
commands today evening.
and I'll let you know what's the output results.
Regards,
Iohann
On Thu, Jan 29, 2026 at 9:36 PM Ping-Ke Shih <pkshih@realtek.com> wrote:
>
> Iohann Tachy <iohann.tachy@gmail.com> wrote:
> > Good morning,
> >
> > Currently there's an issue where it's not possible to build the rtw89 driver.
> > The RTL8852BE card has a compatibility problem with Intel X99 chipset
> > and a hacked rtw89 driver is needed to make it work.
> >
> > I kindly request to read the Github issue:
> > https://github.com/lwfinger/rtw89/issues/396
>
> A fix in Github is to disable 36-bit DMA [1]. I'd like to collect platform
> info to add a quirk. Please share outputs of below commands
> - dmidecode
> - lspci -vt
> - lspci -x
>
> [1] https://github.com/a5a5aa555oo/rtw89-1/commit/629756ee0232089d298bb398790d4a745b950058
>
>
^ permalink raw reply
* Re: [PATCH v2 2/2] wifi: ath12k: Fix firmware stats leak when pdev list is empty
From: Saikiran B @ 2026-01-30 16:45 UTC (permalink / raw)
To: Jeff Johnson; +Cc: Baochen Qiang, ath12k, linux-wireless, kvalo
In-Reply-To: <b96b9fb2-3313-4c3d-b20f-ea477f72bd62@oss.qualcomm.com>
On Fri, Jan 30, 2026 at 7:57 PM Jeff Johnson
<jeff.johnson@oss.qualcomm.com> wrote:
>
> On 1/29/2026 11:32 PM, Saikiran B wrote:
> > I have merged the tag, applied your patches and I can confirm that the
> > leak has been fixed.
>
> When I apply the patches would you like me to add the following?
>
> Tested-by: Saikiran B <bjsaikiran@gmail.com>
Sure.
Thanks & Regards,
Saikiran
^ permalink raw reply
* Re: [PATCH 05/13] wifi: nl80211/cfg80211: add peer measurement abort command
From: Johannes Berg @ 2026-01-30 16:15 UTC (permalink / raw)
To: Peddolla Harshavardhan Reddy; +Cc: linux-wireless
In-Reply-To: <20260130160039.2823409-6-peddolla.reddy@oss.qualcomm.com>
On Fri, 2026-01-30 at 21:30 +0530, Peddolla Harshavardhan Reddy wrote:
> Add support for aborting ongoing peer measurement sessions
> through a new NL80211_CMD_PEER_MEASUREMENT_ABORT command.
> This allows userspace to cancel continuous ranging or other
> long-running measurement sessions before completion.
>
> The abort operation is identified by the measurement cookie.
> When a matching request is found, it is marked for cleanup
> and the existing free work is scheduled to handle the
> abortion and notify the driver.
Originally, the idea was that we don't need this, since it's easy to
just close the socket. Are there any resource constraints in socket
handling in userspace that make this necessary? I'm not necessarily
totally opposed to this, but you also haven't explained why it's
necessary at all.
johannes
^ permalink raw reply
* [PATCH 13/13] mac80211_hwsim: Add support for extended FTM ranging
From: Peddolla Harshavardhan Reddy @ 2026-01-30 16:00 UTC (permalink / raw)
To: johannes; +Cc: linux-wireless
In-Reply-To: <20260130160039.2823409-1-peddolla.reddy@oss.qualcomm.com>
From: Kavita Kavita <kavita.kavita@oss.qualcomm.com>
Introduce support for continuous ranging and advanced timing parameters
in the FTM (Fine Timing Measurement) request, response, and capability
paths. This enables more flexible ranging scenarios with improved
control over measurement timing and session management.
Signed-off-by: Kavita Kavita <kavita.kavita@oss.qualcomm.com>
---
drivers/net/wireless/virtual/mac80211_hwsim.c | 141 ++++++++++++++++++
1 file changed, 141 insertions(+)
diff --git a/drivers/net/wireless/virtual/mac80211_hwsim.c b/drivers/net/wireless/virtual/mac80211_hwsim.c
index 4d9f5f87e814..430058bb0326 100644
--- a/drivers/net/wireless/virtual/mac80211_hwsim.c
+++ b/drivers/net/wireless/virtual/mac80211_hwsim.c
@@ -843,6 +843,18 @@ hwsim_ftm_result_policy[NL80211_PMSR_FTM_RESP_ATTR_MAX + 1] = {
[NL80211_PMSR_FTM_RESP_ATTR_DIST_SPREAD] = { .type = NLA_U64 },
[NL80211_PMSR_FTM_RESP_ATTR_LCI] = { .type = NLA_STRING },
[NL80211_PMSR_FTM_RESP_ATTR_CIVICLOC] = { .type = NLA_STRING },
+ [NL80211_PMSR_FTM_RESP_ATTR_TX_LTF_REPETITION_COUNT] = { .type = NLA_U8 },
+ [NL80211_PMSR_FTM_RESP_ATTR_RX_LTF_REPETITION_COUNT] = { .type = NLA_U8 },
+ [NL80211_PMSR_FTM_RESP_ATTR_MAX_TIME_BETWEEN_MEASUREMENTS] = { .type = NLA_U32 },
+ [NL80211_PMSR_FTM_RESP_ATTR_MIN_TIME_BETWEEN_MEASUREMENTS] = { .type = NLA_U32 },
+ [NL80211_PMSR_FTM_RESP_ATTR_NUM_TX_SPATIAL_STREAMS] = { .type = NLA_U8 },
+ [NL80211_PMSR_FTM_RESP_ATTR_NUM_RX_SPATIAL_STREAMS] = { .type = NLA_U8 },
+ [NL80211_PMSR_FTM_RESP_ATTR_NOMINAL_TIME] = { .type = NLA_U32 },
+ [NL80211_PMSR_FTM_RESP_ATTR_AVAILABILITY_WINDOW] = { .type = NLA_U8 },
+ [NL80211_PMSR_FTM_RESP_ATTR_MEASUREMENTS_PER_AW] = { .type = NLA_U8 },
+ [NL80211_PMSR_FTM_RESP_ATTR_BANDWIDTH] = { .type = NLA_U32 },
+ [NL80211_PMSR_FTM_RESP_ATTR_PREAMBLE] = { .type = NLA_U32 },
+ [NL80211_PMSR_FTM_RESP_ATTR_IS_DELAYED_LMR] = { .type = NLA_FLAG },
};
static const struct nla_policy
@@ -888,6 +900,14 @@ hwsim_ftm_capa_policy[NL80211_PMSR_FTM_CAPA_ATTR_MAX + 1] = {
[NL80211_PMSR_FTM_CAPA_ATTR_MAX_FTMS_PER_BURST] = NLA_POLICY_MAX(NLA_U8, 31),
[NL80211_PMSR_FTM_CAPA_ATTR_TRIGGER_BASED] = { .type = NLA_FLAG },
[NL80211_PMSR_FTM_CAPA_ATTR_NON_TRIGGER_BASED] = { .type = NLA_FLAG },
+ [NL80211_PMSR_FTM_CAPA_ATTR_EDCA_BASED_RESPONDER] = { .type = NLA_FLAG },
+ [NL80211_PMSR_FTM_CAPA_ATTR_MAX_NUM_TX_ANTENNAS] = { .type = NLA_U8 },
+ [NL80211_PMSR_FTM_CAPA_ATTR_MAX_NUM_RX_ANTENNAS] = { .type = NLA_U8 },
+ [NL80211_PMSR_FTM_CAPA_ATTR_MIN_INTERVAL_EDCA] = { .type = NLA_U32 },
+ [NL80211_PMSR_FTM_CAPA_ATTR_MIN_INTERVAL_NTB] = { .type = NLA_U32 },
+ [NL80211_PMSR_FTM_CAPA_ATTR_PD_EDCA_BANDWIDTHS] = { .type = NLA_U32 },
+ [NL80211_PMSR_FTM_CAPA_ATTR_PD_NTB_BANDWIDTHS] = { .type = NLA_U32 },
+ [NL80211_PMSR_FTM_CAPA_ATTR_RANGE_REPORT] = { .type = NLA_FLAG },
};
static const struct nla_policy
@@ -3488,6 +3508,49 @@ static int mac80211_hwsim_send_pmsr_ftm_request_peer(struct sk_buff *msg,
if (nla_put_u8(msg, NL80211_PMSR_FTM_REQ_ATTR_BSS_COLOR, request->bss_color))
return -ENOBUFS;
+ if (request->min_time_between_measurements &&
+ nla_put_u32(msg, NL80211_PMSR_FTM_REQ_ATTR_MIN_TIME_BETWEEN_MEASUREMENTS,
+ request->min_time_between_measurements))
+ return -ENOBUFS;
+
+ if (request->max_time_between_measurements &&
+ nla_put_u32(msg, NL80211_PMSR_FTM_REQ_ATTR_MAX_TIME_BETWEEN_MEASUREMENTS,
+ request->max_time_between_measurements))
+ return -ENOBUFS;
+
+ if (request->availability_window &&
+ nla_put_u8(msg, NL80211_PMSR_FTM_REQ_ATTR_AW_DURATION,
+ request->availability_window))
+ return -ENOBUFS;
+
+ if (request->nominal_time &&
+ nla_put_u32(msg, NL80211_PMSR_FTM_REQ_ATTR_NOMINAL_TIME,
+ request->nominal_time))
+ return -ENOBUFS;
+
+ if (request->measurements_per_aw &&
+ nla_put_u8(msg, NL80211_PMSR_FTM_REQ_ATTR_MEAS_PER_AW,
+ request->measurements_per_aw))
+ return -ENOBUFS;
+
+ if (request->ingress_distancemm &&
+ nla_put_u64_64bit(msg, NL80211_PMSR_FTM_REQ_ATTR_INGRESS,
+ request->ingress_distancemm, NL80211_ATTR_PAD))
+ return -ENOBUFS;
+
+ if (request->egress_distancemm &&
+ nla_put_u64_64bit(msg, NL80211_PMSR_FTM_REQ_ATTR_EGRESS,
+ request->egress_distancemm, NL80211_ATTR_PAD))
+ return -ENOBUFS;
+
+ if (request->range_report &&
+ nla_put_flag(msg, NL80211_PMSR_FTM_REQ_ATTR_RANGE_REPORT))
+ return -ENOBUFS;
+
+ if (request->pd_require_range_results &&
+ nla_put_flag(msg, NL80211_PMSR_FTM_REQ_ATTR_PD_REPORT_RESULT))
+ return -ENOBUFS;
+
nla_nest_end(msg, ftm);
return 0;
@@ -3857,6 +3920,57 @@ static int mac80211_hwsim_parse_ftm_result(struct nlattr *ftm,
result->civicloc_len = nla_len(tb[NL80211_PMSR_FTM_RESP_ATTR_CIVICLOC]);
}
+ if (tb[NL80211_PMSR_FTM_RESP_ATTR_TX_LTF_REPETITION_COUNT])
+ result->tx_ltf_repetition_count =
+ nla_get_u8(tb[NL80211_PMSR_FTM_RESP_ATTR_TX_LTF_REPETITION_COUNT]);
+
+ if (tb[NL80211_PMSR_FTM_RESP_ATTR_RX_LTF_REPETITION_COUNT])
+ result->rx_ltf_repetition_count =
+ nla_get_u8(tb[NL80211_PMSR_FTM_RESP_ATTR_RX_LTF_REPETITION_COUNT]);
+
+ if (tb[NL80211_PMSR_FTM_RESP_ATTR_MAX_TIME_BETWEEN_MEASUREMENTS])
+ result->max_time_between_measurements =
+ nla_get_u32(tb[NL80211_PMSR_FTM_RESP_ATTR_MAX_TIME_BETWEEN_MEASUREMENTS]);
+
+ if (tb[NL80211_PMSR_FTM_RESP_ATTR_MIN_TIME_BETWEEN_MEASUREMENTS])
+ result->min_time_between_measurements =
+ nla_get_u32(tb[NL80211_PMSR_FTM_RESP_ATTR_MIN_TIME_BETWEEN_MEASUREMENTS]);
+
+ if (tb[NL80211_PMSR_FTM_RESP_ATTR_NUM_TX_SPATIAL_STREAMS])
+ result->num_tx_spatial_streams =
+ nla_get_u8(tb[NL80211_PMSR_FTM_RESP_ATTR_NUM_TX_SPATIAL_STREAMS]);
+
+ if (tb[NL80211_PMSR_FTM_RESP_ATTR_NUM_RX_SPATIAL_STREAMS])
+ result->num_rx_spatial_streams =
+ nla_get_u8(tb[NL80211_PMSR_FTM_RESP_ATTR_NUM_RX_SPATIAL_STREAMS]);
+
+ if (tb[NL80211_PMSR_FTM_RESP_ATTR_NOMINAL_TIME])
+ result->nominal_time =
+ nla_get_u32(tb[NL80211_PMSR_FTM_RESP_ATTR_NOMINAL_TIME]);
+
+ if (tb[NL80211_PMSR_FTM_RESP_ATTR_AVAILABILITY_WINDOW])
+ result->availability_window =
+ nla_get_u8(tb[NL80211_PMSR_FTM_RESP_ATTR_AVAILABILITY_WINDOW]);
+
+ if (tb[NL80211_PMSR_FTM_RESP_ATTR_MEASUREMENTS_PER_AW])
+ result->measurements_per_aw =
+ nla_get_u8(tb[NL80211_PMSR_FTM_RESP_ATTR_MEASUREMENTS_PER_AW]);
+
+ if (tb[NL80211_PMSR_FTM_RESP_ATTR_BANDWIDTH]) {
+ result->band_width_valid = 1;
+ result->band_width =
+ nla_get_u32(tb[NL80211_PMSR_FTM_RESP_ATTR_BANDWIDTH]);
+ }
+
+ if (tb[NL80211_PMSR_FTM_RESP_ATTR_PREAMBLE]) {
+ result->preamble_valid = 1;
+ result->preamble =
+ nla_get_u32(tb[NL80211_PMSR_FTM_RESP_ATTR_PREAMBLE]);
+ }
+
+ if (tb[NL80211_PMSR_FTM_RESP_ATTR_IS_DELAYED_LMR])
+ result->is_delayed_lmr = 1;
+
return 0;
}
@@ -6312,6 +6426,33 @@ static int parse_ftm_capa(const struct nlattr *ftm_capa, struct cfg80211_pmsr_ca
out->ftm.request_civicloc = !!tb[NL80211_PMSR_FTM_CAPA_ATTR_REQ_CIVICLOC];
out->ftm.trigger_based = !!tb[NL80211_PMSR_FTM_CAPA_ATTR_TRIGGER_BASED];
out->ftm.non_trigger_based = !!tb[NL80211_PMSR_FTM_CAPA_ATTR_NON_TRIGGER_BASED];
+ out->ftm.support_edca_responder = !!tb[NL80211_PMSR_FTM_CAPA_ATTR_EDCA_BASED_RESPONDER];
+
+ if (tb[NL80211_PMSR_FTM_CAPA_ATTR_MAX_NUM_TX_ANTENNAS])
+ out->ftm.max_no_of_tx_antennas =
+ nla_get_u8(tb[NL80211_PMSR_FTM_CAPA_ATTR_MAX_NUM_TX_ANTENNAS]);
+
+ if (tb[NL80211_PMSR_FTM_CAPA_ATTR_MAX_NUM_RX_ANTENNAS])
+ out->ftm.max_no_of_rx_antennas =
+ nla_get_u8(tb[NL80211_PMSR_FTM_CAPA_ATTR_MAX_NUM_RX_ANTENNAS]);
+
+ if (tb[NL80211_PMSR_FTM_CAPA_ATTR_MIN_INTERVAL_EDCA])
+ out->ftm.min_allowed_ranging_interval_edca =
+ nla_get_u32(tb[NL80211_PMSR_FTM_CAPA_ATTR_MIN_INTERVAL_EDCA]);
+
+ if (tb[NL80211_PMSR_FTM_CAPA_ATTR_MIN_INTERVAL_NTB])
+ out->ftm.min_allowed_ranging_interval_ntb =
+ nla_get_u32(tb[NL80211_PMSR_FTM_CAPA_ATTR_MIN_INTERVAL_NTB]);
+
+ if (tb[NL80211_PMSR_FTM_CAPA_ATTR_PD_EDCA_BANDWIDTHS])
+ out->ftm.pd_edca_bandwidths =
+ nla_get_u32(tb[NL80211_PMSR_FTM_CAPA_ATTR_PD_EDCA_BANDWIDTHS]);
+
+ if (tb[NL80211_PMSR_FTM_CAPA_ATTR_PD_NTB_BANDWIDTHS])
+ out->ftm.pd_ntb_bandwidths =
+ nla_get_u32(tb[NL80211_PMSR_FTM_CAPA_ATTR_PD_NTB_BANDWIDTHS]);
+
+ out->ftm.support_range_report = !!tb[NL80211_PMSR_FTM_CAPA_ATTR_RANGE_REPORT];
return 0;
}
--
2.34.1
^ permalink raw reply related
* [PATCH 12/13] wifi: nl80211/cfg80211: add LTF keyseed support for secure ranging
From: Peddolla Harshavardhan Reddy @ 2026-01-30 16:00 UTC (permalink / raw)
To: johannes; +Cc: linux-wireless
In-Reply-To: <20260130160039.2823409-1-peddolla.reddy@oss.qualcomm.com>
Add NL80211_ATTR_LTF_KEYSEED attribute to support secure FTM
measurements. This allows drivers to generate secure LTF keys
for PHY-layer security in ranging operations.
The keyseed is used with trigger-based and non-trigger-based
FTM requests to enable secure peer measurement sessions.
Signed-off-by: Peddolla Harshavardhan Reddy <peddolla.reddy@oss.qualcomm.com>
---
include/net/cfg80211.h | 2 ++
include/uapi/linux/nl80211.h | 15 ++++++++++++---
net/wireless/nl80211.c | 7 +++++++
3 files changed, 21 insertions(+), 3 deletions(-)
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index dd45dda7e619..ea6b9c994455 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -800,6 +800,8 @@ struct key_params {
u16 vlan_id;
u32 cipher;
enum nl80211_key_mode mode;
+ const u8 *ltf_keyseed;
+ int ltf_keyseed_len;
};
/**
diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h
index c102a54ff335..4db71f400571 100644
--- a/include/uapi/linux/nl80211.h
+++ b/include/uapi/linux/nl80211.h
@@ -395,9 +395,10 @@
* %NL80211_ATTR_MLO_LINK_ID.
* @NL80211_CMD_NEW_KEY: add a key with given %NL80211_ATTR_KEY_DATA,
* %NL80211_ATTR_KEY_IDX, %NL80211_ATTR_MAC, %NL80211_ATTR_KEY_CIPHER,
- * and %NL80211_ATTR_KEY_SEQ attributes. %NL80211_ATTR_MAC represents
- * peer's MLD address for MLO pairwise key. The link to add MLO
- * group key is identified by %NL80211_ATTR_MLO_LINK_ID.
+ * %NL80211_ATTR_KEY_SEQ and %NL80211_ATTR_LTF_KEYSEED attributes.
+ * %NL80211_ATTR_MAC represents peer's MLD address for MLO pairwise key.
+ * The link to add MLO group key is identified by
+ * %NL80211_ATTR_MLO_LINK_ID.
* @NL80211_CMD_DEL_KEY: delete a key identified by %NL80211_ATTR_KEY_IDX
* or %NL80211_ATTR_MAC. %NL80211_ATTR_MAC represents peer's MLD address
* for MLO pairwise key. The link to delete group key is identified by
@@ -5536,6 +5537,13 @@ enum nl80211_key_default_types {
* @NL80211_KEY_MODE: the mode from enum nl80211_key_mode.
* Defaults to @NL80211_KEY_RX_TX.
* @NL80211_KEY_DEFAULT_BEACON: flag indicating default Beacon frame key
+ * @NL80211_ATTR_LTF_KEYSEED: LTF key seed is used by the driver to generate
+ * secure LTF keys used in case of peer measurement request with FTM
+ * request type as either %NL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED
+ * or %NL80211_PMSR_FTM_REQ_ATTR_TRIGGER_BASED, secure LTF key seeds will
+ * help enable PHY security in peer measurement session. The corresponding
+ * keys need to be configured before hand to ensure peer measurement
+ * session is secure.
*
* @__NL80211_KEY_AFTER_LAST: internal
* @NL80211_KEY_MAX: highest key attribute
@@ -5552,6 +5560,7 @@ enum nl80211_key_attributes {
NL80211_KEY_DEFAULT_TYPES,
NL80211_KEY_MODE,
NL80211_KEY_DEFAULT_BEACON,
+ NL80211_ATTR_LTF_KEYSEED,
/* keep last */
__NL80211_KEY_AFTER_LAST,
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 2909520bb949..3aaa5734be57 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -968,6 +968,8 @@ static const struct nla_policy nl80211_key_policy[NL80211_KEY_MAX + 1] = {
[NL80211_KEY_TYPE] = NLA_POLICY_MAX(NLA_U32, NUM_NL80211_KEYTYPES - 1),
[NL80211_KEY_DEFAULT_TYPES] = { .type = NLA_NESTED },
[NL80211_KEY_MODE] = NLA_POLICY_RANGE(NLA_U8, 0, NL80211_KEY_SET_TX),
+ [NL80211_ATTR_LTF_KEYSEED] = { .type = NLA_BINARY,
+ .len = WLAN_MAX_KEY_LEN },
};
/* policy for the key default flags */
@@ -1491,6 +1493,11 @@ static int nl80211_parse_key_new(struct genl_info *info, struct nlattr *key,
if (tb[NL80211_KEY_MODE])
k->p.mode = nla_get_u8(tb[NL80211_KEY_MODE]);
+ if (tb[NL80211_ATTR_LTF_KEYSEED]) {
+ k->p.ltf_keyseed = nla_data(tb[NL80211_ATTR_LTF_KEYSEED]);
+ k->p.ltf_keyseed_len = nla_len(tb[NL80211_ATTR_LTF_KEYSEED]);
+ }
+
return 0;
}
--
2.34.1
^ permalink raw reply related
* [PATCH 11/13] wifi: nl80211/cfg80211: add MAC randomization support for PD requests
From: Peddolla Harshavardhan Reddy @ 2026-01-30 16:00 UTC (permalink / raw)
To: johannes; +Cc: linux-wireless
In-Reply-To: <20260130160039.2823409-1-peddolla.reddy@oss.qualcomm.com>
Add support for MAC address randomization in proximity detection
(PD) requests. When enabled, the same randomized MAC address
used for discovery and authentication phases will be used for
the ranging measurements, maintaining privacy throughout the
entire PD session workflow.
The implementation adds a capability flag for devices to
advertise PD MAC randomization support and validates that
randomization is only requested when the device supports it.
This ensures consistent MAC address usage across all phases of
proximity detection while preventing invalid configurations
where randomization is requested but not supported by hardware.
Signed-off-by: Peddolla Harshavardhan Reddy <peddolla.reddy@oss.qualcomm.com>
---
include/net/cfg80211.h | 7 ++++++-
include/uapi/linux/nl80211.h | 5 +++++
net/wireless/nl80211.c | 6 ++++++
net/wireless/pmsr.c | 10 ++++++++++
4 files changed, 27 insertions(+), 1 deletion(-)
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index 00ef211f20f1..dd45dda7e619 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -5734,6 +5734,10 @@ cfg80211_get_iftype_ext_capa(struct wiphy *wiphy, enum nl80211_iftype type);
* multi-peer request this will indicate if the device can act
* simultaneously as initiator and a responder. Only valid if @pd_support
* is set.
+ * @pd_randomize_mac_addr: flag attribute in capability indicating that MAC
+ * address randomization is supported for PD request. if capable a mac
+ * address used for discovery, authentication will be used for ranging too.
+ * only valid if @pd_support is set
* @pd_max_peer_ista_role: Maximum number of peers allowed for a device
* operating in the ISTA role under proximity detection. Only valid if
* @pd_support is set. Sum of both @pd_max_peer_ista_role and
@@ -5795,7 +5799,8 @@ struct cfg80211_pmsr_capabilities {
u8 report_ap_tsf:1,
randomize_mac_addr:1,
pd_support:1,
- pd_concurrent_ista_rsta_support:1;
+ pd_concurrent_ista_rsta_support:1,
+ pd_randomize_mac_addr:1;
u32 pd_max_peer_ista_role;
u32 pd_max_peer_rsta_role;
diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h
index 85223b16eb84..c102a54ff335 100644
--- a/include/uapi/linux/nl80211.h
+++ b/include/uapi/linux/nl80211.h
@@ -7776,6 +7776,10 @@ enum nl80211_peer_measurement_peer_attrs {
* NL80211_PMSR_ATTR_PD_MAX_PEER_ISTA_ROLE and
* NL80211_PMSR_ATTR_PD_MAX_PEER_RSTA_ROLE is considered to enforce the
* max peers supported in case the request is of peer-to-peer PD type
+ * @NL80211_PMSR_ATTR_PD_RANDOMIZE_MAC_ADDR: flag attribute in capability
+ * indicating that MAC address randomization is supported for PD request.
+ * if capable a mac address used for discovery, authentication will be
+ * used for ranging too. only valid if %NL80211_PMSR_ATTR_PD_SUPPORT is set
*
* @NUM_NL80211_PMSR_ATTR: internal
* @NL80211_PMSR_ATTR_MAX: highest attribute number
@@ -7792,6 +7796,7 @@ enum nl80211_peer_measurement_attrs {
NL80211_PMSR_ATTR_PD_CONCURRENT_ISTA_RSTA_SUPPORT,
NL80211_PMSR_ATTR_PD_MAX_PEER_ISTA_ROLE,
NL80211_PMSR_ATTR_PD_MAX_PEER_RSTA_ROLE,
+ NL80211_PMSR_ATTR_PD_RANDOMIZE_MAC_ADDR,
/* keep last */
NUM_NL80211_PMSR_ATTR,
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 6d53eb3eb78c..2909520bb949 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -414,6 +414,7 @@ nl80211_pmsr_attr_policy[NL80211_PMSR_ATTR_MAX + 1] = {
},
[NL80211_PMSR_ATTR_PD_MAX_PEER_ISTA_ROLE] = { .type = NLA_REJECT },
[NL80211_PMSR_ATTR_PD_MAX_PEER_RSTA_ROLE] = { .type = NLA_REJECT },
+ [NL80211_PMSR_ATTR_PD_RANDOMIZE_MAC_ADDR] = { .type = NLA_REJECT },
};
static const struct nla_policy
@@ -2441,6 +2442,11 @@ static int nl80211_send_pmsr_capa(struct cfg80211_registered_device *rdev,
nla_put_u32(msg, NL80211_PMSR_ATTR_PD_MAX_PEER_RSTA_ROLE,
cap->pd_max_peer_rsta_role))
return -ENOBUFS;
+
+ if (cap->pd_randomize_mac_addr &&
+ nla_put_flag(msg,
+ NL80211_PMSR_ATTR_PD_RANDOMIZE_MAC_ADDR))
+ return -ENOBUFS;
}
caps = nla_nest_start_noflag(msg, NL80211_PMSR_ATTR_TYPE_CAPA);
if (!caps)
diff --git a/net/wireless/pmsr.c b/net/wireless/pmsr.c
index a55eb73e6938..fcd7af0c61ba 100644
--- a/net/wireless/pmsr.c
+++ b/net/wireless/pmsr.c
@@ -376,6 +376,7 @@ int nl80211_pmsr_start(struct sk_buff *skb, struct genl_info *info)
struct cfg80211_pmsr_request *req;
struct nlattr *peers, *peer;
int count, rem, err, idx, pd_count, max_pd_peers;
+ u8 use_random_mac = 0;
capa = rdev->wiphy.pmsr_capa;
@@ -422,6 +423,7 @@ int nl80211_pmsr_start(struct sk_buff *skb, struct genl_info *info)
req->mac_addr_mask);
if (err)
goto out_err;
+ use_random_mac = 1;
} else {
memcpy(req->mac_addr, wdev_address(wdev), ETH_ALEN);
eth_broadcast_addr(req->mac_addr_mask);
@@ -453,6 +455,14 @@ int nl80211_pmsr_start(struct sk_buff *skb, struct genl_info *info)
err = -EINVAL;
goto out_err;
}
+
+ if (use_random_mac &&
+ !capa->pd_randomize_mac_addr) {
+ NL_SET_ERR_MSG(info->extack,
+ "PD mac randomization not supported");
+ err = -EINVAL;
+ goto out_err;
+ }
}
}
}
--
2.34.1
^ permalink raw reply related
* [PATCH 10/13] wifi: nl80211/cfg80211: add result reporting control for PD requests
From: Peddolla Harshavardhan Reddy @ 2026-01-30 16:00 UTC (permalink / raw)
To: johannes; +Cc: linux-wireless
In-Reply-To: <20260130160039.2823409-1-peddolla.reddy@oss.qualcomm.com>
Add optional result reporting control for proximity detection
(PD) requests, allowing userspace to disable ranging result
reports when measurement data is not needed. This reduces
unnecessary data transfer and processing overhead for
applications that only require proximity detection without
detailed ranging measurements.
The implementation validates that result reporting control is
only used with PD requests and ensures proper configuration
when operating as responder (RSTA role). For RSTA operations
requesting results, either LMR feedback or range report must
be enabled to provide a mechanism for result delivery. This
prevents invalid configurations where results are requested
but no delivery method is available.
Signed-off-by: Peddolla Harshavardhan Reddy <peddolla.reddy@oss.qualcomm.com>
---
include/net/cfg80211.h | 8 +++++++-
include/uapi/linux/nl80211.h | 9 +++++++++
net/wireless/nl80211.c | 1 +
net/wireless/pmsr.c | 19 +++++++++++++++++++
4 files changed, 36 insertions(+), 1 deletion(-)
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index 890d4b007033..00ef211f20f1 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -4394,6 +4394,11 @@ struct cfg80211_pmsr_result {
* in this case.
* @range_report: negotiate for FTM range report. Only valid for
* EDCA based ranging.
+ * @pd_require_range_results: flag to enable receiving results
+ * for PD requests. if this flag is disabled then ranging result will not
+ * be reported regardless of ranging role or the type or ranging. Only
+ * valid if @pd_request is set. in case @rsta is set, either @range_report
+ * or @lmr_feedback should be set inorder for the request to be valid.
* See also nl80211 for the respective attribute documentation.
*/
struct cfg80211_pmsr_ftm_request_peer {
@@ -4419,7 +4424,8 @@ struct cfg80211_pmsr_ftm_request_peer {
u8 measurements_per_aw;
u64 ingress_distancemm;
u64 egress_distancemm;
- u8 range_report:1;
+ u8 range_report:1,
+ pd_require_range_results:1;
};
/**
diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h
index af80248d24a1..85223b16eb84 100644
--- a/include/uapi/linux/nl80211.h
+++ b/include/uapi/linux/nl80211.h
@@ -7995,6 +7995,14 @@ enum nl80211_peer_measurement_ftm_capa {
* (units mm, u64)
* @NL80211_PMSR_FTM_REQ_ATTR_RANGE_REPORT: Negotiate Range report in case of
* EDCA based ranging.
+ * @NL80211_PMSR_FTM_REQ_ATTR_PD_REPORT_RESULT: flag to enable receiving results
+ * for PD requests. if this flag is disabled then ranging result will not
+ * reported regardless of ranging role or the type or ranging. Only valid
+ * if %NL80211_PMSR_PEER_ATTR_PD_REQUEST is set. in case
+ * %NL80211_PMSR_FTM_REQ_ATTR_RSTA is set, either
+ * %NL80211_PMSR_FTM_REQ_ATTR_RANGE_REPORT or
+ * %NL80211_PMSR_FTM_REQ_ATTR_LMR_FEEDBACK should be set inorder for
+ * request to be valid.
*
* @NUM_NL80211_PMSR_FTM_REQ_ATTR: internal
* @NL80211_PMSR_FTM_REQ_ATTR_MAX: highest attribute number
@@ -8024,6 +8032,7 @@ enum nl80211_peer_measurement_ftm_req {
NL80211_PMSR_FTM_REQ_ATTR_INGRESS,
NL80211_PMSR_FTM_REQ_ATTR_EGRESS,
NL80211_PMSR_FTM_REQ_ATTR_RANGE_REPORT,
+ NL80211_PMSR_FTM_REQ_ATTR_PD_REPORT_RESULT,
/* keep last */
NUM_NL80211_PMSR_FTM_REQ_ATTR,
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index bbb80032d615..6d53eb3eb78c 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -374,6 +374,7 @@ nl80211_pmsr_ftm_req_attr_policy[NL80211_PMSR_FTM_REQ_ATTR_MAX + 1] = {
[NL80211_PMSR_FTM_REQ_ATTR_INGRESS] = { .type = NLA_U64 },
[NL80211_PMSR_FTM_REQ_ATTR_EGRESS] = { .type = NLA_U64 },
[NL80211_PMSR_FTM_REQ_ATTR_RANGE_REPORT] = { .type = NLA_FLAG },
+ [NL80211_PMSR_FTM_REQ_ATTR_PD_REPORT_RESULT] = { .type = NLA_FLAG },
};
static const struct nla_policy
diff --git a/net/wireless/pmsr.c b/net/wireless/pmsr.c
index f89fcd9bb505..a55eb73e6938 100644
--- a/net/wireless/pmsr.c
+++ b/net/wireless/pmsr.c
@@ -260,6 +260,25 @@ static int pmsr_parse_ftm(struct cfg80211_registered_device *rdev,
return -EINVAL;
}
+ if (tb[NL80211_PMSR_FTM_REQ_ATTR_PD_REPORT_RESULT])
+ out->ftm.pd_require_range_results =
+ nla_get_flag(tb[NL80211_PMSR_FTM_REQ_ATTR_PD_REPORT_RESULT]);
+
+ if (!out->pd_request && out->ftm.pd_require_range_results) {
+ NL_SET_ERR_MSG_ATTR(info->extack,
+ tb[NL80211_PMSR_FTM_REQ_ATTR_PD_REPORT_RESULT],
+ "FTM: require range result flag only valid for PD requests");
+ return -EINVAL;
+ }
+
+ if (out->ftm.pd_require_range_results && out->ftm.rsta &&
+ (!out->ftm.range_report && !out->ftm.lmr_feedback)) {
+ NL_SET_ERR_MSG_ATTR(info->extack,
+ tb[NL80211_PMSR_FTM_REQ_ATTR_PD_REPORT_RESULT],
+ "FTM: range results requested for responder without LMR or range report");
+ return -EINVAL;
+ }
+
return 0;
}
--
2.34.1
^ permalink raw reply related
* [PATCH 09/13] wifi: nl80211/cfg80211: add FTM range report negotiation support
From: Peddolla Harshavardhan Reddy @ 2026-01-30 16:00 UTC (permalink / raw)
To: johannes; +Cc: linux-wireless
In-Reply-To: <20260130160039.2823409-1-peddolla.reddy@oss.qualcomm.com>
Add support for FTM range report negotiation in EDCA-based
ranging operations. This allows devices to negotiate whether
range measurement reports should be exchanged after the FTM
session.
The implementation adds a new capability flag and request
attribute for range report negotiation. Devices advertise
range report support and userspace can request it for EDCA
ranging sessions only.
Signed-off-by: Peddolla Harshavardhan Reddy <peddolla.reddy@oss.qualcomm.com>
---
include/net/cfg80211.h | 8 +++++++-
include/uapi/linux/nl80211.h | 6 ++++++
net/wireless/nl80211.c | 4 ++++
net/wireless/pmsr.c | 19 +++++++++++++++++++
4 files changed, 36 insertions(+), 1 deletion(-)
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index 5224a68867cc..890d4b007033 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -4392,6 +4392,8 @@ struct cfg80211_pmsr_result {
* to be indicated in case the device moves out of this range.
* (units mm, u64). measurement results need be sent on a burst index basis
* in this case.
+ * @range_report: negotiate for FTM range report. Only valid for
+ * EDCA based ranging.
* See also nl80211 for the respective attribute documentation.
*/
struct cfg80211_pmsr_ftm_request_peer {
@@ -4417,6 +4419,7 @@ struct cfg80211_pmsr_ftm_request_peer {
u8 measurements_per_aw;
u64 ingress_distancemm;
u64 egress_distancemm;
+ u8 range_report:1;
};
/**
@@ -5772,6 +5775,8 @@ cfg80211_get_iftype_ext_capa(struct wiphy *wiphy, enum nl80211_iftype type);
* @ftm.support_rsta: supports operating as RSTA in PMSR FTM request
* @ftm.support_edca_responder: supports operating as FTM responder in PMSR FTM
* request for EDCA-based ranging
+ * @ftm.support_range_report: capable of negotiating for FTM range report. Only
+ * valid for EDCA based ranging.
* @ftm.pd_edca_bandwidths: bitmap of bandwidths supported
* (&enum nl80211_chan_width) in case of PD request with EDCA based
* initiator or responder role. ignored if @pd_support is not set.
@@ -5812,7 +5817,8 @@ struct cfg80211_pmsr_capabilities {
u32 min_allowed_ranging_interval_edca;
u32 min_allowed_ranging_interval_ntb;
u8 support_rsta:1,
- support_edca_responder:1;
+ support_edca_responder:1,
+ support_range_report:1;
u32 pd_edca_bandwidths;
u32 pd_ntb_bandwidths;
} ftm;
diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h
index 181595ec960e..af80248d24a1 100644
--- a/include/uapi/linux/nl80211.h
+++ b/include/uapi/linux/nl80211.h
@@ -7875,6 +7875,8 @@ enum nl80211_peer_measurement_attrs {
* Note that a higher channel bandwidth may be configured to allow for
* other measurements types with different bandwidth requirement in the
* same measurement.
+ * @NL80211_PMSR_FTM_CAPA_ATTR_RANGE_REPORT: flag indicating if range report
+ * negotiation and reporting is supported in case of EDCA based ranging.
*
* @NUM_NL80211_PMSR_FTM_CAPA_ATTR: internal
* @NL80211_PMSR_FTM_CAPA_ATTR_MAX: highest attribute number
@@ -7907,6 +7909,7 @@ enum nl80211_peer_measurement_ftm_capa {
NL80211_PMSR_FTM_CAPA_ATTR_MIN_INTERVAL_NTB,
NL80211_PMSR_FTM_CAPA_ATTR_PD_EDCA_BANDWIDTHS,
NL80211_PMSR_FTM_CAPA_ATTR_PD_NTB_BANDWIDTHS,
+ NL80211_PMSR_FTM_CAPA_ATTR_RANGE_REPORT,
/* keep last */
NUM_NL80211_PMSR_FTM_CAPA_ATTR,
@@ -7990,6 +7993,8 @@ enum nl80211_peer_measurement_ftm_capa {
* @NL80211_PMSR_FTM_REQ_ATTR_EGRESS: the measurement result of the peer needs
* to be indicated in case the device moves out of this range.
* (units mm, u64)
+ * @NL80211_PMSR_FTM_REQ_ATTR_RANGE_REPORT: Negotiate Range report in case of
+ * EDCA based ranging.
*
* @NUM_NL80211_PMSR_FTM_REQ_ATTR: internal
* @NL80211_PMSR_FTM_REQ_ATTR_MAX: highest attribute number
@@ -8018,6 +8023,7 @@ enum nl80211_peer_measurement_ftm_req {
NL80211_PMSR_FTM_REQ_ATTR_MEAS_PER_AW,
NL80211_PMSR_FTM_REQ_ATTR_INGRESS,
NL80211_PMSR_FTM_REQ_ATTR_EGRESS,
+ NL80211_PMSR_FTM_REQ_ATTR_RANGE_REPORT,
/* keep last */
NUM_NL80211_PMSR_FTM_REQ_ATTR,
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 571d96a5ddf4..bbb80032d615 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -373,6 +373,7 @@ nl80211_pmsr_ftm_req_attr_policy[NL80211_PMSR_FTM_REQ_ATTR_MAX + 1] = {
[NL80211_PMSR_FTM_REQ_ATTR_MEAS_PER_AW] = { .type = NLA_U8 },
[NL80211_PMSR_FTM_REQ_ATTR_INGRESS] = { .type = NLA_U64 },
[NL80211_PMSR_FTM_REQ_ATTR_EGRESS] = { .type = NLA_U64 },
+ [NL80211_PMSR_FTM_REQ_ATTR_RANGE_REPORT] = { .type = NLA_FLAG },
};
static const struct nla_policy
@@ -2384,6 +2385,9 @@ nl80211_send_pmsr_ftm_capa(const struct cfg80211_pmsr_capabilities *cap,
if (nla_put_u32(msg, NL80211_PMSR_FTM_CAPA_ATTR_PD_NTB_BANDWIDTHS,
cap->ftm.pd_ntb_bandwidths))
return -ENOBUFS;
+ if (cap->ftm.support_range_report &&
+ nla_put_flag(msg, NL80211_PMSR_FTM_CAPA_ATTR_RANGE_REPORT))
+ return -ENOBUFS;
nla_nest_end(msg, ftm);
return 0;
diff --git a/net/wireless/pmsr.c b/net/wireless/pmsr.c
index 0ed0f401db11..f89fcd9bb505 100644
--- a/net/wireless/pmsr.c
+++ b/net/wireless/pmsr.c
@@ -241,6 +241,25 @@ static int pmsr_parse_ftm(struct cfg80211_registered_device *rdev,
out->ftm.egress_distancemm =
nla_get_u64(tb[NL80211_PMSR_FTM_REQ_ATTR_EGRESS]);
+ if (tb[NL80211_PMSR_FTM_REQ_ATTR_RANGE_REPORT])
+ out->ftm.range_report =
+ nla_get_flag(tb[NL80211_PMSR_FTM_REQ_ATTR_RANGE_REPORT]);
+
+ if (!capa->ftm.support_range_report && out->ftm.range_report) {
+ NL_SET_ERR_MSG_ATTR(info->extack,
+ tb[NL80211_PMSR_FTM_REQ_ATTR_RANGE_REPORT],
+ "FTM: Range report negotiation not supported");
+ return -EINVAL;
+ }
+
+ if ((out->ftm.non_trigger_based || out->ftm.trigger_based) &&
+ out->ftm.range_report) {
+ NL_SET_ERR_MSG_ATTR(info->extack,
+ tb[NL80211_PMSR_FTM_REQ_ATTR_RANGE_REPORT],
+ "FTM: Range report request is not valid for TB/NTB ranging");
+ return -EINVAL;
+ }
+
return 0;
}
--
2.34.1
^ permalink raw reply related
* [PATCH 08/13] wifi: nl80211/cfg80211: add PD-specific bandwidth capabilities for FTM
From: Peddolla Harshavardhan Reddy @ 2026-01-30 16:00 UTC (permalink / raw)
To: johannes; +Cc: linux-wireless
In-Reply-To: <20260130160039.2823409-1-peddolla.reddy@oss.qualcomm.com>
Add separate bandwidth capability reporting for proximity detection
(PD) requests with EDCA and NTB-based ranging. This allows devices
to advertise different supported bandwidths for PD operations
versus regular FTM measurements, enabling more flexible capability
negotiation for proximity ranging scenarios.
Signed-off-by: Peddolla Harshavardhan Reddy <peddolla.reddy@oss.qualcomm.com>
---
include/net/cfg80211.h | 8 ++++++++
include/uapi/linux/nl80211.h | 14 ++++++++++++++
net/wireless/nl80211.c | 6 ++++++
net/wireless/pmsr.c | 10 +++++++++-
4 files changed, 37 insertions(+), 1 deletion(-)
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index 73ef64d86a63..5224a68867cc 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -5772,6 +5772,12 @@ cfg80211_get_iftype_ext_capa(struct wiphy *wiphy, enum nl80211_iftype type);
* @ftm.support_rsta: supports operating as RSTA in PMSR FTM request
* @ftm.support_edca_responder: supports operating as FTM responder in PMSR FTM
* request for EDCA-based ranging
+ * @ftm.pd_edca_bandwidths: bitmap of bandwidths supported
+ * (&enum nl80211_chan_width) in case of PD request with EDCA based
+ * initiator or responder role. ignored if @pd_support is not set.
+ * @ftm.pd_ntb_bandwidths: bitmap of bandwidths supported
+ * (&enum nl80211_chan_width) in case of PD request with NTB based
+ * initiator or responder role. ignored if @pd_support is not set.
*/
struct cfg80211_pmsr_capabilities {
unsigned int max_peers;
@@ -5807,6 +5813,8 @@ struct cfg80211_pmsr_capabilities {
u32 min_allowed_ranging_interval_ntb;
u8 support_rsta:1,
support_edca_responder:1;
+ u32 pd_edca_bandwidths;
+ u32 pd_ntb_bandwidths;
} ftm;
};
diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h
index 4d91c73a4ed2..181595ec960e 100644
--- a/include/uapi/linux/nl80211.h
+++ b/include/uapi/linux/nl80211.h
@@ -7863,6 +7863,18 @@ enum nl80211_peer_measurement_attrs {
* @NL80211_PMSR_FTM_CAPA_ATTR_MIN_INTERVAL_NTB: u32 attribute indicating
* the minimum NTB ranging interval supported by the device
* in milli seconds. (0 means unknown)
+ * @NL80211_PMSR_FTM_CAPA_ATTR_PD_EDCA_BANDWIDTHS: bitmap of values from
+ * &enum nl80211_chan_width indicating the supported channel
+ * bandwidths for FTM in case of PD based EDCA initiator or responder role.
+ * Note that a higher channel bandwidth may be configured to allow for
+ * other measurements types with different bandwidth requirement in the
+ * same measurement.
+ * @NL80211_PMSR_FTM_CAPA_ATTR_PD_NTB_BANDWIDTHS: bitmap of values from
+ * &enum nl80211_chan_width indicating the supported channel
+ * bandwidths for FTM in case of PD based NTB initiator or responder role.
+ * Note that a higher channel bandwidth may be configured to allow for
+ * other measurements types with different bandwidth requirement in the
+ * same measurement.
*
* @NUM_NL80211_PMSR_FTM_CAPA_ATTR: internal
* @NL80211_PMSR_FTM_CAPA_ATTR_MAX: highest attribute number
@@ -7893,6 +7905,8 @@ enum nl80211_peer_measurement_ftm_capa {
NL80211_PMSR_FTM_CAPA_ATTR_MAX_NUM_RX_ANTENNAS,
NL80211_PMSR_FTM_CAPA_ATTR_MIN_INTERVAL_EDCA,
NL80211_PMSR_FTM_CAPA_ATTR_MIN_INTERVAL_NTB,
+ NL80211_PMSR_FTM_CAPA_ATTR_PD_EDCA_BANDWIDTHS,
+ NL80211_PMSR_FTM_CAPA_ATTR_PD_NTB_BANDWIDTHS,
/* keep last */
NUM_NL80211_PMSR_FTM_CAPA_ATTR,
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index b1865668feb4..571d96a5ddf4 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -2378,6 +2378,12 @@ nl80211_send_pmsr_ftm_capa(const struct cfg80211_pmsr_capabilities *cap,
nla_put_u32(msg, NL80211_PMSR_FTM_CAPA_ATTR_MIN_INTERVAL_NTB,
cap->ftm.min_allowed_ranging_interval_ntb))
return -ENOBUFS;
+ if (nla_put_u32(msg, NL80211_PMSR_FTM_CAPA_ATTR_PD_EDCA_BANDWIDTHS,
+ cap->ftm.pd_edca_bandwidths))
+ return -ENOBUFS;
+ if (nla_put_u32(msg, NL80211_PMSR_FTM_CAPA_ATTR_PD_NTB_BANDWIDTHS,
+ cap->ftm.pd_ntb_bandwidths))
+ return -ENOBUFS;
nla_nest_end(msg, ftm);
return 0;
diff --git a/net/wireless/pmsr.c b/net/wireless/pmsr.c
index c9915b1f57cb..0ed0f401db11 100644
--- a/net/wireless/pmsr.c
+++ b/net/wireless/pmsr.c
@@ -17,11 +17,19 @@ static int pmsr_parse_ftm(struct cfg80211_registered_device *rdev,
u32 preamble = NL80211_PREAMBLE_DMG; /* only optional in DMG */
/* validate existing data */
- if (!(rdev->wiphy.pmsr_capa->ftm.bandwidths & BIT(out->chandef.width))) {
+ if (!out->pd_request &&
+ !(rdev->wiphy.pmsr_capa->ftm.bandwidths & BIT(out->chandef.width))) {
NL_SET_ERR_MSG(info->extack, "FTM: unsupported bandwidth");
return -EINVAL;
}
+ if (out->pd_request &&
+ (!(rdev->wiphy.pmsr_capa->ftm.pd_edca_bandwidths & BIT(out->chandef.width)) &&
+ !(rdev->wiphy.pmsr_capa->ftm.pd_ntb_bandwidths & BIT(out->chandef.width)))) {
+ NL_SET_ERR_MSG(info->extack, "FTM: unsupported bandwidth for pd request");
+ return -EINVAL;
+ }
+
/* no validation needed - was already done via nested policy */
nla_parse_nested_deprecated(tb, NL80211_PMSR_FTM_REQ_ATTR_MAX, ftmreq,
NULL, NULL);
--
2.34.1
^ permalink raw reply related
* [PATCH 07/13] wifi: nl80211/cfg80211: add ingress/egress distance thresholds for FTM
From: Peddolla Harshavardhan Reddy @ 2026-01-30 16:00 UTC (permalink / raw)
To: johannes; +Cc: linux-wireless
In-Reply-To: <20260130160039.2823409-1-peddolla.reddy@oss.qualcomm.com>
Add support for configurable distance-based measurement reporting
thresholds in FTM peer measurement requests. This enables proximity
detection applications to receive measurement results only when
devices move into (ingress) or out of (egress) specified distance
ranges in millimeters.
The implementation adds NL80211_PMSR_FTM_REQ_ATTR_INGRESS and
NL80211_PMSR_FTM_REQ_ATTR_EGRESS attributes with corresponding
u64 fields in cfg80211_pmsr_ftm_request_peer. When configured,
measurement results are reported on burst index basis only when
peer crosses these distance boundaries.
Signed-off-by: Peddolla Harshavardhan Reddy <peddolla.reddy@oss.qualcomm.com>
---
include/net/cfg80211.h | 9 +++++++++
include/uapi/linux/nl80211.h | 7 +++++++
net/wireless/nl80211.c | 2 ++
net/wireless/pmsr.c | 8 ++++++++
4 files changed, 26 insertions(+)
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index ae63a3ead165..73ef64d86a63 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -4385,6 +4385,13 @@ struct cfg80211_pmsr_result {
* in units of milli seconds. Only valid if @non_trigger_based is set.
* @measurements_per_aw: number of measurement attempts per availability window
* with a maximum value of 4. Only valid if @non_trigger_based is set.
+ * @ingress_distancemm: the measurement result of the peer needs
+ * to be indicated in case the device moves into this range.(units mm, u64)
+ * measurement results need be sent on a burst index basis in this case.
+ * @egress_distancemm: the measurement result of the peer needs
+ * to be indicated in case the device moves out of this range.
+ * (units mm, u64). measurement results need be sent on a burst index basis
+ * in this case.
* See also nl80211 for the respective attribute documentation.
*/
struct cfg80211_pmsr_ftm_request_peer {
@@ -4408,6 +4415,8 @@ struct cfg80211_pmsr_ftm_request_peer {
u8 availability_window;
u32 nominal_time;
u8 measurements_per_aw;
+ u64 ingress_distancemm;
+ u64 egress_distancemm;
};
/**
diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h
index b6c28c75e141..4d91c73a4ed2 100644
--- a/include/uapi/linux/nl80211.h
+++ b/include/uapi/linux/nl80211.h
@@ -7971,6 +7971,11 @@ enum nl80211_peer_measurement_ftm_capa {
* @NL80211_PMSR_FTM_REQ_ATTR_MEAS_PER_AW: meas per AW field shall indicate the.
* number of measurements attempts per AW with a maximum value of 4 (u8).
* Only valid if %NL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED is set.
+ * @NL80211_PMSR_FTM_REQ_ATTR_INGRESS: the measurement result of the peer needs
+ * to be indicated in case the device moves into this range.(units mm, u64)
+ * @NL80211_PMSR_FTM_REQ_ATTR_EGRESS: the measurement result of the peer needs
+ * to be indicated in case the device moves out of this range.
+ * (units mm, u64)
*
* @NUM_NL80211_PMSR_FTM_REQ_ATTR: internal
* @NL80211_PMSR_FTM_REQ_ATTR_MAX: highest attribute number
@@ -7997,6 +8002,8 @@ enum nl80211_peer_measurement_ftm_req {
NL80211_PMSR_FTM_REQ_ATTR_NOMINAL_TIME,
NL80211_PMSR_FTM_REQ_ATTR_AW_DURATION,
NL80211_PMSR_FTM_REQ_ATTR_MEAS_PER_AW,
+ NL80211_PMSR_FTM_REQ_ATTR_INGRESS,
+ NL80211_PMSR_FTM_REQ_ATTR_EGRESS,
/* keep last */
NUM_NL80211_PMSR_FTM_REQ_ATTR,
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index bfe88f7068da..b1865668feb4 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -371,6 +371,8 @@ nl80211_pmsr_ftm_req_attr_policy[NL80211_PMSR_FTM_REQ_ATTR_MAX + 1] = {
[NL80211_PMSR_FTM_REQ_ATTR_NOMINAL_TIME] = { .type = NLA_U32 },
[NL80211_PMSR_FTM_REQ_ATTR_AW_DURATION] = { .type = NLA_U8 },
[NL80211_PMSR_FTM_REQ_ATTR_MEAS_PER_AW] = { .type = NLA_U8 },
+ [NL80211_PMSR_FTM_REQ_ATTR_INGRESS] = { .type = NLA_U64 },
+ [NL80211_PMSR_FTM_REQ_ATTR_EGRESS] = { .type = NLA_U64 },
};
static const struct nla_policy
diff --git a/net/wireless/pmsr.c b/net/wireless/pmsr.c
index e1b4cc7244cd..c9915b1f57cb 100644
--- a/net/wireless/pmsr.c
+++ b/net/wireless/pmsr.c
@@ -225,6 +225,14 @@ static int pmsr_parse_ftm(struct cfg80211_registered_device *rdev,
return -EINVAL;
}
+ if (tb[NL80211_PMSR_FTM_REQ_ATTR_INGRESS])
+ out->ftm.ingress_distancemm =
+ nla_get_u64(tb[NL80211_PMSR_FTM_REQ_ATTR_INGRESS]);
+
+ if (tb[NL80211_PMSR_FTM_REQ_ATTR_EGRESS])
+ out->ftm.egress_distancemm =
+ nla_get_u64(tb[NL80211_PMSR_FTM_REQ_ATTR_EGRESS]);
+
return 0;
}
--
2.34.1
^ permalink raw reply related
* [PATCH 06/13] wifi: nl80211/cfg80211: add role-based PD peer limits
From: Peddolla Harshavardhan Reddy @ 2026-01-30 16:00 UTC (permalink / raw)
To: johannes; +Cc: linux-wireless
In-Reply-To: <20260130160039.2823409-1-peddolla.reddy@oss.qualcomm.com>
Currently, proximity detection capabilities only advertise a
single maximum peer count that applies regardless of whether
the request is of PD type. However, some devices may support
different numbers of simultaneous peers depending on whether
the request is of PD type or not.
Introduce separate capability fields to allow drivers to
specify distinct peer limits for each request type. When a
device operates as a PD initiator, it can now advertise how
many responder peers it can measure simultaneously.
Similarly, when operating as a PD responder, it can indicate
how many initiator peers it can serve concurrently.
In scenarios where a device supports concurrent operation
as both PD initiator and PD responder, the enforcement logic
considers the sum of both role-specific limits to determine
the total number of peers allowed in a single measurement
request.
Signed-off-by: Peddolla Harshavardhan Reddy <peddolla.reddy@oss.qualcomm.com>
---
include/net/cfg80211.h | 12 ++++++++++++
include/uapi/linux/nl80211.h | 16 ++++++++++++++++
net/wireless/nl80211.c | 13 +++++++++++++
net/wireless/pmsr.c | 32 ++++++++++++++++++++++++++++----
4 files changed, 69 insertions(+), 4 deletions(-)
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index a82d1606345a..ae63a3ead165 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -5716,6 +5716,16 @@ cfg80211_get_iftype_ext_capa(struct wiphy *wiphy, enum nl80211_iftype type);
* multi-peer request this will indicate if the device can act
* simultaneously as initiator and a responder. Only valid if @pd_support
* is set.
+ * @pd_max_peer_ista_role: Maximum number of peers allowed for a device
+ * operating in the ISTA role under proximity detection. Only valid if
+ * @pd_support is set. Sum of both @pd_max_peer_ista_role and
+ * @pd_max_peer_rsta_role is considered to enforce the max peers supported
+ * in case the request is of peer-to-peer PD type.
+ * @pd_max_peer_rsta_role: Maximum number of peers allowed for a device
+ * operating in the RSTA role under proximity detection. Only valid if
+ * @pd_support is set. Sum of both @pd_max_peer_ista_role and
+ * @pd_max_peer_rsta_role is considered to enforce the max peers supported
+ * in case the request is of peer-to-peer PD type
* @ftm: FTM measurement data
* @ftm.supported: FTM measurement is supported
* @ftm.asap: ASAP-mode is supported
@@ -5760,6 +5770,8 @@ struct cfg80211_pmsr_capabilities {
randomize_mac_addr:1,
pd_support:1,
pd_concurrent_ista_rsta_support:1;
+ u32 pd_max_peer_ista_role;
+ u32 pd_max_peer_rsta_role;
struct {
u32 preambles;
diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h
index b2410d4f572c..b6c28c75e141 100644
--- a/include/uapi/linux/nl80211.h
+++ b/include/uapi/linux/nl80211.h
@@ -7762,6 +7762,20 @@ enum nl80211_peer_measurement_peer_attrs {
* multi-peer request, the device can act simultaneously as initiator and
* a responder, where the multiple requests are being processed
* simultaneously
+ * @NL80211_PMSR_ATTR_PD_MAX_PEER_ISTA_ROLE: u32 attribute indicating the
+ * maximum number of peers allowed for a device operating in the ISTA
+ * (Initiator STA) role under proximity detection. Only valid if
+ * NL80211_PMSR_ATTR_PD_SUPPORT is set. Sum of both
+ * NL80211_PMSR_ATTR_PD_MAX_PEER_ISTA_ROLE and
+ * NL80211_PMSR_ATTR_PD_MAX_PEER_RSTA_ROLE is considered to enforce the
+ * max peers supported in case the request is of peer-to-peer PD type
+ * @NL80211_PMSR_ATTR_PD_MAX_PEER_RSTA_ROLE: u32 attribute indicating the
+ * maximum number of peers allowed for a device operating in the RSTA
+ * (Responder STA) role under proximity detection. Only valid if
+ * NL80211_PMSR_ATTR_PD_SUPPORT is set. Sum of both
+ * NL80211_PMSR_ATTR_PD_MAX_PEER_ISTA_ROLE and
+ * NL80211_PMSR_ATTR_PD_MAX_PEER_RSTA_ROLE is considered to enforce the
+ * max peers supported in case the request is of peer-to-peer PD type
*
* @NUM_NL80211_PMSR_ATTR: internal
* @NL80211_PMSR_ATTR_MAX: highest attribute number
@@ -7776,6 +7790,8 @@ enum nl80211_peer_measurement_attrs {
NL80211_PMSR_ATTR_PEERS,
NL80211_PMSR_ATTR_PD_SUPPORT,
NL80211_PMSR_ATTR_PD_CONCURRENT_ISTA_RSTA_SUPPORT,
+ NL80211_PMSR_ATTR_PD_MAX_PEER_ISTA_ROLE,
+ NL80211_PMSR_ATTR_PD_MAX_PEER_RSTA_ROLE,
/* keep last */
NUM_NL80211_PMSR_ATTR,
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 1ad7eb103189..bfe88f7068da 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -408,6 +408,8 @@ nl80211_pmsr_attr_policy[NL80211_PMSR_ATTR_MAX + 1] = {
[NL80211_PMSR_ATTR_PD_CONCURRENT_ISTA_RSTA_SUPPORT] = {
.type = NLA_REJECT
},
+ [NL80211_PMSR_ATTR_PD_MAX_PEER_ISTA_ROLE] = { .type = NLA_REJECT },
+ [NL80211_PMSR_ATTR_PD_MAX_PEER_RSTA_ROLE] = { .type = NLA_REJECT },
};
static const struct nla_policy
@@ -2017,6 +2019,7 @@ nl80211_send_iftype_data(struct sk_buff *msg,
nla_put(msg, NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PPE,
ppe_thresh_size, eht_cap->eht_ppe_thres))
return -ENOBUFS;
+
}
if (sband->band == NL80211_BAND_6GHZ &&
@@ -2415,6 +2418,16 @@ static int nl80211_send_pmsr_capa(struct cfg80211_registered_device *rdev,
nla_put_flag(msg,
NL80211_PMSR_ATTR_PD_CONCURRENT_ISTA_RSTA_SUPPORT))
return -ENOBUFS;
+
+ if (cap->pd_max_peer_ista_role > 0 &&
+ nla_put_u32(msg, NL80211_PMSR_ATTR_PD_MAX_PEER_ISTA_ROLE,
+ cap->pd_max_peer_ista_role))
+ return -ENOBUFS;
+
+ if (cap->pd_max_peer_rsta_role > 0 &&
+ nla_put_u32(msg, NL80211_PMSR_ATTR_PD_MAX_PEER_RSTA_ROLE,
+ cap->pd_max_peer_rsta_role))
+ return -ENOBUFS;
}
caps = nla_nest_start_noflag(msg, NL80211_PMSR_ATTR_TYPE_CAPA);
if (!caps)
diff --git a/net/wireless/pmsr.c b/net/wireless/pmsr.c
index 8b7665f2f824..e1b4cc7244cd 100644
--- a/net/wireless/pmsr.c
+++ b/net/wireless/pmsr.c
@@ -318,11 +318,14 @@ int nl80211_pmsr_start(struct sk_buff *skb, struct genl_info *info)
struct nlattr *reqattr = info->attrs[NL80211_ATTR_PEER_MEASUREMENTS];
struct cfg80211_registered_device *rdev = info->user_ptr[0];
struct wireless_dev *wdev = info->user_ptr[1];
+ const struct cfg80211_pmsr_capabilities *capa;
struct cfg80211_pmsr_request *req;
struct nlattr *peers, *peer;
- int count, rem, err, idx;
+ int count, rem, err, idx, pd_count, max_pd_peers;
- if (!rdev->wiphy.pmsr_capa)
+ capa = rdev->wiphy.pmsr_capa;
+
+ if (!capa)
return -EOPNOTSUPP;
if (!reqattr)
@@ -337,7 +340,7 @@ int nl80211_pmsr_start(struct sk_buff *skb, struct genl_info *info)
nla_for_each_nested(peer, peers, rem) {
count++;
- if (count > rdev->wiphy.pmsr_capa->max_peers) {
+ if (count > capa->max_peers) {
NL_SET_ERR_MSG_ATTR(info->extack, peer,
"Too many peers used");
return -EINVAL;
@@ -353,7 +356,7 @@ int nl80211_pmsr_start(struct sk_buff *skb, struct genl_info *info)
req->timeout = nla_get_u32(info->attrs[NL80211_ATTR_TIMEOUT]);
if (info->attrs[NL80211_ATTR_MAC]) {
- if (!rdev->wiphy.pmsr_capa->randomize_mac_addr) {
+ if (!capa->randomize_mac_addr) {
NL_SET_ERR_MSG_ATTR(info->extack,
info->attrs[NL80211_ATTR_MAC],
"device cannot randomize MAC address");
@@ -378,6 +381,27 @@ int nl80211_pmsr_start(struct sk_buff *skb, struct genl_info *info)
goto out_err;
idx++;
}
+
+ /* Count PD requests and validate against PD peer limits */
+ if (capa->pd_support) {
+ pd_count = 0;
+
+ max_pd_peers = capa->pd_max_peer_ista_role +
+ capa->pd_max_peer_rsta_role;
+
+ for (idx = 0; idx < req->n_peers; idx++) {
+ if (req->peers[idx].pd_request) {
+ pd_count++;
+
+ if (pd_count > max_pd_peers) {
+ NL_SET_ERR_MSG(info->extack,
+ "Too many PD peers used");
+ err = -EINVAL;
+ goto out_err;
+ }
+ }
+ }
+ }
req->cookie = cfg80211_assign_cookie(rdev);
req->nl_portid = info->snd_portid;
--
2.34.1
^ permalink raw reply related
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox