Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3946d9e9 authored by Abhishek Ambure's avatar Abhishek Ambure Committed by Madan Koyyalamudi
Browse files

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: 2952095c
parent 4a070e1f
Loading
Loading
Loading
Loading
+43 −1
Original line number Diff line number Diff line
@@ -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,
+5 −0
Original line number Diff line number Diff line
@@ -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) && \