From 16d913bfd898c8b5bf87631095c51ab2920b92bc Mon Sep 17 00:00:00 2001 From: Rhythm Patwa Date: Thu, 15 Sep 2022 17:43:19 -0700 Subject: [PATCH] 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 --- src/common/qca-vendor.h | 428 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 428 insertions(+) diff --git a/src/common/qca-vendor.h b/src/common/qca-vendor.h index 2e7126a37..3b4712f8a 100644 --- a/src/common/qca-vendor.h +++ b/src/common/qca-vendor.h @@ -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 */