Commit Graph
5838 Commits
Author SHA1 Message Date
Felix Fietkau d772048670 mac80211: add the MLO client patches for AP station lookup, CSA and debugfs
399 looks up the AP station by the AP MLD address, 400 matches a channel
switch action against the link that received it, and 401 reports the
BSSID of each link in debugfs. The vbed image of 2026-10-02 builds and
runs with them.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2026-10-08 09:50:38 +02:00
Felix Fietkau 0e9f811708 mac80211: report the totals of an MLO station when it is removed
The station removal event of an MLO station carried the counters of
the default link alone. It now carries the sum over the station's links
and its removed links, as the station dump does.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2026-10-08 09:50:38 +02:00
Felix Fietkau 6343a98608 mac80211_hwsim: free a frame whose rate is wider than the channel
The path that warns about such a frame returned without freeing it.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2026-10-08 09:50:38 +02:00
Felix Fietkau b66365b233 mac80211_hwsim: report the TX statistics of each station link
mac80211 books all TX of an MLO station on the association link, so a
per-link station dump showed every TX byte, packet and the TX rate on
that link and none on the others.

- 417 exports the conversion of a TX rate to a rate info, with the
  documentation of its arguments.
- 418 makes mac80211 ask the driver for the counters of a link before
  it removes the link from the driver, and add them to the station's
  totals of removed links.
- 419 lets hwsim count TX per link and report it through
  link_sta_statistics. It counts the length of a frame before
  encryption and one packet per MSDU, only where the frame resolves to
  a station link. It starts the record of a link again when the link
  station changes, and clears the records of removed links.

Measured on the virtual bed: each link reports its own TX counts and
rate, and the station totals are the sum of the links.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2026-10-08 09:50:38 +02:00
Felix Fietkau 7289c37c7e mac80211: convert the TX rate of a link with the band of that link
sta_set_link_sinfo() took the band of a legacy TX rate from
ieee80211_get_sband(), which warns on an MLD interface and does not
return the band of the link. 416 converts the rate with the band of the
channel context of the link.

The last TX rate of an MLO station comes from the TX status of a frame
on any link, so a legacy index can lie beyond the bitrate table of the
band it is converted with. The conversion checks the index against
that table.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2026-10-08 09:50:38 +02:00
Felix Fietkau 8c5a44a58e mac80211: report the MLD address and link of a dumped station
415 fixes 727afb05ef63 of the backport above: a station dump stopped
carrying NL80211_ATTR_MLD_ADDR and NL80211_ATTR_MLO_LINK_ID, so a reader
of the dump no longer saw that a station is an MLD or which link it
associated on. NL80211_CMD_GET_STATION for one station
still carried both. Mainline has the same gap.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2026-10-08 09:50:38 +02:00
Felix Fietkau 976da463de mac80211: backport the per-link station statistics of the station dump
001 to 005 are mainline 5c660b243435, 4b40378ac203, 727afb05ef63,
dd21d1844aa0 and f9202a374ec3. NL80211_ATTR_STA_DUMP_LINK_STATS then
asks a station dump for one message per link of an MLD station after
the aggregated one, so userspace can read the counters and rates of
each affiliated station. Without the flag the dump is as before.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2026-10-08 09:50:38 +02:00
Felix Fietkau cce5c06c7a mac80211: take an MLO station's rates from the links that report them
414 fixes cfg80211_sta_set_mld_sinfo(). It took the TX and RX rate of an
MLO station from the link with the least inactive time, but compared
against a value it had just set to that link's own, so only the first
link could decide. mac80211 records the last TX rate on the association
link, so a station associated on any other link reported no TX bit rate
at all. The TX and RX durations had the same condition and counted the
first link only.

Measured on a mac80211_hwsim bed: an MLO backhaul station associated on
link 1 now reports its TX rate, and the backhaul rates derived from it
read 270 and 3120 Mbit/s instead of 65535.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2026-10-08 09:50:38 +02:00
Felix Fietkau 22e7917d8e mac80211: hwsim: make the interface limit of a radio a parameter
Add the max_interfaces module parameter. A radio combines up to 2048
interfaces, and userspace that derives the number of BSSes of a radio
from the interface combinations reports that value. The default stays
2048.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2026-10-08 09:50:38 +02:00
Felix Fietkau 2190bd93b1 mac80211: stop only the MBSSID set of the stopped AP link
ieee80211_stop_ap() stops one link, but ieee80211_stop_mbssid() walks
every active link of the interface. The STOP_AP of one link of an AP
MLD thus took apart the MBSSID set of each other link and stopped the
interfaces of those sets, on radios that keep running.

Add a patch that takes apart only the MBSSID set of the link that
stops. The stop of the whole interface still walks all its links.

With it, hostapd can remove an affiliated AP of an AP MLD whose other
links carry an MBSSID set. A link that is itself in an MBSSID set still
takes that set apart, and cfg80211_stop_iface() stops each member
interface with all its links.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2026-10-08 09:50:38 +02:00
Felix Fietkau 6db50863fc mac80211: keep the interface state of an AP MLD while a link stops
A link STOP_AP cleared state that belongs to the interface, while the
other links of the AP MLD kept beaconing: cfg80211 the SSID, the owner
and the QoS map, mac80211 the SSID, the S1G and beacon rate flags and
the carrier of every AP_VLAN. The kept links then ran without a DSCP
map, reported no SSID, and their 4-address stations lost their bridge
port carrier.

Add two patches that clear this state only with the last link that
beacons.

With the SSID kept, cfg80211 refuses a START_AP that changes the SSID
of one link while another link beacons with the old one ("require
identical SSID for MLO"). hostapd.uc stops every link of an AP MLD
before an SSID change (the previous commit).

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2026-10-08 09:50:38 +02:00
Felix Fietkau 80d75155ad mac80211: take a group addressed deauth from any link of the AP MLD
A non-AP MLD dropped the broadcast deauth an AP sends from a link whose
address differs from the AP MLD address, and kept a dead association.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2026-10-08 09:50:37 +02:00
Felix Fietkau a1d2502ce5 mac80211: hwsim: restore the MLD addresses of a frame before its TX status
Add a pending patch. hwsim rewrites the addresses of a frame to an MLO
station to link addresses and then reported the TX status with them,
so mac80211 found no station for that status and recorded no ACK,
retry, lost frame or TX rate for it. hwsim now puts the MLD addresses
back before it reports the TX status.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2026-10-08 09:50:37 +02:00
Felix Fietkau dc0d51559f mac80211: fix the addresses of 4-address frames on an MLD
Add two pending patches. A 4-address AP_VLAN of an AP MLD sends to a
station that is not an MLD with the address of the station's link as
TA, not the AP MLD address. A 4-address MLO station sends with the AP
MLD address as RA, not the BSSID of the default link, which an MLO
connection does not set.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2026-10-08 09:50:37 +02:00
Felix Fietkau 18d0619283 mac80211: backport the band fix for 802.3 encap offload frames
ieee80211_8023_xmit() leaves info->band at 0 on an interface that is not
an MLD, so ieee80211_get_tx_rates() uses the wrong band for these
frames. The fix is in the wireless tree.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2026-10-08 09:50:37 +02:00
Felix Fietkau 1d2fb1e9ba mac80211: hwsim: send a frame with no rate at the peer's highest rate
With HAS_RATE_CONTROL, mac80211 leaves the rate entries of every frame
cleared, so hwsim reported no rate for it, an MLD station reported no
TX bit rate, and a medium in userspace sent the frame at the lowest
rate.

Send such a frame at one rate, with one attempt and the rate list ended
after that entry. For a data frame to a peer, take the highest VHT or
HT MCS that the peer receives on the channel width in use, as a rate
controller settles on for an ideal channel; otherwise take the highest
legacy rate of the band. Stop at four streams, as minstrel_ht does
(MINSTREL_MAX_STREAMS): hwsim declares MCS 0-9 for all eight streams,
and ieee80211_get_rate_duration() warns for more than four streams on
a VHT rate.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2026-10-08 09:50:37 +02:00
Felix Fietkau ddb9998587 mac80211: retransmit the 4-address null frame until it is acknowledged
A station in 4-address mode sends one 4-address null data frame, and the
access point sets up the 4-address station only when it receives it. If
the driver reports ACK status, send the frame again every second until
the access point acknowledges it, for at most ten transmissions.

Based on 0089-mtk-mac80211-retransmit-4addr-nullfunc-if-the-ACK-is.patch
by Peter Chiu <chui-hao.chiu@mediatek.com> in the MediaTek feed.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2026-10-08 09:50:37 +02:00
Felix Fietkau 8acb3afe15 mac80211: hwsim: let mac80211 monitor the connection of an MLO station
An MLO radio of hwsim declares CONNECTION_MONITOR but reports neither a
beacon loss nor a connection loss, so a station whose AP went away
without a deauthentication that it accepts stayed associated. Leave the
flag out, so that mac80211 monitors the active links of the station.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2026-10-08 09:50:37 +02:00
Felix Fietkau 385dadffe2 mac80211: hwsim: declare the MLD capabilities of a station
An MLO radio of hwsim declares extended, EML and MLD capabilities for
the AP interface type only, so a station interface reports no
simultaneous links. Declare the station interface type as well. The
Association Request of an MLO station of hwsim then announces the
maximum number of simultaneous links of the AP entry instead of 0.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2026-10-08 09:50:37 +02:00
Felix Fietkau 610b6b6d15 mac80211: report the combination error when NAN evacuation fails
When ieee80211_check_combinations() refuses a channel,
_ieee80211_link_use_channel() tries to evacuate a NAN channel and then
returns the result of that attempt. Without a NAN interface the attempt
returns -ENOENT, so a refused interface combination reaches userspace as
"No such file or directory" instead of the error of the check.

Keep the error of the combination check when the evacuation does not
help.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2026-10-08 09:50:37 +02:00
Felix Fietkau f0e07e5fad mac80211: hwsim: keep radar detection on a multi-radio wiphy
A radio that uses channel contexts gets no radar detection widths in its
global interface combination, because DFS requires a combination with a
single channel. A multi-radio radio always uses channel contexts, and
its global combination multiplies the channel count by the number of
radios. So it loses the radar detection widths as well, while each
per-radio combination keeps them.

mac80211 checks the channel of a radar detection against the global
combination (ieee80211_check_combinations() with radio_idx -1 from
_ieee80211_link_use_channel()). No combination matches, and every CAC on
a multi-radio hwsim radio fails. hostapd reports it as "start_dfs_cac()
failed" and disables the interface.

cfg80211 exempts the global combination of a multi-radio wiphy from the
single channel rule for DFS (wiphy_verify_iface_combinations()), since
it only sums up the radios. Keep the radar detection widths there when
each radio has one channel. With more than one channel per radio, clear
them in the per-radio combination too, which cfg80211 would refuse
otherwise.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2026-10-08 09:50:37 +02:00
Felix Fietkau 8a3ba049c1 mac80211: find the sender of a data frame by its link address
The station hash holds the MLD address of an MLO station. When a driver
neither passes the station nor translates the addresses, a data frame
of an MLO station carries a link address in addr2, and
__ieee80211_rx_handle_packet() does not find the sender. The frame goes
through the per-interface loop, which skips AP_VLAN interfaces. A
4-address MLO station associates and gets its AP_VLAN, but no data
frame of it arrives.

403 looks up the sender in the link station hash when the station hash
has no match, and hands the frame to the interface of that station, as
upstream does since the RX rework.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2026-10-08 09:50:37 +02:00
Felix Fietkau 1225466911 mac80211: hwsim: reserve headroom for software encryption
mac80211_hwsim accepts CCMP and GCMP keys in mac80211_hwsim_set_key()
and encrypts unicast data frames itself in mac80211_hwsim_tx(), through
ieee80211_encrypt_tx_skb(). It asks mac80211 to reserve tailroom for the
MIC, but not headroom for the CCMP or GCMP header.

For a hardware key without IEEE80211_KEY_FLAG_GENERATE_IV or
IEEE80211_KEY_FLAG_PUT_IV_SPACE, ieee80211_xmit_fast() resizes the frame
with ENCRYPT_NO and reserves only the 802.11 header and
hw.extra_tx_headroom. A locally generated frame usually has room to
spare, but a frame forwarded from a bridge can arrive with none. The
room check in ccmp_encrypt_skb() then warns, ieee80211_encrypt_tx_skb()
returns an error and the frame is freed. An access point that bridges
traffic to its clients sends no downlink unicast data at all.

Reserve the header as driver headroom. IEEE80211_CCMP_HDR_LEN,
IEEE80211_CCMP_256_HDR_LEN and IEEE80211_GCMP_HDR_LEN are all 8 bytes.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2026-10-08 09:50:37 +02:00
Felix Fietkau 595166fcfc mac80211: select the link a management frame asks for
ieee80211_mgmt_tx() walks the links of an AP MLD to decide whether a
frame needs an off-channel transmission. It pins the link that holds the
requested channel only when the destination is a station that already
associated as an MLD. A frame to an address the access point does not
know keeps link_id at -1, the link reaches the driver unspecified, and
the driver picks the default link, which holds a different channel and a
different address.

A DPP Authentication Request shows this: the enrollee announces itself
on channel 6, the access point answers under the address of its 5 GHz
link, and the enrollee never sees the frame.

Pin the link whenever an active link holds the requested channel.
ieee80211_tx_skb_tid() warns on a link id for an interface that is not
an MLD and on one that names an inactive link, and active_links is zero
for an interface that is not an MLD, so that one test covers both. A
station MLD that sends from its MLD address to an address other than its
AP gets the same pin.

A link whose own address is the MLD address also matched the frame on
that address and ended the search, so a lower link that uses the MLD
address hid the link with the requested channel. Skip such a link when
the frame names another channel.

Frames to a station keep their present behaviour: the branch runs only
where the caller named a channel, and where the destination is a station
that associated as an MLD the same branch already pinned the link.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2026-10-08 09:50:37 +02:00
Daniel Golle 61f19fda28 kernel: add the IMX415 camera sensor module
The Sony IMX415 is the sensor on the Radxa Camera 4K and on several
other MIPI CSI-2 modules, and the driver is in the kernel already. Add
kmod-video-imx415 so a board with a camera connector has a sensor to
go with its capture driver.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-10-07 10:12:13 +01:00
Daniel Golle a9f9bd074f kernel: add ASoC simple card, HDMI and ES8316 codec modules
Package the simple-audio-card and audio-graph-card drivers with their
shared utilities, the HDMI codec used by DRM bridges with an HDMI
audio path, and the Everest ES8316 codec.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-10-07 10:12:12 +01:00
Daniel Golle 146a31c962 kernel: add V4L2 codec helpers and the Hantro VPU module
Package the H.264, VP9 and JPEG helper modules on their own so several
stateless codec drivers can share them, and add the Hantro VPU driver
used by i.MX8M, Rockchip, Allwinner, Microchip and ST SoCs. The i.MX
CODA package takes the JPEG helper from the new package.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-10-07 10:12:12 +01:00
Daniel Golle 4e8f881ecc kernel: add DRM bridge, GPUVM and Panthor modules
Package the Synopsys DW DisplayPort, HDMI, HDMI QP, MIPI DSI and MIPI
DSI2 bridges, the Analogix DisplayPort bridge with the DP AUX bus, the
GPUVM helper and the Panthor driver for ARM Mali CSF GPUs. The HDMI QP
bridge depends on the HDMI codec module for its audio path.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-10-07 10:12:12 +01:00
Daniel Golle f673169be9 kernel: ship v4l2-dv-timings with kmod-video-core
CONFIG_VIDEO_DEV builds v4l2-dv-timings.ko next to videodev.ko, but the
package only installs the latter, so a driver that needs the DV timings
helpers, such as the Synopsys HDMI receiver, cannot be packaged.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-10-07 10:12:12 +01:00
Daniel Golle 6e55a3c331 kernel: video: load MIPI DBI panel and PWM backlight early
AutoProbe places a module in etc/modules.d, which kmodloader loads
from /etc/init.d/boot once preinit has finished, so a MIPI DBI panel
only lights up late in the boot. With the boot flag the module is
linked into etc/modules-boot.d as well, which is loaded before the
preinit scripts, together with its dependencies.

Set the flag on the panel driver and on pwm_bl, because the panel
defers its probe until the backlight it references has registered.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-10-07 00:03:51 +01:00
Daniel Golle 2bba9c1ba5 kernel: modules: package driver for Hynitron CST816x touch sensor
Package kernel driver for the Hynitron CST816x touch sensor, found on
ST7789V-based 240x240 px MIPI-DBI display of the Adtran SmartRG SDG-9000.
Import pending patches improving the driver.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-10-07 00:03:51 +01:00
Daniel Golle 49b409e6d5 kernel: add kmod-drm-xen-frontend
A Xen guest without emulated graphics has two ways to be given a display,
and the kernel drivers for them are unrelated: xen-fbfront speaks the vfb
protocol through legacy fbdev, while xen_drm_front speaks displif on a
vdispl xenbus device. Only the second has a DRM driver, and nothing in
the tree packaged it.

Package it for the three targets whose kernels have Xen guest support. It
needs xen-front-pgdir-shbuf, a hidden tristate with no package of its
own, so both modules ship together.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-10-06 18:35:40 +01:00
Daniel Golle 791c30a253 kernel: cut fbdev out of the DRM kmod chain
kmod-drm pulled kmod-fb in unconditionally and kmod-drm-kms-helper pulled
in six fbdev helper packages, so any target that shipped a DRM kmod got
CONFIG_FB, the framebuffer console, the fonts and CONFIG_VT switched on
whatever its kernel fragment said. Drop those dependencies, along with
the fbdev emulation that kmod-drm-imx and kmod-drm-panel-mipi-dbi forced
on and the DRM_KMS_FB_HELPER, DRM_IMX_FB_HELPER and FB_INTEL symbols that
no kernel in the tree defines.

kmod-fb and the fbdev helpers stay selectable on bcm27xx, sunxi, x86
legacy and geode, whose kernels keep fbdev, and fbtft narrows to bcm27xx,
the only target with in-tree users. kmod-drm-client-lib goes: the targets
that keep fbdev emulation build DRM into the kernel, so DRM_CLIENT_LIB is
built in there, and on a target with DRM as modules nothing selects it,
where drm_client_setup() is an empty inline.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-10-06 18:35:40 +01:00
Robert Marko d374b6e974 mac80211: ath11k: add NVMEM caldata support
Add support for getting the caldata via NVMEM cells.

It will first try to use the ath10k style calibration NVMEM cells, and then
failover to the existing file based loading.

It should allow dropping most of the userspace caldata loading.

Link: https://github.com/openwrt/openwrt/pull/25566
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-10-05 22:16:54 +02:00
Manuel Fombuena af6b5f161f kernel: leds-st1202: load the module in preinit
OpenWrt sources diag.sh at the preinit_main hook stage (02_default_set_state),
resolving LED aliases from the device tree so that set_state() can blink the
boot LED through the preinit and preinit_regular phases before init takes
over. For that to work the LED driver must be present before the preinit
scripts run.

Without the boot flag, AutoProbe only places the module in etc/modules.d,
which is loaded by /etc/init.d/boot once preinit has finished. By that
point the entire preinit LED window has passed and the boot indication on
any ST LED1202-backed LED is silently skipped.

Set the boot flag so the module is also linked into etc/modules-boot.d,
which procd loads before running the preinit scripts. The previous commits
bring the driver to a state where loading it at early boot is appropriate.

Assisted-by: LLM
Signed-off-by: Manuel Fombuena <fombuena@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/23456
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-10-04 17:15:03 +02:00
Julius Bairaktaris 3bab3a63a1 mac80211: reset the LED state when ifup fails
Backport upstream commit 78183e833195 ("wifi: mac80211: reset the LED
state when ifup fails"). When the first interface fails to come up, the
throughput LED timer keeps running, and unloading the driver afterwards
frees it while it is still armed.

Assisted-by: Claude:claude-opus-5-5
Signed-off-by: Julius Bairaktaris <julius@bairaktaris.de>
Link: https://github.com/openwrt/openwrt/pull/25539
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-10-03 11:47:13 +02:00
Daniel Golle c375123b3b kernel: drop the audio and display feature gates
The sound and DRM modules carry a dependency on audio-support and
video-support, which is what decides whether an image handles those
devices. The AUDIO_SUPPORT and DISPLAY_SUPPORT tokens beside them add a
second, per-SoC-family condition that a board cannot influence, and that
DISPLAY_SUPPORT is half derived from whatever kernel configuration was
copied into a target's fragment.

Drop the tokens from the module dependencies and from fbtest.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-09-29 15:29:43 +01:00
Daniel Golle 1ccaee3465 printer-support: add a package for printer device handling
The USB and parallel port printer nodes come out 0600 root:root, so a
print spooler runs as root. The lp group is already allocated by p910nd
in the packages feed with gid 7, without anything creating it.

Add a printer-support package which allocates that group and puts the
usblp, lp and ppdev nodes into it, and make kmod-usb-printer and kmod-lp
depend on it.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-09-29 15:29:43 +01:00
Daniel Golle 94b949df48 dvb-support: add a package for DVB device handling
The DVB adapter nodes under /dev/dvb come out 0600 root:root, so a
tuner daemon runs as root.

Add a dvb-support package which allocates the dvb group and puts those
nodes into it, and make kmod-dvb-core depend on it.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-09-29 15:29:43 +01:00
Daniel Golle a7c50f7d73 input-support: add a package for input device handling
The evdev character devices come out 0600 root:root, so a display server
or any other process reading keyboards and pointers runs as root.

Add an input-support package which allocates the input group and puts the
input nodes into it, and make the evdev and joydev modules depend on it.
The one device profile that ships evdev lists the package directly.
kmod-input-core stays ungated: it carries no device node of its own, and
most drivers built on it deliver their events to in-kernel consumers such
as the keyboard and button handlers.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-09-29 15:29:43 +01:00
Daniel Golle e829091f34 video-support: add a package for display device handling
The display target feature gates every DRM module, but it says nothing
useful: it is set on ten targets, so a mediatek/mt7623 board can have a
display while a filogic board with a MIPI DBI panel cannot, and rockchip
claims it for a NanoPi R2S as much as for a Rock 5B. Whether a board
drives a panel is a per-device choice, not a property of the SoC family.
The DRM and V4L2 nodes also end up 0600 root:root, so a display server
runs as root or not at all.

Add a video-support package which allocates the video and video-capture
groups and installs the hotplug rules for the DRM and V4L2 nodes, and
make the modules depend on it. The dependency is a plain one, not a
select, so the modules are offered once the feature is chosen. Targets
whose display drivers are built into the kernel carry the package in
DEFAULT_PACKAGES, since no module pulls it in for them, and the one
device profile that ships a DRM module on another target lists it
directly. DISPLAY_SUPPORT stays for now, so this changes no existing
selection.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-09-29 15:29:43 +01:00
Daniel Golle e06e3a621b audio-support: move audio device handling out of procd
The audio group and the rule that puts the ALSA character devices in it
are part of procd and base-files, so every image carries them whether or
not it has a sound card, and a package wanting the group has nothing to
depend on. Playback, capture and MIDI all land in one group as well, so a
process allowed to play is also allowed to record.

Move the lot into a new audio-support package with three groups, audio,
audio-capture and midi, and a hotplug fragment that sorts the sound nodes
between them. kmod-sound-core depends on the package, and so do the image
profiles that ship a sound driver. The dependency is a plain one, not a
select, so sound support is offered once the feature is chosen; userspace
that needs one of the groups depends on the same package. Images without
it fall back to the generic rule and get /dev/snd/* as 0600 root:root.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-09-29 15:29:43 +01:00
Josef Schlehofer 3ee349d4c6 mac80211: realtek: use long TX report timeout for non-PCIe
Several rtw88 USB and SDIO chips do not always report the TX status of a
frame within RTW_TX_PROBE_TIMEOUT (500 ms). The driver then drops the
tracking skbs and warns

    rtw_8822bu 3-1:1.0: failed to get tx report from firmware

every one to three seconds on an access point serving clients that use
power save. mac80211 never learns the ACK status of those frames, which
hostapd uses to tell whether a polled station is still there.

Add the pending upstream patch that uses the 2500 ms timeout, so far
applied only to RTL8723DU, for every USB and SDIO device and keeps
500 ms for PCIe. It is adapted to backports 7.2, which does not have
the RTL8723BS condition yet.

Pending upstream, submitted to rtw-next:
https://lore.kernel.org/linux-wireless/20260924004637.9958-1-pkshih@realtek.com/

Tested with backports 6.12.96 on a TP-Link Archer T4U v3 (RTL8812BU,
handled by rtw_8822bu) as a 2.4 GHz AP with six associated clients.

Signed-off-by: Josef Schlehofer <pepe.schlehofer@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/25303
Signed-off-by: Jonas Jelonek <jonas@jonasjelonek.de>
2026-09-28 09:24:50 +02:00
Daniel Golle a5c93cd334 kernel: add the uhid module
BlueZ creates Bluetooth Low Energy HID devices through uhid, so a
Bluetooth remote or keyboard needs it in addition to kmod-bluetooth.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-09-28 01:33:43 +01:00
Til Kaiser 57072d9ebb kernel: netdevices: enable MACsec support for mlx5-core
Enable MACsec (Media Access Control Security) support in the Mellanox
mlx5 driver by setting CONFIG_MLX5_MACSEC=y.

Enabling this configuration allows users to utilize hardware MACsec
offload capabilities on supported Mellanox ConnectX network adapters.
This provides point-to-point Layer 2 encryption at line rate while
significantly reducing CPU overhead.

The kmod-macsec dependency is intentionally omitted to make this an
opt-in feature. The offload support only builds if kmod-macsec is
also selected, preventing driver bloat for standard users.

Signed-off-by: Til Kaiser <mail@tk154.de>
Link: https://github.com/openwrt/openwrt/pull/25400
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-09-27 11:39:52 +02:00
Joshua Covington 74d6a3a0a4 bcm27xx-gpu-fw: update to 2026.09.15
Update to 2026-09-15

Signed-off-by: Joshua Covington <joshuacov@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/25243
Signed-off-by: Jonas Jelonek <jonas@jonasjelonek.de>
2026-09-27 10:18:32 +02:00
John Crispin 661d6963df lantiq: keep build paths out of the TAPI and VMMC modules
configure.in of drv_tapi and drv_vmmc compiles the whole configure command
line into the module. drv_tapi_linux.c prints it through a proc file. The
command line holds the absolute paths of the build machine, among them
--enable-kernelbuild, --with-ifxos-incl, --enable-tapiincl, CPPFLAGS and
LDFLAGS, so the module depends on the directory it was built in.

Measured in the published snapshot modules of lantiq/xway: drv_tapi.ko and
drv_vmmc.ko both hold
--enable-kernelbuild=/builder/shared-workdir/build/build_dir/...
The existing 020-not-leak-cflags.patch covers the Kbuild CFLAGS, not this
string.

Drop every argument that holds a path and keep the feature flags. The loop
repeats the idiom the file already uses for CONFIGURE_OPTIONS.

Signed-off-by: John Crispin <john@phrozen.org>
2026-09-22 18:46:30 +02:00
John Crispin fbd3048f21 lantiq: pass the kernel make flags to three module packages
ltq-adsl-mei and ltq-deu call make directly after a cd into the kernel
directory, and ltq-ifxos builds its module through autotools. None of them
pass KERNEL_MAKE_FLAGS, so the module compile runs without the
-ffile-prefix-map that iremap adds. WARN_ON_ONCE() in check_copy_size()
expands to warn_slowpath_fmt(__FILE__, ...), so the absolute build path
lands in the .ko.

Measured on the published snapshot packages of lantiq/xway and
xrx200_legacy:
- drv_mei_cpe.ko holds
  /builder/shared-workdir/build/build_dir/target-mips_24kc_musl/linux-lantiq_xway/linux-6.18.52/include/linux/ucopysize.h
- drv_ifxos.ko holds the same path for linux-lantiq_xrx200_legacy
- ltq_atm_danube.ko, built with the flags, holds no such string

The module size follows the length of the build path, so the apk record
and every image that carries the module differ between two builds in
different directories.

ltq_deu_vr9.ko holds no such string today, but the package has the same
defect.

Pass the flags in the same way as ltq-atm and ltq-vdsl-vr9-mei already do.

Signed-off-by: John Crispin <john@phrozen.org>
2026-09-22 18:18:58 +02:00
Rosen Penev b7d0a5ce14 gpio-button-hotplug: gate off gpio_request_one
Upstream is working towards making GPIOLIB_LEGACY optional. Get ahead of
that by gating off such code as is done upstream.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24985
Signed-off-by: Jonas Jelonek <jonas@jonasjelonek.de>
2026-09-16 10:22:06 +02:00
Daniel Golle 75ccc4822b mac80211: bump PKG_RELEASE
Dropping the rt2x00 MTD EEPROM patch changes the modules the package
builds, so bump the release for users to receive the update.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-09-15 18:03:36 +01:00