u32 i;
 
        info->section_num = le32_get_bits(fw_hdr->w6, FW_HDR_V1_W6_SEC_NUM);
+       info->dsp_checksum = le32_get_bits(fw_hdr->w6, FW_HDR_V1_W6_DSP_CHKSUM);
        base_hdr_len = struct_size(fw_hdr, sections, info->section_num);
        info->dynamic_hdr_en = le32_get_bits(fw_hdr->w7, FW_HDR_V1_W7_DYN_HDR);
 
                        section_info->mssc =
                                le32_get_bits(section->w2, FWSECTION_HDR_V1_W2_MSSC);
                        mssc_len += section_info->mssc * FWDL_SECURITY_SIGLEN;
+                       if (info->dsp_checksum)
+                               mssc_len += section_info->mssc * FWDL_SECURITY_CHKSUM_LEN;
                } else {
                        section_info->mssc = 0;
                }
 
        u32 hdr_len;
        bool dynamic_hdr_en;
        u32 dynamic_hdr_len;
+       bool dsp_checksum;
        struct rtw89_fw_hdr_section_info section_info[FWDL_SECTION_MAX_NUM];
 };
 
 
 #define FWDL_SECURITY_SECTION_TYPE 9
 #define FWDL_SECURITY_SIGLEN 512
+#define FWDL_SECURITY_CHKSUM_LEN 8
 
 struct rtw89_fw_dynhdr_sec {
        __le32 w0;
 #define FW_HDR_V1_W5_YEAR GENMASK(15, 0)
 #define FW_HDR_V1_W5_HDR_SIZE GENMASK(31, 16)
 #define FW_HDR_V1_W6_SEC_NUM GENMASK(15, 8)
+#define FW_HDR_V1_W6_DSP_CHKSUM BIT(24)
 #define FW_HDR_V1_W7_DYN_HDR BIT(16)
 
 static inline void SET_FW_HDR_PART_SIZE(void *fwhdr, u32 val)