Hi James, On Mon, Jan 04, 2021 at 10:02:27AM -0800, James Smart wrote: > A very long time ago, there was a feature: auto sli mode. It gave the > user the ability to auto select the SLI mode (SLI2 or SLI3) to run the > port in, or even force SLI2 mode if configured. Because of the > convoluted logic, the CONFIG_PORT mbox command ends up being called 2 or > 3 times. It should have been called only once. Additionally, the driver > no longer supports SLI-2, so only SLI-3 mode should be allowed. > > The following changes were made: > - Force module parameter to SLI3 only. > - Rip out redundant CONFIG_PORT mbox commands. > - Force CONFIG_PORT mbox command to be in beginning of enable ISR routine. > - Added changes for offline to online behavior We got a regression report for this patch. The problem seems to be related with older Emulex HBAs. The symptom is in this case one port is not enabled. A revert of this patch fixed the problem. This was observed with: Emulex LPe11000 FV2.72X2 DV12.8.0.7 HN:FR2AS6AP2-0001 OS:Linux Here some ramblings from my debugging: In the logs I found: > 0000:0b:00.0: 0:0431 Failed to enable interrupt. > 0000:0b:00.0: 0:0431 Failed to enable interrupt. > 0000:0b:00.0: 0:0431 Failed to enable interrupt. cfg_sli_mode used to be 0 (auto) and the config port setup used to try first mode = 3 and then fall back to mode = 2 > - rc = lpfc_sli_config_port(phba, mode); > - > - if (rc && phba->cfg_sli_mode == 3) > - lpfc_printf_log(phba, KERN_ERR, LOG_TRACE_EVENT, > - "1820 Unable to select SLI-3. " > - "Not supported by adapter.\n"); > - if (rc && mode != 2) > - rc = lpfc_sli_config_port(phba, 2); the port config is now in lpfc_sli_enable_intr which is hardcoded to LPFC_SLI_REV3 and I think this fails and the HBA_NEEDS_CFG_PORT flag is not resetted, hence in lpfc_sli_hba_setup() the new code tries to enable the port again with: > + /* Enable ISR already does config_port because of config_msi mbx */ > + if (phba->hba_flag & HBA_NEEDS_CFG_PORT) { > + rc = lpfc_sli_config_port(phba, LPFC_SLI_REV3); > + if (rc) > + return -EIO; > + phba->hba_flag &= ~HBA_NEEDS_CFG_PORT; Though I think this should something like lpfc_sli_config_port(phba, LPFC_SLI_REV2); for the specific case. HTH! Thanks, Daniel