Add QCA vendor subcommand to suspend/resume AP interface

Add a new QCA vendor subcommand QCA_NL80211_VENDOR_SUBCMD_AP_SUSPEND to
allow suspend and resume the AP interface. When an AP is suspended, it
disconnects all connected clients and stops all TX/RX operations on the
AP interface. The driver retains the AP configuration and on resume, all
AP operations are resumed with the same configuration.

This subcommand is also used in the event path to notify userspace about
AP suspended or resumed state changes.

This uses attributes defined in enum qca_wlan_vendor_attr_ap_suspend.

Signed-off-by: Purushottam Kushwaha <quic_pkushwah@quicinc.com>
This commit is contained in:
Purushottam Kushwaha 2024-03-29 17:57:36 +05:30 committed by Jouni Malinen
parent e141b33a66
commit df14f1e2bd

View file

@ -1075,6 +1075,18 @@ enum qca_radiotap_vendor_ids {
* Userspace applications can deregister the unicast event reporting with
* disable configuration. The registrations will be removed automatically
* by the driver when the corresponding netlink socket is closed.
*
* @QCA_NL80211_VENDOR_SUBCMD_AP_SUSPEND: Vendor command to put an AP interface
* in suspend state. On enabling suspend, AP deauthenticates all associated
* stations and stops TX/RX operations on the interface. The driver
* retains the AP configuration and on resume, starts all TX/RX operations
* with the same AP configuration.
*
* This subcommand is also used as an event to notify userspace about AP
* suspended/resumed state changes.
*
* The attributes used with this command/event are defined in enum
* qca_wlan_vendor_attr_ap_suspend.
*/
enum qca_nl80211_vendor_subcmds {
QCA_NL80211_VENDOR_SUBCMD_UNSPEC = 0,
@ -1302,6 +1314,7 @@ enum qca_nl80211_vendor_subcmds {
QCA_NL80211_VENDOR_SUBCMD_ADJUST_TX_POWER = 241,
QCA_NL80211_VENDOR_SUBCMD_SPECTRAL_SCAN_COMPLETE = 242,
QCA_NL80211_VENDOR_SUBCMD_ASYNC_GET_STATION = 243,
QCA_NL80211_VENDOR_SUBCMD_AP_SUSPEND = 244,
};
/* Compatibility defines for previously used subcmd names.
@ -17115,4 +17128,38 @@ enum qca_wlan_vendor_async_get_station_attr {
QCA_WLAN_VENDOR_ATTR_ASYNC_GET_STATION_AFTER_LAST - 1,
};
/* enum qca_wlan_vendor_ap_suspend_state - Attribute values for
* QCA_WLAN_VENDOR_ATTR_AP_SUSPEND_STATE.
*
* @QCA_WLAN_VENDOR_AP_SUSPEND_STATE_DISABLE: Disable suspend state. When used
* with a command, the driver resumes AP with the same configuration that was
* applied earlier and starts all TX/RX operations. When used in an event,
* indicates the AP interface resumed.
*
* @QCA_WLAN_VENDOR_AP_SUSPEND_STATE_ENABLE: Enable suspend state. In this
* mode, all associated STAs are disconnected and TX/RX is stopped. While an AP
* is in this state, it allows only %QCA_WLAN_VENDOR_AP_SUSPEND_STATE_DISABLE
* or AP stop/teardown operations. When used in an event, indicates the AP
* interface suspended.
*/
enum qca_wlan_vendor_ap_suspend_state {
QCA_WLAN_VENDOR_AP_SUSPEND_STATE_DISABLE = 0,
QCA_WLAN_VENDOR_AP_SUSPEND_STATE_ENABLE = 1,
};
/* enum qca_wlan_vendor_attr_ap_suspend - Definition of attributes for
* @QCA_NL80211_VENDOR_SUBCMD_AP_SUSPEND to configure/notify the suspend state.
*
* @QCA_WLAN_VENDOR_ATTR_AP_SUSPEND_STATE: u8 attribute to configure/notify
* suspend state defined in enum qca_wlan_vendor_ap_suspend_state.
*/
enum qca_wlan_vendor_attr_ap_suspend {
QCA_WLAN_VENDOR_ATTR_AP_SUSPEND_INVALID = 0,
QCA_WLAN_VENDOR_ATTR_AP_SUSPEND_STATE = 1,
QCA_WLAN_VENDOR_ATTR_AP_SUSPEND_AFTER_LAST,
QCA_WLAN_VENDOR_ATTR_AP_SUSPEND_MAX =
QCA_WLAN_VENDOR_ATTR_AP_SUSPEND_AFTER_LAST - 1,
};
#endif /* QCA_VENDOR_H */