From: Jamie Wellnitz Subject: Update lpfc from 8.2.8.11 to 8.2.8.12 References: bnc#467713 lpfc 8.2.8.12 fixes a few bugs found in our qual cycle on SLES 11 RC2: * Changed version number to 8.2.8.12 * Fixed bug with sysfs fc_host WWNs not being updated after changing the WWNs (CR 87391) * Increased HBQ buffers to support 40KB SSC sequences (CR 86564) * Fixed a kernel panic while trying to delete authentication timer (CR 87144) Signed-off-by: Jamie Wellnitz Signed-off-by: Hannes Reinecke -- diff -urpN a/drivers/scsi/lpfc/lpfc_auth_access.c b/drivers/scsi/lpfc/lpfc_auth_access.c --- a/drivers/scsi/lpfc/lpfc_auth_access.c 2009-01-20 13:31:08.517461000 -0500 +++ b/drivers/scsi/lpfc/lpfc_auth_access.c 2009-01-20 13:31:08.600460000 -0500 @@ -223,6 +223,9 @@ lpfc_fc_sc_request(struct lpfc_vport *vp memcpy(fc_nl_sc_msg->data, auth_req, auth_req_len); fc_nl_sc_msg->tran_id = seq; + lpfc_fc_sc_add_timer(fc_sc_req, FC_SC_REQ_TIMEOUT, + lpfc_fc_sc_req_times_out); + spin_lock_irqsave(shost->host_lock, flags); list_add_tail(&fc_sc_req->rlist, &vport->sc_response_wait_queue); spin_unlock_irqrestore(shost->host_lock, flags); @@ -230,8 +233,6 @@ lpfc_fc_sc_request(struct lpfc_vport *vp (SCSI_NL_VID_TYPE_PCI | PCI_VENDOR_ID_EMULEX), (char *) fc_nl_sc_msg, len); kfree(fc_nl_sc_msg); - lpfc_fc_sc_add_timer(fc_sc_req, FC_SC_REQ_TIMEOUT, - lpfc_fc_sc_req_times_out); return 0; } diff -urpN a/drivers/scsi/lpfc/lpfc_init.c b/drivers/scsi/lpfc/lpfc_init.c --- a/drivers/scsi/lpfc/lpfc_init.c 2009-01-20 13:31:08.554460000 -0500 +++ b/drivers/scsi/lpfc/lpfc_init.c 2009-01-20 13:31:08.640460000 -0500 @@ -332,6 +332,7 @@ int lpfc_config_port_post(struct lpfc_hba *phba) { struct lpfc_vport *vport = phba->pport; + struct Scsi_Host *shost = lpfc_shost_from_vport(vport); LPFC_MBOXQ_t *pmb; MAILBOX_t *mb; struct lpfc_dmabuf *mp; @@ -389,6 +390,11 @@ lpfc_config_port_post(struct lpfc_hba *p sizeof (struct lpfc_name)); memcpy(&vport->fc_portname, &vport->fc_sparam.portName, sizeof (struct lpfc_name)); + + /* Update the fc_host data structures with new wwn. */ + fc_host_node_name(shost) = wwn_to_u64(vport->fc_nodename.u.wwn); + fc_host_port_name(shost) = wwn_to_u64(vport->fc_portname.u.wwn); + /* If no serial number in VPD data, use low 6 bytes of WWNN */ /* This should be consolidated into parse_vpd ? - mr */ if (phba->SerialNumber[0] == 0) { @@ -1765,8 +1771,10 @@ lpfc_stop_vport_timers(struct lpfc_vport del_timer_sync(&vport->els_tmofunc); del_timer_sync(&vport->fc_fdmitmo); while (!list_empty(&vport->sc_response_wait_queue)) { - fc_sc_req = list_get_first(&vport->sc_response_wait_queue, + list_remove_head(&vport->sc_response_wait_queue, fc_sc_req, struct fc_security_request, rlist); + if (!fc_sc_req) + continue; del_timer_sync(&fc_sc_req->timer); kfree(fc_sc_req); } diff -urpN a/drivers/scsi/lpfc/lpfc_sli.c b/drivers/scsi/lpfc/lpfc_sli.c --- a/drivers/scsi/lpfc/lpfc_sli.c 2009-01-20 13:31:08.580458000 -0500 +++ b/drivers/scsi/lpfc/lpfc_sli.c 2009-01-20 13:31:08.665462000 -0500 @@ -817,8 +817,8 @@ static struct lpfc_hbq_init lpfc_els_hbq .profile = 0, .ring_mask = (1 << LPFC_ELS_RING), .buffer_count = 0, - .init_count = 20, - .add_count = 5, + .init_count = 40, + .add_count = 40, }; /* HBQ for the extra ring if needed */ diff -urpN a/drivers/scsi/lpfc/lpfc_version.h b/drivers/scsi/lpfc/lpfc_version.h --- a/drivers/scsi/lpfc/lpfc_version.h 2009-01-20 13:31:08.583459000 -0500 +++ b/drivers/scsi/lpfc/lpfc_version.h 2009-01-20 13:31:08.668462000 -0500 @@ -18,7 +18,7 @@ * included with this package. * *******************************************************************/ -#define LPFC_DRIVER_VERSION "8.2.8.11" +#define LPFC_DRIVER_VERSION "8.2.8.12" #define LPFC_DRIVER_NAME "lpfc" #define LPFC_SP_DRIVER_HANDLER_NAME "lpfc:sp"