diff options
Diffstat (limited to 'drivers/net/benet/be_main.c')
| -rw-r--r-- | drivers/net/benet/be_main.c | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/drivers/net/benet/be_main.c b/drivers/net/benet/be_main.c index a703ed8e24fe..43e8032f9236 100644 --- a/drivers/net/benet/be_main.c +++ b/drivers/net/benet/be_main.c | |||
| @@ -1382,7 +1382,7 @@ rx_eq_free: | |||
| 1382 | /* There are 8 evt ids per func. Retruns the evt id's bit number */ | 1382 | /* There are 8 evt ids per func. Retruns the evt id's bit number */ |
| 1383 | static inline int be_evt_bit_get(struct be_adapter *adapter, u32 eq_id) | 1383 | static inline int be_evt_bit_get(struct be_adapter *adapter, u32 eq_id) |
| 1384 | { | 1384 | { |
| 1385 | return eq_id - 8 * be_pci_func(adapter); | 1385 | return eq_id % 8; |
| 1386 | } | 1386 | } |
| 1387 | 1387 | ||
| 1388 | static irqreturn_t be_intx(int irq, void *dev) | 1388 | static irqreturn_t be_intx(int irq, void *dev) |
| @@ -1880,8 +1880,9 @@ static int be_flash_data(struct be_adapter *adapter, | |||
| 1880 | const u8 *p = fw->data; | 1880 | const u8 *p = fw->data; |
| 1881 | struct be_cmd_write_flashrom *req = flash_cmd->va; | 1881 | struct be_cmd_write_flashrom *req = flash_cmd->va; |
| 1882 | struct flash_comp *pflashcomp; | 1882 | struct flash_comp *pflashcomp; |
| 1883 | int num_comp; | ||
| 1883 | 1884 | ||
| 1884 | struct flash_comp gen3_flash_types[8] = { | 1885 | struct flash_comp gen3_flash_types[9] = { |
| 1885 | { FLASH_iSCSI_PRIMARY_IMAGE_START_g3, IMG_TYPE_ISCSI_ACTIVE, | 1886 | { FLASH_iSCSI_PRIMARY_IMAGE_START_g3, IMG_TYPE_ISCSI_ACTIVE, |
| 1886 | FLASH_IMAGE_MAX_SIZE_g3}, | 1887 | FLASH_IMAGE_MAX_SIZE_g3}, |
| 1887 | { FLASH_REDBOOT_START_g3, IMG_TYPE_REDBOOT, | 1888 | { FLASH_REDBOOT_START_g3, IMG_TYPE_REDBOOT, |
| @@ -1897,7 +1898,9 @@ static int be_flash_data(struct be_adapter *adapter, | |||
| 1897 | { FLASH_FCoE_PRIMARY_IMAGE_START_g3, IMG_TYPE_FCOE_FW_ACTIVE, | 1898 | { FLASH_FCoE_PRIMARY_IMAGE_START_g3, IMG_TYPE_FCOE_FW_ACTIVE, |
| 1898 | FLASH_IMAGE_MAX_SIZE_g3}, | 1899 | FLASH_IMAGE_MAX_SIZE_g3}, |
| 1899 | { FLASH_FCoE_BACKUP_IMAGE_START_g3, IMG_TYPE_FCOE_FW_BACKUP, | 1900 | { FLASH_FCoE_BACKUP_IMAGE_START_g3, IMG_TYPE_FCOE_FW_BACKUP, |
| 1900 | FLASH_IMAGE_MAX_SIZE_g3} | 1901 | FLASH_IMAGE_MAX_SIZE_g3}, |
| 1902 | { FLASH_NCSI_START_g3, IMG_TYPE_NCSI_FW, | ||
| 1903 | FLASH_NCSI_IMAGE_MAX_SIZE_g3} | ||
| 1901 | }; | 1904 | }; |
| 1902 | struct flash_comp gen2_flash_types[8] = { | 1905 | struct flash_comp gen2_flash_types[8] = { |
| 1903 | { FLASH_iSCSI_PRIMARY_IMAGE_START_g2, IMG_TYPE_ISCSI_ACTIVE, | 1906 | { FLASH_iSCSI_PRIMARY_IMAGE_START_g2, IMG_TYPE_ISCSI_ACTIVE, |
| @@ -1921,11 +1924,16 @@ static int be_flash_data(struct be_adapter *adapter, | |||
| 1921 | if (adapter->generation == BE_GEN3) { | 1924 | if (adapter->generation == BE_GEN3) { |
| 1922 | pflashcomp = gen3_flash_types; | 1925 | pflashcomp = gen3_flash_types; |
| 1923 | filehdr_size = sizeof(struct flash_file_hdr_g3); | 1926 | filehdr_size = sizeof(struct flash_file_hdr_g3); |
| 1927 | num_comp = 9; | ||
| 1924 | } else { | 1928 | } else { |
| 1925 | pflashcomp = gen2_flash_types; | 1929 | pflashcomp = gen2_flash_types; |
| 1926 | filehdr_size = sizeof(struct flash_file_hdr_g2); | 1930 | filehdr_size = sizeof(struct flash_file_hdr_g2); |
| 1931 | num_comp = 8; | ||
| 1927 | } | 1932 | } |
| 1928 | for (i = 0; i < 8; i++) { | 1933 | for (i = 0; i < num_comp; i++) { |
| 1934 | if ((pflashcomp[i].optype == IMG_TYPE_NCSI_FW) && | ||
| 1935 | memcmp(adapter->fw_ver, "3.102.148.0", 11) < 0) | ||
| 1936 | continue; | ||
| 1929 | if ((pflashcomp[i].optype == IMG_TYPE_REDBOOT) && | 1937 | if ((pflashcomp[i].optype == IMG_TYPE_REDBOOT) && |
| 1930 | (!be_flash_redboot(adapter, fw->data, | 1938 | (!be_flash_redboot(adapter, fw->data, |
| 1931 | pflashcomp[i].offset, pflashcomp[i].size, | 1939 | pflashcomp[i].offset, pflashcomp[i].size, |
| @@ -1985,16 +1993,7 @@ int be_load_fw(struct be_adapter *adapter, u8 *func) | |||
| 1985 | struct be_dma_mem flash_cmd; | 1993 | struct be_dma_mem flash_cmd; |
| 1986 | int status, i = 0; | 1994 | int status, i = 0; |
| 1987 | const u8 *p; | 1995 | const u8 *p; |
| 1988 | char fw_ver[FW_VER_LEN]; | ||
| 1989 | char fw_cfg; | ||
| 1990 | |||
| 1991 | status = be_cmd_get_fw_ver(adapter, fw_ver); | ||
| 1992 | if (status) | ||
| 1993 | return status; | ||
| 1994 | 1996 | ||
| 1995 | fw_cfg = *(fw_ver + 2); | ||
| 1996 | if (fw_cfg == '0') | ||
| 1997 | fw_cfg = '1'; | ||
| 1998 | strcpy(fw_file, func); | 1997 | strcpy(fw_file, func); |
| 1999 | 1998 | ||
| 2000 | status = request_firmware(&fw, fw_file, &adapter->pdev->dev); | 1999 | status = request_firmware(&fw, fw_file, &adapter->pdev->dev); |
