Add QCA vendor attributes for P2P GO NoA cancellation
Add QCA_WLAN_VENDOR_ATTR_P2P_SET_GO_CANCEL_ONE_SHOT_NOA and
QCA_WLAN_VENDOR_ATTR_P2P_SET_GC_KEEP_AWAKE_DURING_ONE_SHOT_NOA to
support firmware-managed automatic cancellation of P2P GO Notice of
Absence (NoA) schedules in multi-channel concurrency (MCC) scenarios.
Background:
In P2P GO + STA MCC scenarios (e.g., Miracast), when a local STA
interface sharing the same radio with the P2P GO performs
connection/roaming operations on a different channel, the firmware
automatically starts a one-shot NoA schedule on the P2P GO to facilitate
the STA's channel operations. This firmware-initiated NoA can cause:
- Delayed data transmission to P2P clients during the absence period
- Connection timeouts on P2P clients during extended absence
- Poor user experience during critical operations like video streaming
Why configurable instead of automatic:
While the firmware initiates NoA automatically, cancellation requires
explicit configuration because:
1. This optimization should only be enabled when both the P2P GO and all
connected P2P Clients support this capability
2. Peer capability is determined by userspace through OUI-based device
whitelists or vendor-specific information elements
3. The feature is intended for specific use cases (e.g., Miracast 1:1
scenarios) where both devices are known to support early NoA
cancellation
Scope and limitations:
This feature can be used when a P2P GO and all its connected P2P Clients
support this capability. Since NoA configuration affects all clients in
the group, the feature should only be enabled when all connected clients
are verified to support early NoA cancellation.
Peer capability is not standardized in P2P yet; for now, the GO/client is
expected to know peer client/GO capability via vendor-specific userspace
policy/mechanisms, e.g., device model / OUI based whitelists or out of band
capability handshake via Bluetooth.
Solution:
Add two new vendor attributes to the existing
QCA_NL80211_VENDOR_SUBCMD_P2P_SET_NOA command:
1. QCA_WLAN_VENDOR_ATTR_P2P_SET_GO_CANCEL_ONE_SHOT_NOA (for P2P GO):
When enabled (value=1):
- The firmware will cancel the current firmware-initiated one-shot NoA
schedule when the local STA interface completes its
connection/roaming operation
- The cancellation will be reflected in subsequent beacons (typically
the next beacon, though timing may vary based on beacon scheduling)
- This unblocks P2P data transmission immediately after the STA
operation completes
When disabled (value=0, default): NoA behavior remains unchanged.
2. QCA_WLAN_VENDOR_ATTR_P2P_SET_GC_KEEP_AWAKE_DURING_ONE_SHOT_NOA
(for P2P GC):
When enabled (value=1):
- The client will stay awake during one-shot NoA periods instead of
entering sleep
- This allows the client to immediately receive frames when the GO
cancels NoA early, without waiting for the originally configured NoA
duration to expire
When disabled (value=0, default): GC enters sleep during NoA as usual.
Feature capability advertisement:
Two new feature flags are added to allow devices to advertise support:
- QCA_WLAN_VENDOR_FEATURE_SUPPORT_P2P_GO_CANCEL_ONE_SHOT_NOA
- QCA_WLAN_VENDOR_FEATURE_SUPPORT_P2P_GC_KEEP_AWAKE_DURING_ONE_SHOT_NOA
These flags can be used by userspace to determine local device
capabilities.