diff options
Diffstat (limited to 'drivers/net/benet')
-rw-r--r-- | drivers/net/benet/be.h | 5 | ||||
-rw-r--r-- | drivers/net/benet/be_cmds.c | 6 | ||||
-rw-r--r-- | drivers/net/benet/be_hw.h | 5 | ||||
-rw-r--r-- | drivers/net/benet/be_main.c | 25 |
4 files changed, 15 insertions, 26 deletions
diff --git a/drivers/net/benet/be.h b/drivers/net/benet/be.h index be81fb2d10f7..8f0752553681 100644 --- a/drivers/net/benet/be.h +++ b/drivers/net/benet/be.h | |||
@@ -290,11 +290,6 @@ extern const struct ethtool_ops be_ethtool_ops; | |||
290 | 290 | ||
291 | #define drvr_stats(adapter) (&adapter->stats.drvr_stats) | 291 | #define drvr_stats(adapter) (&adapter->stats.drvr_stats) |
292 | 292 | ||
293 | static inline unsigned int be_pci_func(struct be_adapter *adapter) | ||
294 | { | ||
295 | return PCI_FUNC(adapter->pdev->devfn); | ||
296 | } | ||
297 | |||
298 | #define BE_SET_NETDEV_OPS(netdev, ops) (netdev->netdev_ops = ops) | 293 | #define BE_SET_NETDEV_OPS(netdev, ops) (netdev->netdev_ops = ops) |
299 | 294 | ||
300 | #define PAGE_SHIFT_4K 12 | 295 | #define PAGE_SHIFT_4K 12 |
diff --git a/drivers/net/benet/be_cmds.c b/drivers/net/benet/be_cmds.c index 4b1f80519ca4..c59215361f4e 100644 --- a/drivers/net/benet/be_cmds.c +++ b/drivers/net/benet/be_cmds.c | |||
@@ -465,8 +465,6 @@ int be_cmd_eq_create(struct be_adapter *adapter, | |||
465 | 465 | ||
466 | req->num_pages = cpu_to_le16(PAGES_4K_SPANNED(q_mem->va, q_mem->size)); | 466 | req->num_pages = cpu_to_le16(PAGES_4K_SPANNED(q_mem->va, q_mem->size)); |
467 | 467 | ||
468 | AMAP_SET_BITS(struct amap_eq_context, func, req->context, | ||
469 | be_pci_func(adapter)); | ||
470 | AMAP_SET_BITS(struct amap_eq_context, valid, req->context, 1); | 468 | AMAP_SET_BITS(struct amap_eq_context, valid, req->context, 1); |
471 | /* 4byte eqe*/ | 469 | /* 4byte eqe*/ |
472 | AMAP_SET_BITS(struct amap_eq_context, size, req->context, 0); | 470 | AMAP_SET_BITS(struct amap_eq_context, size, req->context, 0); |
@@ -629,7 +627,6 @@ int be_cmd_cq_create(struct be_adapter *adapter, | |||
629 | AMAP_SET_BITS(struct amap_cq_context, eventable, ctxt, 1); | 627 | AMAP_SET_BITS(struct amap_cq_context, eventable, ctxt, 1); |
630 | AMAP_SET_BITS(struct amap_cq_context, eqid, ctxt, eq->id); | 628 | AMAP_SET_BITS(struct amap_cq_context, eqid, ctxt, eq->id); |
631 | AMAP_SET_BITS(struct amap_cq_context, armed, ctxt, 1); | 629 | AMAP_SET_BITS(struct amap_cq_context, armed, ctxt, 1); |
632 | AMAP_SET_BITS(struct amap_cq_context, func, ctxt, be_pci_func(adapter)); | ||
633 | be_dws_cpu_to_le(ctxt, sizeof(req->context)); | 630 | be_dws_cpu_to_le(ctxt, sizeof(req->context)); |
634 | 631 | ||
635 | be_cmd_page_addrs_prepare(req->pages, ARRAY_SIZE(req->pages), q_mem); | 632 | be_cmd_page_addrs_prepare(req->pages, ARRAY_SIZE(req->pages), q_mem); |
@@ -678,7 +675,6 @@ int be_cmd_mccq_create(struct be_adapter *adapter, | |||
678 | 675 | ||
679 | req->num_pages = PAGES_4K_SPANNED(q_mem->va, q_mem->size); | 676 | req->num_pages = PAGES_4K_SPANNED(q_mem->va, q_mem->size); |
680 | 677 | ||
681 | AMAP_SET_BITS(struct amap_mcc_context, fid, ctxt, be_pci_func(adapter)); | ||
682 | AMAP_SET_BITS(struct amap_mcc_context, valid, ctxt, 1); | 678 | AMAP_SET_BITS(struct amap_mcc_context, valid, ctxt, 1); |
683 | AMAP_SET_BITS(struct amap_mcc_context, ring_size, ctxt, | 679 | AMAP_SET_BITS(struct amap_mcc_context, ring_size, ctxt, |
684 | be_encoded_q_len(mccq->len)); | 680 | be_encoded_q_len(mccq->len)); |
@@ -727,8 +723,6 @@ int be_cmd_txq_create(struct be_adapter *adapter, | |||
727 | 723 | ||
728 | AMAP_SET_BITS(struct amap_tx_context, tx_ring_size, ctxt, | 724 | AMAP_SET_BITS(struct amap_tx_context, tx_ring_size, ctxt, |
729 | be_encoded_q_len(txq->len)); | 725 | be_encoded_q_len(txq->len)); |
730 | AMAP_SET_BITS(struct amap_tx_context, pci_func_id, ctxt, | ||
731 | be_pci_func(adapter)); | ||
732 | AMAP_SET_BITS(struct amap_tx_context, ctx_valid, ctxt, 1); | 726 | AMAP_SET_BITS(struct amap_tx_context, ctx_valid, ctxt, 1); |
733 | AMAP_SET_BITS(struct amap_tx_context, cq_id_send, ctxt, cq->id); | 727 | AMAP_SET_BITS(struct amap_tx_context, cq_id_send, ctxt, cq->id); |
734 | 728 | ||
diff --git a/drivers/net/benet/be_hw.h b/drivers/net/benet/be_hw.h index 5ffb149181ad..2d4a4b827637 100644 --- a/drivers/net/benet/be_hw.h +++ b/drivers/net/benet/be_hw.h | |||
@@ -114,8 +114,7 @@ | |||
114 | #define IMG_TYPE_ISCSI_BACKUP 9 | 114 | #define IMG_TYPE_ISCSI_BACKUP 9 |
115 | #define IMG_TYPE_FCOE_FW_ACTIVE 10 | 115 | #define IMG_TYPE_FCOE_FW_ACTIVE 10 |
116 | #define IMG_TYPE_FCOE_FW_BACKUP 11 | 116 | #define IMG_TYPE_FCOE_FW_BACKUP 11 |
117 | #define IMG_TYPE_NCSI_BITFILE 13 | 117 | #define IMG_TYPE_NCSI_FW 13 |
118 | #define IMG_TYPE_NCSI_8051 14 | ||
119 | 118 | ||
120 | #define FLASHROM_OPER_FLASH 1 | 119 | #define FLASHROM_OPER_FLASH 1 |
121 | #define FLASHROM_OPER_SAVE 2 | 120 | #define FLASHROM_OPER_SAVE 2 |
@@ -127,6 +126,7 @@ | |||
127 | #define FLASH_IMAGE_MAX_SIZE_g3 (2097152) /* Max fw image size */ | 126 | #define FLASH_IMAGE_MAX_SIZE_g3 (2097152) /* Max fw image size */ |
128 | #define FLASH_BIOS_IMAGE_MAX_SIZE_g3 (524288) /* Max OPTION ROM img sz */ | 127 | #define FLASH_BIOS_IMAGE_MAX_SIZE_g3 (524288) /* Max OPTION ROM img sz */ |
129 | #define FLASH_REDBOOT_IMAGE_MAX_SIZE_g3 (1048576) /* Max Redboot image sz */ | 128 | #define FLASH_REDBOOT_IMAGE_MAX_SIZE_g3 (1048576) /* Max Redboot image sz */ |
129 | #define FLASH_NCSI_IMAGE_MAX_SIZE_g3 (262144) /* Max NSCI image sz */ | ||
130 | 130 | ||
131 | #define FLASH_NCSI_MAGIC (0x16032009) | 131 | #define FLASH_NCSI_MAGIC (0x16032009) |
132 | #define FLASH_NCSI_DISABLED (0) | 132 | #define FLASH_NCSI_DISABLED (0) |
@@ -144,6 +144,7 @@ | |||
144 | #define FLASH_FCoE_BIOS_START_g2 (524288) | 144 | #define FLASH_FCoE_BIOS_START_g2 (524288) |
145 | #define FLASH_REDBOOT_START_g2 (0) | 145 | #define FLASH_REDBOOT_START_g2 (0) |
146 | 146 | ||
147 | #define FLASH_NCSI_START_g3 (15990784) | ||
147 | #define FLASH_iSCSI_PRIMARY_IMAGE_START_g3 (2097152) | 148 | #define FLASH_iSCSI_PRIMARY_IMAGE_START_g3 (2097152) |
148 | #define FLASH_iSCSI_BACKUP_IMAGE_START_g3 (4194304) | 149 | #define FLASH_iSCSI_BACKUP_IMAGE_START_g3 (4194304) |
149 | #define FLASH_FCoE_PRIMARY_IMAGE_START_g3 (6291456) | 150 | #define FLASH_FCoE_PRIMARY_IMAGE_START_g3 (6291456) |
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); |