Commit 9fe96934 authored by Sarveshwar Bandi's avatar Sarveshwar Bandi Committed by David S. Miller

be2net: download NCSI section during firmware update

Adding code to update NCSI section while updating firmware on the controller.
Signed-off-by: default avatarSarveshwar Bandi <sarveshwarb@serverengines.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 48a29516
...@@ -114,8 +114,7 @@ ...@@ -114,8 +114,7 @@
#define IMG_TYPE_ISCSI_BACKUP 9 #define IMG_TYPE_ISCSI_BACKUP 9
#define IMG_TYPE_FCOE_FW_ACTIVE 10 #define IMG_TYPE_FCOE_FW_ACTIVE 10
#define IMG_TYPE_FCOE_FW_BACKUP 11 #define IMG_TYPE_FCOE_FW_BACKUP 11
#define IMG_TYPE_NCSI_BITFILE 13 #define IMG_TYPE_NCSI_FW 13
#define IMG_TYPE_NCSI_8051 14
#define FLASHROM_OPER_FLASH 1 #define FLASHROM_OPER_FLASH 1
#define FLASHROM_OPER_SAVE 2 #define FLASHROM_OPER_SAVE 2
...@@ -127,6 +126,7 @@ ...@@ -127,6 +126,7 @@
#define FLASH_IMAGE_MAX_SIZE_g3 (2097152) /* Max fw image size */ #define FLASH_IMAGE_MAX_SIZE_g3 (2097152) /* Max fw image size */
#define FLASH_BIOS_IMAGE_MAX_SIZE_g3 (524288) /* Max OPTION ROM img sz */ #define FLASH_BIOS_IMAGE_MAX_SIZE_g3 (524288) /* Max OPTION ROM img sz */
#define FLASH_REDBOOT_IMAGE_MAX_SIZE_g3 (1048576) /* Max Redboot image sz */ #define FLASH_REDBOOT_IMAGE_MAX_SIZE_g3 (1048576) /* Max Redboot image sz */
#define FLASH_NCSI_IMAGE_MAX_SIZE_g3 (262144) /* Max NSCI image sz */
#define FLASH_NCSI_MAGIC (0x16032009) #define FLASH_NCSI_MAGIC (0x16032009)
#define FLASH_NCSI_DISABLED (0) #define FLASH_NCSI_DISABLED (0)
...@@ -144,6 +144,7 @@ ...@@ -144,6 +144,7 @@
#define FLASH_FCoE_BIOS_START_g2 (524288) #define FLASH_FCoE_BIOS_START_g2 (524288)
#define FLASH_REDBOOT_START_g2 (0) #define FLASH_REDBOOT_START_g2 (0)
#define FLASH_NCSI_START_g3 (15990784)
#define FLASH_iSCSI_PRIMARY_IMAGE_START_g3 (2097152) #define FLASH_iSCSI_PRIMARY_IMAGE_START_g3 (2097152)
#define FLASH_iSCSI_BACKUP_IMAGE_START_g3 (4194304) #define FLASH_iSCSI_BACKUP_IMAGE_START_g3 (4194304)
#define FLASH_FCoE_PRIMARY_IMAGE_START_g3 (6291456) #define FLASH_FCoE_PRIMARY_IMAGE_START_g3 (6291456)
......
...@@ -1880,8 +1880,9 @@ static int be_flash_data(struct be_adapter *adapter, ...@@ -1880,8 +1880,9 @@ static int be_flash_data(struct be_adapter *adapter,
const u8 *p = fw->data; const u8 *p = fw->data;
struct be_cmd_write_flashrom *req = flash_cmd->va; struct be_cmd_write_flashrom *req = flash_cmd->va;
struct flash_comp *pflashcomp; struct flash_comp *pflashcomp;
int num_comp;
struct flash_comp gen3_flash_types[8] = { struct flash_comp gen3_flash_types[9] = {
{ FLASH_iSCSI_PRIMARY_IMAGE_START_g3, IMG_TYPE_ISCSI_ACTIVE, { FLASH_iSCSI_PRIMARY_IMAGE_START_g3, IMG_TYPE_ISCSI_ACTIVE,
FLASH_IMAGE_MAX_SIZE_g3}, FLASH_IMAGE_MAX_SIZE_g3},
{ FLASH_REDBOOT_START_g3, IMG_TYPE_REDBOOT, { FLASH_REDBOOT_START_g3, IMG_TYPE_REDBOOT,
...@@ -1897,7 +1898,9 @@ static int be_flash_data(struct be_adapter *adapter, ...@@ -1897,7 +1898,9 @@ static int be_flash_data(struct be_adapter *adapter,
{ FLASH_FCoE_PRIMARY_IMAGE_START_g3, IMG_TYPE_FCOE_FW_ACTIVE, { FLASH_FCoE_PRIMARY_IMAGE_START_g3, IMG_TYPE_FCOE_FW_ACTIVE,
FLASH_IMAGE_MAX_SIZE_g3}, FLASH_IMAGE_MAX_SIZE_g3},
{ FLASH_FCoE_BACKUP_IMAGE_START_g3, IMG_TYPE_FCOE_FW_BACKUP, { FLASH_FCoE_BACKUP_IMAGE_START_g3, IMG_TYPE_FCOE_FW_BACKUP,
FLASH_IMAGE_MAX_SIZE_g3} FLASH_IMAGE_MAX_SIZE_g3},
{ FLASH_NCSI_START_g3, IMG_TYPE_NCSI_FW,
FLASH_NCSI_IMAGE_MAX_SIZE_g3}
}; };
struct flash_comp gen2_flash_types[8] = { struct flash_comp gen2_flash_types[8] = {
{ FLASH_iSCSI_PRIMARY_IMAGE_START_g2, IMG_TYPE_ISCSI_ACTIVE, { FLASH_iSCSI_PRIMARY_IMAGE_START_g2, IMG_TYPE_ISCSI_ACTIVE,
...@@ -1921,11 +1924,16 @@ static int be_flash_data(struct be_adapter *adapter, ...@@ -1921,11 +1924,16 @@ static int be_flash_data(struct be_adapter *adapter,
if (adapter->generation == BE_GEN3) { if (adapter->generation == BE_GEN3) {
pflashcomp = gen3_flash_types; pflashcomp = gen3_flash_types;
filehdr_size = sizeof(struct flash_file_hdr_g3); filehdr_size = sizeof(struct flash_file_hdr_g3);
num_comp = 9;
} else { } else {
pflashcomp = gen2_flash_types; pflashcomp = gen2_flash_types;
filehdr_size = sizeof(struct flash_file_hdr_g2); filehdr_size = sizeof(struct flash_file_hdr_g2);
num_comp = 8;
} }
for (i = 0; i < 8; i++) { for (i = 0; i < num_comp; i++) {
if ((pflashcomp[i].optype == IMG_TYPE_NCSI_FW) &&
memcmp(adapter->fw_ver, "3.102.148.0", 11) < 0)
continue;
if ((pflashcomp[i].optype == IMG_TYPE_REDBOOT) && if ((pflashcomp[i].optype == IMG_TYPE_REDBOOT) &&
(!be_flash_redboot(adapter, fw->data, (!be_flash_redboot(adapter, fw->data,
pflashcomp[i].offset, pflashcomp[i].size, pflashcomp[i].offset, pflashcomp[i].size,
......
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