Merge tag 'iwlwifi-for-kalle-2015-04-28' of https://git.kernel.org/pub/scm/linux...
[firefly-linux-kernel-4.4.55.git] / drivers / scsi / lpfc / lpfc_init.c
index 74672e0263ff5b775de56c03e6ed562538bc194e..e8c8c1ecc1f54dbf7f1003199397284600eefd46 100644 (file)
@@ -1,7 +1,7 @@
 /*******************************************************************
  * This file is part of the Emulex Linux Device Driver for         *
  * Fibre Channel Host Bus Adapters.                                *
- * Copyright (C) 2004-2014 Emulex.  All rights reserved.           *
+ * Copyright (C) 2004-2015 Emulex.  All rights reserved.           *
  * EMULEX and SLI are trademarks of Emulex.                        *
  * www.emulex.com                                                  *
  * Portions Copyright (C) 2004-2005 Christoph Hellwig              *
@@ -2775,9 +2775,19 @@ lpfc_sli4_node_prep(struct lpfc_hba *phba)
                        list_for_each_entry_safe(ndlp, next_ndlp,
                                                 &vports[i]->fc_nodes,
                                                 nlp_listp) {
-                               if (NLP_CHK_NODE_ACT(ndlp))
+                               if (NLP_CHK_NODE_ACT(ndlp)) {
                                        ndlp->nlp_rpi =
                                                lpfc_sli4_alloc_rpi(phba);
+                                       lpfc_printf_vlog(ndlp->vport, KERN_INFO,
+                                                        LOG_NODE,
+                                                        "0009 rpi:%x DID:%x "
+                                                        "flg:%x map:%x %p\n",
+                                                        ndlp->nlp_rpi,
+                                                        ndlp->nlp_DID,
+                                                        ndlp->nlp_flag,
+                                                        ndlp->nlp_usg_map,
+                                                        ndlp);
+                               }
                        }
                }
        }
@@ -2941,8 +2951,18 @@ lpfc_offline_prep(struct lpfc_hba *phba, int mbx_action)
                                 * RPI. Get a new RPI when the adapter port
                                 * comes back online.
                                 */
-                               if (phba->sli_rev == LPFC_SLI_REV4)
+                               if (phba->sli_rev == LPFC_SLI_REV4) {
+                                       lpfc_printf_vlog(ndlp->vport,
+                                                        KERN_INFO, LOG_NODE,
+                                                        "0011 lpfc_offline: "
+                                                        "ndlp:x%p did %x "
+                                                        "usgmap:x%x rpi:%x\n",
+                                                        ndlp, ndlp->nlp_DID,
+                                                        ndlp->nlp_usg_map,
+                                                        ndlp->nlp_rpi);
+
                                        lpfc_sli4_free_rpi(phba, ndlp->nlp_rpi);
+                               }
                                lpfc_unreg_rpi(vports[i], ndlp);
                        }
                }
@@ -3706,6 +3726,11 @@ lpfc_sli4_parse_latt_link_speed(struct lpfc_hba *phba,
        case LPFC_ASYNC_LINK_SPEED_10GBPS:
                link_speed = LPFC_LINK_SPEED_10GHZ;
                break;
+       case LPFC_ASYNC_LINK_SPEED_20GBPS:
+       case LPFC_ASYNC_LINK_SPEED_25GBPS:
+       case LPFC_ASYNC_LINK_SPEED_40GBPS:
+               link_speed = LPFC_LINK_SPEED_UNKNOWN;
+               break;
        default:
                lpfc_printf_log(phba, KERN_ERR, LOG_INIT,
                                "0483 Invalid link-attention link speed: x%x\n",
@@ -3777,46 +3802,55 @@ lpfc_sli4_port_speed_parse(struct lpfc_hba *phba, uint32_t evt_code,
        switch (evt_code) {
        case LPFC_TRAILER_CODE_LINK:
                switch (speed_code) {
-               case LPFC_EVT_CODE_LINK_NO_LINK:
+               case LPFC_ASYNC_LINK_SPEED_ZERO:
                        port_speed = 0;
                        break;
-               case LPFC_EVT_CODE_LINK_10_MBIT:
+               case LPFC_ASYNC_LINK_SPEED_10MBPS:
                        port_speed = 10;
                        break;
-               case LPFC_EVT_CODE_LINK_100_MBIT:
+               case LPFC_ASYNC_LINK_SPEED_100MBPS:
                        port_speed = 100;
                        break;
-               case LPFC_EVT_CODE_LINK_1_GBIT:
+               case LPFC_ASYNC_LINK_SPEED_1GBPS:
                        port_speed = 1000;
                        break;
-               case LPFC_EVT_CODE_LINK_10_GBIT:
+               case LPFC_ASYNC_LINK_SPEED_10GBPS:
                        port_speed = 10000;
                        break;
+               case LPFC_ASYNC_LINK_SPEED_20GBPS:
+                       port_speed = 20000;
+                       break;
+               case LPFC_ASYNC_LINK_SPEED_25GBPS:
+                       port_speed = 25000;
+                       break;
+               case LPFC_ASYNC_LINK_SPEED_40GBPS:
+                       port_speed = 40000;
+                       break;
                default:
                        port_speed = 0;
                }
                break;
        case LPFC_TRAILER_CODE_FC:
                switch (speed_code) {
-               case LPFC_EVT_CODE_FC_NO_LINK:
+               case LPFC_FC_LA_SPEED_UNKNOWN:
                        port_speed = 0;
                        break;
-               case LPFC_EVT_CODE_FC_1_GBAUD:
+               case LPFC_FC_LA_SPEED_1G:
                        port_speed = 1000;
                        break;
-               case LPFC_EVT_CODE_FC_2_GBAUD:
+               case LPFC_FC_LA_SPEED_2G:
                        port_speed = 2000;
                        break;
-               case LPFC_EVT_CODE_FC_4_GBAUD:
+               case LPFC_FC_LA_SPEED_4G:
                        port_speed = 4000;
                        break;
-               case LPFC_EVT_CODE_FC_8_GBAUD:
+               case LPFC_FC_LA_SPEED_8G:
                        port_speed = 8000;
                        break;
-               case LPFC_EVT_CODE_FC_10_GBAUD:
+               case LPFC_FC_LA_SPEED_10G:
                        port_speed = 10000;
                        break;
-               case LPFC_EVT_CODE_FC_16_GBAUD:
+               case LPFC_FC_LA_SPEED_16G:
                        port_speed = 16000;
                        break;
                default:
@@ -7721,6 +7755,14 @@ lpfc_sli4_queue_setup(struct lpfc_hba *phba)
                        goto out_destroy_els_rq;
                }
        }
+
+       /*
+        * Configure EQ delay multipier for interrupt coalescing using
+        * MODIFY_EQ_DELAY for all EQs created, LPFC_MAX_EQ_DELAY at a time.
+        */
+       for (fcp_eqidx = 0; fcp_eqidx < phba->cfg_fcp_io_channel;
+                       fcp_eqidx += LPFC_MAX_EQ_DELAY)
+               lpfc_modify_fcp_eq_delay(phba, fcp_eqidx);
        return 0;
 
 out_destroy_els_rq: