Define AFC vendor commands and events

Wi-Fi Alliance specification for Automated Frequency Coordination (AFC)
system ensures that the Standard Power Wi-Fi devices can operate in 6
GHz spectrum under favorable conditions, without any interference with
the incumbent devices.

Add support for vendor command/events and corresponding
attributes to define the interface for exchanging AFC requests and
responses between the driver and a userspace application.

Signed-off-by: Jouni Malinen <quic_jouni@quicinc.com>
This commit is contained in:
Rhythm Patwa 2022-09-15 17:43:19 -07:00 committed by Jouni Malinen
parent 46f5cf9280
commit 16d913bfd8

View file

@ -862,6 +862,14 @@ enum qca_radiotap_vendor_ids {
*
* The attributes used with this event are defined in
* enum qca_wlan_vendor_attr_mlo_peer_prim_netdev_event.
*
* @QCA_NL80211_VENDOR_SUBCMD_AFC_EVENT: This vendor command is used by the
* driver to notify different AFC events to userspace. The attributes used
* with this command are defined in enum qca_wlan_vendor_attr_afc_event.
*
* @QCA_NL80211_VENDOR_SUBCMD_AFC_RESPONSE: This vendor command is used by
* userspace to deliver AFC response data to driver. The attributes used
* with this command are defined in enum qca_wlan_vendor_attr_afc_response.
*/
enum qca_nl80211_vendor_subcmds {
QCA_NL80211_VENDOR_SUBCMD_UNSPEC = 0,
@ -1067,6 +1075,8 @@ enum qca_nl80211_vendor_subcmds {
QCA_NL80211_VENDOR_SUBCMD_GET_SAR_CAPABILITY = 219,
QCA_NL80211_VENDOR_SUBCMD_SR = 220,
QCA_NL80211_VENDOR_SUBCMD_MLO_PEER_PRIM_NETDEV_EVENT = 221,
QCA_NL80211_VENDOR_SUBCMD_AFC_EVENT = 222,
QCA_NL80211_VENDOR_SUBCMD_AFC_RESPONSE = 223,
};
/* Compatibility defines for previously used subcmd names.
@ -13716,4 +13726,422 @@ enum qca_wlan_vendor_attr_mlo_peer_prim_netdev_event {
QCA_WLAN_VENDOR_ATTR_MLO_PEER_PRIM_NETDEV_EVENT_AFTER_LAST - 1,
};
/**
* enum qca_wlan_vendor_attr_afc_freq_psd_info: This enum is used with
* nested attributes QCA_WLAN_VENDOR_ATTR_AFC_RESP_FREQ_PSD_INFO and
* QCA_WLAN_VENDOR_ATTR_AFC_EVENT_FREQ_RANGE_LIST to update the frequency range
* and PSD information.
*
* @QCA_WLAN_VENDOR_ATTR_AFC_FREQ_PSD_INFO_RANGE_START: Required and type is
* u32. This attribute is used to indicate the start of the queried frequency
* range in MHz.
*
* @QCA_WLAN_VENDOR_ATTR_AFC_FREQ_PSD_INFO_RANGE_END: Required and type is u32.
* This attribute is used to indicate the end of the queried frequency range
* in MHz.
*
* @QCA_WLAN_VENDOR_ATTR_AFC_FREQ_PSD_INFO_PSD: Required and type is u32.
* This attribute will contain the PSD information for a single range as
* specified by the QCA_WLAN_VENDOR_ATTR_AFC_FREQ_PSD_INFO_RANGE_START and
* QCA_WLAN_VENDOR_ATTR_AFC_FREQ_PSD_INFO_RANGE_END attributes.
*
* The PSD power info (dBm/MHz) from user space should be multiplied
* by a factor of 100 when sending to the driver to preserve granularity
* up to 2 decimal places.
* Example:
* PSD power value: 10.21 dBm/MHz
* Value to be updated in QCA_WLAN_VENDOR_ATTR_AFC_PSD_INFO: 1021.
*
* Note: QCA_WLAN_VENDOR_ATTR_AFC_FREQ_PSD_INFO_PSD attribute will be used only
* with nested attribute QCA_WLAN_VENDOR_ATTR_AFC_RESP_FREQ_PSD_INFO and with
* QCA_WLAN_VENDOR_ATTR_AFC_EVENT_FREQ_RANGE_LIST when
* QCA_WLAN_VENDOR_ATTR_AFC_EVENT_TYPE is
* QCA_WLAN_VENDOR_AFC_EVENT_TYPE_POWER_UPDATE_COMPLETE.
*
* The following set of attributes will be used to exchange frequency and
* corresponding PSD information for AFC between the user space and the driver.
*/
enum qca_wlan_vendor_attr_afc_freq_psd_info {
QCA_WLAN_VENDOR_ATTR_AFC_FREQ_PSD_INFO_INVALID = 0,
QCA_WLAN_VENDOR_ATTR_AFC_FREQ_PSD_INFO_RANGE_START = 1,
QCA_WLAN_VENDOR_ATTR_AFC_FREQ_PSD_INFO_RANGE_END = 2,
QCA_WLAN_VENDOR_ATTR_AFC_FREQ_PSD_INFO_PSD = 3,
QCA_WLAN_VENDOR_ATTR_AFC_FREQ_PSD_INFO_AFTER_LAST,
QCA_WLAN_VENDOR_ATTR_AFC_FREQ_PSD_INFO_MAX =
QCA_WLAN_VENDOR_ATTR_AFC_FREQ_PSD_INFO_AFTER_LAST - 1,
};
/**
* enum qca_wlan_vendor_attr_afc_chan_eirp_info: This enum is used with
* nested attribute QCA_WLAN_VENDOR_ATTR_AFC_CHAN_LIST_INFO to update the
* channel list and corresponding EIRP information.
*
* @QCA_WLAN_VENDOR_ATTR_AFC_CHAN_EIRP_INFO_CHAN_NUM: Required and type is u8.
* This attribute is used to indicate queried channel from
* the operating class indicated in QCA_WLAN_VENDOR_ATTR_AFC_OPCLASS_INFO.
*
* @QCA_WLAN_VENDOR_ATTR_AFC_CHAN_EIRP_INFO_EIRP: Optional and type is u32.
* This attribute is used to configure the EIRP power info corresponding
* to the channel number indicated in QCA_WLAN_VENDOR_ATTR_AFC_CHAN_NUM.
* The EIRP power info(dBm) from user space should be multiplied
* by a factor of 100 when sending to Driver to preserve granularity up to
* 2 decimal places.
* Example:
* EIRP power value: 34.23 dBm
* Value to be updated in QCA_WLAN_VENDOR_ATTR_AFC_EIRP_INFO: 3423.
*
* Note: QCA_WLAN_VENDOR_ATTR_AFC_EIRP_INFO attribute will only be used with
* nested attribute QCA_WLAN_VENDOR_ATTR_AFC_RESP_OPCLASS_CHAN_EIRP_INFO and
* with QCA_WLAN_VENDOR_ATTR_AFC_EVENT_OPCLASS_CHAN_LIST when
* QCA_WLAN_VENDOR_ATTR_AFC_EVENT_TYPE is
* QCA_WLAN_VENDOR_AFC_EVENT_TYPE_POWER_UPDATE_COMPLETE:
*
* The following set of attributes will be used to exchange Channel and
* corresponding EIRP information for AFC between the user space and Driver.
*/
enum qca_wlan_vendor_attr_afc_chan_eirp_info {
QCA_WLAN_VENDOR_ATTR_AFC_CHAN_EIRP_INFO_INVALID = 0,
QCA_WLAN_VENDOR_ATTR_AFC_CHAN_EIRP_INFO_CHAN_NUM = 1,
QCA_WLAN_VENDOR_ATTR_AFC_CHAN_EIRP_INFO_EIRP = 2,
QCA_WLAN_VENDOR_ATTR_AFC_CHAN_EIRP_INFO_AFTER_LAST,
QCA_WLAN_VENDOR_ATTR_AFC_CHAN_EIRP_INFO_MAX =
QCA_WLAN_VENDOR_ATTR_AFC_CHAN_EIRP_INFO_AFTER_LAST - 1,
};
/**
* enum qca_wlan_vendor_attr_afc_opclass_info: This enum is used with nested
* attributes QCA_WLAN_VENDOR_ATTR_AFC_RESP_OPCLASS_CHAN_EIRP_INFO and
* QCA_WLAN_VENDOR_ATTR_AFC_REQ_OPCLASS_CHAN_INFO to update the operating class,
* channel, and EIRP related information.
*
* @QCA_WLAN_VENDOR_ATTR_AFC_OPCLASS_INFO_OPCLASS: Required and type is u8.
* This attribute is used to indicate the operating class, as listed under
* IEEE Std 802.11-2020 Annex E Table E-4, for the queried channel list.
*
* @QCA_WLAN_VENDOR_ATTR_AFC_OPCLASS_INFO_CHAN_LIST: Array of nested attributes
* for updating the channel number and EIRP power information.
* It uses the attributes defined in
* enum qca_wlan_vendor_attr_afc_chan_eirp_info.
*
* Operating class information packing format for
* QCA_WLAN_VENDOR_ATTR_AFC_EVENT_OPCLASS_CHAN_INFO when
* QCA_WLAN_VENDOR_ATTR_AFC_EVENT_TYPE is
* QCA_WLAN_VENDOR_ATTR_AFC_EVENT_TYPE_EXPIRY.
*
* m - Total number of operating classes.
* n, j - Number of queried channels for the corresponding operating class.
*
* QCA_WLAN_VENDOR_ATTR_AFC_OPCLASS_INFO_OPCLASS[0]
* QCA_WLAN_VENDOR_ATTR_AFC_OPCLASS_INFO_CHAN_LIST[0]
* QCA_WLAN_VENDOR_ATTR_AFC_CHAN_EIRP_INFO_CHAN_NUM[0]
* .....
* QCA_WLAN_VENDOR_ATTR_AFC_CHAN_EIRP_INFO_CHAN_NUM[n - 1]
* ....
* QCA_WLAN_VENDOR_ATTR_AFC_OPCLASS_INFO_OPCLASS[m]
* QCA_WLAN_VENDOR_ATTR_AFC_OPCLASS_INFO_CHAN_LIST[m]
* QCA_WLAN_VENDOR_ATTR_AFC_CHAN_EIRP_INFO_CHAN_NUM[0]
* ....
* QCA_WLAN_VENDOR_ATTR_AFC_CHAN_EIRP_INFO_CHAN_NUM[j - 1]
*
* Operating class information packing format for
* QCA_WLAN_VENDOR_ATTR_AFC_RESP_OPCLASS_CHAN_EIRP_INFO and
* QCA_WLAN_VENDOR_ATTR_AFC_EVENT_OPCLASS_CHAN_INFO when
* QCA_WLAN_VENDOR_ATTR_AFC_EVENT_TYPE is
* QCA_WLAN_VENDOR_AFC_EVENT_TYPE_POWER_UPDATE_COMPLETE.
*
* m - Total number of operating classes.
* n, j - Number of channels for the corresponding operating class.
*
* QCA_WLAN_VENDOR_ATTR_AFC_OPCLASS_INFO_OPCLASS[0]
* QCA_WLAN_VENDOR_ATTR_AFC_OPCLASS_INFO_CHAN_LIST[0]
* QCA_WLAN_VENDOR_ATTR_AFC_CHAN_EIRP_INFO_CHAN_NUM[0]
* QCA_WLAN_VENDOR_ATTR_AFC_CHAN_EIRP_INFO_EIRP[0]
* .....
* QCA_WLAN_VENDOR_ATTR_AFC_CHAN_EIRP_INFO_CHAN_NUM[n - 1]
* QCA_WLAN_VENDOR_ATTR_AFC_CHAN_EIRP_INFO_EIRP[n - 1]
* ....
* QCA_WLAN_VENDOR_ATTR_AFC_OPCLASS_INFO_OPCLASS[m]
* QCA_WLAN_VENDOR_ATTR_AFC_OPCLASS_INFO_CHAN_LIST[m]
* QCA_WLAN_VENDOR_ATTR_AFC_CHAN_EIRP_INFO_CHAN_NUM[0]
* QCA_WLAN_VENDOR_ATTR_AFC_CHAN_EIRP_INFO_EIRP[0]
* ....
* QCA_WLAN_VENDOR_ATTR_AFC_CHAN_EIRP_INFO_CHAN_NUM[j - 1]
* QCA_WLAN_VENDOR_ATTR_AFC_CHAN_EIRP_INFO_EIRP[j - 1]
*
* The following set of attributes will be used to exchange operating class
* information for AFC between the user space and the driver.
*/
enum qca_wlan_vendor_attr_afc_opclass_info {
QCA_WLAN_VENDOR_ATTR_AFC_OPCLASS_INFO_INVALID = 0,
QCA_WLAN_VENDOR_ATTR_AFC_OPCLASS_INFO_OPCLASS = 1,
QCA_WLAN_VENDOR_ATTR_AFC_OPCLASS_INFO_CHAN_LIST = 2,
QCA_WLAN_VENDOR_ATTR_AFC_OPCLASS_INFO_AFTER_LAST,
QCA_WLAN_VENDOR_ATTR_AFC_OPCLASS_INFO_MAX =
QCA_WLAN_VENDOR_ATTR_AFC_OPCLASS_INFO_AFTER_LAST - 1,
};
/**
* enum qca_wlan_vendor_afc_event_type: Defines values for AFC event type.
* Attribute used by QCA_WLAN_VENDOR_ATTR_AFC_EVENT_TYPE attribute.
*
* @QCA_WLAN_VENDOR_AFC_EVENT_TYPE_EXPIRY: AFC expiry event sent from the
* driver to userspace in order to query the new AFC power values.
*
* @QCA_WLAN_VENDOR_AFC_EVENT_TYPE_POWER_UPDATE_COMPLETE: Power update
* complete event will be sent from the driver to userspace to indicate
* processing of the AFC response.
*
* @QCA_WLAN_VENDOR_AFC_EVENT_TYPE_PAYLOAD_RESET: AFC payload reset event
* will be sent from the driver to userspace to indicate last received
* AFC response data has been cleared on the AP due to invalid data
* in the QCA_NL80211_VENDOR_SUBCMD_AFC_RESPONSE.
*
* The following enum defines the different event types that will be
* used by the driver to help trigger corresponding AFC functionality in user
* space.
*/
enum qca_wlan_vendor_afc_event_type {
QCA_WLAN_VENDOR_AFC_EVENT_TYPE_EXPIRY = 0,
QCA_WLAN_VENDOR_AFC_EVENT_TYPE_POWER_UPDATE_COMPLETE = 1,
QCA_WLAN_VENDOR_AFC_EVENT_TYPE_PAYLOAD_RESET = 2,
};
/**
* enum qca_wlan_vendor_afc_ap_deployment_type: Defines values for AP
* deployment type.
* Attribute used by QCA_WLAN_VENDOR_ATTR_AFC_EVENT_AP_DEPLOYMENT attribute.
*
* @QCA_WLAN_VENDOR_AFC_AP_DEPLOYMENT_TYPE_UNKNOWN: Unknown AP deployment.
*
* @QCA_WLAN_VENDOR_AFC_AP_DEPLOYMENT_TYPE_INDOOR: Indoor AP deployment.
*
* @QCA_WLAN_VENDOR_AFC_AP_DEPLOYMENT_TYPE_OUTDOOR: Outdoor AP deployment.
*
* The following enum defines different deployment modes that the AP might
* come up in. This information will be essential to retrieve deployment-type
* specific SP power values for AFC operation.
*/
enum qca_wlan_vendor_afc_ap_deployment_type {
QCA_WLAN_VENDOR_AFC_AP_DEPLOYMENT_TYPE_UNKNOWN = 0,
QCA_WLAN_VENDOR_AFC_AP_DEPLOYMENT_TYPE_INDOOR = 1,
QCA_WLAN_VENDOR_AFC_AP_DEPLOYMENT_TYPE_OUTDOOR = 2,
};
/**
* enum qca_wlan_vendor_afc_evt_status_code: Defines values AP will use to
* indicate AFC response status.
* Enum used by QCA_WLAN_VENDOR_ATTR_AFC_EVENT_STATUS_CODE attribute.
*
* @QCA_WLAN_VENDOR_AFC_EVT_STATUS_CODE_SUCCESS: Success
*
* @QCA_WLAN_VENDOR_AFC_EVT_STATUS_CODE_TIMEOUT: Indicates AFC indication
* command was not received within the expected time of the AFC expiry event
* being triggered.
*
* @QCA_WLAN_VENDOR_AFC_EVT_STATUS_CODE_PARSING_ERROR: Indicates AFC data
* parsing error by the driver.
*
* @QCA_WLAN_VENDOR_AFC_EVT_STATUS_CODE_LOCAL_ERROR: Indicates any other local
* error.
*
* The following enum defines the status codes that the driver will use to
* indicate whether the AFC data is valid or not.
*/
enum qca_wlan_vendor_afc_evt_status_code {
QCA_WLAN_VENDOR_AFC_EVT_STATUS_CODE_SUCCESS = 0,
QCA_WLAN_VENDOR_AFC_EVT_STATUS_CODE_TIMEOUT = 1,
QCA_WLAN_VENDOR_AFC_EVT_STATUS_CODE_PARSING_ERROR = 2,
QCA_WLAN_VENDOR_AFC_EVT_STATUS_CODE_LOCAL_ERROR = 3,
};
/**
* enum qca_wlan_vendor_attr_afc_event: Defines attributes to be used with
* vendor event QCA_NL80211_VENDOR_SUBCMD_AFC_EVENT. These attributes will
* support sending only a single request to the user space at a time.
*
* @QCA_WLAN_VENDOR_ATTR_AFC_EVENT_TYPE: Required u8 attribute.
* Used with event to notify the type of AFC event received.
* Valid values are defined in enum qca_wlan_vendor_afc_event_type.
*
* @QCA_WLAN_VENDOR_ATTR_AFC_EVENT_AP_DEPLOYMENT: u8 attribute. Required when
* QCA_WLAN_VENDOR_ATTR_AFC_EVENT_TYPE is QCA_WLAN_VENDOR_AFC_EVENT_TYPE_EXPIRY,
* otherwise unused.
*
* This attribute is used to indicate the AP deployment type in the AFC request.
* Valid values are defined in enum qca_wlan_vendor_afc_ap_deployment_type.
*
* @QCA_WLAN_VENDOR_ATTR_AFC_EVENT_REQ_ID: Required u32 attribute.
* Unique request identifier generated by the AFC client for every
* AFC expiry event trigger. See also QCA_WLAN_VENDOR_ATTR_AFC_RESP_REQ_ID.
* The user space application is responsible for ensuring no duplicate values
* are in-flight with the server, e.g., by delaying a request, should the same
* value be received from different radios in parallel.
*
* @QCA_WLAN_VENDOR_ATTR_AFC_EVENT_AFC_WFA_VERSION: u32 attribute. Optional.
* It is used when the QCA_WLAN_VENDOR_ATTR_AFC_EVENT_TYPE is
* QCA_WLAN_VENDOR_AFC_EVENT_TYPE_EXPIRY, otherwise unused.
*
* This attribute indicates the AFC spec version information. This will
* indicate the AFC version AFC client must use to query the AFC data.
* Bits 15:0 - Minor version
* Bits 31:16 - Major version
*
* @QCA_WLAN_VENDOR_ATTR_AFC_EVENT_MIN_DES_POWER: u16 attribute. Required when
* QCA_WLAN_VENDOR_ATTR_AFC_EVENT_TYPE is QCA_WLAN_VENDOR_AFC_EVENT_TYPE_EXPIRY,
* otherwise unused.
* This attribute indicates the minimum desired power (in dBm) for
* the queried spectrum.
*
* @QCA_WLAN_VENDOR_ATTR_AFC_EVENT_STATUS_CODE: u8 attribute. Required when
* QCA_WLAN_VENDOR_ATTR_AFC_EVENT_TYPE is
* QCA_WLAN_VENDOR_AFC_EVENT_TYPE_POWER_UPDATE_COMPLETE, otherwise unused.
*
* Valid values are defined in enum qca_wlan_vendor_afc_evt_status_code.
* This attribute is used to indicate if there were any errors parsing the
* AFC response.
*
* @QCA_WLAN_VENDOR_ATTR_AFC_EVENT_SERVER_RESP_CODE: s32 attribute. Required
* when QCA_WLAN_VENDOR_ATTR_AFC_EVENT_TYPE is
* QCA_WLAN_VENDOR_AFC_EVENT_TYPE_POWER_UPDATE_COMPLETE, otherwise unused.
*
* This attribute indicates the AFC response code. The AFC response codes are
* in the following categories:
* -1: General Failure.
* 0: Success.
* 100 - 199: General errors related to protocol.
* 300 - 399: Error events specific to message exchange
* for the Available Spectrum Inquiry.
*
* @QCA_WLAN_VENDOR_ATTR_AFC_EVENT_EXP_DATE: u32 attribute. Required when
* QCA_WLAN_VENDOR_ATTR_AFC_EVENT_TYPE is
* QCA_WLAN_VENDOR_AFC_EVENT_TYPE_POWER_UPDATE_COMPLETE, otherwise unused.
*
* This attribute indicates the date until which the current response is
* valid for in UTC format.
* Date format: bits 7:0 - DD (Day 1-31)
* bits 15:8 - MM (Month 1-12)
* bits 31:16 - YYYY (Year)
*
* @QCA_WLAN_VENDOR_ATTR_AFC_EVENT_EXP_TIME: u32 attribute. Required when
* QCA_WLAN_VENDOR_ATTR_AFC_EVENT_TYPE is
* QCA_WLAN_VENDOR_AFC_EVENT_TYPE_POWER_UPDATE_COMPLETE, otherwise unused.
*
* This attribute indicates the time until which the current response is
* valid for in UTC format.
* Time format: bits 7:0 - SS (Seconds 0-59)
* bits 15:8 - MM (Minutes 0-59)
* bits 23:16 - HH (Hours 0-23)
* bits 31:24 - Reserved
*
* @QCA_WLAN_VENDOR_ATTR_AFC_EVENT_FREQ_RANGE_LIST: Array of nested attributes
* for updating the list of frequency ranges to be queried.
* Required when QCA_WLAN_VENDOR_ATTR_AFC_EVENT_TYPE is
* QCA_WLAN_VENDOR_AFC_EVENT_TYPE_EXPIRY or
* QCA_WLAN_VENDOR_AFC_EVENT_TYPE_POWER_UPDATE_COMPLETE, otherwise unused.
* It uses the attributes defined in
* enum qca_wlan_vendor_attr_afc_freq_psd_info.
*
* @QCA_WLAN_VENDOR_ATTR_AFC_EVENT_OPCLASS_CHAN_LIST: Array of nested attributes
* for updating the list of operating classes and corresponding channels to be
* queried.
* Required when QCA_WLAN_VENDOR_ATTR_AFC_EVENT_TYPE is
* QCA_WLAN_VENDOR_AFC_EVENT_TYPE_EXPIRY or
* QCA_WLAN_VENDOR_AFC_EVENT_TYPE_POWER_UPDATE_COMPLETE, otherwise unused.
* It uses the attributes defined in enum qca_wlan_vendor_attr_afc_opclass_info.
*/
enum qca_wlan_vendor_attr_afc_event {
QCA_WLAN_VENDOR_ATTR_AFC_EVENT_INVALID = 0,
QCA_WLAN_VENDOR_ATTR_AFC_EVENT_TYPE = 1,
QCA_WLAN_VENDOR_ATTR_AFC_EVENT_AP_DEPLOYMENT = 2,
QCA_WLAN_VENDOR_ATTR_AFC_EVENT_REQ_ID = 3,
QCA_WLAN_VENDOR_ATTR_AFC_EVENT_AFC_WFA_VERSION = 4,
QCA_WLAN_VENDOR_ATTR_AFC_EVENT_MIN_DES_POWER = 5,
QCA_WLAN_VENDOR_ATTR_AFC_EVENT_STATUS_CODE = 6,
QCA_WLAN_VENDOR_ATTR_AFC_EVENT_SERVER_RESP_CODE = 7,
QCA_WLAN_VENDOR_ATTR_AFC_EVENT_EXP_DATE = 8,
QCA_WLAN_VENDOR_ATTR_AFC_EVENT_EXP_TIME = 9,
QCA_WLAN_VENDOR_ATTR_AFC_EVENT_FREQ_RANGE_LIST = 10,
QCA_WLAN_VENDOR_ATTR_AFC_EVENT_OPCLASS_CHAN_LIST = 11,
QCA_WLAN_VENDOR_ATTR_AFC_EVENT_AFTER_LAST,
QCA_WLAN_VENDOR_ATTR_AFC_EVENT_MAX =
QCA_WLAN_VENDOR_ATTR_AFC_EVENT_AFTER_LAST - 1,
};
/**
* enum qca_wlan_vendor_attr_afc_response: Defines attributes to be used
* with vendor command QCA_NL80211_VENDOR_SUBCMD_AFC_RESPONSE. These attributes
* will support sending only a single AFC response to the driver at a time.
*
* @QCA_WLAN_VENDOR_ATTR_AFC_RESP_DATA: Type is NLA_STRING. Required attribute.
* This attribute will be used to send a single Spectrum Inquiry response object
* from the 'availableSpectrumInquiryResponses' array object from the response
* JSON.
*
* @QCA_WLAN_VENDOR_ATTR_AFC_RESP_TIME_TO_LIVE: Required u32 attribute.
*
* This attribute indicates the period (in seconds) for which the response
* data received is valid for.
*
* @QCA_WLAN_VENDOR_ATTR_AFC_RESP_REQ_ID: Required u32 attribute.
*
* This attribute indicates the request ID for which the corresponding
* response is being sent for. See also QCA_WLAN_VENDOR_ATTR_AFC_EVENT_REQ_ID.
*
* @QCA_WLAN_VENDOR_ATTR_AFC_RESP_EXP_DATE: Required u32 attribute.
*
* This attribute indicates the date until which the current response is
* valid for in UTC format.
* Date format: bits 7:0 - DD (Day 1-31)
* bits 15:8 - MM (Month 1-12)
* bits 31:16 - YYYY (Year)
*
* @QCA_WLAN_VENDOR_ATTR_AFC_RESP_EXP_TIME: Required u32 attribute.
*
* This attribute indicates the time until which the current response is
* valid for in UTC format.
* Time format: bits 7:0 - SS (Seconds 0-59)
* bits 15:8 - MM (Minutes 0-59)
* bits 23:16 - HH (Hours 0-23)
* bits 31:24 - Reserved
*
* @QCA_WLAN_VENDOR_ATTR_AFC_RESP_AFC_SERVER_RESP_CODE: Required s32 attribute.
*
* This attribute indicates the AFC response code. The AFC response codes are
* in the following categories:
* -1: General Failure.
* 0: Success.
* 100 - 199: General errors related to protocol.
* 300 - 399: Error events specific to message exchange
* for the Available Spectrum Inquiry.
*
* @QCA_WLAN_VENDOR_ATTR_AFC_RESP_FREQ_PSD_INFO: Array of nested attributes
* for PSD info of all the queried frequency ranges. It uses the attributes
* defined in enum qca_wlan_vendor_attr_afc_freq_psd_info. Required attribute.
*
* @QCA_WLAN_VENDOR_ATTR_AFC_RESP_OPCLASS_CHAN_EIRP_INFO: Array of nested
* attributes for EIRP info of all queried operating class/channels. It uses
* the attributes defined in enum qca_wlan_vendor_attr_afc_opclass_info and
* enum qca_wlan_vendor_attr_afc_chan_eirp_info. Required attribute.
*
*/
enum qca_wlan_vendor_attr_afc_response {
QCA_WLAN_VENDOR_ATTR_AFC_RESP_INVALID = 0,
QCA_WLAN_VENDOR_ATTR_AFC_RESP_DATA = 1,
QCA_WLAN_VENDOR_ATTR_AFC_RESP_TIME_TO_LIVE = 2,
QCA_WLAN_VENDOR_ATTR_AFC_RESP_REQ_ID = 3,
QCA_WLAN_VENDOR_ATTR_AFC_RESP_EXP_DATE = 4,
QCA_WLAN_VENDOR_ATTR_AFC_RESP_EXP_TIME = 5,
QCA_WLAN_VENDOR_ATTR_AFC_RESP_AFC_SERVER_RESP_CODE = 6,
QCA_WLAN_VENDOR_ATTR_AFC_RESP_FREQ_PSD_INFO = 7,
QCA_WLAN_VENDOR_ATTR_AFC_RESP_OPCLASS_CHAN_EIRP_INFO = 8,
QCA_WLAN_VENDOR_ATTR_AFC_RESP_AFTER_LAST,
QCA_WLAN_VENDOR_ATTR_AFC_RESP_MAX =
QCA_WLAN_VENDOR_ATTR_AFC_RESP_AFTER_LAST - 1,
};
#endif /* QCA_VENDOR_H */