|
@@ -151,6 +151,7 @@
|
|
#define HAL_RXDMA_MAX_RING_SIZE_BE 0xFFFFF
|
|
#define HAL_RXDMA_MAX_RING_SIZE_BE 0xFFFFF
|
|
|
|
|
|
#ifdef CONFIG_WORD_BASED_TLV
|
|
#ifdef CONFIG_WORD_BASED_TLV
|
|
|
|
+#ifndef BIG_ENDIAN_HOST
|
|
struct rx_msdu_end_compact_qca9224 {
|
|
struct rx_msdu_end_compact_qca9224 {
|
|
uint32_t rxpcu_mpdu_filter_in_category : 2, // [1:0]
|
|
uint32_t rxpcu_mpdu_filter_in_category : 2, // [1:0]
|
|
sw_frame_group_id : 7, // [8:2]
|
|
sw_frame_group_id : 7, // [8:2]
|
|
@@ -411,6 +412,267 @@ struct rx_mpdu_start_compact_qca9224 {
|
|
uint32_t reserved_28a : 32; // [31:0]
|
|
uint32_t reserved_28a : 32; // [31:0]
|
|
uint32_t reserved_29a : 32; // [31:0]
|
|
uint32_t reserved_29a : 32; // [31:0]
|
|
};
|
|
};
|
|
|
|
+#else
|
|
|
|
+struct rx_msdu_end_compact_qca9224 {
|
|
|
|
+ uint32_t phy_ppdu_id : 16, // [31:16]
|
|
|
|
+ reserved_0 : 7, // [15:9]
|
|
|
|
+ sw_frame_group_id : 7, // [8:2]
|
|
|
|
+ rxpcu_mpdu_filter_in_category : 2; // [1:0]
|
|
|
|
+ uint32_t reserved_1a : 2, // [31:30]
|
|
|
|
+ reported_mpdu_length : 14, // [29:16]
|
|
|
|
+ ip_hdr_chksum : 16; // [15:0]
|
|
|
|
+ uint32_t cumulative_l3_checksum : 16, // [31:16]
|
|
|
|
+ cce_classify_not_done_cce_dis : 1, // [15:15]
|
|
|
|
+ cce_classify_not_done_truncate : 1, // [14:14]
|
|
|
|
+ cce_super_rule : 6, // [13:8]
|
|
|
|
+ key_id_octet : 8; // [7:0]
|
|
|
|
+ uint32_t rule_indication_31_0 : 32; // [31:0]
|
|
|
|
+ uint32_t rule_indication_63_32 : 32; // [31:0]
|
|
|
|
+ uint32_t l3_type : 16, // [31:16]
|
|
|
|
+ reserved_5a : 2, // [15:14]
|
|
|
|
+ sa_offset_valid : 1, // [13:13]
|
|
|
|
+ da_offset_valid : 1, // [12:12]
|
|
|
|
+ sa_offset : 6, // [11:6]
|
|
|
|
+ da_offset : 6; // [5:0]
|
|
|
|
+ uint32_t ipv6_options_crc : 32; // [31:0]
|
|
|
|
+ uint32_t tcp_seq_number : 32; // [31:0]
|
|
|
|
+ uint32_t tcp_ack_number : 32; // [31:0]
|
|
|
|
+ uint32_t window_size : 16, // [31:16]
|
|
|
|
+ reserved_9a : 6, // [15:10]
|
|
|
|
+ lro_eligible : 1, // [9:9]
|
|
|
|
+ tcp_flag : 9; // [8:0]
|
|
|
|
+ uint32_t ip_chksum_fail_copy : 1, // [31:31]
|
|
|
|
+ tcp_udp_chksum_fail_copy : 1, // [30:30]
|
|
|
|
+ last_msdu : 1, // [29:29]
|
|
|
|
+ first_msdu : 1, // [28:28]
|
|
|
|
+ l3_header_padding : 2, // [27:26]
|
|
|
|
+ da_is_mcbc : 1, // [25:25]
|
|
|
|
+ da_is_valid : 1, // [24:24]
|
|
|
|
+ sa_is_valid : 1, // [23:23]
|
|
|
|
+ amsdu_parser_error : 1, // [22:22]
|
|
|
|
+ wifi_parser_error : 1, // [21:21]
|
|
|
|
+ flow_idx_invalid : 1, // [20:20]
|
|
|
|
+ flow_idx_timeout : 1, // [19:19]
|
|
|
|
+ msdu_limit_error : 1, // [18:18]
|
|
|
|
+ da_idx_timeout : 1, // [17:17]
|
|
|
|
+ sa_idx_timeout : 1, // [16:16]
|
|
|
|
+ tcp_udp_chksum : 16; // [15:0]
|
|
|
|
+ uint32_t da_idx_or_sw_peer_id : 16, // [31:16]
|
|
|
|
+ sa_idx : 16; // [15:0]
|
|
|
|
+ uint32_t reserved_12a : 5, // [31:27]
|
|
|
|
+ use_ppe : 1, // [26:26]
|
|
|
|
+ flow_idx : 20, // [25:6]
|
|
|
|
+ reo_destination_indication : 5, // [5:1]
|
|
|
|
+ msdu_drop : 1; // [0:0]
|
|
|
|
+ uint32_t fse_metadata : 32; // [31:0]
|
|
|
|
+ uint32_t sa_sw_peer_id : 16, // [31:16]
|
|
|
|
+ cce_metadata : 16; // [15:0]
|
|
|
|
+ uint32_t reserved_15a : 22, // [31:10]
|
|
|
|
+ fisa_timeout : 1, // [9:9]
|
|
|
|
+ flow_aggregation_continuation : 1, // [8:8]
|
|
|
|
+ aggregation_count : 8; // [7:0]
|
|
|
|
+ uint32_t cumulative_ip_length : 16, // [31:16]
|
|
|
|
+ cumulative_l4_checksum : 16; // [15:0]
|
|
|
|
+ uint32_t reserved_17b : 9, // [31:23]
|
|
|
|
+ wds_keep_alive_event : 1, // [22:22]
|
|
|
|
+ wds_roaming_event : 1, // [21:21]
|
|
|
|
+ wds_learning_event : 1, // [20:20]
|
|
|
|
+ multicast_echo : 1, // [19:19]
|
|
|
|
+ dest_chip_id : 2, // [18:17]
|
|
|
|
+ intra_bss : 1, // [16:16]
|
|
|
|
+ priority_valid : 1, // [15:15]
|
|
|
|
+ service_code : 9, // [14:6]
|
|
|
|
+ reserved_17a : 6; // [5:0]
|
|
|
|
+ uint32_t l4_offset : 8, // [31:24]
|
|
|
|
+ ipsec_ah : 1, // [23:23]
|
|
|
|
+ l3_offset : 7, // [22:16]
|
|
|
|
+ ipsec_esp : 1, // [15:15]
|
|
|
|
+ stbc : 1, // [14:14]
|
|
|
|
+ msdu_length : 14; // [13:0]
|
|
|
|
+ uint32_t ip4_protocol_ip6_next_header : 8, // [31:24]
|
|
|
|
+ ldpc : 1, // [23:23]
|
|
|
|
+ mesh_control_present : 1, // [22:22]
|
|
|
|
+ tcp_udp_header_valid : 1, // [21:21]
|
|
|
|
+ ip_extn_header_valid : 1, // [20:20]
|
|
|
|
+ ip_fixed_header_valid : 1, // [19:19]
|
|
|
|
+ toeplitz_hash_sel : 2, // [18:17]
|
|
|
|
+ da_is_bcast_mcast : 1, // [16:16]
|
|
|
|
+ tcp_only_ack : 1, // [15:15]
|
|
|
|
+ ip_frag : 1, // [14:14]
|
|
|
|
+ udp_proto : 1, // [13:13]
|
|
|
|
+ tcp_proto : 1, // [12:12]
|
|
|
|
+ ipv6_proto : 1, // [11:11]
|
|
|
|
+ ipv4_proto : 1, // [10:10]
|
|
|
|
+ decap_format : 2, // [9:8]
|
|
|
|
+ msdu_number : 8; // [7:0]
|
|
|
|
+ uint32_t toeplitz_hash_2_or_4 : 32; // [31:0]
|
|
|
|
+ uint32_t flow_id_toeplitz : 32; // [31:0]
|
|
|
|
+ uint32_t mimo_ss_bitmap : 8, // [31:24]
|
|
|
|
+ reception_type : 3, // [23:21]
|
|
|
|
+ receive_bandwidth : 3, // [20:18]
|
|
|
|
+ rate_mcs : 4, // [17:14]
|
|
|
|
+ sgi : 2, // [13:12]
|
|
|
|
+ pkt_type : 4, // [11:8]
|
|
|
|
+ user_rssi : 8; // [7:0]
|
|
|
|
+ uint32_t ppdu_start_timestamp_31_0 : 32; // [31:0]
|
|
|
|
+ uint32_t ppdu_start_timestamp_63_32 : 32; // [31:0]
|
|
|
|
+ uint32_t sw_phy_meta_data : 32; // [31:0]
|
|
|
|
+ uint32_t vlan_stag_ci : 16, // [31:16]
|
|
|
|
+ vlan_ctag_ci : 16; // [15:0]
|
|
|
|
+ uint32_t reserved_27a : 32; // [31:0]
|
|
|
|
+ uint32_t reserved_28a : 32; // [31:0]
|
|
|
|
+ uint32_t reserved_29a : 32; // [31:0]
|
|
|
|
+ uint32_t fcs_err : 1, // [31:31]
|
|
|
|
+ unencrypted_frame_err : 1, // [30:30]
|
|
|
|
+ decrypt_err : 1, // [29:29]
|
|
|
|
+ tkip_mic_err : 1, // [28:28]
|
|
|
|
+ mpdu_length_err : 1, // [27:27]
|
|
|
|
+ buffer_fragment : 1, // [26:26]
|
|
|
|
+ directed : 1, // [25:25]
|
|
|
|
+ encrypt_required : 1, // [24:24]
|
|
|
|
+ rx_in_tx_decrypt_byp : 1, // [23:23]
|
|
|
|
+ reserved_30b : 1, // [22:22]
|
|
|
|
+ da_idx_invalid : 1, // [21:21]
|
|
|
|
+ sa_idx_invalid : 1, // [20:20]
|
|
|
|
+ ip_chksum_fail : 1, // [19:19]
|
|
|
|
+ tcp_udp_chksum_fail : 1, // [18:18]
|
|
|
|
+ msdu_length_err : 1, // [17:17]
|
|
|
|
+ overflow_err : 1, // [16:16]
|
|
|
|
+ cce_match : 1, // [15:15]
|
|
|
|
+ order : 1, // [14:14]
|
|
|
|
+ fragment_flag : 1, // [13:13]
|
|
|
|
+ a_msdu_error : 1, // [12:12]
|
|
|
|
+ eosp : 1, // [11:11]
|
|
|
|
+ more_data : 1, // [10:10]
|
|
|
|
+ ctrl_type : 1, // [9:9]
|
|
|
|
+ mgmt_type : 1, // [8:8]
|
|
|
|
+ null_data : 1, // [7:7]
|
|
|
|
+ non_qos : 1, // [6:6]
|
|
|
|
+ power_mgmt : 1, // [5:5]
|
|
|
|
+ ast_index_timeout : 1, // [4:4]
|
|
|
|
+ ast_index_not_found : 1, // [3:3]
|
|
|
|
+ mcast_bcast : 1, // [2:2]
|
|
|
|
+ reserved_30a : 1, // [1:1]
|
|
|
|
+ first_mpdu : 1; // [0:0]
|
|
|
|
+ uint32_t msdu_done : 1, // [31:31]
|
|
|
|
+ reserved_31b : 17, // [30:14]
|
|
|
|
+ rx_bitmap_not_updated : 1, // [13:13]
|
|
|
|
+ decrypt_status_code : 3, // [12:10]
|
|
|
|
+ reserved_31a : 10; // [9:0]
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+struct rx_mpdu_start_compact_qca9224 {
|
|
|
|
+ struct rxpt_classify_info rxpt_classify_info_details;
|
|
|
|
+ uint32_t rx_reo_queue_desc_addr_31_0 : 32; // [31:0]
|
|
|
|
+ uint32_t reserved_2a : 6, // [31:26]
|
|
|
|
+ first_delim_err : 1, // [25:25]
|
|
|
|
+ pre_delim_err_warning : 1, // [24:24]
|
|
|
|
+ receive_queue_number : 16, // [23:8]
|
|
|
|
+ rx_reo_queue_desc_addr_39_32 : 8; // [7:0]
|
|
|
|
+ uint32_t pn_31_0 : 32; // [31:0]
|
|
|
|
+ uint32_t pn_63_32 : 32; // [31:0]
|
|
|
|
+ uint32_t pn_95_64 : 32; // [31:0]
|
|
|
|
+ uint32_t pn_127_96 : 32; // [31:0]
|
|
|
|
+ uint32_t reserved_7a : 13, // [31:19]
|
|
|
|
+ tid : 4, // [18:15]
|
|
|
|
+ bssid_number : 4, // [14:11]
|
|
|
|
+ bssid_hit : 1, // [10:10]
|
|
|
|
+ mesh_sta : 2, // [9:8]
|
|
|
|
+ wep_key_width_for_variable_key : 2, // [7:6]
|
|
|
|
+ encrypt_type : 4, // [5:2]
|
|
|
|
+ all_frames_shall_be_encrypted : 1, // [1:1]
|
|
|
|
+ epd_en : 1; // [0:0]
|
|
|
|
+ uint32_t peer_meta_data : 32; // [31:0]
|
|
|
|
+ uint32_t phy_ppdu_id : 16, // [31:16]
|
|
|
|
+ reserved_9a : 1, // [15:15]
|
|
|
|
+ ranging : 1, // [14:14]
|
|
|
|
+ ast_based_lookup_valid : 1, // [13:13]
|
|
|
|
+ protocol_version_err : 1, // [12:12]
|
|
|
|
+ phy_err_during_mpdu_header : 1, // [11:11]
|
|
|
|
+ phy_err : 1, // [10:10]
|
|
|
|
+ ndp_frame : 1, // [9:9]
|
|
|
|
+ sw_frame_group_id : 7, // [8:2]
|
|
|
|
+ rxpcu_mpdu_filter_in_category : 2; // [1:0]
|
|
|
|
+ uint32_t sw_peer_id : 16, // [31:16]
|
|
|
|
+ ast_index : 16; // [15:0]
|
|
|
|
+ uint32_t mpdu_sequence_number : 12, // [31:20]
|
|
|
|
+ mpdu_retry : 1, // [19:19]
|
|
|
|
+ encrypted : 1, // [18:18]
|
|
|
|
+ to_ds : 1, // [17:17]
|
|
|
|
+ fr_ds : 1, // [16:16]
|
|
|
|
+ reserved_11a : 1, // [15:15]
|
|
|
|
+ more_fragment_flag : 1, // [14:14]
|
|
|
|
+ mpdu_fragment_number : 4, // [13:10]
|
|
|
|
+ frame_encryption_info_valid : 1, // [9:9]
|
|
|
|
+ mpdu_ht_control_valid : 1, // [8:8]
|
|
|
|
+ mpdu_qos_control_valid : 1, // [7:7]
|
|
|
|
+ mpdu_sequence_control_valid : 1, // [6:6]
|
|
|
|
+ mac_addr_ad4_valid : 1, // [5:5]
|
|
|
|
+ mac_addr_ad3_valid : 1, // [4:4]
|
|
|
|
+ mac_addr_ad2_valid : 1, // [3:3]
|
|
|
|
+ mac_addr_ad1_valid : 1, // [2:2]
|
|
|
|
+ mpdu_duration_valid : 1, // [1:1]
|
|
|
|
+ mpdu_frame_control_valid : 1; // [0:0]
|
|
|
|
+ uint32_t reserved_12 : 1, // [31:31]
|
|
|
|
+ raw_mpdu : 1, // [30:30]
|
|
|
|
+ bar_frame : 1, // [29:29]
|
|
|
|
+ ampdu_flag : 1, // [28:28]
|
|
|
|
+ pre_delim_count : 12, // [27:16]
|
|
|
|
+ strip_vlan_s_tag_decap : 1, // [15:15]
|
|
|
|
+ strip_vlan_c_tag_decap : 1, // [14:14]
|
|
|
|
+ rx_insert_vlan_s_tag_padding : 1, // [13:13]
|
|
|
|
+ rx_insert_vlan_c_tag_padding : 1, // [12:12]
|
|
|
|
+ decap_type : 2, // [11:10]
|
|
|
|
+ decrypt_needed : 1, // [9:9]
|
|
|
|
+ new_peer_entry : 1, // [8:8]
|
|
|
|
+ key_id_octet : 8; // [7:0]
|
|
|
|
+ uint32_t reserved_13 : 1, // [31:31]
|
|
|
|
+ amsdu_present : 1, // [30:30]
|
|
|
|
+ directed : 1, // [29:29]
|
|
|
|
+ encrypt_required : 1, // [28:28]
|
|
|
|
+ u_apsd_trigger : 1, // [27:27]
|
|
|
|
+ order : 1, // [26:26]
|
|
|
|
+ fragment_flag : 1, // [25:25]
|
|
|
|
+ eosp : 1, // [24:24]
|
|
|
|
+ more_data : 1, // [23:23]
|
|
|
|
+ ctrl_type : 1, // [22:22]
|
|
|
|
+ mgmt_type : 1, // [21:21]
|
|
|
|
+ null_data : 1, // [20:20]
|
|
|
|
+ non_qos : 1, // [19:19]
|
|
|
|
+ power_mgmt : 1, // [18:18]
|
|
|
|
+ ast_index_timeout : 1, // [17:17]
|
|
|
|
+ ast_index_not_found : 1, // [16:16]
|
|
|
|
+ mcast_bcast : 1, // [15:15]
|
|
|
|
+ first_mpdu : 1, // [14:14]
|
|
|
|
+ mpdu_length : 14; // [13:0]
|
|
|
|
+ uint32_t mpdu_duration_field : 16, // [31:16]
|
|
|
|
+ mpdu_frame_control_field : 16; // [15:0]
|
|
|
|
+ uint32_t mac_addr_ad1_31_0 : 32; // [31:0]
|
|
|
|
+ uint32_t mac_addr_ad2_15_0 : 16, // [31:16]
|
|
|
|
+ mac_addr_ad1_47_32 : 16; // [15:0]
|
|
|
|
+ uint32_t mac_addr_ad2_47_16 : 32; // [31:0]
|
|
|
|
+ uint32_t mac_addr_ad3_31_0 : 32; // [31:0]
|
|
|
|
+ uint32_t mpdu_sequence_control_field : 16, // [31:16]
|
|
|
|
+ mac_addr_ad3_47_32 : 16; // [15:0]
|
|
|
|
+ uint32_t mac_addr_ad4_31_0 : 32; // [31:0]
|
|
|
|
+ uint32_t mpdu_qos_control_field : 16, // [31:16]
|
|
|
|
+ mac_addr_ad4_47_32 : 16; // [15:0]
|
|
|
|
+ uint32_t mpdu_ht_control_field : 32; // [31:0]
|
|
|
|
+ uint32_t multi_link_addr_ad1_ad2_valid : 1, // [31:31]
|
|
|
|
+ reserved_23a : 1, // [30:30]
|
|
|
|
+ src_info : 12, // [29:18]
|
|
|
|
+ priority_valid : 1, // [17:17]
|
|
|
|
+ service_code : 9, // [16:8]
|
|
|
|
+ vdev_id : 8; // [7:0]
|
|
|
|
+ uint32_t multi_link_addr_ad1_31_0 : 32; // [31:0]
|
|
|
|
+ uint32_t multi_link_addr_ad2_15_0 : 16, // [31:16]
|
|
|
|
+ multi_link_addr_ad1_47_32 : 16; // [15:0]
|
|
|
|
+ uint32_t multi_link_addr_ad2_47_16 : 32; // [31:0]
|
|
|
|
+ uint32_t reserved_27a : 32; // [31:0]
|
|
|
|
+ uint32_t reserved_28a : 32; // [31:0]
|
|
|
|
+ uint32_t reserved_29a : 32; // [31:0]
|
|
|
|
+}
|
|
|
|
+#endif /* BIG_ENDIAN_HOST */
|
|
|
|
|
|
/* TLV struct for word based Tlv */
|
|
/* TLV struct for word based Tlv */
|
|
typedef struct rx_mpdu_start_compact_qca9224 hal_rx_mpdu_start_t;
|
|
typedef struct rx_mpdu_start_compact_qca9224 hal_rx_mpdu_start_t;
|