[SCSI] lpfc 8.3.19: Add SLI4 FC Discovery support
[cascardo/linux.git] / drivers / scsi / lpfc / lpfc_ct.c
index 463b749..c004fa9 100644 (file)
 #include "lpfc_vport.h"
 #include "lpfc_debugfs.h"
 
-#define HBA_PORTSPEED_UNKNOWN               0  /* Unknown - transceiver
-                                                * incapable of reporting */
-#define HBA_PORTSPEED_1GBIT                 1  /* 1 GBit/sec */
-#define HBA_PORTSPEED_2GBIT                 2  /* 2 GBit/sec */
-#define HBA_PORTSPEED_4GBIT                 8   /* 4 GBit/sec */
-#define HBA_PORTSPEED_8GBIT                16   /* 8 GBit/sec */
-#define HBA_PORTSPEED_10GBIT                4  /* 10 GBit/sec */
-#define HBA_PORTSPEED_NOT_NEGOTIATED        5  /* Speed not established */
+/* FDMI Port Speed definitions */
+#define HBA_PORTSPEED_1GBIT            0x0001  /* 1 GBit/sec */
+#define HBA_PORTSPEED_2GBIT            0x0002  /* 2 GBit/sec */
+#define HBA_PORTSPEED_4GBIT            0x0008  /* 4 GBit/sec */
+#define HBA_PORTSPEED_10GBIT           0x0004  /* 10 GBit/sec */
+#define HBA_PORTSPEED_8GBIT            0x0010  /* 8 GBit/sec */
+#define HBA_PORTSPEED_16GBIT           0x0020  /* 16 GBit/sec */
+#define HBA_PORTSPEED_UNKNOWN          0x0800  /* Unknown */
 
 #define FOURBYTES      4
 
@@ -1593,8 +1593,10 @@ lpfc_fdmi_cmd(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, int cmdcode)
                        ae->ad.bits.AttrLen = be16_to_cpu(FOURBYTES + 4);
 
                        ae->un.SupportSpeed = 0;
+                       if (phba->lmt & LMT_16Gb)
+                               ae->un.SupportSpeed |= HBA_PORTSPEED_16GBIT;
                        if (phba->lmt & LMT_10Gb)
-                               ae->un.SupportSpeed = HBA_PORTSPEED_10GBIT;
+                               ae->un.SupportSpeed |= HBA_PORTSPEED_10GBIT;
                        if (phba->lmt & LMT_8Gb)
                                ae->un.SupportSpeed |= HBA_PORTSPEED_8GBIT;
                        if (phba->lmt & LMT_4Gb)
@@ -1612,24 +1614,26 @@ lpfc_fdmi_cmd(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, int cmdcode)
                        ae->ad.bits.AttrType = be16_to_cpu(PORT_SPEED);
                        ae->ad.bits.AttrLen = be16_to_cpu(FOURBYTES + 4);
                        switch(phba->fc_linkspeed) {
-                               case LA_1GHZ_LINK:
-                                       ae->un.PortSpeed = HBA_PORTSPEED_1GBIT;
+                       case LPFC_LINK_SPEED_1GHZ:
+                               ae->un.PortSpeed = HBA_PORTSPEED_1GBIT;
                                break;
-                               case LA_2GHZ_LINK:
-                                       ae->un.PortSpeed = HBA_PORTSPEED_2GBIT;
+                       case LPFC_LINK_SPEED_2GHZ:
+                               ae->un.PortSpeed = HBA_PORTSPEED_2GBIT;
                                break;
-                               case LA_4GHZ_LINK:
-                                       ae->un.PortSpeed = HBA_PORTSPEED_4GBIT;
+                       case LPFC_LINK_SPEED_4GHZ:
+                               ae->un.PortSpeed = HBA_PORTSPEED_4GBIT;
                                break;
-                               case LA_8GHZ_LINK:
-                                       ae->un.PortSpeed = HBA_PORTSPEED_8GBIT;
+                       case LPFC_LINK_SPEED_8GHZ:
+                               ae->un.PortSpeed = HBA_PORTSPEED_8GBIT;
                                break;
-                               case LA_10GHZ_LINK:
-                                       ae->un.PortSpeed = HBA_PORTSPEED_10GBIT;
+                       case LPFC_LINK_SPEED_10GHZ:
+                               ae->un.PortSpeed = HBA_PORTSPEED_10GBIT;
                                break;
-                               default:
-                                       ae->un.PortSpeed =
-                                               HBA_PORTSPEED_UNKNOWN;
+                       case LPFC_LINK_SPEED_16GHZ:
+                               ae->un.PortSpeed = HBA_PORTSPEED_16GBIT;
+                               break;
+                       default:
+                               ae->un.PortSpeed = HBA_PORTSPEED_UNKNOWN;
                                break;
                        }
                        pab->ab.EntryCnt++;