qcacmn: Add support for cfr data transport mode

User sets CFR data transport mode using vendor command
QCA_NL80211_VENDOR_SUBCMD_PEER_CFR_CAPTURE_CFG. By default
CFR data transport mode is relayfs, user uses vendor command
attr QCA_WLAN_VENDOR_ATTR_PEER_CFR_DATA_TRANSPORT_MODE to set
transport mode QCA_WLAN_VENDOR_CFR_DATA_RELAY_FS or
QCA_WLAN_VENDOR_CFR_DATA_NETLINK_EVENTS.
If user sets QCA_WLAN_VENDOR_ATTR_PEER_CFR_DATA_RECEIVER_PID
attr in QCA_NL80211_VENDOR_SUBCMD_PEER_CFR_CAPTURE_CFG vendor
command then hosts uses RECEIVER_PID to send unicast NL events
for CFR data.

Change-Id: I40e896fad8af24e761fcbedeba761f4a3815f0b8
CRs-Fixed: 2952095
This commit is contained in:
Abhishek Ambure
2021-05-05 12:13:43 +05:30
committed by Madan Koyyalamudi
parent 02e119acc0
commit 7f1cabbe4d
2 changed files with 48 additions and 1 deletions

View File

@@ -314,7 +314,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.
@@ -9384,6 +9386,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
@@ -9581,6 +9599,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,
@@ -9609,6 +9648,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,