const u8 *fwdynhdr;
        const u8 *bin;
        u32 base_hdr_len;
+       u32 mssc_len = 0;
        u32 i;
 
        if (!info)
        fw += RTW89_FW_HDR_SIZE;
        section_info = info->section_info;
        for (i = 0; i < info->section_num; i++) {
+               section_info->type = GET_FWSECTION_HDR_SECTIONTYPE(fw);
+               if (section_info->type == FWDL_SECURITY_SECTION_TYPE) {
+                       section_info->mssc = GET_FWSECTION_HDR_MSSC(fw);
+                       mssc_len += section_info->mssc * FWDL_SECURITY_SIGLEN;
+               } else {
+                       section_info->mssc = 0;
+               }
+
                section_info->len = GET_FWSECTION_HDR_SEC_SIZE(fw);
                if (GET_FWSECTION_HDR_CHECKSUM(fw))
                        section_info->len += FWDL_SECTION_CHKSUM_LEN;
                section_info++;
        }
 
-       if (fw_end != bin) {
+       if (fw_end != bin + mssc_len) {
                rtw89_err(rtwdev, "[ERR]fw bin size\n");
                return -EINVAL;
        }
 
        const u8 *addr;
        u32 len;
        u32 dladdr;
+       u32 mssc;
+       u8 type;
 };
 
 struct rtw89_fw_bin_info {
 #define FW_EDCA_PARAM_CWMIN_MSK GENMASK(11, 8)
 #define FW_EDCA_PARAM_AIFS_MSK GENMASK(7, 0)
 
+#define FWDL_SECURITY_SECTION_TYPE 9
+#define FWDL_SECURITY_SIGLEN 512
+
+#define GET_FWSECTION_HDR_DL_ADDR(fwhdr)       \
+       le32_get_bits(*((const __le32 *)(fwhdr)), GENMASK(31, 0))
+#define GET_FWSECTION_HDR_SECTIONTYPE(fwhdr)   \
+       le32_get_bits(*((const __le32 *)(fwhdr) + 1), GENMASK(27, 24))
 #define GET_FWSECTION_HDR_SEC_SIZE(fwhdr)      \
        le32_get_bits(*((const __le32 *)(fwhdr) + 1), GENMASK(23, 0))
 #define GET_FWSECTION_HDR_CHECKSUM(fwhdr)      \
        le32_get_bits(*((const __le32 *)(fwhdr) + 1), BIT(28))
 #define GET_FWSECTION_HDR_REDL(fwhdr)  \
        le32_get_bits(*((const __le32 *)(fwhdr) + 1), BIT(29))
-#define GET_FWSECTION_HDR_DL_ADDR(fwhdr)       \
-       le32_get_bits(*((const __le32 *)(fwhdr)), GENMASK(31, 0))
+#define GET_FWSECTION_HDR_MSSC(fwhdr)  \
+       le32_get_bits(*((const __le32 *)(fwhdr) + 2), GENMASK(31, 0))
 
 #define GET_FW_HDR_MAJOR_VERSION(fwhdr)        \
        le32_get_bits(*((const __le32 *)(fwhdr) + 1), GENMASK(7, 0))