uint32_t i;
        __le32 entries;
 
+       int mn_present = (NX_IS_REVISION_P2(adapter->ahw.revision_id)) ?
+                       1 : netxen_p3_has_mn(adapter);
+
        ptab_descr = nx_get_table_desc(unirom, NX_UNI_DIR_SECT_PRODUCT_TBL);
        if (ptab_descr == NULL)
                return -1;
 
        entries = cpu_to_le32(ptab_descr->num_entries);
 
+nomn:
        for (i = 0; i < entries; i++) {
 
                __le32 flags, file_chiprev, offs;
                u8 chiprev = adapter->ahw.revision_id;
-               int mn_present = netxen_p3_has_mn(adapter);
                uint32_t flagbit;
 
                offs = cpu_to_le32(ptab_descr->findex) +
                }
        }
 
+       if (mn_present && NX_IS_REVISION_P3(adapter->ahw.revision_id)) {
+               mn_present = 0;
+               goto nomn;
+       }
+
        return -1;
 }
 
        u32 capability, flashed_ver;
        capability = 0;
 
+       /* NX2031 always had MN */
+       if (NX_IS_REVISION_P2(adapter->ahw.revision_id))
+               return 1;
+
        netxen_rom_fast_read(adapter,
                        NX_FW_VERSION_OFFSET, (int *)&flashed_ver);
        flashed_ver = NETXEN_DECODE_VERSION(flashed_ver);