diff --git a/os_if/linux/qca_vendor.h b/os_if/linux/qca_vendor.h index 023d12f18a86..2bca7549e988 100644 --- a/os_if/linux/qca_vendor.h +++ b/os_if/linux/qca_vendor.h @@ -302,7 +302,9 @@ * @QCA_NL80211_VENDOR_SUBCMD_PEER_CFR_CAPTURE_CFG: This command is used to * configure parameters per peer to capture Channel Frequency Response * (CFR) and enable Periodic CFR capture. The attributes for this command - * are defined in enum qca_wlan_vendor_peer_cfr_capture_attr. + * are defined in enum qca_wlan_vendor_peer_cfr_capture_attr. This command + * can also be used to send CFR data from the driver to userspace when + * netlink events are used to send CFR data. * @QCA_NL80211_VENDOR_SUBCMD_GET_FW_STATE: Sub command to get firmware state. * The returned firmware state is specified in the attribute * QCA_WLAN_VENDOR_ATTR_FW_STATE. @@ -9134,6 +9136,22 @@ enum qca_wlan_vendor_attr_nan_params { QCA_WLAN_VENDOR_ATTR_NAN_PARAMS_AFTER_LAST - 1 }; +/** + * enum qca_wlan_vendor_cfr_data_transport_modes - Defines QCA vendor CFR data + * transport modes and is used by attribute + * QCA_WLAN_VENDOR_ATTR_PEER_CFR_DATA_TRANSPORT_MODE as part of vendor command + * QCA_NL80211_VENDOR_SUBCMD_PEER_CFR_CAPTURE_CFG. + * @QCA_WLAN_VENDOR_CFR_DATA_RELAY_FS: Use RELAY FS to send CFR data. + * @QCA_WLAN_VENDOR_CFR_DATA_NETLINK_EVENTS: Use netlink events to send CFR + * data. The data shall be encapsulated within + * QCA_WLAN_VENDOR_ATTR_PEER_CFR_RESP_DATA along withe vendor sub command + * QCA_NL80211_VENDOR_SUBCMD_PEER_CFR_CAPTURE_CFG as an asynchronous event. + */ +enum qca_wlan_vendor_cfr_data_transport_modes { + QCA_WLAN_VENDOR_CFR_DATA_RELAY_FS = 0, + QCA_WLAN_VENDOR_CFR_DATA_NETLINK_EVENTS = 1, +}; + /** * enum qca_wlan_vendor_cfr_method - QCA vendor CFR methods used by * attribute QCA_WLAN_VENDOR_ATTR_PEER_CFR_METHOD as part of vendor @@ -9331,6 +9349,27 @@ enum qca_wlan_vendor_cfr_capture_type { * IEEE 802.11(2016) 9.2.4.1.3 Type and Subtype subfields. * This is for CFR version 2 only. * + * @QCA_WLAN_VENDOR_ATTR_PEER_CFR_DATA_TRANSPORT_MODE: Optional (u8) + * Userspace can use this attribute to specify the driver about which transport + * mode shall be used by the driver to send CFR data to userspace. Uses values + * from enum qca_wlan_vendor_cfr_data_transport_modes. When this attribute is + * not present, driver shall choose the default transport mechanism which is + * QCA_WLAN_VENDOR_CFR_DATA_RELAY_FS. + * + * @QCA_WLAN_VENDOR_ATTR_PEER_CFR_DATA_RECEIVER_PID: Optional (u32) + * Userspace can use this attribute to specify the nl port id of the application + * which receives the CFR data and processes it further so that the drivers can + * unicast the NL events to a specific application. Optionally included when + * QCA_WLAN_VENDOR_ATTR_PEER_CFR_DATA_TRANSPORT_MODE is set to + * QCA_WLAN_VENDOR_CFR_DATA_NETLINK_EVENTS, not required otherwise. The drivers + * shall multicast the netlink events when this attribute is not included. + * + * @QCA_WLAN_VENDOR_ATTR_PEER_CFR_RESP_DATA: Required (NLA_BINARY). + * This attribute will be used by the driver to encapsulate and send CFR data + * to userspace along with QCA_NL80211_VENDOR_SUBCMD_PEER_CFR_CAPTURE_CFG as an + * asynchronous event when the driver is configured to send CFR data using NL + * events with %QCA_WLAN_VENDOR_CFR_DATA_NETLINK_EVENTS + * */ enum qca_wlan_vendor_peer_cfr_capture_attr { QCA_WLAN_VENDOR_ATTR_PEER_CFR_CAPTURE_INVALID = 0, @@ -9359,6 +9398,9 @@ enum qca_wlan_vendor_peer_cfr_capture_attr { QCA_WLAN_VENDOR_ATTR_PEER_CFR_GROUP_MGMT_FILTER = 23, QCA_WLAN_VENDOR_ATTR_PEER_CFR_GROUP_CTRL_FILTER = 24, QCA_WLAN_VENDOR_ATTR_PEER_CFR_GROUP_DATA_FILTER = 25, + QCA_WLAN_VENDOR_ATTR_PEER_CFR_DATA_TRANSPORT_MODE = 26, + QCA_WLAN_VENDOR_ATTR_PEER_CFR_DATA_RECEIVER_PID = 27, + QCA_WLAN_VENDOR_ATTR_PEER_CFR_RESP_DATA = 28, /* Keep last */ QCA_WLAN_VENDOR_ATTR_PEER_CFR_AFTER_LAST, diff --git a/os_if/linux/wlan_cfg80211.h b/os_if/linux/wlan_cfg80211.h index aa40b9a9e5e9..2769d7288650 100644 --- a/os_if/linux/wlan_cfg80211.h +++ b/os_if/linux/wlan_cfg80211.h @@ -138,6 +138,8 @@ * @QCA_NL80211_VENDOR_SUBCMD_WIFI_FW_STATS_INDEX: Wifi FW stats index * @QCA_NL80211_VENDOR_SUBCMD_MBSSID_TX_VDEV_STATUS_INDEX: * MBSSID TX VDEV status index + * @QCA_NL80211_VENDOR_SUBCMD_CONFIG_TWT_INDEX: TWT config index + * @QCA_NL80211_VENDOR_SUBCMD_PEER_CFR_CAPTURE_CFG_INDEX: CFR data event index */ enum qca_nl80211_vendor_subcmds_index { @@ -233,6 +235,9 @@ enum qca_nl80211_vendor_subcmds_index { #ifdef WLAN_SUPPORT_TWT QCA_NL80211_VENDOR_SUBCMD_CONFIG_TWT_INDEX, #endif +#ifdef WLAN_CFR_ENABLE + QCA_NL80211_VENDOR_SUBCMD_PEER_CFR_CAPTURE_CFG_INDEX, +#endif }; #if !defined(SUPPORT_WDEV_CFG80211_VENDOR_EVENT_ALLOC) && \