Commit 586b2816 authored by Rasesh Mody's avatar Rasesh Mody Committed by David S. Miller

bna: Brocade 1860 HW Enablement

This patch enables new HW Brocade 1860. Add BFA_CM_NIC capability mask to
bfa_ioc_attr, Sub-System Device ID Info and support for Brocade 1860 device
ID to bfa_ioc.c and bnad.c.
Signed-off-by: default avatarGurunatha Karaje <gkaraje@brocade.com>
Signed-off-by: default avatarRasesh Mody <rmody@brocade.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 1bf9fd70
...@@ -193,6 +193,7 @@ struct bfa_ioc_attr { ...@@ -193,6 +193,7 @@ struct bfa_ioc_attr {
enum { enum {
BFA_CM_HBA = 0x01, BFA_CM_HBA = 0x01,
BFA_CM_CNA = 0x02, BFA_CM_CNA = 0x02,
BFA_CM_NIC = 0x04,
}; };
/** /**
...@@ -271,7 +272,20 @@ enum { ...@@ -271,7 +272,20 @@ enum {
#define bfa_asic_id_ct(device) \ #define bfa_asic_id_ct(device) \
((device) == PCI_DEVICE_ID_BROCADE_CT || \ ((device) == PCI_DEVICE_ID_BROCADE_CT || \
(device) == PCI_DEVICE_ID_BROCADE_CT_FC) (device) == PCI_DEVICE_ID_BROCADE_CT_FC)
#define bfa_asic_id_ctc(device) (bfa_asic_id_ct(device)) #define bfa_asic_id_ct2(device) \
((device) == BFA_PCI_DEVICE_ID_CT2)
#define bfa_asic_id_ctc(device) \
(bfa_asic_id_ct(device) || bfa_asic_id_ct2(device))
/**
* PCI sub-system device and vendor ID information
*/
enum {
BFA_PCI_FCOE_SSDEVICE_ID = 0x14,
BFA_PCI_CT2_SSID_FCoE = 0x22,
BFA_PCI_CT2_SSID_ETH = 0x23,
BFA_PCI_CT2_SSID_FC = 0x24,
};
enum bfa_mode { enum bfa_mode {
BFA_MODE_HBA = 1, BFA_MODE_HBA = 1,
......
...@@ -1977,6 +1977,29 @@ bfa_nw_ioc_pci_init(struct bfa_ioc *ioc, struct bfa_pcidev *pcidev, ...@@ -1977,6 +1977,29 @@ bfa_nw_ioc_pci_init(struct bfa_ioc *ioc, struct bfa_pcidev *pcidev,
ioc->ad_cap_bm = BFA_CM_CNA; ioc->ad_cap_bm = BFA_CM_CNA;
break; break;
case BFA_PCI_DEVICE_ID_CT2:
ioc->asic_gen = BFI_ASIC_GEN_CT2;
if (clscode == BFI_PCIFN_CLASS_FC &&
pcidev->ssid == BFA_PCI_CT2_SSID_FC) {
ioc->asic_mode = BFI_ASIC_MODE_FC16;
ioc->fcmode = true;
ioc->port_mode = ioc->port_mode_cfg = BFA_MODE_HBA;
ioc->ad_cap_bm = BFA_CM_HBA;
} else {
ioc->port0_mode = ioc->port1_mode = BFI_PORT_MODE_ETH;
ioc->asic_mode = BFI_ASIC_MODE_ETH;
if (pcidev->ssid == BFA_PCI_CT2_SSID_FCoE) {
ioc->port_mode =
ioc->port_mode_cfg = BFA_MODE_CNA;
ioc->ad_cap_bm = BFA_CM_CNA;
} else {
ioc->port_mode =
ioc->port_mode_cfg = BFA_MODE_NIC;
ioc->ad_cap_bm = BFA_CM_NIC;
}
}
break;
default: default:
BUG_ON(1); BUG_ON(1);
} }
......
...@@ -35,6 +35,7 @@ struct bfa_pcidev { ...@@ -35,6 +35,7 @@ struct bfa_pcidev {
int pci_slot; int pci_slot;
u8 pci_func; u8 pci_func;
u16 device_id; u16 device_id;
u16 ssid;
void __iomem *pci_bar_kva; void __iomem *pci_bar_kva;
}; };
......
...@@ -133,6 +133,10 @@ ...@@ -133,6 +133,10 @@
ct_reg_addr_init((_bna), (_pcidev)); \ ct_reg_addr_init((_bna), (_pcidev)); \
ct_bit_defn_init((_bna), (_pcidev)); \ ct_bit_defn_init((_bna), (_pcidev)); \
break; \ break; \
case BFA_PCI_DEVICE_ID_CT2: \
ct2_reg_addr_init((_bna), (_pcidev)); \
ct2_bit_defn_init((_bna), (_pcidev)); \
break; \
} \ } \
} }
......
...@@ -3428,7 +3428,14 @@ static DEFINE_PCI_DEVICE_TABLE(bnad_pci_id_table) = { ...@@ -3428,7 +3428,14 @@ static DEFINE_PCI_DEVICE_TABLE(bnad_pci_id_table) = {
PCI_DEVICE_ID_BROCADE_CT), PCI_DEVICE_ID_BROCADE_CT),
.class = PCI_CLASS_NETWORK_ETHERNET << 8, .class = PCI_CLASS_NETWORK_ETHERNET << 8,
.class_mask = 0xffff00 .class_mask = 0xffff00
}, {0, } },
{
PCI_DEVICE(PCI_VENDOR_ID_BROCADE,
BFA_PCI_DEVICE_ID_CT2),
.class = PCI_CLASS_NETWORK_ETHERNET << 8,
.class_mask = 0xffff00
},
{0, },
}; };
MODULE_DEVICE_TABLE(pci, bnad_pci_id_table); MODULE_DEVICE_TABLE(pci, bnad_pci_id_table);
......
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