diff options
author | Rasesh Mody <rmody@brocade.com> | 2010-12-23 16:45:06 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-12-25 22:16:01 -0500 |
commit | 2c7d38210ff8e65f8961699bce92c273c77d113c (patch) | |
tree | ec6a75c0c6d5f22a71e1e098b275677c07c1cee2 /drivers/net | |
parent | f7c0fa4cd5dcf58dd95b216d2c33444a3b4a44e0 (diff) |
bna: IOC uninit check and misc cleanup
Change Details:
- Added a check in ioc firmware lock function to see if IOC is
in BFI_IOC_UNINIT state or not. If it is not in UNINIT state
and the last IOC boot was not done by OS driver, force IOC state
to BFI_IOC_UNINIT
- Unused macro and API cleanup
Signed-off-by: Debashis Dutt <ddutt@brocade.com>
Signed-off-by: Rasesh Mody <rmody@brocade.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/bna/bfa_defs_mfg_comm.h | 22 | ||||
-rw-r--r-- | drivers/net/bna/bfa_ioc.c | 45 |
2 files changed, 2 insertions, 65 deletions
diff --git a/drivers/net/bna/bfa_defs_mfg_comm.h b/drivers/net/bna/bfa_defs_mfg_comm.h index 987978fcb3fe..fdd677618361 100644 --- a/drivers/net/bna/bfa_defs_mfg_comm.h +++ b/drivers/net/bna/bfa_defs_mfg_comm.h | |||
@@ -95,28 +95,6 @@ enum { | |||
95 | (type) == BFA_MFG_TYPE_CNA10P1 || \ | 95 | (type) == BFA_MFG_TYPE_CNA10P1 || \ |
96 | bfa_mfg_is_mezz(type))) | 96 | bfa_mfg_is_mezz(type))) |
97 | 97 | ||
98 | /** | ||
99 | * Check if the card having old wwn/mac handling | ||
100 | */ | ||
101 | #define bfa_mfg_is_old_wwn_mac_model(type) (( \ | ||
102 | (type) == BFA_MFG_TYPE_FC8P2 || \ | ||
103 | (type) == BFA_MFG_TYPE_FC8P1 || \ | ||
104 | (type) == BFA_MFG_TYPE_FC4P2 || \ | ||
105 | (type) == BFA_MFG_TYPE_FC4P1 || \ | ||
106 | (type) == BFA_MFG_TYPE_CNA10P2 || \ | ||
107 | (type) == BFA_MFG_TYPE_CNA10P1 || \ | ||
108 | (type) == BFA_MFG_TYPE_JAYHAWK || \ | ||
109 | (type) == BFA_MFG_TYPE_WANCHESE)) | ||
110 | |||
111 | #define bfa_mfg_increment_wwn_mac(m, i) \ | ||
112 | do { \ | ||
113 | u32 t = ((m)[0] << 16) | ((m)[1] << 8) | (m)[2]; \ | ||
114 | t += (i); \ | ||
115 | (m)[0] = (t >> 16) & 0xFF; \ | ||
116 | (m)[1] = (t >> 8) & 0xFF; \ | ||
117 | (m)[2] = t & 0xFF; \ | ||
118 | } while (0) | ||
119 | |||
120 | #define bfa_mfg_adapter_prop_init_flash(card_type, prop) \ | 98 | #define bfa_mfg_adapter_prop_init_flash(card_type, prop) \ |
121 | do { \ | 99 | do { \ |
122 | switch ((card_type)) { \ | 100 | switch ((card_type)) { \ |
diff --git a/drivers/net/bna/bfa_ioc.c b/drivers/net/bna/bfa_ioc.c index e94e5aa97515..8ed147e803c3 100644 --- a/drivers/net/bna/bfa_ioc.c +++ b/drivers/net/bna/bfa_ioc.c | |||
@@ -58,9 +58,6 @@ | |||
58 | #define bfa_ioc_notify_hbfail(__ioc) \ | 58 | #define bfa_ioc_notify_hbfail(__ioc) \ |
59 | ((__ioc)->ioc_hwif->ioc_notify_hbfail(__ioc)) | 59 | ((__ioc)->ioc_hwif->ioc_notify_hbfail(__ioc)) |
60 | 60 | ||
61 | #define bfa_ioc_is_optrom(__ioc) \ | ||
62 | (bfa_cb_image_get_size(BFA_IOC_FWIMG_TYPE(__ioc)) < BFA_IOC_FWIMG_MINSZ) | ||
63 | |||
64 | #define bfa_ioc_mbox_cmd_pending(__ioc) \ | 61 | #define bfa_ioc_mbox_cmd_pending(__ioc) \ |
65 | (!list_empty(&((__ioc)->mbox_mod.cmd_q)) || \ | 62 | (!list_empty(&((__ioc)->mbox_mod.cmd_q)) || \ |
66 | readl((__ioc)->ioc_regs.hfn_mbox_cmd)) | 63 | readl((__ioc)->ioc_regs.hfn_mbox_cmd)) |
@@ -101,7 +98,6 @@ static void bfa_ioc_get_adapter_manufacturer(struct bfa_ioc *ioc, | |||
101 | char *manufacturer); | 98 | char *manufacturer); |
102 | static void bfa_ioc_get_adapter_model(struct bfa_ioc *ioc, char *model); | 99 | static void bfa_ioc_get_adapter_model(struct bfa_ioc *ioc, char *model); |
103 | static u64 bfa_ioc_get_pwwn(struct bfa_ioc *ioc); | 100 | static u64 bfa_ioc_get_pwwn(struct bfa_ioc *ioc); |
104 | static mac_t bfa_ioc_get_mfg_mac(struct bfa_ioc *ioc); | ||
105 | 101 | ||
106 | /** | 102 | /** |
107 | * IOC state machine events | 103 | * IOC state machine events |
@@ -865,12 +861,6 @@ bfa_ioc_fwver_valid(struct bfa_ioc *ioc) | |||
865 | { | 861 | { |
866 | struct bfi_ioc_image_hdr fwhdr, *drv_fwhdr; | 862 | struct bfi_ioc_image_hdr fwhdr, *drv_fwhdr; |
867 | 863 | ||
868 | /** | ||
869 | * If bios/efi boot (flash based) -- return true | ||
870 | */ | ||
871 | if (bfa_ioc_is_optrom(ioc)) | ||
872 | return true; | ||
873 | |||
874 | bfa_nw_ioc_fwver_get(ioc, &fwhdr); | 864 | bfa_nw_ioc_fwver_get(ioc, &fwhdr); |
875 | drv_fwhdr = (struct bfi_ioc_image_hdr *) | 865 | drv_fwhdr = (struct bfi_ioc_image_hdr *) |
876 | bfa_cb_image_get_chunk(BFA_IOC_FWIMG_TYPE(ioc), 0); | 866 | bfa_cb_image_get_chunk(BFA_IOC_FWIMG_TYPE(ioc), 0); |
@@ -934,13 +924,8 @@ bfa_ioc_hwinit(struct bfa_ioc *ioc, bool force) | |||
934 | /** | 924 | /** |
935 | * If IOC function is disabled and firmware version is same, | 925 | * If IOC function is disabled and firmware version is same, |
936 | * just re-enable IOC. | 926 | * just re-enable IOC. |
937 | * | ||
938 | * If option rom, IOC must not be in operational state. With | ||
939 | * convergence, IOC will be in operational state when 2nd driver | ||
940 | * is loaded. | ||
941 | */ | 927 | */ |
942 | if (ioc_fwstate == BFI_IOC_DISABLED || | 928 | if (ioc_fwstate == BFI_IOC_DISABLED || ioc_fwstate == BFI_IOC_OP) { |
943 | (!bfa_ioc_is_optrom(ioc) && ioc_fwstate == BFI_IOC_OP)) { | ||
944 | /** | 929 | /** |
945 | * When using MSI-X any pending firmware ready event should | 930 | * When using MSI-X any pending firmware ready event should |
946 | * be flushed. Otherwise MSI-X interrupts are not delivered. | 931 | * be flushed. Otherwise MSI-X interrupts are not delivered. |
@@ -1078,11 +1063,6 @@ bfa_ioc_download_fw(struct bfa_ioc *ioc, u32 boot_type, | |||
1078 | */ | 1063 | */ |
1079 | bfa_ioc_lmem_init(ioc); | 1064 | bfa_ioc_lmem_init(ioc); |
1080 | 1065 | ||
1081 | /** | ||
1082 | * Flash based firmware boot | ||
1083 | */ | ||
1084 | if (bfa_ioc_is_optrom(ioc)) | ||
1085 | boot_type = BFI_BOOT_TYPE_FLASH; | ||
1086 | fwimg = bfa_cb_image_get_chunk(BFA_IOC_FWIMG_TYPE(ioc), chunkno); | 1066 | fwimg = bfa_cb_image_get_chunk(BFA_IOC_FWIMG_TYPE(ioc), chunkno); |
1087 | 1067 | ||
1088 | pgnum = bfa_ioc_smem_pgnum(ioc, loff); | 1068 | pgnum = bfa_ioc_smem_pgnum(ioc, loff); |
@@ -1689,28 +1669,7 @@ bfa_ioc_get_pwwn(struct bfa_ioc *ioc) | |||
1689 | mac_t | 1669 | mac_t |
1690 | bfa_nw_ioc_get_mac(struct bfa_ioc *ioc) | 1670 | bfa_nw_ioc_get_mac(struct bfa_ioc *ioc) |
1691 | { | 1671 | { |
1692 | /* | 1672 | return ioc->attr->mac; |
1693 | * Currently mfg mac is used as FCoE enode mac (not configured by PBC) | ||
1694 | */ | ||
1695 | if (bfa_ioc_get_type(ioc) == BFA_IOC_TYPE_FCoE) | ||
1696 | return bfa_ioc_get_mfg_mac(ioc); | ||
1697 | else | ||
1698 | return ioc->attr->mac; | ||
1699 | } | ||
1700 | |||
1701 | static mac_t | ||
1702 | bfa_ioc_get_mfg_mac(struct bfa_ioc *ioc) | ||
1703 | { | ||
1704 | mac_t m; | ||
1705 | |||
1706 | m = ioc->attr->mfg_mac; | ||
1707 | if (bfa_mfg_is_old_wwn_mac_model(ioc->attr->card_type)) | ||
1708 | m.mac[MAC_ADDRLEN - 1] += bfa_ioc_pcifn(ioc); | ||
1709 | else | ||
1710 | bfa_mfg_increment_wwn_mac(&(m.mac[MAC_ADDRLEN-3]), | ||
1711 | bfa_ioc_pcifn(ioc)); | ||
1712 | |||
1713 | return m; | ||
1714 | } | 1673 | } |
1715 | 1674 | ||
1716 | /** | 1675 | /** |