--- /dev/null
+From: Jamie Wellnitz <jamie.wellnitz@emulex.com>
+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 <Jamie.Wellnitz@emulex.com>
+Signed-off-by: Hannes Reinecke <hare@suse.de>
+--
+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"