Commit Graph

22181 Commits

Author SHA1 Message Date
Sean Khan
d083973b9c ath10k-ct: Use NAPI threaded helper functions
Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-11 19:19:10 -04:00
Sean Khan
4580fb6743 ath10k-ct: Bump patch for 6.4 to 6.7
Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-11 19:19:10 -04:00
Sean Khan
b9b8072d71 ath11k_nss: fix incorrectly applied ath11k_pci threaded napi patch
Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-11 19:19:09 -04:00
Sean Khan
50768a29ad wifi_nss: Use NAPI threaded helper functions
Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-11 19:19:09 -04:00
Sean Khan
976b191d1f ath11k_nss: Add mac80211 based AQL support
Add wake_tx_queue mac op to support AQL and support
txq dequeueing from mac80211. Also implement a
simple scheduler for pulling all skbs from txqs
of all AC's at the end of tx completion NAPI.

Tested-on: IPQ5018 hw1.0 AHB WLAN.HK.2.6.0.1-00861-QCAHKSWPL_SILICONZ-1

Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-11 19:19:09 -04:00
Sean Khan
0855540311 wifi_nss: Add threaded NAPI for ath10k and ath11k
Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-11 19:19:08 -04:00
Sean Khan
8beb7d5d26 ath11k_nss: Drop unnecessary iphone fix patch
Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-11 19:19:08 -04:00
Sean Khan
db9ba5cdb1 ath11k_nss: Organize patch order and formatting
NSS patches should always get applied last as to avoid fuzzing issues
with upstream patches.

Also cleanup patches that introduced spaces as indents vs. tabs

Signed-off-by: Sean Khan <datapronix@protonmail.com>

ath11k_nss: drop upstreamed patch

A variation of this patch 'wifi: mac80211: Use flexible array in struct ieee80211_tim_ie'
was upstreamed in commit 'e6e4d90b69027d74ba7e9a0a586b95a5714e10c0'.
Remove it to avoid compilation issues.

Signed-off-by: Sean Khan <datapronix@protonmail.com>

ath11k_nss: Fix patch conflict

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-11 19:19:08 -04:00
Sean Khan
4a52aeb0b7 ath11k_nss: modularize nss-pbuf options
The following options can now be specified in `pbuf` uci config.

1.) auto_scale (bool) - enable or disable NSS CPU auto-scaling.
                        default: 'off'.

                        NOTE: Recommended to leave off, as it locks
                        NSS core to it's full 1.7Ghz speed. In the past
                        auto_scaling has been unstable, often causing
                        kernel panics or connection drops. Qualcomm
                        themselves disables scaling in QSDK for
                        ath11k/ath12k/qca-wifi.

                        It is provided to allow users wanting more
                        control over power usage. Setting to 'on' also
                        fixes NSS CPU stats updating properly.

2.) n2h_queue_limit_core0 (int) - set queue limits for CORE 0 and 1.
                                  default: '2048'

                                  For users on low memory systems (<=512M),
                                  that are experiencing issues can try lowering
                                  to the driver default of '256'.
2024-10-11 19:19:08 -04:00
Sean Khan
768866a99f ath11k_nss: Fix IPQ6018 wifi offloading
This patch was mostly cosmetic for ipq8074 to supress warnings about
invalid memory region. In this case the M3 dump region. This isn't
necessary for operation or offloading, and is used for firmware
debugging.

However due to the memory layout of ipq6018 it was causing issues of NSS
offloading properly loading. 'idx' shouldn't be incremented, and instead
should just break.

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-11 19:19:08 -04:00
Sean Khan
8f2b23c53d ath11k_nss: mac80211 Use C99 flexible arrays instead of zero-length arrays
Fixes compile issues on GCC 13.3+

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-11 19:19:07 -04:00
Sean Khan
b329b9c7e1 ath11k_nss: Add lock when accessing idr_pool of tx_ring
Lock is missed while accessing idr_pool of tx_ring which
causes Use after free crash in dp_free path when unloading
the module.

Fix this by adding tx_idr_lock when accessing idr_pool
of tx_ring.

Signed-off-by: Aishwarya R <quic_aisr@quicinc.com>
Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-11 19:19:07 -04:00
Sean Khan
031180dd50 ath11k_nss: correctly free skb using ieee80211_free_txskb()
While freeing skb in tx completion path for status reinject, inspect
or vdevid mismatch, dev_kfree_skb_any() is used but when a function
is using functions from mac80211 to free an skb then it should do
it consistently and not switch to the generic dev_kfree_skb_any.
Otherwise, mac80211 will not be aware of the freed skb and thus
not clean up related information in its internal data structures.

Hence fix the issue by properly using ieee80211_free_txskb().

Signed-off-by: Sarika Sharma <quic_sarishar@quicinc.com>
Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-11 19:19:07 -04:00
Sean Khan
d3845d033a ath11k_nss: fix incorrect tx/rx stats WDS
Should be 'rx'

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-11 19:19:06 -04:00
Sean Khan
289ed42154 ath11k_nss: change warning levels
This is mostly a cosmetic change for users running NSS firmware 11.4
with mesh setups. Rather than fill up kernel logs with warnings, move log
warnings to debug.

The stats are still captured in '/sys/kernel/debug/qca-nss-drv/stats/*'

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-11 19:19:06 -04:00
Sean Khan
d07d599d18 ath11k_nss: mac80211: remove STA txq pending airtime underflow warning
This warning can trigger if there is a mismatch between frames that were
sent with the sta pointer set vs tx status frames reported for the sta address.

This can happen due to race conditions on re-creating stations, or even
in the case of .sta_add/remove being used instead of .sta_state, which can cause
frames to be sent to a station that has not been uploaded yet.

If there is an actual underflow issue, it should show up in the device airtime
warning below, so it is better to remove this one.

Signed-off-by: Felix Fietkau <nbd@xxxxxxxx>

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-11 19:19:06 -04:00
Sean Khan
ebdd70c9cb ath11k_nss: mac80211 fix pending airtime
On platforms using ath10k with mac80211 'nss_redirect' enabled,
a warning `ieee80211_sta_update_pending_airtime` is observered
whenever traffic load is high (iperf3).

Don't offload if pending queue > 1000

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-11 19:19:06 -04:00
Sean Khan
08362e886f iproute2: Fixup NSS patches for GCC 14.x
Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-11 19:19:06 -04:00
Sean Khan
9609bb1e10 qualcommax: NSS: Set required NSS packages and options 2024-10-11 19:19:06 -04:00
Sean Khan
ffdaa5f60f ath11k_nss: revert AMPDU in radiotap header
Causes issues with rate stats on IPQ9074

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-11 19:19:05 -04:00
Sean Khan
59bd0865ce ath11k_nss: fix invalid access to memory
In ath11k_dp_rx_msdu_coalesce(), rxcb is fetched from skb and bool
is_continuation is part of rxcb.

Currently, after freeing the skb, the rxcb->is_continuation accessed
again which is wrong since the memory is already freed.

Hence fix the issue by locally defining bool is_continuation from rxcb,
so that after freeing skb also we can use is_continuation.

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-11 19:19:05 -04:00
Qosmio
45ac1ef367 cryptodev-linux: Add hooks for QCA NSS 2024-10-11 19:19:04 -04:00
Qosmio
2bb27f8262 qualcommax: NSS: kernel 6.6 support 2024-10-11 19:19:04 -04:00
Qosmio
69aa26077f qualcommax: Move QCE to user selectable module
The performance of Qualcomm Crypto Engine is 10x slower than kernel
based encryption via ARMv8 crypto extensions. Rather than building it
into the kernel allow users to select it as module which can be tested with
other HW based crypto APIs via cryptodev-linux.
2024-10-11 19:19:04 -04:00
Qosmio
d0af869c9e ath11k_nss: refresh and fixup patches 2024-10-11 19:19:04 -04:00
Qosmio
0abe35e9ac ath11k_nss: set pbuf to 'auto'
Since SKB recycler was merged into main nss-wifi branch, it is not
necessary to manually tinker with pbuf script. Memory is now properly
managed between NSS driver allocating/deallocating SKBs. For optimal
wifi performance, especially upload, it is advised to leave the script
to 'auto'.

Users who use sysupgrade should manually set the uci config
'/etc/config/pbuf' as it will not overwrite existing configuration.
2024-10-11 19:19:03 -04:00
Qosmio
858bb6da15 ath11k_nss: squash and refactor patches
ath11k_nss: fix build for 256/1G mem, and ath10k

ath11k_nss: bump release version '8'

mac80211: refactor NSS patches

Since NSS requires patches to subsys, and ath*k directories. Move
patches into a subset of nss for better tracking against QSDK,
and modularization.

ath11k_nss: rename patches

ath11k_nss: clean up optional patches

To reduce bug tracking headaches, I've remove the following patches, as
they are not required for NSS offload and have been around the last 2-3
years without ever being upstreamed.

nss/ath11k/235-001-ath11k-Add-support-for-beacon-tx-mode.patch
nss/ath11k/237-002-ath11k-Add-provision-to-configure-rx-hashmap.patch
nss/ath11k/902-020-ath11k-add-btcoex-config.patch
nss/ath11k/902-022-ath11k-add-ap-ps-support.patch
nss/ath11k/907-068-ath11k-add-rx-histogram-stats.patch
nss/ath11k/907-108-ath11k-enable-ul-ofdma-ru-allocation-in-peer-stats.patch
nss/ath11k/911-373-ath11k-Add-retry-mechanism-for-update_rx_qu.patch
nss/ath11k/913-353-ath11k-ignore-frags-from-uninitialized-peer-in-dp.patch
nss/ath11k/913-356-ath11k-invalid-desc-sanity-check.patch
nss/ath11k/913-374-ath11k-Check-skb_headroom-before-using-skb_push.patch
nss/ath11k/913-830-ath11k-Avoiding-memset-of-ppdu-info-for-next-skb.patch
nss/subsys/235-002-mac80211-Add-support-for-beacon-tx-mode.patch
nss/subsys/913-726-mac80211-fix-crash-when-accessing-null-pointer.patch

ath11k_nss: Remove superfluous patches

Remove patches unrelated to NSS offloading to minimize bloat and better
track NSS related issues.

ath11k_nss: Refactor patches to use upstream names

Reworked patches to use upstream QSDK names. Allows for better tracking

ath11k_nss: align wifi offload with qca-nss-drv

The option in qca-nss-drv is actually 'NSS_DRV_WIFIOFFLOAD_ENABLE' use
the same syntax.

ath10k-ct: fix compile with NSS wifi

ath11k_nss: Merge every NSS related feature + more

* Added macro to disable NSS mesh offload
* Added menuconfig option "ATH11K_NSS_MESH_SUPPORT" to selectivley build mesh support,
	as well it's depenacndy on nss-drv-wifimeshmgr.
* Added option to disable HTT Stats, and STA stats (stations).
* Reducing footprint by ~210KB. Debugfs minimal is still enabled.
* Reworked a TON of patches, some my own, hopefully there should be a far less amount of WOA2/WPA3 connection issues.
* Updated the /etc/init.d/pbuf script to be more robust. (handles tweaking ath11k and NSS settings better)

NOTES: Although mesh package builds (nss-drv-wifimeshmgr), ath11k doesn't seem to support it yet.
Not sure if NSS requires 3 radios to work, I'm at a dead end currently with that route.

ATTENTION:
the ptch `37-006-ath11k-Allow-fast-rx-by-bypassing-stats-update.patch`
works well on nss with frame_mode=2.
And on `ath11k frame_mode=1 nss_offload=0`

And on `ath11k frame_mode=2 nss_offload=1`

if you set nss_offload=off and frame_mode=2, it will CRASH
if you set nss_offload=on and frame_mode=2, it will  RUN
if you set nss_offload=off and frame_mode=1, it will RUN

ath11k_nss: fix n2h high_water_core0/wifi_pool_buf

These were commented out, but looks like they are needed to prevent lock
ups with heavy usage apps (users report in torrenting)

ath11k_nss: Renumber ath11k patches in the range

commit 3c7cc4b725ea406f19b736427034e3bdb436aedc
Author:     Yuvasree Sivasankaran <quic_ysivasan@quicinc.com>
AuthorDate: Thu Jan 4 11:25:56 2024 +0530
Commit:     Yuvasree Sivasankaran <quic_ysivasan@quicinc.com>
CommitDate: Wed Jan 3 22:53:51 2024 -0800

    wifi: ath11k: Renumber ath11k patches in the range

    In ath11k, patches are not maintained in the range and not sequential.
    Renumber the patches sequential and in the range.

    Change-Id: I77c51c0f5bf9f94863db4ef364b156e14465a60c
    Signed-off-by: Yuvasree Sivasankaran <quic_ysivasan@quicinc.com>

ath11k_nss: Add mac hw flag to avoid tx queue in mac80211

commit 4e9b5f7f0d1ed40dbf3208f7ed4448e49b4a4ac1
Author:     Yuvasree Sivasankaran <quic_ysivasan@quicinc.com>
AuthorDate: Wed Dec 6 12:20:59 2023 +0530
Commit:     Yuvasree Sivasankaran <quic_ysivasan@quicinc.com>
CommitDate: Mon Dec 18 12:52:33 2023 +0530

    wifi: mac80211: Add mac hw flag to avoid tx queue in mac80211

    Queue SKB in mac80211 become mandatory from latest 6.1 kernel. Because of
    this queuing, there will be performance degradation. Add hw flag option
    to enable tx queue in Driver/Hardware.

    Driver/hardware can register for HAS_TX_QUEUE HW flag and avoid tx queuing
    in mac80211.

    Add same HW flag checks to avoid accessing skb queues which will be
    NULL or invalid and also NULL checks for sta txqs for NULL or invalid
    access.

ath11k_nss: add the HTC+ / iPhone fix

commit ccdca73cd65723c3cb63c17edc95c4c43318cb38
Author:     John Crispin <john@phrozen.org>
AuthorDate: Sun Jul 9 17:12:34 2023 +0200
Commit:     John Crispin <john@phrozen.org>
CommitDate: Thu Aug 31 16:08:34 2023 +0200

    mac80211: add the HTC+ / iPhone fix

    Signed-off-by: John Crispin <john@phrozen.org>

ath11k_nss: ath-next fix connection failure due to unexpected peer delete

Currently ath11k_mac_op_unassign_vif_chanctx() deletes peer but
ath11k_mac_op_assign_vif_chanctx() doesn't create it. This results in
connection failure if MAC80211 calls drv_unassign_vif_chanctx() and
drv_assign_vif_chanctx() during AUTH and ASSOC, see below log:

[  102.372431] wlan0: authenticated
[  102.372585] ath11k_pci 0000:01:00.0: wlan0: disabling HT/VHT/HE as WMM/QoS is not supported by the AP
[  102.372593] ath11k_pci 0000:01:00.0: mac chanctx unassign ptr ffff895084638598 vdev_id 0
[  102.372808] ath11k_pci 0000:01:00.0: WMI vdev stop id 0x0
[  102.383114] ath11k_pci 0000:01:00.0: vdev stopped for vdev id 0
[  102.384689] ath11k_pci 0000:01:00.0: WMI peer delete vdev_id 0 peer_addr 20:e5:2a:21:c4:51
[  102.396676] ath11k_pci 0000:01:00.0: htt peer unmap vdev 0 peer 20:e5:2a:21:c4:51 id 3
[  102.396711] ath11k_pci 0000:01:00.0: peer delete resp for vdev id 0 addr 20:e5:2a:21:c4:51
[  102.396722] ath11k_pci 0000:01:00.0: mac removed peer 20:e5:2a:21:c4:51  vdev 0 after vdev stop
[  102.396780] ath11k_pci 0000:01:00.0: mac chanctx assign ptr ffff895084639c18 vdev_id 0
[  102.400628] wlan0: associate with 20:e5:2a:21:c4:51 (try 1/3)
[  102.508864] wlan0: associate with 20:e5:2a:21:c4:51 (try 2/3)
[  102.612815] wlan0: associate with 20:e5:2a:21:c4:51 (try 3/3)
[  102.720846] wlan0: association with 20:e5:2a:21:c4:51 timed out

The peer delete logic in ath11k_mac_op_unassign_vif_chanctx() is
introduced by commit b4a0f54156ac ("ath11k: move peer delete after
vdev stop of station for QCA6390 and WCN6855") to fix firmware
crash issue caused by unexpected vdev stop/peer delete sequence.

Actually for a STA interface peer should be deleted in
ath11k_mac_op_sta_state() when STA's state changes from
IEEE80211_STA_NONE to IEEE80211_STA_NOTEXIST, which also coincides
with current peer creation design that peer is created during
IEEE80211_STA_NOTEXIST -> IEEE80211_STA_NONE transition. So move
peer delete back to ath11k_mac_op_sta_state(), also stop vdev before
deleting peer to fix the firmware crash issue mentioned there. In
this way the connection failure mentioned here is also fixed.

Also do some cleanups in patch "wifi: ath11k: remove invalid peer
create logic", and refactor in patches "wifi: ath11k: rename
ath11k_start_vdev_delay()" and "wifi: ath11k: avoid forward declaration
of ath11k_mac_start_vdev_delay()".

Tested this patch set using QCA6390 and WCN6855 on both STA and SAP
interfaces. Basic connection and ping work well.

Baochen Qiang (4):
  wifi: ath11k: remove invalid peer create logic
  wifi: ath11k: rename ath11k_start_vdev_delay()
  wifi: ath11k: avoid forward declaration of
    ath11k_mac_start_vdev_delay()
  wifi: ath11k: fix connection failure due to unexpected peer delete

 drivers/net/wireless/ath/ath11k/mac.c | 564 +++++++++++++-------------
 1 file changed, 288 insertions(+), 276 deletions(-)

ath11k_nss: Revert support for beacon_tx_mode

ath11k_nss: Update release fix dependancies

ath11k_nss: mgmt and data ack rssi update

Data ACK RSSI :

      Advertise NL80211_EXT_FEATURE_ACK_SIGNAL_SUPPORT feature support
for accounting and notifying "last ack signal" and "avg ack signal" to
user space through NL interface.

      Enabled data ack rssi support for ethernet mode.

Mgmt ACK RSSI:

      Enabled support for Tx-ACK RSSI in HTT over Management packets.

ath11k_nss: add missing support to enable/disable bss color collision detection

ath11k_nss: FW Initiated Dynamic MU-EDCA

Implementing the updating of firmware initiated dynamic MU-EDCA
parameters in Beacon IE. Firmware routinely checks its clients and
updates its MU-EDCA values every 3 seconds. Firmware is tuning
MU-EDCA parameters to improve performance. As part of this process,
the firmware informs host about new MU-EDCA values utilizing
WMI_MUEDCA_PARAMS_CONFIG_EVENTID. FW expectation is that host will
update MU-EDCA parameters in the Beacon IE.

ath11k_nss: refresh patches + cleanup Makefile

ath11k_nss: Set correct pbufs for 1GB profile

ath11k_nss: Revert setting fw_mem_mode for IPQ807x

Leave it set to '0', as it will kernel panic with 2K skb patch. This
flag was incorrectly assumed to save memory on 1G platforms.

ath11k_nss: remove leftover max_tx_ring

it was not removed when applying patch to replace it with 'max_tx_ring =
DP_TCL_NUM_RING_MAX +1'

ath11k_nss: Import bugfix patches

ath11k_nss: Experimental build for IPQ6018

This will require setting the correct `ATH11K_MEM_PROFILE_XXX` for your
platform. Setting it to value lower/higher than physically available
will cause NULL virtual address kernel panics.

I believe this setting was not originally meant to reduce memory
footprint of 1G+ platforms, but to account for platforms that were
512M or less.

Will require tweaking to allow for the old behvaior on 1G+ IPQ807x,
while still saving memory for platforms <= 512M.

commit d2d5a0d1f9ce668f92a22eb45279c6c4c3bf7a4f
Author:     Qosmio <datapronix@protonmail.com>
AuthorDate: Sat Mar 9 11:59:20 2024 -0500
Commit:     Sean Khan <datapronix@protonmail.com>
CommitDate: Fri Oct 11 11:13:03 2024 -0400

ath11k_nss: fix typo in 512M memory profile

ath11k_nss: remove SFE patch 718-e-mac80211-Deliver-the-frame-to-driver-tx-ops-directly

It is not relevant to NSS builds and only meant for SFE.

ath11k_nss: remove unecessary patches

Color collision should be left on by default, as it's a primary feature
of 802.11AX.

ath11k_nss: fix spacing

ath11k_nss: Remove unnecessary TKIP bloat

Remove TKIP patches that are not being used as 99% of folks are running
modern encryption (AES-CCMP,SAE,etc).

ath11k_nss: parameterize DP_RXDMA_REFILL_RING_SIZE memory profile

ath11k_nss: Remove SFE related code

Cleanup SFE (shortcut fe) related code as we're not using it on NSS

ath11k_nss: idr, ampdu, and skb headroom check optimizations

ath11k_nss: get valid last_rate for rx_bitrate from cpu stats

ath11k_nss: Fix BCCA counter for EMA

Currently BCCA counter is updated to FW via csa counter offs and
beacon with new countdown is updated for every beacon tx completion event.
For EMA, all EMA beacons are updated in one shot, and counter update for
every tx event will mess up the actual sequence of countdown sent over the air.

Allow FW to update the countdown till 1 and finalize the color
change.

ath11k_nss: Fix compile for TRACE feature
2024-10-11 19:19:03 -04:00
Qosmio
0cb558d028 ath11k_nss: set pbuf script off by default
uci option pbuf.opt.memory_profile must be explicity set to auto, 1gb,
512m, 256m to run.
2024-10-11 19:19:03 -04:00
Qosmio
920ecee2fe ath11k_nss: bugfix NSS memleak + enhancements
bugfixes:
  * Rreverted patch `105-ath11k-fix-monitor-crash-if-tx-offload-is-enabled.patch`.
    Initial test show lower memory use. `ieee80211_tx_status_8023` was
    also removed upstream for a reason as it wasn't being used, and the
    logic behind it was flawed.
    See https://patchwork.kernel.org/project/linux-wireless/patch/20230308174703.12270-2-quic_pradeepc@quicinc.com

  * Mmemory profile for '256M' was missing logic that was in 512/1G.
    Should build correctly now

  * added more qsdk related patches to nss/offload

ath11k_nss: fix up patches

ath11k_nss: revert m3, fix coredump when rebooting

M3 SSR dump logic makes the router coredump. Just putting dummy case to
skip warning.

[12394.072384] Hardware name: Dynalink DL-WRX36 (DT)
[12394.079758] Call trace:
[12394.084354]  dump_backtrace.part.0+0xbc/0xd0
[12394.086614]  show_stack+0x18/0x30
[12394.091127]  dump_stack_lvl+0x6c/0x88
[12394.094339]  dump_stack+0x18/0x34
[12394.097985]  bad_page+0xe0/0x110
[12394.101282]  __free_pages_ok+0x33c/0x360
[12394.104582]  __free_pages+0xbc/0xe0
[12394.108487]  dma_direct_free+0xd0/0x140
[12394.111701]  dma_free_attrs+0x90/0xb0
[12394.115519]  ath11k_qmi_fwreset_from_cold_boot+0x9e0/0xa10 [ath11k]
[12394.119343]  ath11k_qmi_deinit_service+0x64/0x21d0 [ath11k]
[12394.125419]  ath11k_core_deinit+0xa4/0xc0 [ath11k]
[12394.130974]  0xffffffc000fb3600
[12394.135831]  platform_shutdown+0x24/0x40
[12394.138871]  device_shutdown+0x14c/0x240
[12394.143037]  kernel_restart+0x40/0xb0
[12394.146944]  __do_sys_reboot+0xcc/0x200
[12394.150502]  __arm64_sys_reboot+0x24/0x30
[12394.154148]  invoke_syscall.constprop.0+0x5c/0x110
[12394.158317]  do_el0_svc+0x58/0x170
[12394.163001]  el0_svc+0x18/0x60
[12394.166386]  el0t_64_sync_handler+0x114/0x120
[12394.169426]  el0t_64_sync+0x174/0x178
2024-10-11 19:19:03 -04:00
Qosmio
e74f065364 ath11k_nss: fix 'ppdu_info' is a pointer... error 2024-10-11 19:19:03 -04:00
Qosmio
b7fe6cbb4c ath11k_nss: ath11k support dynamic vlan
also support offload for the following:

  mac80211:
    * vlan
    * mesh (partial)
  ath11k:
    * vlan
2024-10-11 19:19:02 -04:00
Qosmio
6e41396273 ath11k_nss: allow specifying pbuf 'memory_profile'
In case you want to specify the memory profile to use rather than
letting it autodetect. The following new uci option is introduced.
pbuf.

config general opt
  option memory_profile ''

choices are 1gb, 512mb, 256mb. Delete option to let it autodetect.

NOTE: You must reboot after changing these settings, for it to
autoapply.

ath11k_nss: fix compilation and rename some patches
2024-10-11 19:19:02 -04:00
Qosmio
b93b73df54 ath11k_nss: Add support to account memory stats
Memory allocations in the driver & mac80211 are logged
  and populate those values to the user space via debugfs.
  This stats will give the snapshot of the memory being
  used by the driver at the time of dumping these
  memory stats.

  Command:
  cat /sys/kernel/debug/ath11k/ipq8074\ hw2.0/memory_stats

  Sample output of the stats
  MEMORY STATS IN BYTES:
  malloc size : 6287583
  ce_ring_alloc size: 109308
  dma_alloc size:: 10831860
  htc_skb_alloc size: 3840
  wmi alloc size: 0
  per peer object: 4644
  rx_post_buf size: 5091840
  Total size: 22329075

  User can disable/enable the memory stats accounting with
  the below command.

  echo N > /sys/kernel/debug/ath11k/ipq8074\ hw2.0/enable_memory_stats
  where N = 0 to disable logging, 1 to enable the logging.

  Note: This should be enabled/disabled only after wifi is down.
  User shouldn't enable/disable when the wifi is up to avoid
  accounting the negative values which cause incorrect values
  in the memory stats.

  Command:

  cat /sys/kernel/debug/ieee80211/phyX/memory_stats
  memory stats: malloc_size: 108
2024-10-11 19:19:02 -04:00
Qosmio
d26ad9fb1a ath11k_nss: Handle 256/512/1G boards automatically 2024-10-11 19:19:02 -04:00
Qosmio
2dcf9f7c37 ath11k_nss: bugfix overwriting high watermark
ath11k_nss: bugfix change start order

value 'dev.nss.n2hcfg.n2h_wifi_pool_buf' was not getting set, wait till
after qca-nss-drv is loaded.

ath11k_nss: finally fix n2hcfg values not being set
2024-10-11 19:19:02 -04:00
Qosmio
e676e9ecbc ath11k_nss: fix ordering of sysctl values
`dev.nss.n2hcfg.n2h_wifi_pool_buf` must be set BEFORE setting
`dev.nss.n2hcfg.n2h_high_water_core0`, otherwise it resets the value.
2024-10-11 19:19:02 -04:00
Qosmio
ed4954750b ath11k_nss: handle qca-nss-drv symbol dependancies 2024-10-11 19:19:01 -04:00
Qosmio
75a259a376 ath11k-nss: Add NSS WiFi feature
Attempt at getting NSS WiFi Offload working on kernel 6.1 (backport 6.5)

These patches are a mix of @ansuel branch for 5.15 (ipq807x-5.15-ecm-wifi)
3ecaee768e

And QUIC's upstream NSS patches on [NHSS.QSDK.12.4.5.r3](https://git.codelinaro.org/clo/qsdk/oss/system/feeds/wlan-open.git)
For the actual package setup (Makfiles,ath.mk) Qualcomm's branch is under 'wlan-open/NHSS.QSDK.12.4.5.r3'

Looks like they've swtiched to using backports 6.5-rc3, and figured to
use a mix of their patches on 'NHSS.QSDK.12.4.5.r3' (nss)
'wlan-open/NHSS.QSDK.12.4.5.r3' (syncing with openwrt main).

Booting with "nss_offload=1 frame_mode=2"

Logs show:
[   16.606282] WARNING: CPU: 2 PID: 3524 at ath11k_nss_tx+0x1d4/0x1e0 [ath11k]
[   16.611060] Modules linked in: ecm pppoe ppp_async nft_fib_inet nf_flow_table_inet ath11k_ahb ath11k pptp pppox ppp_generic nft_reject_ipv6 nft_reject_ipv4 nft_reject_inet nft_reject nft_redir nft_quota nft_objref nft_numgen nft_nat nft_masq nft_log nft_limit nft_hash nft_fullcone nft_flow_offload nft_fib_ipv6 nft_fib_ipv4 nft_fib nft_ct nft_compat nft_chain_nat nf_tables nf_nat nf_flow_table nf_conntrack_netlink nf_conntrack mac80211 iptable_mangle iptable_filter ipt_REJECT ipt_ECN ip_tables cfg80211 xt_time xt_tcpudp xt_tcpmss xt_statistic xt_multiport xt_mark xt_mac xt_limit xt_length xt_hl xt_ecn xt_dscp xt_comment xt_TCPMSS xt_LOG xt_HL xt_DSCP xt_CLASSIFY x_tables wireguard slhc sch_cake qrtr_smd qrtr qmi_helpers nfnetlink nf_reject_ipv6 nf_reject_ipv4 nf_log_syslog nf_defrag_ipv4 mhi libcrc32c libchacha20poly1305 compat sch_tbf sch_ingress sch_htb sch_hfsc em_u32 cls_u32 cls_route cls_matchall cls_fw cls_flow cls_basic act_skbedit act_mirred act_gact qca_nss_cfi_cryptoapi
[   16.611215]  qca_nss_crypto qca_nss_qdisc qca_nss_wifi_meshmgr qca_nss_gre ledtrig_usbport qca_mcs bonding ip6_gre ip_gre gre ifb nat46 nf_defrag_ipv6 sit qca_nss_drv ip6_tunnel tunnel6 tunnel4 nls_utf8 nls_iso8859_1 nls_cp437 vxlan seqiv michael_mic uas usb_storage leds_gpio xhci_plat_hcd xhci_pci xhci_hcd dwc3 dwc3_qcom qca_nss_dp qca_ssdk ramoops reed_solomon pstore gpio_button_hotplug ext4 mbcache jbd2 aquantia hwmon crc_ccitt crc32c_generic
[   16.721723] CPU: 2 PID: 3524 Comm: hostapd Not tainted 6.1.68 #0
[   16.743958] Hardware name: Dynalink DL-WRX36 (DT)
[   16.750032] pstate: 60400005 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[   16.754635] pc : ath11k_nss_tx+0x1d4/0x1e0 [ath11k]
[   16.761403] lr : ath11k_nss_tx+0x1bc/0x1e0 [ath11k]
[   16.766264] sp : ffffffc00b1db790
[   16.771122] x29: ffffffc00b1db790 x28: 0000000000000038 x27: 0000000000000000
[   16.774602] x26: ffffff8006dd7430 x25: ffffff8007ea9dc8 x24: 0000000060000012
[   16.781719] x23: ffffff8005c6a060 x22: ffffff8005c6a060 x21: ffffff80072f12d8
[   16.788837] x20: ffffff8007ea9dc8 x19: ffffff8006082800 x18: 0000000000000005
[   16.795957] x17: 6976312065707974 x16: 207061636e652062 x15: 6b73207874207373
[   16.803075] x14: ffffffc00a0dd518 x13: 000000000000018b x12: 000000000000018b
[   16.810192] x11: 00000000ffffffea x10: ffffffc00a135518 x9 : 0000000000000001
[   16.817310] x8 : 0000000000000001 x7 : 0000000000017fe8 x6 : c0000000ffffefff
[   16.824429] x5 : 0000000000000000 x4 : 0000000000000000 x3 : 0000000000000000
[   16.831547] x2 : ffffff80072f1370 x1 : 0000000000000000 x0 : 0000000000000001
[   16.838665] Call trace:
[   16.845774]  ath11k_nss_tx+0x1d4/0x1e0 [ath11k]
[   16.848035]  ath11k_mac_tx_mgmt_pending_free+0x3034/0x9600 [ath11k]
[   16.852551]  ieee80211_handle_wake_tx_queue+0x68/0xb10 [mac80211]
[   16.858801]  ieee80211_probereq_get+0xca4/0x11f0 [mac80211]
[   16.865049]  ieee80211_tx_prepare_skb+0x1dc/0x240 [mac80211]
[   16.870432]  ieee80211_xmit+0xcc/0x120 [mac80211]
[   16.876333]  __ieee80211_subif_start_xmit+0x2b8/0x380 [mac80211]
[   16.880937]  ieee80211_subif_start_xmit+0x40/0x3b0 [mac80211]
[   16.887013]  ieee80211_subif_start_xmit_8023+0xb8/0x430 [mac80211]
[   16.892656]  dev_hard_start_xmit+0x8c/0x110
[   16.898728]  __dev_queue_xmit+0x1f0/0xbc0
[   16.902808]  dev_queue_xmit+0x14/0x20
[   16.906975]  packet_sendmsg+0x768/0x1260
[   16.910620]  __sys_sendto+0xdc/0x140
[   16.914613]  __arm64_sys_sendto+0x28/0x40
[   16.918174]  invoke_syscall.constprop.0+0x5c/0x110
[   16.922081]  do_el0_svc+0x58/0x170
[   16.926765]  el0_svc+0x18/0x60
[   16.930149]  el0t_64_sync_handler+0x114/0x120
[   16.933190]  el0t_64_sync+0x174/0x178
[   16.933197] ---[ end trace 0000000000000000 ]---
[   16.933230] ath11k c000000.wifi: failed to transmit frame -22
[   17.041495] ath11k c000000.wifi: encap mismatch in nss tx skb encap type 1vif encap type 2
[   17.041578] ath11k c000000.wifi: failed to transmit frame -22

Which is confusing since the parameter is definitley set to '2'.
➤ cat /sys/module/ath11k/parameters/frame_mode
2

Booting with either "nss_offload=1 frame_mode=3" (RAW), or "nss_offload=1 frame_mode=1" (Native Wifi)
Results in:

[   15.644742] ath11k c000000.wifi: peer not found for nss peer delete
[   15.744742] ath11k c000000.wifi: peer not found for nss peer delete
[   15.745742] ath11k c000000.wifi: peer not found for nss peer delete
[   15.746682] ath11k c000000.wifi: peer not found for nss peer delete

Clients connect and then are immediately kicked off, stuck in a loop.

ath11k-nss: Wifi offloading working (unstable)

Wifi offloading seems to be working, however it is not stable. Logs will
initially show a lot of flooding.

```
[Sun Dec 17 02:43:25 2023] ath11k c000000.wifi: peer not found for nss peer delete
[Sun Dec 17 02:43:28 2023] ath11k c000000.wifi: peer not found for nss peer delete
[Sun Dec 17 02:43:30 2023] ath11k c000000.wifi: peer not found for nss peer delete
[Sun Dec 17 02:43:32 2023] ath11k c000000.wifi: peer not found for nss peer delete
[Sun Dec 17 02:43:34 2023] ath11k c000000.wifi: peer not found for nss peer delete
[Sun Dec 17 02:43:40 2023] ath11k c000000.wifi: peer not found for nss peer delete
[Sun Dec 17 02:43:41 2023] ath11k c000000.wifi: peer not found for nss peer delete
[Sun Dec 17 02:43:46 2023] ath11k c000000.wifi: peer not found for nss peer delete
```

But eventually ends up subsiding. Needs heavy testing...

ath11k_nss: Add mac address to debug `nss peer delete` warnings

also delete ath10k patch, and refresh.

ath11k_nss: FIX `nss peer delete` + encap errors

This should hopefullly fix the following errors:

```
[Sun Dec 24 22:03:21 2023] ath11k c000000.wifi: encap mismatch in nss tx skb encap type 1vif encap type 2
[Sun Dec 24 22:03:21 2023] ath11k c000000.wifi: failed to transmit frame -22
[Sun Dec 24 22:08:25 2023] ath11k c000000.wifi: encap mismatch in nss tx skb encap type 1vif encap type 2
[Sun Dec 24 22:08:25 2023] ath11k c000000.wifi: failed to transmit frame -22
```

Clients should also be able to switch between 2Ghz and 5Ghz AP, as well
as join using password (no longer required to boot with NSS off first,
connect the client to acquire PSK, and reboot back with nss wifi offload
enabled).

Uptime has been 5 hours and so far no issues.

ath11k_nss: Remove unecessary clang-tidy formatting

ath11k_nss: add 'debug_mode' flag quiet warnings

Will properly handle:
```
[Mon Dec 25 16:51:34 2023] ath11k c000000.wifi: encap mismatch in nss tx skb encap type 1 vif encap type 2
```

should take the path for native wifi encap

ath11k_nss: Rework depends, make `nss_redirect` optional

1.) Added a reworked `qca-nss-pbuf` init script from QSDK that will set sysctl
    NSS `n2hcfg` wifi options based on board type and available
    RAM.

2.) ath11k is fully capable of offloading wifi, it does not need
    mac80211 to create any NSS vifs. This lowers overhead and has actually
    shown considerable speed improvements for CPU programs on the router
    side (i.e. SMB). I believe ax3600's IoT (ath10k) would require it
    for offloading.

    I've added 2 new makemenu options, `MAC80211_NSS_SUPPORT` which enables
    NSS related features, and `MAC80211_NSS_REDIRECT` which provides the option to
    autoload the module on boot with `nss_redirect=1`.

3.) Reverted the option that deafulted `ATH11K_MEM_PROFILE_512M` to
    true. This was not required for platforms with 1GB or more memory
    (which is most of them). The default is 1GB. Select for platforms
    like Xiaomi AX3600.

ath11k_nss: remove requirement for '/sys/kernel/debug/ath11k'

ath11k_nss: set default values lower to avoid eating up memory

ath11k_nss: Add NSS VLAN support + improvements

1) tweaked qca-nss-pbuf script to better handle different board configs
2) added some QSDK NSS patches for dynamic vlan, WDS.
3) added QSDK fixes for beacon, and bt-coex

For devices that keep getting disconnected (mostly on 2G). It is
recommended to use the following settings for wifi. Change for your
country.

config wifi-device 'radio0'
	option type 'mac80211'
	option path 'platform/soc/c000000.wifi'
	option band '5g'
	option txpower '24'
	option country 'PA'
	option channel '100'
	option htmode 'HE160'
	option cell_density '0'

config wifi-iface 'default_radio0'
	option device 'radio0'
	option network 'lan'
	option mode 'ap'
	option encryption 'psk2'
	option key 'SOME_PASSWORD'
	option ssid 'EXAMPLE_5G'
	option dtim_period '3'
	option max_inactivity '86400'
	option disassoc_low_ack '0'

config wifi-device 'radio1'
	option type 'mac80211'
	option path 'platform/soc/c000000.wifi+1'
	option band '2g'
	option htmode 'HT20'
	option channel '1'
	option txpower '36'
	option country 'PA'
	option cell_density '0'

config wifi-iface 'default_radio1'
	option device 'radio1'
	option network 'lan'
	option mode 'ap'
	option ssid 'EXAMPLE_2G'
	option encryption 'psk2'
	option key 'SOME_PASSWORD'
	option max_inactivity '86400'
	option dtim_period '3'
	option disassoc_low_ack '0'

WPA3 should be disabled, and left as WPA2. Experimenting with max_inactivity, dtim_period, and disassoc_low_ack to hopefully resolve the deauth disconnects.
2024-10-11 19:19:01 -04:00
bitthief
c6afacdc18 iproute2: add NSS QDISC support
Signed-off-by: bitthief <bitthief@protonmail.ch>
Co-Developed-by: Sean Khan <datapronix@protonmail.com>
2024-10-11 19:19:01 -04:00
Sean Khan
168e9dbaf0 package: kernel: nat46: use standard build functions
Instead of 'install', 'cp', use standard build functions

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-11 19:19:00 -04:00
bitthief
28d08a4628 nat46: patches for QCA NSS ECM
Signed-off-by: bitthief <bitthief@protonmail.ch>

package: kernel: nat46: add kernel 6.1 support

Signed-off-by: bitthief <bitthief@protonmail.ch>
Co-Developed-by: Sean Khan <datapronix@protonmail.com>
2024-10-11 19:19:00 -04:00
Felix Fietkau
6c35333316 mt76: update to Git HEAD (2024-10-11.1)
ecca0e77b4bc wifi: mt76: mt7915: fix omac index assignment after hardware reset

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2024-10-11 20:03:42 +02:00
Felix Fietkau
6b7d549dd0 mt76: update to Git HEAD (2024-10-11)
513bd7683746 Revert "wifi: mt76: mt7915: disable the second PCIe link for MT7915"
703c6b78c133 wifi: mt76: mt7915: firmware restart on devices with a second pcie link

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2024-10-11 18:50:47 +02:00
breeze303
f61c7e0022 package: add emortal 2024-10-11 22:53:34 +08:00
breeze303
1c1eec1fae qualcommax: ipq60xx: add support for JDCloud AX6600 2024-10-11 22:51:44 +08:00
Felix Fietkau
7e942c53b2 netifd: update to Git HEAD (2024-10-06)
3c6265fdbd02 wireless: reload wireless device if any vif network bridge changes ifindex

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2024-10-11 14:40:09 +02:00
breeze303
3f38f4547e qualcommax: ipq60xx: add support for JDCloud AX1800 Pro
Specifications:
  SoC:     Qualcomm IPQ6000
  RAM:     512 MiB
  Flash:   64 GiB EMMC
  ETH:     Qualcomm QCA8075
  WLAN1:   2.4GHz 802.11b/g/n/ax 2x2
  WLAN2:   5GHz 802.11a/n/ac/ax 2x2
  Button:  Reset, Switch
  USB:     1x 3.0

Install via uboot web failsafe:
  Push the reset button for 5 seconds, then use broswer
  to access http://192.168.1.1, and upload factory.ubi.

Afterwards upgrade can use sysupgrade image.
2024-10-11 10:36:21 +08:00
Tianling Shen
e00b6ba0c8 uboot-rockchip: Update to 2024.10
Removed upstreamed patches.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/16647
Signed-off-by: Nick Hainke <vincent@systemli.org>
2024-10-11 00:11:59 +02:00
Felix Fietkau
3f6e087b6f mt76: update to Git HEAD (2024-10-10)
86b41a32a5ac wifi: mac80211: don't use rate mask for offchannel TX either
82a452919f52 wifi: mac80211: handle ieee80211_radar_detected() for MLO
02c07fe539b4 wifi: mt76: mt7996: fix rx filter setting for bfee functionality
a902bfa6db2f wifi: mt76: mt7915: disable the second PCIe link for MT7915
a7d48cd3ed34 wifi: mt76: mt7915: reduce the number of command retries
0d8474602a9b wifi: mt76: mt7915: decrease timeout for commonly issued MCU commands
5f6051569639 wifi: mt76: mt7915: add module param to select 5 GHz or 6 GHz on MT7916
f5bccb122305 wifi: mt76: mt7996: fix invalid interface combinations
6a1199463fc8 wifi: mt76: mt7915: Fix an error handling path in mt7915_add_interface()

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2024-10-10 10:53:03 +02:00
Sean Khan
792c426bc5 ath11k_nss: consistently use ath11k_sta_to_arsta
Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-10 00:26:10 -04:00
Sean Khan
5ac53ee8d5 ath11k_nss: remove unnecessary patch
fixed by recverting change in nss/ath11k/999-900-bss-transition-handling.patch

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-10 00:26:10 -04:00
Sean Khan
c8356c46f1 ath11k_nss: revert peer ast warning check
Only check if NSS is disabled

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-10 00:26:09 -04:00
Sean Khan
e87e2bf922 iproute2: NSS fixup for 6.11.0
Signed-off-by: Sean Khan <datapronix@protonmail.com>
(cherry picked from commit c4781eb3c1145282bc099ec2981cbaf66f3e455c)
2024-10-10 00:26:09 -04:00
Sean Khan
1e2aec7c35 pick ath11k_nss: Refresh patches for backports 6.11.2
Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-10 00:26:09 -04:00
Sean Khan
d76915db9f ath11k_nss: fix incorrect peer lookup warning for NSS
The check was not correctly returning on missing peer,
it was instead checking that both peer was null AND NSS was disabled.
Fix patch so it returns if peer is null, and only displays warning if
NSS feature is disabled.

Signed-off-by: Sean Khan <datapronix@protonmail.com>
(cherry picked from commit 4de3b6f1d13436349d585de2c92d110bce0a1259)
2024-10-10 00:26:09 -04:00
Sean Khan
5317026268 ath11k_nss: Enhance nss_diag to properly list ifaces
Also optimized to use more native functions

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-10 00:26:08 -04:00
Sean Khan
651184742a ath11k_nss: Add diagnostic gathering utility
This is meant to ease debugging when asking for support. Just run the
command "nss_diag" and include in your issues/forum posts.

Example of output
```
     MODEL: Linksys MX5300
   OPENWRT: r27645+154-f9a0485c99
IPQ BRANCH: qualcommax-6.x-nss-mx4300-6.11
IPQ COMMIT: 04c2d8a2db
  IPQ DATE: 2024-10-04
    NSS FW: NSS.HK.11.4.0.5-6-R
  MAC80211: v6.11.2-0-g7aa21fec187b
 ATH11K FW: WLAN.HK.2.9.0.1-01977-QCAHKSWPL_SILICONZ-1
  GRO FRAG: wan         : off
            br-lan      : off
            lan1        : off
            lan2        : off
            lan3        : off
            lan4        : off
            phy0-mesh0  : off
            phy1-ap0    : off
            phy2-ap0    : off

  NSS PKGS: kmod-qca-nss-cfi-cryptoapi - 6.6.54.12.5.2022.12.15~5cd07ce-r3
            kmod-qca-nss-crypto - 6.6.54.12.5.2022.12.15~3c5a574-r3
            kmod-qca-nss-dp - 6.6.54.2024.04.16~5bf8b91e-r1
            kmod-qca-nss-drv - 6.6.54.11.4.0.5.2021.09.13~53e5863-r14
            kmod-qca-nss-drv-bridge-mgr - 6.6.54.11.4.0.5.2021.08.17~c4049d1-r7
            kmod-qca-nss-drv-igs - 6.6.54.11.4.0.5.2021.08.17~c4049d1-r7
            kmod-qca-nss-drv-qdisc - 6.6.54.11.4.0.5.2021.08.17~c4049d1-r7
            kmod-qca-nss-drv-vlan-mgr - 6.6.54.11.4.0.5.2021.08.17~c4049d1-r7
            kmod-qca-nss-drv-wifi-meshmgr - 6.6.54.11.4.0.5.2021.08.17~c4049d1-r7
            kmod-qca-nss-ecm - 6.6.54.12.5.5.2024.09.02~bd5057b-r2
            nss-eip-firmware - 2.5.7-r3
            nss-firmware-default - 2024.08.04~794fe373-r1
            nss-firmware-ipq8074 - 2024.08.04~794fe373-r1
```

Signed-off-by: Sean Khan <datapronix@protonmail.com>
(cherry picked from commit a58914b4f788f6b5ee70ddad0a1f5c4e464a5629)
2024-10-10 00:26:08 -04:00
Sean Khan
a0a8fd870a ath11k_nss: Possible workaround to 0 wifi stats
Signed-off-by: Sean Khan <datapronix@protonmail.com>
(cherry picked from commit 0056ba46ffe980c88ab4d250eb4799cb0a632de7)
2024-10-10 00:26:08 -04:00
Sean Khan
fc0c4f9260 ath11k_nss: Delete 999-783-001-wifi-ath11k-Fix-BCCA-counter-for-EMA.patch
Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-10 00:26:08 -04:00
Sean Khan
70de847cc1 ath11k_nss: 6.11.2: fix 999-783-001-wifi-ath11k-Fix-BCCA-counter-for-EMA.patch
Signed-off-by: Sean Khan <datapronix@protonmail.com>

ath11k_nss: 6.11.2 refresh 999-783-001-wifi-ath11k-Fix-BCCA-counter-for-EMA.patch

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-10 00:26:07 -04:00
Sean Khan
858997101c ath11k_nss: 6.11.2: fix 235-003-ath11k-add-AP_VLAN-vif-support-for-WDS-offload-in-NSS-offload.patch
Signed-off-by: Sean Khan <datapronix@protonmail.com>

ath11k_nss: 6.11.2 refresh 235-003-ath11k-add-AP_VLAN-vif-support-for-WDS-offload-in-NSS-offload.patch

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-10 00:26:07 -04:00
Sean Khan
ae1f8cff85 ath11k_nss: Fix iface stats showing up as 0
Generic ndo_get_stats64 was removed in kernel > 6.9. This ends up
breaking interface stats on NSS builds.

```
phy0-ap0  Link encap:Ethernet  HWaddr
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:841 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

phy1-ap0  Link encap:Ethernet  HWaddr
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
```

Until a better workaround is implemented revert the following patch.
```
commit c018411d355518a0b2a304d7543564cdd1b808b6
Author:     Breno Leitao <leitao@debian.org>
AuthorDate: Fri Jun 7 03:20:44 2024 -0700
Commit:     Johannes Berg <johannes.berg@intel.com>
CommitDate: Wed Jun 12 13:04:24 2024 +0200

    wifi: mac80211: Remove generic .ndo_get_stats64

    Commit 3e2f544dd8a33 ("net: get stats64 if device if driver is
    configured") moved the callback to dev_get_tstats64() to net core, so,
    unless the driver is doing some custom stats collection, it does not
    need to set .ndo_get_stats64.

    Since this driver is now relying in NETDEV_PCPU_STAT_TSTATS, then, it
    doesn't need to set the dev_get_tstats64() generic .ndo_get_stats64
    function pointer.

    In this driver specifically, .ndo_get_stats64 basically points to
    dev_fetch_sw_netstats(). Now it will point to dev_get_tstats64(), which
    calls netdev_stats_to_stats64() and dev_fetch_sw_netstats().
    netdev_stats_to_stats64() seems irrelevant for this driver.
```

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-10 00:26:06 -04:00
Sean Khan
e6c809bacd Revert "ath11k_nss: Revert patch for 512M + 2KB RX header"
This reverts commit 08db8048d06b9a3e45bbcb7ab49463a21c769dc7.
2024-10-10 00:26:06 -04:00
Sean Khan
4e988206b8 ath11k_nss: fix WDS instability by disabling NAWDS mode
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>
2024-10-10 00:26:06 -04:00
Sean Khan
ade6ce4c79 ath11k_nss: mac80211: fix NULL pointer access, Klocwork issue
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>
2024-10-10 00:26:05 -04:00
Sean Khan
00ae0d7271 ath11k_nss: remove call trace while rebooting AP
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>
2024-10-10 00:26:05 -04:00
Sean Khan
cc1bf20da1 ath11k_nss: Consolidate Allow-fast-rx-by-bypassing-stats-update
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>
2024-10-10 00:26:05 -04:00
Sean Khan
2fb16ef8c2 ath11k_nss: Revert patch for 512M + 2KB RX header
These patches should not be needed anymore. They are more problematic
than helpful.

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-10 00:26:05 -04:00
Sean Khan
7bfaa1c251 ath11k_nss: Refresh patches for backports 6.11
Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-10 00:26:05 -04:00
Sean Khan
1b95ec24a6 ath11k_nss: Fix patches for backports 6.11
deleted: (merged upstream)
package/kernel/mac80211/patches/nss/ath11k/336-ath11k-skip-status-ring-entry-processing.patch

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-10 00:26:05 -04:00
Sean Khan
fdfa1b3859 ath11k_nss: Remove unecessary ignore frags patch
Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-10 00:26:04 -04:00
Sean Khan
ce537561ee ath11k_nss: fix peer ast not found warnings
Race condition with the way NSS manages peers causing
`peer ast idx xxx can't be found`.

Only display that warning when NSS is disabled.

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-10 00:26:04 -04:00
Sean Khan
d301db5e82 nat46: Bump to version 2024-08-12
Brings in following changes

```
2024-07-31|b42c37d|Fix crash when viewing nat46 kernel module config
2024-07-18|3a9f630|nat46-module: fix modpost warning
2024-07-02|cb69317| "Add network namespace awareness to nat46" - take two.
```

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-10 00:26:04 -04:00
Sean Khan
115289c7c0 ath11k_nss: Refresh patches
Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-10 00:26:04 -04:00
Sean Khan
6cea2320a0 ath11k_nss: skip status ring entry processing (V5)
Update patch from latest version found on patchwork

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-10 00:26:04 -04:00
Sean Khan
686f46dae0 hostapd: fix MUEDCA patch for hostapd 2024-09-15
Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-10 00:26:04 -04:00
Sean Khan
e7a16dbc39 ath11k_nss: utilize existing function to get arvif from dev
Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-10 00:26:03 -04:00
Sebastian Gottschall
f9ca0ea8b1 ath11k_nss: fix bss transition firmware crash
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>
2024-10-10 00:26:03 -04:00
Sean Khan
88d035e2e7 ath11k_nss: WAR for association failure issue with WDS
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>
2024-10-10 00:26:03 -04:00
Sean Khan
f8ba888814 ath11k_nss: Fix RX thermal throttling on newer 2.12 firmware
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>
2024-10-10 00:26:03 -04:00
Sean Khan
302a4003c8 ath11k_nss: Possible fix for WDS
Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-10 00:26:02 -04:00
Sean Khan
fa73db6cd6 ath11k_nss: Revert logic from coconut branch in NSS redirect
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>
2024-10-10 00:26:02 -04:00
Sean Khan
7f4fb07e84 iproute2: NSS: sync patch from QSDK 12.5
Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-10 00:26:02 -04:00
Sean Khan
8976bd09b1 ath11k_nss: optimize qca-nss-pbuf init script
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>
2024-10-10 00:26:01 -04:00
Sean Khan
b442c32e98 ath11k_nss: Bump version 6.6.15 to 6.9.9
Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-10 00:26:01 -04:00
Sean Khan
019f299523 ath11k_nss: Check for NSS FW 11.4 and build accordingly
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>
2024-10-10 00:26:00 -04:00
Sean Khan
fcf43abb49 ath11k_nss: Refresh patches
Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-10 00:26:00 -04:00
Sean Khan
61463c96d4 ath11k_nss: add missing NL80211_ATTR_HE_MUEDCA_PARAMS
Signed-off-by: Sean Khan <datapronix@protonmail.com>

ath11k_nss: fix missing semicolon ';'

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-10 00:26:00 -04:00
Sean Khan
ae08348712 Revert "ath11k_nss: Add mac80211 based AQL support"
This reverts commit b1b446335beee744c7a74770d7383618d9cc3202.
2024-10-10 00:25:59 -04:00
Sean Khan
2d6e287170 hostapd: handle updated MU-EDCA params from driver
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>
2024-10-10 00:25:59 -04:00
Sean Khan
920e830dae ath11k_nss: fix monitor mode
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>
2024-10-10 00:25:59 -04:00
Sean Khan
dffffc9728 wifi_nss: Revert using napi threaded helper function
Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-10 00:25:59 -04:00
Sean Khan
efdd9676d6 ath11k_nss: add tracing for update_muedca_params_event
Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-10 00:25:59 -04:00
Sean Khan
af4ea31e26 ath10k-ct: Use NAPI threaded helper functions
Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-10 00:25:58 -04:00
Sean Khan
28ef5177c9 ath10k-ct: Bump patch for 6.4 to 6.7
Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-10 00:25:58 -04:00
Sean Khan
4bfdc8f665 ath11k_nss: fix incorrectly applied ath11k_pci threaded napi patch
Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-10 00:25:58 -04:00
Sean Khan
e4086842b1 wifi_nss: Use NAPI threaded helper functions
Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-10 00:25:58 -04:00
Sean Khan
d5e0ff1909 ath11k_nss: Add mac80211 based AQL support
Add wake_tx_queue mac op to support AQL and support
txq dequeueing from mac80211. Also implement a
simple scheduler for pulling all skbs from txqs
of all AC's at the end of tx completion NAPI.

Tested-on: IPQ5018 hw1.0 AHB WLAN.HK.2.6.0.1-00861-QCAHKSWPL_SILICONZ-1

Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>

Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-10 00:25:57 -04:00
Sean Khan
ee38f27aa6 wifi_nss: Add threaded NAPI for ath10k and ath11k
Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-10 00:25:57 -04:00
Sean Khan
711d1a21e5 ath11k_nss: Drop unnecessary iphone fix patch
Signed-off-by: Sean Khan <datapronix@protonmail.com>
2024-10-10 00:25:57 -04:00