mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-30 16:07:39 +00:00
scsi: lpfc: Fix configuration of BB credit recovery in service parameters
The driver today is reading service parameters from the firmware and then overwriting the firmware-provided values with values of its own. There are some switch features that require preliminary FLOGI's that are switch-specific and done prior to the actual fabric FLOGI for traffic. The fw will perform those FLOGIs and will revise the service parameters for the features configured. As the driver later overwrites those values with its own values, it misconfigures things like BBSCN use by doing so. Correct by eliminating the driver-overwrite of firmware values. The driver correctly re-reads the service parameters after each link up to obtain the latest values from firmware. Link: https://lore.kernel.org/r/20191105005708.7399-3-jsmart2021@gmail.com Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com> Signed-off-by: James Smart <jsmart2021@gmail.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
7cfd5639d9
commit
6bfb162082
1 changed files with 3 additions and 10 deletions
|
@ -1138,7 +1138,6 @@ void
|
|||
lpfc_mbx_cmpl_local_config_link(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb)
|
||||
{
|
||||
struct lpfc_vport *vport = pmb->vport;
|
||||
uint8_t bbscn = 0;
|
||||
|
||||
if (pmb->u.mb.mbxStatus)
|
||||
goto out;
|
||||
|
@ -1165,17 +1164,11 @@ lpfc_mbx_cmpl_local_config_link(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb)
|
|||
/* Start discovery by sending a FLOGI. port_state is identically
|
||||
* LPFC_FLOGI while waiting for FLOGI cmpl
|
||||
*/
|
||||
if (vport->port_state != LPFC_FLOGI) {
|
||||
if (phba->bbcredit_support && phba->cfg_enable_bbcr) {
|
||||
bbscn = bf_get(lpfc_bbscn_def,
|
||||
&phba->sli4_hba.bbscn_params);
|
||||
vport->fc_sparam.cmn.bbRcvSizeMsb &= 0xf;
|
||||
vport->fc_sparam.cmn.bbRcvSizeMsb |= (bbscn << 4);
|
||||
}
|
||||
if (vport->port_state != LPFC_FLOGI)
|
||||
lpfc_initial_flogi(vport);
|
||||
} else if (vport->fc_flag & FC_PT2PT) {
|
||||
else if (vport->fc_flag & FC_PT2PT)
|
||||
lpfc_disc_start(vport);
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
out:
|
||||
|
|
Loading…
Reference in a new issue