lpfc: Remove global lpfc_delay_discovery attribute in leiu of per-hba lpfc_delay_disc...
authorJames Smart <james.smart@broadcom.com>
Wed, 6 Jul 2016 19:36:08 +0000 (12:36 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Fri, 15 Jul 2016 19:25:06 +0000 (15:25 -0400)
Remove global lpfc_delay_discovery attribute in leiu of per-hba
lpfc_delay_discovery

Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
Signed-off-by: James Smart <james.smart@broadcom.com>
Reviewed-by: Hannes Reinecke <hare@suse.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/lpfc/lpfc.h
drivers/scsi/lpfc/lpfc_attr.c
drivers/scsi/lpfc/lpfc_crtn.h
drivers/scsi/lpfc/lpfc_els.c

index 40e069c760911373927990d6bc0a5377a25de263..82d7b115b6501455209e77130cfb319ce0d25e28 100644 (file)
@@ -754,6 +754,7 @@ struct lpfc_hba {
        uint32_t cfg_iocb_cnt;
        uint32_t cfg_suppress_link_up;
        uint32_t cfg_rrq_xri_bitmap_sz;
+       uint32_t cfg_delay_discovery;
 #define LPFC_INITIALIZE_LINK              0    /* do normal init_link mbox */
 #define LPFC_DELAY_INIT_LINK              1    /* layered driver hold off */
 #define LPFC_DELAY_INIT_LINK_INDEFINITELY 2    /* wait, manual intervention */
index 25d91a86e4a6032dac6bd4e92cf5b8525c7d8a47..f5abcea49730226d4e95b7aff17f20fc05e088f1 100644 (file)
@@ -4815,11 +4815,8 @@ MODULE_PARM_DESC(lpfc_prot_guard, "host protection guard type");
  * accept and FCID/Fabric name/Fabric portname is changed.
  * Default value is 0.
  */
-int lpfc_delay_discovery;
-module_param(lpfc_delay_discovery, int, S_IRUGO);
-MODULE_PARM_DESC(lpfc_delay_discovery,
-       "Delay NPort discovery when Clean Address bit is cleared. "
-       "Allowed values: 0,1.");
+LPFC_ATTR(delay_discovery, 0, 0, 1,
+       "Delay NPort discovery when Clean Address bit is cleared.");
 
 /*
  * lpfc_sg_seg_cnt - Initial Maximum DMA Segment Count
@@ -5938,6 +5935,7 @@ lpfc_get_cfgparam(struct lpfc_hba *phba)
        lpfc_request_firmware_upgrade_init(phba, lpfc_req_fw_upgrade);
        lpfc_suppress_link_up_init(phba, lpfc_suppress_link_up);
        lpfc_iocb_cnt_init(phba, lpfc_iocb_cnt);
+       lpfc_delay_discovery_init(phba, lpfc_delay_discovery);
        phba->cfg_enable_dss = 1;
        lpfc_enable_mds_diags_init(phba, lpfc_enable_mds_diags);
        return;
index b8a2ddc49e5000ed0e98fd7e3c83388ad0957dd2..9f075db51099eacd8ded42af437cb1b5dbdaee28 100644 (file)
@@ -360,7 +360,6 @@ extern struct scsi_host_template lpfc_vport_template;
 extern struct fc_function_template lpfc_transport_functions;
 extern struct fc_function_template lpfc_vport_transport_functions;
 extern int lpfc_sli_mode;
-extern int lpfc_delay_discovery;
 
 int  lpfc_vport_symbolic_node_name(struct lpfc_vport *, char *, size_t);
 int  lpfc_vport_symbolic_port_name(struct lpfc_vport *, char *,        size_t);
index 5afbf4d06d53dc2d0be07f1f2a4c287cea29d297..c0af32f2495467e6bbd301718babeb01b8fc66c2 100644 (file)
@@ -594,6 +594,7 @@ static uint8_t
 lpfc_check_clean_addr_bit(struct lpfc_vport *vport,
                struct serv_parm *sp)
 {
+       struct lpfc_hba *phba = vport->phba;
        uint8_t fabric_param_changed = 0;
        struct Scsi_Host *shost = lpfc_shost_from_vport(vport);
 
@@ -615,7 +616,7 @@ lpfc_check_clean_addr_bit(struct lpfc_vport *vport,
         * - lpfc_delay_discovery module parameter is set.
         */
        if (fabric_param_changed && !sp->cmn.clean_address_bit &&
-           (vport->fc_prevDID || lpfc_delay_discovery)) {
+           (vport->fc_prevDID || phba->cfg_delay_discovery)) {
                spin_lock_irq(shost->host_lock);
                vport->fc_flag |= FC_DISC_DELAYED;
                spin_unlock_irq(shost->host_lock);