Commit 634d7df8 authored by Dhananjay Phadke's avatar Dhananjay Phadke Committed by David S. Miller

netxen: fix firmware type check

Unified firmware image may not contain MN type of firmware.
Driver should fall back to NOMN firmware type instead
of going to flash.
Signed-off-by: default avatarDhananjay Phadke <dhananjay@netxen.com>
Signed-off-by: default avatarAmit Kumar Salecha <amit.salecha@qlogic.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent f2251f66
...@@ -619,17 +619,20 @@ nx_set_product_offs(struct netxen_adapter *adapter) ...@@ -619,17 +619,20 @@ nx_set_product_offs(struct netxen_adapter *adapter)
uint32_t i; uint32_t i;
__le32 entries; __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); ptab_descr = nx_get_table_desc(unirom, NX_UNI_DIR_SECT_PRODUCT_TBL);
if (ptab_descr == NULL) if (ptab_descr == NULL)
return -1; return -1;
entries = cpu_to_le32(ptab_descr->num_entries); entries = cpu_to_le32(ptab_descr->num_entries);
nomn:
for (i = 0; i < entries; i++) { for (i = 0; i < entries; i++) {
__le32 flags, file_chiprev, offs; __le32 flags, file_chiprev, offs;
u8 chiprev = adapter->ahw.revision_id; u8 chiprev = adapter->ahw.revision_id;
int mn_present = netxen_p3_has_mn(adapter);
uint32_t flagbit; uint32_t flagbit;
offs = cpu_to_le32(ptab_descr->findex) + offs = cpu_to_le32(ptab_descr->findex) +
...@@ -647,6 +650,11 @@ nx_set_product_offs(struct netxen_adapter *adapter) ...@@ -647,6 +650,11 @@ nx_set_product_offs(struct netxen_adapter *adapter)
} }
} }
if (mn_present && NX_IS_REVISION_P3(adapter->ahw.revision_id)) {
mn_present = 0;
goto nomn;
}
return -1; return -1;
} }
...@@ -1021,6 +1029,10 @@ netxen_p3_has_mn(struct netxen_adapter *adapter) ...@@ -1021,6 +1029,10 @@ netxen_p3_has_mn(struct netxen_adapter *adapter)
u32 capability, flashed_ver; u32 capability, flashed_ver;
capability = 0; capability = 0;
/* NX2031 always had MN */
if (NX_IS_REVISION_P2(adapter->ahw.revision_id))
return 1;
netxen_rom_fast_read(adapter, netxen_rom_fast_read(adapter,
NX_FW_VERSION_OFFSET, (int *)&flashed_ver); NX_FW_VERSION_OFFSET, (int *)&flashed_ver);
flashed_ver = NETXEN_DECODE_VERSION(flashed_ver); flashed_ver = NETXEN_DECODE_VERSION(flashed_ver);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment