aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/bfa/bfa_lps.c
diff options
context:
space:
mode:
authorKrishna Gudipati <kgudipat@brocade.com>2010-03-03 17:43:45 -0800
committerJames Bottomley <James.Bottomley@suse.de>2010-03-04 16:15:24 +0530
commita046bf0559018ba3d16c412fc4e1aa2be5f11f36 (patch)
treee2f1583a2eadfe2211cf77fc25c03549cf5d0af9 /drivers/scsi/bfa/bfa_lps.c
parent[SCSI] bfa: New interface to handle firmware upgrade scenario (diff)
downloadlinux-dev-a046bf0559018ba3d16c412fc4e1aa2be5f11f36.tar.xz
linux-dev-a046bf0559018ba3d16c412fc4e1aa2be5f11f36.zip
[SCSI] bfa: Fix to allow creation of only 190 vports on CNA.
Brocade CNA currently supports only 190 vports (instead of 191), since there are only 192 unicast cam entries reserved for FCoE. Brocade CNA has a total of 256 unicast cam entries (192 FCoE + 64 LL) 192 cam entries = 1 burned in mac + 1 baseport FPMA mac + 190 vport FPMA macs. Made changes to the code to support only 190 vports. Signed-off-by: Krishna Gudipati <kgudipat@brocade.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi/bfa/bfa_lps.c')
-rw-r--r--drivers/scsi/bfa/bfa_lps.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/scsi/bfa/bfa_lps.c b/drivers/scsi/bfa/bfa_lps.c
index c8c2564af725..66b9b15f4294 100644
--- a/drivers/scsi/bfa/bfa_lps.c
+++ b/drivers/scsi/bfa/bfa_lps.c
@@ -18,6 +18,7 @@
#include <bfa.h>
#include <bfi/bfi_lps.h>
#include <cs/bfa_debug.h>
+#include <defs/bfa_defs_pci.h>
BFA_TRC_FILE(HAL, LPS);
BFA_MODULE(lps);
@@ -25,6 +26,12 @@ BFA_MODULE(lps);
#define BFA_LPS_MIN_LPORTS (1)
#define BFA_LPS_MAX_LPORTS (256)
+/*
+ * Maximum Vports supported per physical port or vf.
+ */
+#define BFA_LPS_MAX_VPORTS_SUPP_CB 255
+#define BFA_LPS_MAX_VPORTS_SUPP_CT 190
+
/**
* forward declarations
*/
@@ -598,6 +605,19 @@ bfa_lps_cvl_event(struct bfa_lps_s *lps)
bfa_cb_lps_cvl_event(lps->bfa->bfad, lps->uarg);
}
+u32
+bfa_lps_get_max_vport(struct bfa_s *bfa)
+{
+ struct bfa_ioc_attr_s ioc_attr;
+
+ bfa_get_attr(bfa, &ioc_attr);
+
+ if (ioc_attr.pci_attr.device_id == BFA_PCI_DEVICE_ID_CT)
+ return (BFA_LPS_MAX_VPORTS_SUPP_CT);
+ else
+ return (BFA_LPS_MAX_VPORTS_SUPP_CB);
+}
+
/**
* lps_public BFA LPS public functions
*/