Sfoglia il codice sorgente

qcacmn: Add Big endian version of rx_tlv structure

Add big endian version of rxtlv structure. THis is needed since
the structure members are directly accessed by name and hence reverse
order of bitfields have to be defined in case of Big endian mode.

Change-Id: I50ce4bdd482a336ee8d2f394ed2de1a7ddf0be57
Nandha Kishore Easwaran 3 anni fa
parent
commit
a6cd1789eb
1 ha cambiato i file con 262 aggiunte e 0 eliminazioni
  1. 262 0
      hal/wifi3.0/qcn9224/hal_9224.c

+ 262 - 0
hal/wifi3.0/qcn9224/hal_9224.c

@@ -151,6 +151,7 @@
 #define HAL_RXDMA_MAX_RING_SIZE_BE 0xFFFFF
 
 #ifdef CONFIG_WORD_BASED_TLV
+#ifndef BIG_ENDIAN_HOST
 struct rx_msdu_end_compact_qca9224 {
 	uint32_t rxpcu_mpdu_filter_in_category		:  2, // [1:0]
 		 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_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 */
 typedef struct rx_mpdu_start_compact_qca9224 hal_rx_mpdu_start_t;