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

Commit 5a3e18b6 authored by Balaji Pothunoori's avatar Balaji Pothunoori Committed by Gerrit - the friendly Code Review server
Browse files

qcacmn: add vendor command to configure the parameters for monitor mode

Add new vendor command to configure monitor mode packet filter
parameters which includes data/mgmt/ctrl frame types.

Change-Id: Ie5e5d35b725e3d1b617edc1c889dc269b22a3673
CRs-Fixed: 3025489
parent 2f09f258
Loading
Loading
Loading
Loading
+134 −0
Original line number Diff line number Diff line
@@ -475,6 +475,29 @@
 *	configurations, concurrency combinations, etc. The attributes used
 *	with this command are defined in
 *	enum qca_wlan_vendor_attr_usable_channels.
 *
 * @QCA_NL80211_VENDOR_SUBCMD_SET_MONITOR_MODE: This vendor subcommand is used
 *     to set packet monitor mode that aims to send the specified set of TX and
 *     RX frames on the current client interface to an active monitor interface.
 *     If this Monitor mode is set, the driver will send the configured frames,
 *     from the interface on which the command is issued, to an active monitor
 *     interface. The attributes used with this command are defined in
 *     enum qca_wlan_vendor_attr_set_monitor_mode.
 *
 *     Though the monitor mode is configured for the respective data/mgmt/ctrl
 *     frames, it is up to the respective WLAN driver/firmware/hardware designs
 *     to consider the possibility of sending these frames over the monitor
 *     interface. For example, the control frames are handled with in the
 *     hardware and thus passing such frames over the monitor interface is left
 *     to the respective designs.
 *
 *     Also, this monitor mode is governed to behave accordingly in suspend/resume
 *     states. If the firmware handles any of such frames in suspend state without
 *     waking up the host and if the monitor mode is configured to notify all such
 *     frames, then the firmware is expected to resume the host and forward the
 *     respective frames to the monitor interface. Please note that such a request
 *     to get the frames over the monitor interface will have a definite power
 *     implications.
 */

enum qca_nl80211_vendor_subcmds {
@@ -708,6 +731,7 @@ enum qca_nl80211_vendor_subcmds {
	QCA_NL80211_VENDOR_SUBCMD_MBSSID_TX_VDEV_STATUS = 196,
	QCA_NL80211_VENDOR_SUBCMD_CONCURRENT_MULTI_STA_POLICY = 197,
	QCA_NL80211_VENDOR_SUBCMD_USABLE_CHANNELS = 198,
	QCA_NL80211_VENDOR_SUBCMD_SET_MONITOR_MODE = 202,
};

enum qca_wlan_vendor_tos {
@@ -11014,4 +11038,114 @@ enum qca_wlan_vendor_attr_usable_channels {
	QCA_WLAN_VENDOR_ATTR_USABLE_CHANNELS_AFTER_LAST - 1,
};

/**
 * qca_wlan_vendor_monitor_data_frame_type - Represent the various
 * data types to be sent over the monitor interface.
 */
enum qca_wlan_vendor_monitor_data_frame_type {
	QCA_WLAN_VENDOR_MONITOR_DATA_FRAME_TYPE_ALL = BIT(0),
	/* valid only if QCA_WLAN_VENDOR_MONITOR_DATA_FRAME_TYPE_ALL is not set */
	QCA_WLAN_VENDOR_MONITOR_DATA_FRAME_TYPE_ARP = BIT(1),
	QCA_WLAN_VENDOR_MONITOR_DATA_FRAME_TYPE_DHCPV4 = BIT(2),
	QCA_WLAN_VENDOR_MONITOR_DATA_FRAME_TYPE_DHCPV6 = BIT(3),
	QCA_WLAN_VENDOR_MONITOR_DATA_FRAME_TYPE_EAPOL = BIT(4),
	QCA_WLAN_VENDOR_MONITOR_DATA_FRAME_TYPE_DNSV4 = BIT(5),
	QCA_WLAN_VENDOR_MONITOR_DATA_FRAME_TYPE_DNSV6 = BIT(6),
	QCA_WLAN_VENDOR_MONITOR_DATA_FRAME_TYPE_TCP_SYN = BIT(7),
	QCA_WLAN_VENDOR_MONITOR_DATA_FRAME_TYPE_TCP_SYNACK = BIT(8),
	QCA_WLAN_VENDOR_MONITOR_DATA_FRAME_TYPE_TCP_FIN = BIT(9),
	QCA_WLAN_VENDOR_MONITOR_DATA_FRAME_TYPE_TCP_FINACK = BIT(10),
	QCA_WLAN_VENDOR_MONITOR_DATA_FRAME_TYPE_TCP_ACK = BIT(11),
	QCA_WLAN_VENDOR_MONITOR_DATA_FRAME_TYPE_TCP_RST = BIT(12),
	QCA_WLAN_VENDOR_MONITOR_DATA_FRAME_TYPE_ICMPV4 = BIT(13),
	QCA_WLAN_VENDOR_MONITOR_DATA_FRAME_TYPE_ICMPV6 = BIT(14),
	QCA_WLAN_VENDOR_MONITOR_DATA_FRAME_TYPE_RTP = BIT(15),
	QCA_WLAN_VENDOR_MONITOR_DATA_FRAME_TYPE_SIP = BIT(16),
	QCA_WLAN_VENDOR_MONITOR_DATA_FRAME_QOS_NULL = BIT(17),
};

/**
 * qca_wlan_vendor_monitor_mgmt_frame_type - Represent the various
 * mgmt types to be sent over the monitor interface.
 * @QCA_WLAN_VENDOR_MONITOR_MGMT_FRAME_TYPE_ALL: All the MGMT Frames.
 * @QCA_WLAN_VENDOR_MONITOR_MGMT_CONNECT_NO_BEACON: All the MGMT Frames
 * except the Beacons. Valid only in the Connect state.
 * @QCA_WLAN_VENDOR_MONITOR_MGMT_CONNECT_BEACON: Only the connected
 * BSSID Beacons. Valid only in the Connect state.
 * @QCA_WLAN_VENDOR_MONITOR_MGMT_CONNECT_SCAN_BEACON: Represents
 * the Beacons obtained during the scan (off channel and connected channel)
 * when in connected state.
 */

enum qca_wlan_vendor_monitor_mgmt_frame_type {
	QCA_WLAN_VENDOR_MONITOR_MGMT_FRAME_TYPE_ALL = BIT(0),
	/* valid only if QCA_WLAN_VENDOR_MONITOR_MGMT_FRAME_TYPE_ALL is not set */
	QCA_WLAN_VENDOR_MONITOR_MGMT_CONNECT_NO_BEACON = BIT(1),
	QCA_WLAN_VENDOR_MONITOR_MGMT_CONNECT_BEACON = BIT(2),
	QCA_WLAN_VENDOR_MONITOR_MGMT_CONNECT_SCAN_BEACON = BIT(3),
};

/**
 * qca_wlan_vendor_monitor_ctrl_frame_type - Represent the various
 * ctrl types to be sent over the monitor interface.
 * @QCA_WLAN_VENDOR_MONITOR_CTRL_FRAME_TYPE_ALL: All the ctrl Frames.
 * @QCA_WLAN_VENDOR_MONITOR_CTRL_TRIGGER_FRAME: Trigger Frame.
 */
enum qca_wlan_vendor_monitor_ctrl_frame_type {
	QCA_WLAN_VENDOR_MONITOR_CTRL_FRAME_TYPE_ALL = BIT(0),
	/* valid only if QCA_WLAN_VENDOR_MONITOR_CTRL_FRAME_TYPE_ALL is not set */
	QCA_WLAN_VENDOR_MONITOR_CTRL_TRIGGER_FRAME = BIT(1),
};

/**
 * enum qca_wlan_vendor_attr_set_monitor_mode - Used by the
 * vendor command QCA_NL80211_VENDOR_SUBCMD_SET_MONITOR_MODE to set the
 * monitor mode.
 *
 * @QCA_WLAN_VENDOR_ATTR_SET_MONITOR_MODE_DATA_TX_FRAME_TYPE: u32 attribute,
 * Represents the tx data packet type to be monitored (u32). These data packets
 * are represented by enum qca_wlan_vendor_monitor_data_frame_type.
 *
 * @QCA_WLAN_VENDOR_ATTR_SET_MONITOR_MODE_DATA_RX_FRAME_TYPE: u32 attribute,
 * Represents the tx data packet type to be monitored (u32). These data packets
 * are represented by enum qca_wlan_vendor_monitor_data_frame_type.
 *
 * @QCA_WLAN_VENDOR_ATTR_SET_MONITOR_MODE_MGMT_TX_FRAME_TYPE: u32 attribute,
 * Represents the tx data packet type to be monitored (u32). These mgmt packets
 * are represented by enum qca_wlan_vendor_monitor_mgmt_frame_type.
 *
 * @QCA_WLAN_VENDOR_ATTR_SET_MONITOR_MODE_MGMT_RX_FRAME_TYPE: u32 attribute,
 * Represents the tx data packet type to be monitored (u32). These mgmt packets
 * are represented by enum qca_wlan_vendor_monitor_mgmt_frame_type.
 *
 * @QCA_WLAN_VENDOR_ATTR_SET_MONITOR_MODE_CTRL_TX_FRAME_TYPE: u32 attribute,
 * Represents the tx data packet type to be monitored (u32). These ctrl packets
 * are represented by enum qca_wlan_vendor_monitor_ctrl_frame_type.
 *
 * @QCA_WLAN_VENDOR_ATTR_SET_MONITOR_MODE_CTRL_RX_FRAME_TYPE: u32 attribute,
 * Represents the tx data packet type to be monitored (u32). These ctrl packets
 * are represented by enum qca_wlan_vendor_monitor_ctrl_frame_type.
 *
 * @QCA_WLAN_VENDOR_ATTR_SET_MONITOR_MODE_CONNECTED_BEACON_INTERVAL: u32 attribute,
 * An interval only for the connected beacon interval, which expects that the
 * connected BSSID's beacons shall be sent on the monitor interface only on this
 * specific interval.
 */
enum qca_wlan_vendor_attr_set_monitor_mode {
	QCA_WLAN_VENDOR_ATTR_SET_MONITOR_MODE_INVALID = 0,
	QCA_WLAN_VENDOR_ATTR_SET_MONITOR_MODE_DATA_TX_FRAME_TYPE = 1,
	QCA_WLAN_VENDOR_ATTR_SET_MONITOR_MODE_DATA_RX_FRAME_TYPE = 2,
	QCA_WLAN_VENDOR_ATTR_SET_MONITOR_MODE_MGMT_TX_FRAME_TYPE = 3,
	QCA_WLAN_VENDOR_ATTR_SET_MONITOR_MODE_MGMT_RX_FRAME_TYPE = 4,
	QCA_WLAN_VENDOR_ATTR_SET_MONITOR_MODE_CTRL_TX_FRAME_TYPE = 5,
	QCA_WLAN_VENDOR_ATTR_SET_MONITOR_MODE_CTRL_RX_FRAME_TYPE = 6,
	QCA_WLAN_VENDOR_ATTR_SET_MONITOR_MODE_CONNECTED_BEACON_INTERVAL = 7,

	/* keep last */
	QCA_WLAN_VENDOR_ATTR_SET_MONITOR_MODE_AFTER_LAST,
	QCA_WLAN_VENDOR_ATTR_SET_MONITOR_MODE_MAX =
		QCA_WLAN_VENDOR_ATTR_SET_MONITOR_MODE_AFTER_LAST - 1,

};

#endif