Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v2.6: Pull latest wifi fixes #1443

Merged
merged 25 commits into from
Aug 28, 2024

Conversation

krish2718
Copy link
Contributor

No description provided.

ajayparida and others added 19 commits August 20, 2024 19:23
[SHEL-2947] QoS null frame based legacy power save support.

Signed-off-by: Ajay Parida <ajay.parida@nordicsemi.no>
[SHEL-2947] Changing naming of power save mode
to mechanism(Text change).

Signed-off-by: Ajay Parida <ajay.parida@nordicsemi.no>
FMAC relies on these callbacks to perform a RPU recovery i.e., coldboot
the device in a clean way, this is achieved by performing an interface
down and then up, this properly cleans up the driver, performs a cold
boot and either through NET_IF events (for scan only) or WPA_S events
(for full Wi-Fi) notifies the applications.

Implements SHEL-2726.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
Backport ae13090.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
RPU hostport uses OR logic to manage both normal event IRQ line and
watchdog IRQ line, so, for every IRQ check for both sources
independently.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
Signed-off-by: srinivasa raju chintalapati <srinivasaraju.chintalapati@nordicsemi.no>
* As RPU recovery can triggered called from multiple places, use a
tasklet with a lock to trigger RPU recovery.

* In case RPU is stuck in sleep, FW based watchdog interrupt will not be
received, so, recovery cannot be triggered. So, in case of RPU wakeup
failure, trigger the recovery.

Fixes SHEL-2810.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
In case host is asserting wakeup_now, don't rely on RPU PS state, as
that is derived from multiples sources wakeup_now, RPU interrupt etc.

Use a dedicated flag to track.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
During watchdog (or any) interrupt processing, RPU accesses are being
made and they assert the wakeup_now flag this causes RPU recovery to not
trigger.

New false or true recovery detection algo:

 Check the time difference b/w last de-assert and assert, and if it
 exceeds minimum time needed for RPU to enter sleep, then not the
 timestamp. This timestamp will be used to compare when a watchdog
 interrupt is received and see if during the last window if host has
 given a chance for RPU to attempt sleep, if yes, then attempt recovery
 else ignore watchdog.

Also, add a Kconfig for the 10s active time that triggers recovery, this
needs to be passed to the FW (once we have enough patch memory).

Also, add a Kconfig for the minimum time needed for RPU to attempt sleep
in positive case.

Also, add a new _ms API for time stamp fetch, this is to avoid
precision loss when converting to and from ms to us and also makes code
readable by avoiding *1000 and /1000.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
Add a missing NULL check for RX buffers, without this we see a crash
during RPU recovery.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
These are helpful for debugging RPU recovery only.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
The original fix is too big to backport, so, a simple check is added to
fix race condition during de-init causing mulitple crashes.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
This helps us understand OOM issues.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
When HAL is being de-initialized drain the events to free up the memory
and also to avoid accessing any freed up variables.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
Commit e1fc1137e ("nrf_wifi: Add support for recovering RPU stuck in
sleep") introduced a memory leak where recovery spin lock isn't freed.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
Fix RPU recovery protection to solve build failures when RPU recovery is
disabled.

As recovery is primarily based on power-management, add a Kconfig
dependency to enforce, this simplies the macros to protect the code.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
During interface down in case TX has pending buffers in either TXQ or
Pending_Q then they are not freed instead the Q itself is freed.

Fix by traversing the Q and freeing all members.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
These are very frequent, so, a separate debug is added for debugging
host RPU recovery logic.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
This is useful to understand the reason for comms trigger b/w host and
RPU.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
OSAL Shim only as 256 bytes for logs, causign recovery logs to be
truncated.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
@krish2718 krish2718 force-pushed the pull_latest_wifi_fixes branch 2 times, most recently from a9594a8 to 3a79896 Compare August 22, 2024 11:58
With this offload, host doesn't need to manage RX buffers for management
frames, and this saves Host-RPU comms and thus giving RPU to sleep more
often and is essential to test RPU recovery.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
To handle interoperability issue with few APs, add a feature to keep
sending keepalive frames periodically to avoid AP disconnecting the STA.

This is disabled by default to avoid unnecessary power consumption as
it's only seen with few old APs.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
@krish2718 krish2718 marked this pull request as ready for review August 22, 2024 16:22
User can configure watchdog timer using Kconfig and this needs to be
sent to FW. This is primarily needed for crowded channel where RPU can
stay awake for more than 10s.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
karun2796 and others added 3 commits August 26, 2024 18:02
UMAC: Fixes from v2.5 branch
  1) Added watchdog timer programming from Host.
  2) Handling TRIGGER_SWITCH_PS from LMAC.
  3) Clearing and re-enabling watchdog before sending any
     event from UMAC to Host.
  4) [SHEL-2995] : Parsing keep alive parameters from host in command
                       init and sending to LMAC.

LMAC: Fixes/features from 2.5 branch
  1) Keep alive logic
  2) Null frame based power save
  3) TSF sync
  4) Updated lma cpath  bimg location to 0x8004b400

Signed-off-by: Karun Kumar Eagalapati <karun.kumar@nordicsemi.no>
PHY: Fix for low TX power

[SHEL-2583] : Tx power reduces due to incorrect backoff values
applied when an inaccurate vbat value is provided.

Signed-off-by: Mahammadyunus Patil <Mahammadyunus.Patil@nordicsemi.no>
It depends on links to other repos and errors are unavoidable.

Signed-off-by: Thomas Stilwell <Thomas.Stilwell@nordicsemi.no>
Copy link

@shanthanordic shanthanordic left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

approved from scope perspective

@shanthanordic shanthanordic added the DNM Do not merge label Aug 28, 2024
@shanthanordic
Copy link

Asked matter team approval before merging @LuDuda

Copy link

@LuDuda LuDuda left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved for now with integration CI being green 👍
When release procedure would start we want to run more extensive testing.

Btw. In the commits I do see quite a few bugfixes (also with memory leaks). Do we have a known-issues entries in the doc targeting for example to NCS 2.6.0/2.6.1 with them?

@LuDuda LuDuda removed the DNM Do not merge label Aug 28, 2024
@carlescufi carlescufi merged commit 3cb1a19 into nrfconnect:v2.6-branch Aug 28, 2024
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.