Page MenuHomeFreeBSD

iwx: fix and clean up suspend/resume path
ClosedPublic

Authored by adrian on Nov 12 2025, 9:04 PM.
Referenced Files
F141914022: D53721.id166414.diff
Mon, Jan 12, 11:00 AM
Unknown Object (File)
Sat, Jan 10, 2:23 PM
Unknown Object (File)
Sat, Jan 10, 2:14 PM
Unknown Object (File)
Sat, Jan 10, 9:36 AM
Unknown Object (File)
Sat, Jan 10, 3:15 AM
Unknown Object (File)
Sun, Dec 28, 6:30 AM
Unknown Object (File)
Dec 12 2025, 5:24 PM
Unknown Object (File)
Dec 2 2025, 5:04 PM
Subscribers

Details

Summary

I noticed a couple of things were happening:

  • during suspend, I'd get a timeout in the NIC lock path (which sets a bit on the NIC to say that the host wants to talk to it);
  • resume wouldn't come back - scan commands would fail, and you'd have to reinit the NIC again for it to work.

The thing is:

  • the suspend path should already shut down the NIC by shutting down all the VAPs (and the last VAP should call ic_parent to bring it down), and
  • the resume path should already bring up the NIC by bringing up each VAP, and the first VAP to be brought up calls ic_parent to bring it up.

So instead, I've shuffled around the code to just double check the
hardware state is consistent /before/ ieee80211_suspend_all() and
ieee80211_resume_all() is called.

This both fixes the errant hardware timeout during suspend, and it
fixes resume to work.

Locally tested:

  • AX210, STA mode, both hardware ACPI suspend/resume and devctl suspend and devctl resume

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Skipped
Unit
Tests Skipped
Build Status
Buildable 68582
Build 65465: arc lint + arc unit