|
@@ -93,6 +93,18 @@
|
|
|
|
|
|
#define STREAMFS_NUM_SUBBUF_PINE 255
|
|
#define STREAMFS_NUM_SUBBUF_PINE 255
|
|
|
|
|
|
|
|
+/* enum macrx_freeze_tlv_version: Reported by uCode in enh_dma_header
|
|
|
|
+ * MACRX_FREEZE_TLV_VERSION_1: Single MU UL user info reported by MAC
|
|
|
|
+ * MACRX_FREEZE_TLV_VERSION_2: Upto 4 MU UL user info reported by MAC
|
|
|
|
+ * MACRX_FREEZE_TLV_VERSION_3: Upto 37 MU UL user info reported by MAC
|
|
|
|
+ */
|
|
|
|
+enum macrx_freeze_tlv_version {
|
|
|
|
+ MACRX_FREEZE_TLV_VERSION_1 = 1,
|
|
|
|
+ MACRX_FREEZE_TLV_VERSION_2 = 2,
|
|
|
|
+ MACRX_FREEZE_TLV_VERSION_3 = 3,
|
|
|
|
+ MACRX_FREEZE_TLV_VERSION_MAX
|
|
|
|
+};
|
|
|
|
+
|
|
/*
|
|
/*
|
|
* @tag: ucode fills this with 0xBA
|
|
* @tag: ucode fills this with 0xBA
|
|
*
|
|
*
|
|
@@ -169,6 +181,11 @@
|
|
* @freeze_data_incl: Indicates whether CFR header contains
|
|
* @freeze_data_incl: Indicates whether CFR header contains
|
|
* MACRX_FREEZE_CAPTURE_CHANNEL TLV
|
|
* MACRX_FREEZE_CAPTURE_CHANNEL TLV
|
|
*
|
|
*
|
|
|
|
+ * @freeze_tlv_version: Indicates the version of freeze_tlv
|
|
|
|
+ * 1 - HSP, Cypress
|
|
|
|
+ * 2 - Maple/Spruce/Moselle
|
|
|
|
+ * 3 - Pine
|
|
|
|
+ *
|
|
* @decimation_factor: FFT bins decimation
|
|
* @decimation_factor: FFT bins decimation
|
|
* @mu_rx_num_users: Number of users in UL-MU-PPDU
|
|
* @mu_rx_num_users: Number of users in UL-MU-PPDU
|
|
*/
|
|
*/
|
|
@@ -191,21 +208,95 @@ struct whal_cfir_enhanced_hdr {
|
|
|
|
|
|
uint16_t total_bytes;
|
|
uint16_t total_bytes;
|
|
|
|
|
|
- uint16_t header_version :4,
|
|
|
|
- target_id :4,
|
|
|
|
- cfr_fmt :1,
|
|
|
|
- rsvd2 :1,
|
|
|
|
- mu_rx_data_incl :1,
|
|
|
|
- freeze_data_incl:1,
|
|
|
|
- rsvd3 :4;
|
|
|
|
|
|
+ uint16_t header_version :4,
|
|
|
|
+ target_id :4,
|
|
|
|
+ cfr_fmt :1,
|
|
|
|
+ rsvd2 :1,
|
|
|
|
+ mu_rx_data_incl :1,
|
|
|
|
+ freeze_data_incl :1,
|
|
|
|
+ freeze_tlv_version :4;
|
|
|
|
|
|
uint16_t mu_rx_num_users :8,
|
|
uint16_t mu_rx_num_users :8,
|
|
decimation_factor :4,
|
|
decimation_factor :4,
|
|
- rsvd4 :4;
|
|
|
|
|
|
+ rsvd3 :4;
|
|
|
|
|
|
- uint16_t rsvd5;
|
|
|
|
|
|
+ uint16_t rsvd4;
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+/*
|
|
|
|
+ * freeze_tlv v1/v2 used by Hastings/Cypress/Maple/Spruce/Moselle supports upto
|
|
|
|
+ * 4 UL MU users
|
|
|
|
+ *
|
|
|
|
+ * @freeze:
|
|
|
|
+ * 0: Allow channel capture
|
|
|
|
+ * 1: Freeze channel capture
|
|
|
|
+ *
|
|
|
|
+ * @capture_reason: Field only valid when the freeze field is 1. Indicates why
|
|
|
|
+ * the MAC asked to capture the channel
|
|
|
|
+ * 0: freeze_reason_TM
|
|
|
|
+ * 1: freeze_reason_FTM
|
|
|
|
+ * 2: freeze_reason_ACK_resp_to_TM_FTM
|
|
|
|
+ * 3: freeze_reason_TA_RA_TYPE_FILTER
|
|
|
|
+ * 4: freeze readon NDP_NDP
|
|
|
|
+ * 5: freeze_reason_ALL_PACKET
|
|
|
|
+ *
|
|
|
|
+ * @packet_type: Packet type of captured packets.
|
|
|
|
+ * 0: Management
|
|
|
|
+ * 1: Control
|
|
|
|
+ * 2: Data
|
|
|
|
+ * 3: Extension
|
|
|
|
+ *
|
|
|
|
+ * @packet_sub_type: packet subtype of the captured packets.
|
|
|
|
+ * @sw_peer_id_valid: It is valid only when the freeze field is set to 1.
|
|
|
|
+ * 0: no TA address search on the received frame has been
|
|
|
|
+ * performed. This is due to the frame not having a TA address
|
|
|
|
+ * (like ACK frame), or the received frame being from an other
|
|
|
|
+ * AP to which this device is not associated.
|
|
|
|
+ * 1: field sw_peer_id will contain valid information.
|
|
|
|
+ * This implies that a (successful) address search has been
|
|
|
|
+ * performed on the TA address of the received frame.
|
|
|
|
+ *
|
|
|
|
+ * @sw_peer_id: Valid only when sw_peer_id_valid field is set. It is an
|
|
|
|
+ * identifier that allows SW to double check that the CSI info stored belongs
|
|
|
|
+ * to the device with this SW identifier.
|
|
|
|
+ *
|
|
|
|
+ * @phy_ppdu_id: ppdu_id of ppdu which has channel capture performed. Field
|
|
|
|
+ * only valid when the freeze field is set to 1.
|
|
|
|
+ *
|
|
|
|
+ * @packet_ta_lower_16: Packet’s lower 16bits transmit address in MAC header.
|
|
|
|
+ *
|
|
|
|
+ * @packet_ta_mid_16: Packet’s middle 16bits transmit address in MAC header.
|
|
|
|
+ *
|
|
|
|
+ * @packet_ta_upper_16: Packet’s upper 16bits transmit address in MAC header.
|
|
|
|
+ *
|
|
|
|
+ * @packet_ra_lower_16: Packet’s lower 16bits receive address in MAC header.
|
|
|
|
+ *
|
|
|
|
+ * @packet_ra_mid_16: Packet’s middle 16bits receive address in MAC header.
|
|
|
|
+ *
|
|
|
|
+ * @packet_ra_upper_16: Packet’s upper 16bits receive address in MAC header.
|
|
|
|
+ *
|
|
|
|
+ * @tsf_timestamp_15_0: MAC side 64bit TSF timestamp when this TLV is sent to
|
|
|
|
+ * PHY. Bits [15:0].
|
|
|
|
+ *
|
|
|
|
+ * @tsf_timestamp_31_16: MAC side 64bit TSF timestamp when this TLV is sent to
|
|
|
|
+ * PHY. Bits [31:16].
|
|
|
|
+ *
|
|
|
|
+ * @tsf_timestamp_47_32: MAC side 64bit TSF timestamp when this TLV is sent to
|
|
|
|
+ * PHY. Bits [47:32].
|
|
|
|
+ *
|
|
|
|
+ * @tsf_timestamp_63_48: MAC side 64bit TSF timestamp when this TLV is sent to
|
|
|
|
+ * PHY. Bits [63:48].
|
|
|
|
+ *
|
|
|
|
+ * @user_index_or_user_mask_5_0: When freeze_tlv_version is 1, this field from
|
|
|
|
+ * MAC, indicate to PHY which user's channel information need to be uploaded.
|
|
|
|
+ * When freeze_tlv_version is 2 & MU_SUPPORT_IN_TLV is 1, this field indicates
|
|
|
|
+ * bitmap of users upto 4 to which channel capture need to be uploaded. And if
|
|
|
|
+ * freeze_tlv_version is 2 & MU_SUPPORT_IN_TLV is 0, this field indicate to PHY
|
|
|
|
+ * which user's channel information need to be uploaded
|
|
|
|
+ *
|
|
|
|
+ * @directed: Indicate the frame is directed to us or not when NDPA/NDP capture
|
|
|
|
+ * or FTM/TM/ACK capture. 1=directed. For other modes, it is 0.
|
|
|
|
+ */
|
|
struct macrx_freeze_capture_channel {
|
|
struct macrx_freeze_capture_channel {
|
|
uint16_t freeze : 1, //[0]
|
|
uint16_t freeze : 1, //[0]
|
|
capture_reason : 3, //[3:1]
|
|
capture_reason : 3, //[3:1]
|
|
@@ -230,7 +321,83 @@ struct macrx_freeze_capture_channel {
|
|
reserved_13 : 9; //[15:7]
|
|
reserved_13 : 9; //[15:7]
|
|
};
|
|
};
|
|
|
|
|
|
-struct macrx_freeze_capture_channel_v2 {
|
|
|
|
|
|
+/*
|
|
|
|
+ * freeze_tlv v3 used by Pine
|
|
|
|
+ *
|
|
|
|
+ * @freeze:
|
|
|
|
+ * 0: Allow channel capture
|
|
|
|
+ * 1: Freeze channel capture
|
|
|
|
+ *
|
|
|
|
+ * @capture_reason: Field only valid when the freeze field is 1. Indicates why
|
|
|
|
+ * the MAC asked to capture the channel
|
|
|
|
+ * 0: freeze_reason_TM
|
|
|
|
+ * 1: freeze_reason_FTM
|
|
|
|
+ * 2: freeze_reason_ACK_resp_to_TM_FTM
|
|
|
|
+ * 3: freeze_reason_TA_RA_TYPE_FILTER
|
|
|
|
+ * 4: freeze readon NDP_NDP
|
|
|
|
+ * 5: freeze_reason_ALL_PACKET
|
|
|
|
+ *
|
|
|
|
+ * @packet_type: Packet type of captured packets.
|
|
|
|
+ * 0: Management
|
|
|
|
+ * 1: Control
|
|
|
|
+ * 2: Data
|
|
|
|
+ * 3: Extension
|
|
|
|
+ *
|
|
|
|
+ * @packet_sub_type: packet subtype of the captured packets.
|
|
|
|
+ *
|
|
|
|
+ * @directed: Indicate the frame is directed to us or not when NDPA/NDP capture
|
|
|
|
+ * or FTM/TM/ACK capture. 1=directed. For other modes, it is 0.
|
|
|
|
+ *
|
|
|
|
+ * @sw_peer_id_valid: It is valid only when the freeze field is set to 1.
|
|
|
|
+ * 0: no TA address search on the received frame has been
|
|
|
|
+ * performed. This is due to the frame not having a TA address
|
|
|
|
+ * (like ACK frame), or the received frame being from an other
|
|
|
|
+ * AP to which this device is not associated.
|
|
|
|
+ * 1: field sw_peer_id will contain valid information.
|
|
|
|
+ * This implies that a (successful) address search has been
|
|
|
|
+ * performed on the TA address of the received frame.
|
|
|
|
+ *
|
|
|
|
+ * @sw_peer_id: Valid only when sw_peer_id_valid field is set. It is an
|
|
|
|
+ * identifier that allows SW to double check that the CSI info stored belongs
|
|
|
|
+ * to the device with this SW identifier.
|
|
|
|
+ *
|
|
|
|
+ * @phy_ppdu_id: ppdu_id of ppdu which has channel capture performed. Field
|
|
|
|
+ * only valid when the freeze field is set to 1.
|
|
|
|
+ *
|
|
|
|
+ * @packet_ta_lower_16: Packet’s lower 16bits transmit address in MAC header.
|
|
|
|
+ *
|
|
|
|
+ * @packet_ta_mid_16: Packet’s middle 16bits transmit address in MAC header.
|
|
|
|
+ *
|
|
|
|
+ * @packet_ta_upper_16: Packet’s upper 16bits transmit address in MAC header.
|
|
|
|
+ *
|
|
|
|
+ * @packet_ra_lower_16: Packet’s lower 16bits receive address in MAC header.
|
|
|
|
+ *
|
|
|
|
+ * @packet_ra_mid_16: Packet’s middle 16bits receive address in MAC header.
|
|
|
|
+ *
|
|
|
|
+ * @packet_ra_upper_16: Packet’s upper 16bits receive address in MAC header.
|
|
|
|
+ *
|
|
|
|
+ * @tsf_timestamp_15_0: MAC side 64bit TSF timestamp when this TLV is sent to
|
|
|
|
+ * PHY. Bits [15:0].
|
|
|
|
+ *
|
|
|
|
+ * @tsf_timestamp_31_16: MAC side 64bit TSF timestamp when this TLV is sent to
|
|
|
|
+ * PHY. Bits [31:16].
|
|
|
|
+ *
|
|
|
|
+ * @tsf_timestamp_47_32: MAC side 64bit TSF timestamp when this TLV is sent to
|
|
|
|
+ * PHY. Bits [47:32].
|
|
|
|
+ *
|
|
|
|
+ * @tsf_63_48_or_user_mask_36_32: Indicates to PHY which user's channel info
|
|
|
|
+ * need to be uploaded. Only valid in UL MU case with MU_SUPPORT_IN_TLV = 1.
|
|
|
|
+ * Otherwise this indicates to PHY MSBs 63:48 of the MAC side 64bit TSF
|
|
|
|
+ * timestamp when this TLV is sent to PHY.
|
|
|
|
+ *
|
|
|
|
+ * @user_index_or_user_mask_15_0: Indicate to PHY which user's channel info
|
|
|
|
+ * need to be uploaded in UL MU case with MU_SUPPORT_IN_TLV = 1. Otherwise it
|
|
|
|
+ * indicate PHY which user’s channel information need to be uploaded.
|
|
|
|
+ *
|
|
|
|
+ * @user_mask_31_16: Indicate to PHY which user’s channel information need to
|
|
|
|
+ * be uploaded. Only valid in UL MU case with MU_SUPPORT_IN_TLV = 1.
|
|
|
|
+ */
|
|
|
|
+struct macrx_freeze_capture_channel_v3 {
|
|
uint16_t freeze : 1, //[0]
|
|
uint16_t freeze : 1, //[0]
|
|
capture_reason : 3, //[3:1]
|
|
capture_reason : 3, //[3:1]
|
|
packet_type : 2, //[5:4]
|
|
packet_type : 2, //[5:4]
|