]>
Commit | Line | Data |
---|---|---|
2cb7cef9 BS |
1 | Subject: Update Emulex lpfc driver to 8.2.8.9 |
2 | From: Jamie Wellnitz <jamie.wellnitz@emulex.com> | |
3 | Date: Wed Dec 3 09:06:44 2008 +0100: | |
4 | References: bnc#420767 | |
5 | ||
6 | Changes from 8.2.8.7 to 8.2.8.9: | |
7 | ||
8 | * Changed version number to 8.2.8.9 | |
9 | * Remove unused defines from lpfc_auth_access.h | |
10 | * Fix firmware dump on CNAs (CR 86157) | |
11 | * Changed version number to 8.2.8.8 | |
12 | * Fixed wrong number of bytes copied reported to applications (CR 85743) | |
13 | * Fixed potential spin_lock problem when HBA is in MSI-X mode | |
14 | ||
15 | Signed-off-by: Jamie Wellnitz <jamie.wellnitz@emulex.com> | |
16 | Signed-off-by: Hannes Reinecke <hare@suse.de> | |
17 | ||
18 | diff --git a/drivers/scsi/lpfc/lpfc_auth_access.h b/drivers/scsi/lpfc/lpfc_auth_access.h | |
19 | index be7525f..0aadcd3 100644 | |
20 | --- a/drivers/scsi/lpfc/lpfc_auth_access.h | |
21 | +++ b/drivers/scsi/lpfc/lpfc_auth_access.h | |
22 | @@ -1,7 +1,7 @@ | |
23 | /******************************************************************* | |
24 | * This file is part of the Emulex Linux Device Driver for * | |
25 | * Fibre Channel Host Bus Adapters. * | |
26 | - * Copyright (C) 2006-2007 Emulex. All rights reserved. * | |
27 | + * Copyright (C) 2006-2008 Emulex. All rights reserved. * | |
28 | * EMULEX and SLI are trademarks of Emulex. * | |
29 | * www.emulex.com * | |
30 | * * | |
31 | @@ -18,26 +18,6 @@ | |
32 | * included with this package. * | |
33 | *******************************************************************/ | |
34 | ||
35 | -#define to_fc_internal(tmpl) container_of(tmpl, struct fc_internal, t) | |
36 | - | |
37 | -/* scsi_nl_hdr->version value */ | |
38 | -#define SCSI_NL_VERSION 1 | |
39 | - | |
40 | -/* scsi_nl_hdr->magic value */ | |
41 | -#define SCSI_NL_MAGIC 0xA1B2 | |
42 | - | |
43 | -/* scsi_nl_hdr->transport value */ | |
44 | -#define SCSI_NL_TRANSPORT 0 | |
45 | -#define SCSI_NL_TRANSPORT_FC 1 | |
46 | -#define SCSI_NL_MAX_TRANSPORTS 2 | |
47 | - | |
48 | -#define FC_NL_GROUP_CNT 0 | |
49 | - | |
50 | - /* Note: when specifying vendor_id to fc_host_post_vendor_event() | |
51 | - * be sure to read the Vendor Type and ID formatting requirements | |
52 | - * specified in scsi_netlink.h | |
53 | - */ | |
54 | - | |
55 | #define FC_SC_REQ_TIMEOUT (60*HZ) | |
56 | ||
57 | enum fc_sc_service_state { | |
58 | diff --git a/drivers/scsi/lpfc/lpfc_mbox.c b/drivers/scsi/lpfc/lpfc_mbox.c | |
59 | index 84619ed..b5c7876 100644 | |
60 | --- a/drivers/scsi/lpfc/lpfc_mbox.c | |
61 | +++ b/drivers/scsi/lpfc/lpfc_mbox.c | |
62 | @@ -1349,10 +1349,12 @@ lpfc_mbox_get(struct lpfc_hba * phba) | |
63 | void | |
64 | lpfc_mbox_cmpl_put(struct lpfc_hba * phba, LPFC_MBOXQ_t * mbq) | |
65 | { | |
66 | + unsigned long iflag; | |
67 | + | |
68 | /* This function expects to be called from interrupt context */ | |
69 | - spin_lock(&phba->hbalock); | |
70 | + spin_lock_irqsave(&phba->hbalock, iflag); | |
71 | list_add_tail(&mbq->list, &phba->sli.mboxq_cmpl); | |
72 | - spin_unlock(&phba->hbalock); | |
73 | + spin_unlock_irqrestore(&phba->hbalock, iflag); | |
74 | return; | |
75 | } | |
76 | ||
77 | diff --git a/drivers/scsi/lpfc/lpfc_menlo.c b/drivers/scsi/lpfc/lpfc_menlo.c | |
78 | index 4f3b332..12fd7fe 100644 | |
79 | --- a/drivers/scsi/lpfc/lpfc_menlo.c | |
80 | +++ b/drivers/scsi/lpfc/lpfc_menlo.c | |
81 | @@ -1064,13 +1064,22 @@ lpfc_menlo_read(struct lpfc_hba *phba, char *buf, loff_t off, size_t count, | |
82 | } | |
83 | genreq->offset += count; | |
84 | ||
85 | - | |
86 | - if (genreq->offset >= sysfs_menlo->cmdhdr.rspsize) { | |
87 | + if (genreq->offset >= (genreq->rspiocbq->iocb.un.ulpWord[0] & | |
88 | + 0x00ffffff)) { | |
89 | lpfc_printf_log(phba, KERN_INFO, LOG_LIBDFC, | |
90 | - "1222 menlo_read: done off %d rc=%d" | |
91 | - " cnt %d rsp_code %x\n", | |
92 | - (int)off, rc, (int)count,*((uint32_t *)buf)); | |
93 | - rc = count; | |
94 | + "1222 menlo_read: done off %d genoff:%d rspsz:%d " | |
95 | + "rc=%d cnt %d rsp_code %x Word0:%x\n", | |
96 | + (int)off, (int)genreq->offset, | |
97 | + sysfs_menlo->cmdhdr.rspsize, rc, (int)count, | |
98 | + *((uint32_t *)buf), | |
99 | + genreq->rspiocbq->iocb.un.ulpWord[0]); | |
100 | + | |
101 | + if ((genreq->rspiocbq->iocb.un.ulpWord[0] & 0x00ffffff) | |
102 | + < sysfs_menlo->cmdhdr.rspsize) | |
103 | + rc = (genreq->rspiocbq->iocb.un.ulpWord[0] & 0x00ffffff) | |
104 | + + count - genreq->offset; | |
105 | + else | |
106 | + rc = count; | |
107 | goto lpfc_menlo_read_err_exit; | |
108 | } | |
109 | ||
110 | diff --git a/drivers/scsi/lpfc/lpfc_version.h b/drivers/scsi/lpfc/lpfc_version.h | |
111 | index 16626a5..26f6760 100644 | |
112 | --- a/drivers/scsi/lpfc/lpfc_version.h | |
113 | +++ b/drivers/scsi/lpfc/lpfc_version.h | |
114 | @@ -18,7 +18,7 @@ | |
115 | * included with this package. * | |
116 | *******************************************************************/ | |
117 | ||
118 | -#define LPFC_DRIVER_VERSION "8.2.8.7" | |
119 | +#define LPFC_DRIVER_VERSION "8.2.8.9" | |
120 | ||
121 | #define LPFC_DRIVER_NAME "lpfc" | |
122 | #define LPFC_SP_DRIVER_HANDLER_NAME "lpfc:sp" |