be2net: fix BE3-R FW download compatibility check
In the BE3 FW image, unlike Skyhawk's, the "asic_type_rev" field doesn't
track the asic_rev of chip it is compatible with. When asic_type_rev
is 0 the image is compatible only with pre-BE3-R chips (asic_rev < 0x10).
Fix the current compatibility check to take care of this.
We hit this issue when we try to flash old BE3 images (used prior to the
release of BE3-R) on pre-BE3-R adapters.
Fixes: a6e6ff6eee
("be2net: simplify UFI compatibility checking")
Signed-off-by: Kalesh AP <kalesh.purayil@avagotech.com>
Signed-off-by: Sathya Perla <sathya.perla@avagotech.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
3bb35ac497
commit
ae4a9d6a63
1 changed files with 9 additions and 1 deletions
|
@ -4999,7 +4999,15 @@ static bool be_check_ufi_compatibility(struct be_adapter *adapter,
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (fhdr->asic_type_rev >= adapter->asic_rev);
|
/* In BE3 FW images the "asic_type_rev" field doesn't track the
|
||||||
|
* asic_rev of the chips it is compatible with.
|
||||||
|
* When asic_type_rev is 0 the image is compatible only with
|
||||||
|
* pre-BE3-R chips (asic_rev < 0x10)
|
||||||
|
*/
|
||||||
|
if (BEx_chip(adapter) && fhdr->asic_type_rev == 0)
|
||||||
|
return adapter->asic_rev < 0x10;
|
||||||
|
else
|
||||||
|
return (fhdr->asic_type_rev >= adapter->asic_rev);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int be_fw_download(struct be_adapter *adapter, const struct firmware* fw)
|
static int be_fw_download(struct be_adapter *adapter, const struct firmware* fw)
|
||||||
|
|
Loading…
Reference in a new issue