]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
Extend vendor attributes to support enhanced CFR capture
authorWu Gao <wugao@codeaurora.org>
Sun, 28 Aug 2016 02:56:33 +0000 (10:56 +0800)
committerJouni Malinen <j@w1.fi>
Mon, 23 Mar 2020 13:39:36 +0000 (15:39 +0200)
Enhanced channel frequency response supports capturing of channel status
information based on RX. Define previous CFR as version 1 and enhanced
CFR as version 2. If target supports both versions, two versions can't
be enabled at same time. Extend attributes for enhanced CFR capture in
enum qca_wlan_vendor_peer_cfr_capture_attr.

Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
src/common/qca-vendor.h

index 5d24d279d58bde238897c1629db494b914760d7c..edc8a9144c0507d33a93c9f783d580b6de200e42 100644 (file)
@@ -7422,10 +7422,40 @@ enum qca_wlan_vendor_attr_roam_scan {
  * enum qca_wlan_vendor_cfr_method - QCA vendor CFR methods used by
  * attribute QCA_WLAN_VENDOR_ATTR_PEER_CFR_METHOD as part of vendor
  * command QCA_NL80211_VENDOR_SUBCMD_PEER_CFR_CAPTURE_CFG.
+ * @QCA_WLAN_VENDOR_CFR_METHOD_QOS_NULL: CFR method using QoS Null frame
+ * @QCA_WLAN_VENDOR_CFR_QOS_NULL_WITH_PHASE: CFR method using QoS Null frame
+ * with phase
+ * @QCA_WLAN_VENDOR_CFR_PROBE_RESPONSE: CFR method using Probe Response frame
  */
 enum qca_wlan_vendor_cfr_method {
-       /* CFR method using QOS Null frame */
        QCA_WLAN_VENDOR_CFR_METHOD_QOS_NULL = 0,
+       QCA_WLAN_VENDOR_CFR_QOS_NULL_WITH_PHASE = 1,
+       QCA_WLAN_VENDOR_CFR_PROBE_RESPONSE = 2,
+};
+
+/**
+ * enum qca_wlan_vendor_cfr_capture_type - QCA vendor CFR capture type used by
+ * attribute QCA_WLAN_VENDOR_ATTR_PEER_CFR_CAPTURE_TYPE.
+ * @QCA_WLAN_VENDOR_CFR_DIRECT_FTM: Filter directed FTM ACK frames.
+ * @QCA_WLAN_VENDOR_CFR_ALL_FTM_ACK: Filter all FTM ACK frames.
+ * @QCA_WLAN_VENDOR_CFR_DIRECT_NDPA_NDP: Filter NDPA NDP directed frames.
+ * @QCA_WLAN_VENDOR_CFR_TA_RA: Filter frames based on TA/RA/Subtype which
+ * is provided by one or more of below attributes:
+ *     %QCA_WLAN_VENDOR_ATTR_PEER_CFR_GROUP_TA
+ *     %QCA_WLAN_VENDOR_ATTR_PEER_CFR_GROUP_RA
+ *     %QCA_WLAN_VENDOR_ATTR_PEER_CFR_GROUP_TA_MASK
+ *     %QCA_WLAN_VENDOR_ATTR_PEER_CFR_GROUP_RA_MASK
+ *     %QCA_WLAN_VENDOR_ATTR_PEER_CFR_GROUP_MGMT_FILTER
+ *     %QCA_WLAN_VENDOR_ATTR_PEER_CFR_GROUP_CTRL_FILTER
+ *     %QCA_WLAN_VENDOR_ATTR_PEER_CFR_GROUP_DATA_FILTER
+ * @QCA_WLAN_CFR_ALL_PACKET: Filter all packets.
+ */
+enum qca_wlan_vendor_cfr_capture_type {
+       QCA_WLAN_VENDOR_CFR_DIRECT_FTM = 0,
+       QCA_WLAN_VENDOR_CFR_ALL_FTM_ACK = 1,
+       QCA_WLAN_VENDOR_CFR_DIRECT_NDPA_NDP = 2,
+       QCA_WLAN_VENDOR_CFR_TA_RA = 3,
+       QCA_WLAN_VENDOR_CFR_ALL_PACKET = 4,
 };
 
 /**
@@ -7433,44 +7463,177 @@ enum qca_wlan_vendor_cfr_method {
  * QCA_NL80211_VENDOR_SUBCMD_PEER_CFR_CAPTURE_CFG to configure peer
  * Channel Frequency Response capture parameters and enable periodic CFR
  * capture.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_CFR_PEER_MAC_ADDR: Required (6-byte MAC address)
+ * MAC address of peer. This is for CFR version 1 only.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_PEER_CFR_ENABLE: Required (flag)
+ * Enable peer CFR capture. This attribute is mandatory to enable peer CFR
+ * capture. If this attribute is not present, peer CFR capture is disabled.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_PEER_CFR_BANDWIDTH: Required (u8)
+ * BW of measurement, attribute uses the values in enum nl80211_chan_width
+ * Supported values: 20, 40, 80, 80+80, 160.
+ * Note that all targets may not support all bandwidths.
+ * This attribute is mandatory for version 1 if attribute
+ * QCA_WLAN_VENDOR_ATTR_PEER_CFR_ENABLE is used.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_PEER_CFR_PERIODICITY: Required (u32)
+ * Periodicity of CFR measurement in milliseconds.
+ * Periodicity should be a multiple of Base timer.
+ * Current Base timer value supported is 10 milliseconds (default).
+ * 0 for one shot capture.
+ * This attribute is mandatory for version 1 if attribute
+ * QCA_WLAN_VENDOR_ATTR_PEER_CFR_ENABLE is used.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_PEER_CFR_METHOD: Required (u8)
+ * Method used to capture Channel Frequency Response.
+ * Attribute uses the values defined in enum qca_wlan_vendor_cfr_method.
+ * This attribute is mandatory for version 1 if attribute
+ * QCA_WLAN_VENDOR_ATTR_PEER_CFR_ENABLE is used.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_PERIODIC_CFR_CAPTURE_ENABLE: Required (flag)
+ * Enable periodic CFR capture.
+ * This attribute is mandatory for version 1 to enable Periodic CFR capture.
+ * If this attribute is not present, periodic CFR capture is disabled.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_PEER_CFR_VERSION: Required (u8)
+ * Value is 1 or 2 since there are two versions of CFR capture. Two versions
+ * can't be enabled at same time. This attribute is mandatory if target
+ * support both versions and use one of them.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_PEER_CFR_ENABLE_GROUP_BITMAP: Required (u32)
+ * This attribute is mandatory for version 2 if
+ * QCA_WLAN_VENDOR_ATTR_PEER_CFR_GROUP_ENTRY is used.
+ * Bits 15:0 bitfield indicates which group is to be enabled.
+ * Bits 31:16 Reserved for future use.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_PEER_CFR_DURATION: Optional (u32)
+ * CFR capture duration in microsecond. This attribute is mandatory for
+ * version 2 if attribute QCA_WLAN_VENDOR_ATTR_PEER_CFR_INTERVAL is used.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_PEER_CFR_INTERVAL: Optional (u32)
+ * CFR capture interval in microsecond. This attribute is mandatory for
+ * version 2 if attribute QCA_WLAN_VENDOR_ATTR_PEER_CFR_DURATION is used.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_PEER_CFR_CAPTURE_TYPE: Required (u32)
+ * CFR capture type is defined in enum qca_wlan_vendor_cfr_capture_type.
+ * This attribute is mandatory for version 2.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_PEER_CFR_UL_MU_MASK: Optional (u64)
+ * Bitfield indicating which user in the current UL MU transmissions are
+ * enabled for CFR capture. Bits 36 to 0 indicate user indexes for 37 users in
+ * a UL MU transmission. If bit 0 is set, the CFR capture will happen for user
+ * index 0 in the current UL MU transmission. If bits 0 and 2 are set, CFR
+ * capture for UL MU TX corresponds to user indices 0 and 2. Bits 63:37 are
+ * reserved for future use. This is for CFR version 2 only.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_PEER_CFR_FREEZE_TLV_DELAY_COUNT: Optional (u32)
+ * Indicates the number of consecutive RX frames to be skipped before CFR
+ * capture is enabled again. This is for CFR version 2 only.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_PEER_CFR_GROUP_TABLE: Nested attribute containing
+ * one or more %QCA_WLAN_VENDOR_ATTR_PEER_CFR_GROUP_ENTRY attributes.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_PEER_CFR_GROUP_ENTRY: Nested attribute containing
+ * the following group attributes:
+ *     %QCA_WLAN_VENDOR_ATTR_PEER_CFR_GROUP_NUMBER,
+ *     %QCA_WLAN_VENDOR_ATTR_PEER_CFR_GROUP_TA,
+ *     %QCA_WLAN_VENDOR_ATTR_PEER_CFR_GROUP_RA,
+ *     %QCA_WLAN_VENDOR_ATTR_PEER_CFR_GROUP_TA_MASK,
+ *     %QCA_WLAN_VENDOR_ATTR_PEER_CFR_GROUP_RA_MASK,
+ *     %QCA_WLAN_VENDOR_ATTR_PEER_CFR_GROUP_NSS,
+ *     %QCA_WLAN_VENDOR_ATTR_PEER_CFR_GROUP_BW,
+ *     %QCA_WLAN_VENDOR_ATTR_PEER_CFR_GROUP_MGMT_FILTER,
+ *     %QCA_WLAN_VENDOR_ATTR_PEER_CFR_GROUP_CTRL_FILTER,
+ *     %QCA_WLAN_VENDOR_ATTR_PEER_CFR_GROUP_DATA_FILTER
+ *
+ * @QCA_WLAN_VENDOR_ATTR_PEER_CFR_GROUP_NUMBER: Required (u32)
+ * Target supports multiple groups for some configurations. The group number
+ * can be any value between 0 and 15. This is for CFR version 2 only.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_PEER_CFR_GROUP_TA: Optional (6-byte MAC address)
+ * Transmitter address which is used to filter frames. This MAC address takes
+ * effect with QCA_WLAN_VENDOR_ATTR_PEER_CFR_GROUP_TA_MASK. This is for CFR
+ * version 2 only.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_PEER_CFR_GROUP_RA: Optional (6-byte MAC address)
+ * Receiver address which is used to filter frames. This MAC address takes
+ * effect with QCA_WLAN_VENDOR_ATTR_PEER_CFR_GROUP_RA_MASK. This is for CFR
+ * version 2 only.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_PEER_CFR_GROUP_TA_MASK: Optional (6-byte MAC address)
+ * Mask of transmitter address which is used to filter frames. This is for CFR
+ * version 2 only.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_PEER_CFR_GROUP_RA_MASK: Optional (6-byte MAC address)
+ * Mask of receiver address which is used to filter frames. This is for CFR
+ * version 2 only.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_PEER_CFR_GROUP_NSS: Optional (u32)
+ * Indicates frames with a specific NSS will be filtered for CFR capture.
+ * This is for CFR version 2 only. This is a bitmask. Bits 7:0 request CFR
+ * capture to be done for frames matching the NSS specified within this bitmask.
+ * Bits 31:8 are reserved for future use. Bits 7:0 map to NSS:
+ *     bit 0 : NSS 1
+ *     bit 1 : NSS 2
+ *     ...
+ *     bit 7 : NSS 8
+ *
+ * @QCA_WLAN_VENDOR_ATTR_PEER_CFR_GROUP_BW: Optional (u32)
+ * Indicates frames with a specific bandwidth will be filtered for CFR capture.
+ * This is for CFR version 2 only. This is a bitmask. Bits 4:0 request CFR
+ * capture to be done for frames matching the bandwidths specified within this
+ * bitmask. Bits 31:5 are reserved for future use. Bits 4:0 map to bandwidth
+ * numerated in enum nl80211_band (although not all bands may be supported
+ * by a given device).
+ *
+ * @QCA_WLAN_VENDOR_ATTR_PEER_CFR_GROUP_MGMT_FILTER: Optional (u32)
+ * Management frames matching the subtype filter categories will be filtered in
+ * by MAC for CFR capture. This is a bitmask in which each bit represents the
+ * corresponding Management frame subtype value per IEEE Std 802.11-2016,
+ * 9.2.4.1.3 Type and Subtype subfields. For example, Beacon frame control type
+ * is 8 and its value is 1 << 8 = 0x100. This is for CFR version 2 only.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_PEER_CFR_GROUP_CTRL_FILTER: Optional (u32)
+ * Control frames matching the subtype filter categories will be filtered in by
+ * MAC for CFR capture. This is a bitmask in which each bit represents the
+ * corresponding Control frame subtype value per IEEE Std 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_GROUP_DATA_FILTER: Optional (u32)
+ * Data frames matching the subtype filter categories will be filtered in by
+ * MAC for CFR capture. This is a bitmask in which each bit represents the
+ * corresponding Data frame subtype value per IEEE Std 802.11-2016,
+ * 9.2.4.1.3 Type and Subtype subfields. This is for CFR version 2 only.
  */
 enum qca_wlan_vendor_peer_cfr_capture_attr {
        QCA_WLAN_VENDOR_ATTR_PEER_CFR_CAPTURE_INVALID = 0,
-       /* 6-byte MAC address of the peer.
-        * This attribute is mandatory.
-        */
        QCA_WLAN_VENDOR_ATTR_CFR_PEER_MAC_ADDR = 1,
-       /* Enable peer CFR Capture, flag attribute.
-        * This attribute is mandatory to enable peer CFR capture.
-        * If this attribute is not present, peer CFR capture is disabled.
-        */
        QCA_WLAN_VENDOR_ATTR_PEER_CFR_ENABLE = 2,
-       /* BW of measurement, attribute uses the values in enum nl80211_chan_width
-        * Supported values: 20, 40, 80, 80+80, 160.
-        * Note that all targets may not support all bandwidths.
-        * u8 attribute. This attribute is mandatory if attribute
-        * QCA_WLAN_VENDOR_ATTR_PEER_CFR_ENABLE is used.
-        */
        QCA_WLAN_VENDOR_ATTR_PEER_CFR_BANDWIDTH = 3,
-       /* Periodicity of CFR measurement in msec.
-        * Periodicity should be a multiple of Base timer.
-        * Current Base timer value supported is 10 msecs (default).
-        * 0 for one shot capture. u32 attribute.
-        * This attribute is mandatory if attribute
-        * QCA_WLAN_VENDOR_ATTR_PEER_CFR_ENABLE is used.
-        */
        QCA_WLAN_VENDOR_ATTR_PEER_CFR_PERIODICITY = 4,
-       /* Method used to capture Channel Frequency Response.
-        * Attribute uses the values defined in enum qca_wlan_vendor_cfr_method.
-        * u8 attribute. This attribute is mandatory if attribute
-        * QCA_WLAN_VENDOR_ATTR_PEER_CFR_ENABLE is used.
-        */
        QCA_WLAN_VENDOR_ATTR_PEER_CFR_METHOD = 5,
-       /* Enable periodic CFR capture, flag attribute.
-        * This attribute is mandatory to enable Periodic CFR capture.
-        * If this attribute is not present, periodic CFR capture is disabled.
-        */
        QCA_WLAN_VENDOR_ATTR_PERIODIC_CFR_CAPTURE_ENABLE = 6,
+       QCA_WLAN_VENDOR_ATTR_PEER_CFR_VERSION = 7,
+       QCA_WLAN_VENDOR_ATTR_PEER_CFR_ENABLE_GROUP_BITMAP = 8,
+       QCA_WLAN_VENDOR_ATTR_PEER_CFR_DURATION = 9,
+       QCA_WLAN_VENDOR_ATTR_PEER_CFR_INTERVAL = 10,
+       QCA_WLAN_VENDOR_ATTR_PEER_CFR_CAPTURE_TYPE = 11,
+       QCA_WLAN_VENDOR_ATTR_PEER_CFR_UL_MU_MASK = 12,
+       QCA_WLAN_VENDOR_ATTR_PEER_CFR_FREEZE_TLV_DELAY_COUNT = 13,
+       QCA_WLAN_VENDOR_ATTR_PEER_CFR_GROUP_TABLE = 14,
+       QCA_WLAN_VENDOR_ATTR_PEER_CFR_GROUP_ENTRY = 15,
+       QCA_WLAN_VENDOR_ATTR_PEER_CFR_GROUP_NUMBER = 16,
+       QCA_WLAN_VENDOR_ATTR_PEER_CFR_GROUP_TA = 17,
+       QCA_WLAN_VENDOR_ATTR_PEER_CFR_GROUP_RA = 18,
+       QCA_WLAN_VENDOR_ATTR_PEER_CFR_GROUP_TA_MASK = 19,
+       QCA_WLAN_VENDOR_ATTR_PEER_CFR_GROUP_RA_MASK = 20,
+       QCA_WLAN_VENDOR_ATTR_PEER_CFR_GROUP_NSS = 21,
+       QCA_WLAN_VENDOR_ATTR_PEER_CFR_GROUP_BW = 22,
+       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,
 
        /* Keep last */
        QCA_WLAN_VENDOR_ATTR_PEER_CFR_AFTER_LAST,