* Refactor and clean up script and add more helpful docs.
* If a device's MAC doesn't match or isn't specified the following will
be configured:
1.) lan network will use DHCP ("lan_proto=dhcp") to retrieve an IP
2.) device name will be "mx4300-xxxx", where "xxxx" represents the
last 4 characters of the device MAC address found on the bottom of
sticker.
* When in bridge mode, devices can be setup to use static or dhcp for their lan interface.
This is specified with option "lan_proto=dhcp" under each devices's
config, or if no suffix is specified, it is assumed the IP needs to be
optained.
* Add fallback mgmt IP address 10.1.1.1 that can be used in case mesh
fails to come up and hardwire connection is required. Make sure to set
a static IP for your computer in the 10.1.1.x subnet in order to
connect.
Signed-off-by: Sean Khan <datapronix@protonmail.com>
Included starter config seed NSS offloading for MX4300. Although it can
be used by any compatible ipq807x NSS setup.
There is also an example 'uci-defaults' script that you can use to build
a single image for multiple nodes.
Although the script includes options to set low/high band for mesh backhaul.
Only the high-band works for offloading.
Signed-off-by: Sean Khan <datapronix@protonmail.com>
Signed-off-by: Sean Khan <datapronix@protonmail.com>
docs: Add donation links
Not obligatory at all. Just adding for folks who appreciate my work, and
wanting to contribute. :)
This patch replaces the problematic NAWDS stateless mode with standard
WDS in the ath11k driver. NAWDS has shown incompatibility with WDS AP
and STA modes in ath11k, leading to issues like MAC address
duplication and unstable connections. By switching to standard WDS,
this patch aims to resolve these issues.
It also enables WDS backhaul in NSS for better handling of backhaul links.
Testing is still ongoing, but early results indicate improved
stability and fewer connection problems in affected environments
Authored-by: Sebastian Gottschall <s.gottschall@dd-wrt.com>
Signed-off-by: Sean Khan <datapronix@protonmail.com>
Currently we are dereferencing dev pointer without a NULL
check.
Fix this issue by adding a NULL check.
Patch-dependency: none
Patch-work: none
Fixes: 4b7afb52c8e2 (mac80211: reorganize code to remove a forward declaration)
Note: ath.git commit id is mentioned in the Fixes tag
Signed-off-by: Monika Korada <quic_koramoni@quicinc.com>
Signed-off-by: Sean Khan <datapronix@protonmail.com>
When a station idles for a long time, hostapd will try to send
a QoS Null frame to the station as "poll". NL80211_CMD_PROBE_CLIENT
is used for this purpose.
And the skb will be added to ack_status_frame - waiting for a
completion via ieee80211_report_ack_skb().
But when the peer was already removed before the tx_complete arrives,
the peer will be missing. And when using dev_kfree_skb_any (instead
of going through mac80211), the entry will stay inside
ack_status_frames thus not clean up related information in its
internal data structures. This IDR will therefore run full after
8K request were generated for such clients.
At this point, the access point <M-[>48;55;187;1760;2992will then just stall and not allow
any new clients because idr_alloc() for ack_status_frame will fail.
ieee80211_free_txskb() on the other hand will (when required) call
ieee80211_report_ack_skb() and make sure that (when required) remove
the entry from the ack_status_frame and clean up related
information in its internal data structures.
Signed-off-by: Sean Khan <datapronix@protonmail.com>
This original patch: 237-006-ath11k-Allow-fast-rx-by-bypassing-stats-update.patch
was split into two patches:
237-001-ath11k-Allow-fast-rx-by-bypassing-stats-update.patch
237-006-ath11k-Allow-fast-rx-by-bypassing-stats-update.patch
Merge them back together to avoid confusion
Signed-off-by: Sean Khan <datapronix@protonmail.com>
fixes: ath11k: fix peer addition/deletion error on sta band migration: d673cb6fe6c03b2be157cc6c5db40481828d282d
the fix for sta band migration raises a new bug which causes the wifi
firmware to crash if you switch between 2 bssid's on the same band. this is
usually caused since the firmware observes 2 stations with the same
bss
Signed-off-by: Sebastian Gottschall <s.gottschall@dd-wrt.com>
Update 999-900-bss-transition-handling.patch
Signed-off-by: qosmio <datapronix@protonmail.com>
Every 100 milliseconds, the station sends an "association request" and
the AP adds the peer and the AP responds to the station with an
"association response".
But "association response" takes time to reach the station. Because of
this, the station sends another "association request" to the AP.
In the second associate request, the AP removes the peer and re-adds
the station. Meanwhile, "association response" is reached to station
and station sends "QoS NULL" frame to AP.
The moment the station sends a QoS NULL frame to the ap, the peer on
the AP is deleted and the AP sends a de-authentication to the station.
To fix this issue, increased the assoc timeout period from 100 milli-
seconds to 500 milli seconds.
Signed-off-by: Sean Khan <datapronix@protonmail.com>
There is an issue when enabling thermal support on newer ath11k firmware.
TX/RX rates are being limited, often times 50% of client's HE
capabilities.
The issue stems from a mismatch in WMI API structure. The range to
throttle is currently "-100°C" to "150°C", this essentially means
"always" throttle.
Integrate patch from dd-wrt which adds missing WMI structures and
proper thermal ranges for IPQ5018, IPQ807x, and QCN9000.
Patch-by: Sebastian Gottschall <s.gottschall@dd-wrt.com>
Signed-off-by: Sean Khan <datapronix@protonmail.com>
There was logic that was initially included in the coconut branch of
QSDK for older mac80211 NSS implementation. It was brought over to
address an issue with ath10k where during heavy traffic, AP would trigger
`failed to increase tx pending count: -16, dropping`.
The issue was actually caused by `skb_recyler` malforming some packets.
Disabling `skb_recyler` fixed the error, and therefore the logic
regarding `skb_queue_len(&local->pending[q]) >= 1000` can be reverted to
match what is currently upstream with QSDK.
Alsi refreshed remaning patches after rebase.
Signed-off-by: Sean Khan <datapronix@protonmail.com>
There are instances where `skbuff_recycle` messes up skb headers causing
various issues in network related activities. This was initially meant
to resolve issues with memory usage issues on 6.1.
Introduce a proc option to enable or disable skbuff_recycle. The default
is to have it enabled. Users on 512M platforms should test if memory
leaks still occur with this option disabled.
echo 0 > /proc/net/skb_recycler/skb_recycler_enable
echo 1 > /proc/net/skb_recycler/skb_recycler_enable
NOTE: There is a new script in `qca-nss-drv` that will automatically
manage this as an UCI configurable option.
commit 217a4fa43ba2ad0a02e8080dfde11ad23534aa8c (HEAD -> NSS-12.5-K6.x)
Author: Sean Khan <datapronix@protonmail.com>
AuthorDate: Sat Jul 13 18:43:52 2024 -0400
Commit: Sean Khan <datapronix@protonmail.com>
CommitDate: Sat Jul 13 18:43:52 2024 -0400
nss-drv: add skb_recycler init script
Signed-off-by: Sean Khan <datapronix@protonmail.com>
Rather mess with target 'config-*' files, introduce a custom menu item
that consolidates all IPQ related kernel settings in one menu.
Most of these can be left as default since the options are derived from the
initial NSS fork for 'config-6.6'.
Options include:
1) enable or disable building `skbuff_recycle`
2) enable or disable preemption
3) select IPQ memory profile
Signed-off-by: Sean Khan <datapronix@protonmail.com>
New:
* Add UCI option to /etc/config/pbuf
1. `stats_disable` - Allows disabling extended stats
collection. (Default: '1')
2. `scaling_governor` - Allow specifying CPU governor.
(Default: disabled )
Choices depend on what your system is compiled with. Can be found
using:
```sh
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
ondemand performance schedutil
```
Changes:
* Rather than hardcode every device model's memory profile. Simply read the
memory available from `/proc/meminfo`.
* Scaling governor is no longer forced as `performance`. It is now user
configurable.
* Hash bitmap is now calculated from number of CPUs rather than hardcoded to `15`
* Limit `n2h_queue_limit_core` to `256`. This was set to `2048` which is
too high when NSS wifi is also enabled.
Signed-off-by: Sean Khan <datapronix@protonmail.com>
Some features are not available in NSS firmware 11.4.0.5
* `NSS_WIFI_VDEV_EXT_DATA_PKT_TYPE_4ADDR`
This was introduced in `NHSS.QSDK.11.5`. To avoid unexpected issues,
disable the case check for `NSS_WIFI_VDEV_EXT_DATA_PKT_TYPE_4ADDR` if
`CONFIG_NSS_FIRMWARE_VERSION_11_4` is selected.
Signed-off-by: Sean Khan <datapronix@protonmail.com>
ath11k_nss: rename '*.patch.patch' to '.patch'
Signed-off-by: Sean Khan <datapronix@protonmail.com>
This patch handles the updating of MU-EDCA parameters indicated by
driver. Driver requests to update the parameters and Parameter Set
Update Count in beacon frames. This patch addresses only AP mode.
Three actions are taken to successfully update MU-EDCA parameters
in beacon:
(1) Update MU-EDCA parameters stored in hostapd
The following Access Categories (AC) are updated:
VO: Voice
VI: Video
BE: Best Effort
BK: Background
(2) Increment Parameter Set Update Count
(3) Update beacon with new parameters
There aren't any options to configure, hostapd simply updates MU-EDCA
published by ath11k driver.
To verify params are getting updated, set log_level to '1' and check
logger
i.e. `uci set wireless.radio0.log_level=1`
```
Sat Jul 6 15:36:10 2024 daemon.debug hostapd: phy0-ap0: IEEE 802.11 MU-EDCA: Updated MU-EDCA parameters for AC 0: BE: 3, BK: 7, VI: 2, VO: 2
Sat Jul 6 15:36:10 2024 daemon.debug hostapd: phy0-ap0: IEEE 802.11 MU-EDCA: Updated MU-EDCA parameters for AC 1: BE: 164, BK: 164, VI: 67, VO: 50
Sat Jul 6 15:36:10 2024 daemon.debug hostapd: phy0-ap0: IEEE 802.11 MU-EDCA: Updated MU-EDCA parameters for AC 2: BE: 255, BK: 2, VI: 255, VO: 255
```
Requires the following patches applied to 'ath11k/subsys'
commit ce7f1ad354869d85abdf8e8ed8d36599e057ba5d
Author: Sean Khan <datapronix@protonmail.com>
AuthorDate: Tue Feb 27 00:45:32 2024 -0500
Commit: Sean Khan <datapronix@protonmail.com>
CommitDate: Sat Jul 6 15:19:26 2024 -0400
ath11k_nss: FW Initiated Dynamic MU-EDCA
package/kernel/mac80211/patches/nss/ath11k/203-mac80211-ath11k-fw-dynamic-muedca.patch
package/kernel/mac80211/patches/nss/subsys/203-mac80211-ath11k-fw-dynamic-muedca.patch
Signed-off-by: Sean Khan <datapronix@protonmail.com>
commit 072327212c033baf96365a5045673c5981eb0bdf (HEAD -> next, origin/next)
Author: John Crispin <john@phrozen.org>
AuthorDate: Fri Jul 5 15:42:24 2024 +0200
Commit: John Crispin <john@phrozen.org>
CommitDate: Fri Jul 5 15:42:40 2024 +0200
ath11k: fix monitor mode
Enabling CPTCFG_ATH11K_MEM_PROFILE_512M will change the layout of
struct hal_rx_desc_ipq8074. This broke monitor mode. Fix it by not modifying
the struct even if the 512MB profile is enabled.
Fixes: WIFI-12102
Signed-off-by: John Crispin <john@phrozen.org>
Signed-off-by: Sean Khan <datapronix@protonmail.com>
These packages are required for basic NSS offloading. So ensure they're
selected for all qualcommax targets.
* kmod-qca-nss-ecm (Enhanced Connection Manager)
* kmod-qca-nss-drv (NSS Driver)
* kmod-qca-nss-drv-bridge-mgr (NSS Manager for Bridges)
Signed-off-by: Sean Khan <datapronix@protonmail.com>