Browse Source

fw-api: CL 7134963 - update fw common interface files

HTT stats: partly remove target_type field from htt_ppdu_stats_sch_cmd TLV
The target_type field is not actually present in the HTT messages produced by the FW. However, it cannot be fully removed (yet), due to FW code that refers to this field.As a workaround, this target_type field is being moved into a union with the hw field that actually is present in the message.This makes the message definitions become consistent with the actual message contents, while not breaking the compilation of code that refers to the target_type field.Overlaying the memory for target_type and hw does not cause problems, because the FW code that refers to target_type first writes a value into the target_type field, then writes data into the hw field.Once all FW references to the target_type field have been removed, the target_type field def and the encapsulating anonymous union will be removed from the htt_ppdu_stats_sch_cmd_tlv_v struct def.

Change-Id: Ibd789e350e392591b12edb0478c224c737b0fe3e
CRs-Fixed: 2262693
spuligil 5 years ago
parent
commit
7d059b28b5
1 changed files with 25 additions and 27 deletions
  1. 25 27
      fw/htt_ppdu_stats.h

+ 25 - 27
fw/htt_ppdu_stats.h

@@ -256,36 +256,34 @@ typedef struct {
     struct htt_tx_ppdu_stats_info tx_ppdu_stats_info[1/*number_of_ppdu_stats*/];
 } htt_ppdu_stats_usr_common_array_tlv_v;
 
-#define HTT_PPDU_STATS_SCH_CMD_TLV_HDR_STRUCT \
-    struct { \
-        htt_tlv_hdr_t tlv_hdr; \
-        /* Refer bmi_msg.h */ \
-        A_UINT32 target_type; \
-    }
-
-typedef HTT_PPDU_STATS_SCH_CMD_TLV_HDR_STRUCT htt_ppdu_stats_sch_cmd_tlv_hdr_t;
-
 typedef struct {
-    /*
-     * Use a union to allow the HW-independent header portion of this struct
-     * to be accessed either within a hdr struct, or directly within the
-     * htt_ppdu_stats_sch_cmd_tlv_v struct.
-     * For example, the target_type field can be accessed either as
-     *     htt_ppdu_stats_sch_cmd_tlv_v.target_type
-     * or
-     *     htt_ppdu_stats_sch_cmd_tlv_v.hdr.target_type
-     */
+    htt_tlv_hdr_t tlv_hdr;
     union {
-        htt_ppdu_stats_sch_cmd_tlv_hdr_t hdr;
-        HTT_PPDU_STATS_SCH_CMD_TLV_HDR_STRUCT;
+        /* DEPRECATED (target_type)
+         * The target_type field is not actually present in the HTT messages
+         * produced by the FW.  However, it cannot be removed (yet), due to
+         * FW code that refers to this field.
+         * As a workaround, this target_type field is being moved into a
+         * union with the "hw" field that actually is present in the message.
+         * This makes the message definitions become consistent with the
+         * actual message contents, while not breaking the compilation of
+         * code that refers to the target_type field.
+         * Overlaying the memory for "target_type" and "hw" does not cause
+         * problems, because the FW code that refers to target_type first
+         * writes a value into the target_type field, then writes data into
+         * the hw field.
+         * Once all FW references to the target_type field have been removed,
+         * the target_type field def and the encapsulating anonymous union
+         * will be removed from this htt_ppdu_stats_sch_cmd_tlv_v struct def.
+         */
+        A_UINT32 target_type;
+
+        /*
+         * The hw portion of this struct contains a scheduler_command_status
+         * struct, whose definition is different for different target HW types.
+         */
+        A_UINT32 hw[1];
     };
-    /*
-     * The hw portion of this struct contains a scheduler_command_status
-     * struct, whose definition is different for different target HW types.
-     * The target_type field within the header can, if set correctly,
-     * clarify which definition of scheduler_command_status is being used.
-     */
-    A_UINT32 hw[1];
 } htt_ppdu_stats_sch_cmd_tlv_v;
 
 #define HTT_PPDU_STATS_COMMON_TLV_SCH_CMDID_M     0x0000ffff