diff options
Diffstat (limited to 'Documentation/scsi')
-rw-r--r-- | Documentation/scsi/ChangeLog.lpfc | 1865 | ||||
-rw-r--r-- | Documentation/scsi/lpfc.txt | 83 |
2 files changed, 1948 insertions, 0 deletions
diff --git a/Documentation/scsi/ChangeLog.lpfc b/Documentation/scsi/ChangeLog.lpfc new file mode 100644 index 000000000000..ae3f962a7cfc --- /dev/null +++ b/Documentation/scsi/ChangeLog.lpfc | |||
@@ -0,0 +1,1865 @@ | |||
1 | Known issues : | ||
2 | * Please read the associated RELEASE-NOTES file !!! | ||
3 | * This source release intended for upstream kernel releases only! | ||
4 | |||
5 | Changes from 20050323 to 20050413 | ||
6 | |||
7 | * Changed version number to 8.0.28 | ||
8 | * Fixed build warning for 2.6.12-rc2 kernels: mempool_alloc now | ||
9 | requires a function which takes an unsigned int for gfp_flags. | ||
10 | * Removed pci dma sync calls to coherent/consistent pci memory. | ||
11 | * Merged patch from Christoph Hellwig <hch@lst.de>: split helpers | ||
12 | for fabric and nport logins out of lpfc_cmpl_els_flogi. | ||
13 | * Removed sysfs attributes that are used to dump the various | ||
14 | discovery lists. | ||
15 | * Fix for issue where not all luns are seen. Search all lists | ||
16 | other than unmap list in lpfc_find_target(). Otherwise INQUIRY | ||
17 | to luns on nodes in NPR or other relevant states (PLOGI, | ||
18 | PRLI...) are errored back and scan() terminates. | ||
19 | * Removed FC_TRANSPORT_PATCHESxxx defines. They're in 2.6.12-rc1. | ||
20 | * Compare return value of lpfc_scsi_tgt_reset against SCSI | ||
21 | midlayer codes SUCCESS/FAILED which that function returns rather | ||
22 | than SLI return code. | ||
23 | * Removed extraneous calls to lpfc_sli_next_iotag which should | ||
24 | only be called from lpfc_sli_submit_iocb. Also make | ||
25 | lpfc_sli_next_iotag static. | ||
26 | * Added PCI ID for LP10000-S. | ||
27 | * Changes in lpfc_abort_handler(): Return SUCCESS if we did not | ||
28 | find command in both TX and TX completion queues. Return ERROR | ||
29 | if we timed out waiting for command to complete after abort was | ||
30 | issued. | ||
31 | * Zero-out response sense length in lpfc_scsi_prep_cmnd to prevent | ||
32 | interpretation of stale sense length when the command completes | ||
33 | - was causing spurious 0710 messages. | ||
34 | * Moved clearing of host_scribble inside host_lock in IO | ||
35 | completion path. | ||
36 | * Fixed a bunch of mixed tab/space indentation. | ||
37 | * Allow hex format numbers in sysfs attribute setting. Fix | ||
38 | application hang when invalid numbers are used in sysfs | ||
39 | settings. | ||
40 | * Removed extra iotag allocation by lpfc_abort_handler. | ||
41 | * Clear host_scribble in the scsi_cmnd structure when failing in | ||
42 | queuecommand. | ||
43 | * Changed logic at top of lpfc_abort_handler so that if the | ||
44 | command's host_scibble field is NULL, return SUCCESS because the | ||
45 | driver has already returned the command to the midlayer. | ||
46 | |||
47 | Changes from 20050308 to 20050323 | ||
48 | |||
49 | * Changed version number to 8.0.27 | ||
50 | * Changed a few lines from patch submitted by Christoph Hellwig | ||
51 | (3/19). MAILBOX_WSIZE * (uint32_t) is replaced with an | ||
52 | equivalent MAILBOX_CMDSIZE macro. | ||
53 | * Merged patch from Christoph Hellwig (3/19): some misc patches | ||
54 | against the latest drivers: | ||
55 | - stop using volatile. if you need special ordering use memory | ||
56 | barriers but that doesn't seem to be the case here | ||
57 | - switch lpfc_sli_pcimem_bcopy to take void * arguments. | ||
58 | - remove typecast for constants - a U postfix marks them | ||
59 | unsigned int in C | ||
60 | - add a MAILBOX_CMD_SIZE macro, as most users of | ||
61 | MAILBOX_CMD_WSIZE didn't really want the word count | ||
62 | - kill struct lpfc_scsi_dma_buf and embedded the two members | ||
63 | directly in struct lpfc_scsi_buf | ||
64 | - don't call dma_sync function on allocations from | ||
65 | pci_pool_alloc - it's only for streaming mappings (pci_map_*) | ||
66 | * Merged patch from Christoph Hellwig (3/19) - nlp_failMask isn't | ||
67 | ever used by the driver, just reported to userspace (and that in | ||
68 | a multi-value file which is against the sysfs guidelines). | ||
69 | * Change pci_module_init to pci_register_module() with appropriate | ||
70 | ifdefs. | ||
71 | * Added #include <linux/dma-mapping.h> as required by the DMA | ||
72 | 32bit and 64bit defines on some archs. | ||
73 | * Merged patch from Christoph Hellwig (03/19) - fix initialization | ||
74 | order - scsi_add_host must happen last from scsi POV. Also some | ||
75 | minor style/comment fixups. | ||
76 | * Fixed use of TRANSPORT_PATCHES_V2 by changing to | ||
77 | FC_TRANSPORT_PATCHES_V2. | ||
78 | |||
79 | Changes from 20050223 to 20050308 | ||
80 | |||
81 | * Changed version number to 8.0.26 | ||
82 | * Revise TRANSPORT_PATCHES_V2 so that lpfc_target is removed and | ||
83 | rport data is used instead. Removed device_queue_hash[]. | ||
84 | * Changed RW attributes of scan_down, max_luns and fcp_bind_method | ||
85 | to R only. | ||
86 | * Fixed RSCN handling during initial link initialization. | ||
87 | * Fixed issue with receiving PLOGI handling when node is on NPR | ||
88 | list and marked for ADISC. | ||
89 | * Fixed RSCN timeout issues. | ||
90 | * Reduced severity of "SCSI layer issued abort device" message to | ||
91 | KERN_WARNING. | ||
92 | * Feedback from Christoph Hellwig (on 2/5) - In the LPFC_EVT_SCAN | ||
93 | case the caller already has the target ID handly, so pass that | ||
94 | one in evt_arg1. | ||
95 | * Fix compile warning/resultant panic in | ||
96 | lpfc_register_remote_port(). | ||
97 | |||
98 | Changes from 20050215 to 20050223 | ||
99 | |||
100 | * Changed version number to 8.0.25 | ||
101 | * Add appropriate comments to lpfc_sli.c. | ||
102 | * Use DMA_64BIT_MASK and DMA_32BIT_MASK defines instead of | ||
103 | 0xffffffffffffffffULL & 0xffffffffULL respectively. Use pci | ||
104 | equivalents instead of dma_set_mask and also modify condition | ||
105 | clause to actually exit on error condition. | ||
106 | * Restart els timeout handler only if txcmplq_cnt. On submission, | ||
107 | mod_timer the els_tmofunc. This prevents the worker thread from | ||
108 | waking up the els_tmo handler un-necessarily. The thread was | ||
109 | being woken up even when there were no pending els commands. | ||
110 | * Added new typedefs for abort and reset functions. | ||
111 | * Collapsed lpfc_sli_abort_iocb_xxx into a single function. | ||
112 | * Collapsed lpfc_sli_sum_iocb_xxx into a single function. | ||
113 | * Removed TXQ from all abort and reset handlers since it is never | ||
114 | used. | ||
115 | * Fixed Oops panic in 8.0.23 (reported on SourceForge). The | ||
116 | driver was not handling LPFC_IO_POLL cases correctly in | ||
117 | fast_ring_event and was setting the tgt_reset timeout to 0 in | ||
118 | lpfc_reset_bus_handler. This 0 timeout would not allow the FW | ||
119 | to timeout ABTS's on bad targets and allow the driver to have an | ||
120 | iocb on two lists. Also split the lpfc_sli_ringtxcmpl_get | ||
121 | function into two routines to match the fast and slow completion | ||
122 | semantics - ELS completions worked for the wrong reasons. Also | ||
123 | provided new log message number - had two 0326 entries. | ||
124 | * Removed unused #define LPFC_SCSI_INITIAL_BPL_SIZE. | ||
125 | * Removed unused struct lpfc_node_farp_pend definition. | ||
126 | * Removed unused #define LPFC_SLIM2_PAGE_AREA. | ||
127 | * Changed zeros used as pointers to NULL. | ||
128 | * Removed unneeded braces around single line in lpfc_do_work. | ||
129 | * Close humongous memory leak in lpfc_sli.c - driver was losing 13 | ||
130 | iocbq structures per LIP. | ||
131 | * Removed last of GFP_ATOMIC allocations. | ||
132 | * Locks are not taken outside of nportdisc, hbadisc, els and most | ||
133 | of the init, sli, mbox and ct groups of functions | ||
134 | * Fix comment for lpfc_sli_iocb_cmd_type to fit within 80 columns. | ||
135 | * Replaced wait_event() with wait_event_interruptible(). | ||
136 | wait_event() puts the woker thread in an UNINTERRUPTIBLE state | ||
137 | causing it to figure in load average calculations. Also add a | ||
138 | BUG_ON to the ret code of wait_event_interruptible() since the | ||
139 | premise is that the worker thread is signal-immune. | ||
140 | |||
141 | Changes from 20050208 to 20050215 | ||
142 | |||
143 | * Changed version number to 8.0.24 | ||
144 | * Fixed a memory leak of iocbq structure. For ELS solicited iocbs | ||
145 | sli layer now frees the response iocbs after processing it. | ||
146 | * Closed large memory leak -- we were losing 13 iocbq structures | ||
147 | per LIP. | ||
148 | * Changing EIO and ENOMEM to -EIO and -ENOMEM respectively. | ||
149 | * Cleanup of lpfc_sli_iocb_cmd_type array and typing of iocb type. | ||
150 | * Implemented Christoph Hellwig's feedback from 02/05: Remove | ||
151 | macros putLunHigh, putLunLow. Use lpfc_put_lun() inline instead. | ||
152 | * Integrated Christoph Hellwig's feedback from 02/05: Instead of | ||
153 | cpu_to_be32(), use swab16((uint16_t)lun). This is the same as | ||
154 | "swab16() on LE" and "<<16 on BE". | ||
155 | * Added updates for revised FC remote port patch (dev_loss_tmo | ||
156 | moved to rport, hostdata renamed dd_data, add fc_remote_host() | ||
157 | on shutdown). | ||
158 | * Removed unnecessary function prototype. | ||
159 | * Added code to prevent waking up worker thread after the exit of | ||
160 | worker thread. Fixes panic seen with insmod/rmmod testing with | ||
161 | 70 disks. | ||
162 | * Integrated Christoph Hellwig's patch from 1/30: Make some | ||
163 | variables/code static (namely lpfcAlpaArray and | ||
164 | process_nodev_timeout()). | ||
165 | * Integrated Christoph Hellwig's patch from 1/30: Use | ||
166 | switch...case instead of if...else if...else if while decoding | ||
167 | JDEC id. | ||
168 | |||
169 | Changes from 20050201 to 20050208 | ||
170 | |||
171 | * Changed version number to 8.0.23 | ||
172 | * Make lpfc_work_done, lpfc_get_scsi_buf, | ||
173 | lpfc_mbx_process_link_up, lpfc_mbx_issue_link_down and | ||
174 | lpfc_sli_chipset_init static. | ||
175 | * Cleaned up references to list_head->next field in the driver. | ||
176 | * Replaced lpfc_discq_post_event with lpfc_workq_post_event. | ||
177 | * Implmented Christoph Hellwig's review from 2/5: Check for return | ||
178 | values of kmalloc. | ||
179 | * Integrated Christoph Hellwig's patch from 1/30: Protecting | ||
180 | scan_tmo and friends in !FC_TRANSPORT_PATCHES_V2 && | ||
181 | !USE_SCAN_TARGET. | ||
182 | * Integrated Christoph Hellwig's patch from 1/30: Some fixes in | ||
183 | the evt handling area. | ||
184 | * Integrated Christoph Hellwig's patch from 1/30: Remove usage of | ||
185 | intr_inited variable. The interrupt initilization from OS side | ||
186 | now happens in lpfc_probe_one(). | ||
187 | * Integrated Christoph Hellwig's patch from 1/30: remove shim | ||
188 | lpfc_alloc_transport_attr - remove shim lpfc_alloc_shost_attrs - | ||
189 | remove shim lpfc_scsi_host_init - allocate phba mem in scsi's | ||
190 | hostdata readjust code so that they are no use after free's | ||
191 | (don't use after scsi_host_put) - make lpfc_alloc_sysfs_attr | ||
192 | return errors | ||
193 | * Fixed panic in lpfc_probe_one(). Do not delete in a list | ||
194 | iterator that is not safe. | ||
195 | * Clean up fast lookup array of the fcp_ring when aborting iocbs. | ||
196 | * Following timeout handlers moved to the lpfc worker thread: | ||
197 | lpfc_disc_timeout, lpfc_els_timeout, lpfc_mbox, lpfc_fdmi_tmo, | ||
198 | lpfc_nodev_timeout, lpfc_els_retry_delay. | ||
199 | * Removed unused NLP_NS_NODE #define. | ||
200 | * Integrated Christoph Hellwig's patch from 1/30: remove unused | ||
201 | lpfc_hba_list; remove unused lpfc_rdrev_wd30; remove | ||
202 | lpfc_get_brd_no and use Linux provided IDR. | ||
203 | * Changed board reset procedure so that lpfc_sli_send_reset() | ||
204 | writes the INITFF bit and leaves lpfc_sli_brdreset() to clear | ||
205 | the bit. | ||
206 | * Removed outfcpio sysfs device attribute. | ||
207 | * VPD changes: 1) Modify driver to use the model name and | ||
208 | description from the VPD data if it exists 2) Rework use of DUMP | ||
209 | mailbox command to support HBAs with 256 bytes of SLIM. | ||
210 | * Fixed compile error for implicit definition of struct | ||
211 | scsi_target | ||
212 | |||
213 | Changes from 20050124 to 20050201 | ||
214 | |||
215 | * Changed version number to 8.0.22 | ||
216 | * Moved discovery timeout handler to worker thread. There are | ||
217 | function calls in this function which are not safe to call from | ||
218 | HW interrupt context. | ||
219 | * Removed free_irq from the error path of HBA initialization. | ||
220 | This will fix the free of uninitialised IRQ when config_port | ||
221 | fails. | ||
222 | * Make sure function which processes unsolicited IOCBs on ELS ring | ||
223 | still is called with the lock held. | ||
224 | * Clear LA bit from work_ha when we are not supposed to handle LA. | ||
225 | * Fix double locking bug in the error handling part of | ||
226 | lpfc_mbx_cmpl_read_la. | ||
227 | * Implemented fast IOCB processing for FCP ring. | ||
228 | * Since mboxes are now unconditionally allocated outside of the | ||
229 | lock, free them in cases where they are not used. | ||
230 | * Moved out a couple of GFP_ATOMICs in lpfc_disc_timeout, to | ||
231 | before locks so that they can GFP_KERNEL instead. Also cleaned | ||
232 | up code. | ||
233 | * Collapsed interrupt handling code into one function. | ||
234 | * Removed event posting and handling of solicited and unsolicited | ||
235 | iocbs. | ||
236 | * Remove ELS ring handling leftovers from the lpfc_sli_inter(). | ||
237 | * ELS ring (any slow ring) moved from the lpfc_sli_inter() into a | ||
238 | worker thread. Link Attention, Mbox Attention, and Error | ||
239 | Attention, as well as slow rings' attention is passed to the | ||
240 | worker thread via worker thread copy of Host Attention | ||
241 | register. Corresponding events are removed from the event queue | ||
242 | handling. | ||
243 | * Add entries to hba structure to delegate some functionality from | ||
244 | the lpfc_sli_inter() to a worker thread. | ||
245 | * Reduced used of GFP_ATOMIC for memory allocations. | ||
246 | * Moved locks deeper in order to change GFP_ATOMIC to GFP_KERNEL. | ||
247 | * IOCB initialization fix for Raw IO. | ||
248 | * Removed qcmdcnt, iodonecnt, errcnt from lpfc_target and from | ||
249 | driver. | ||
250 | * Added call to lpfc_els_abort in lpfc_free_node. Modified | ||
251 | lpfc_els_abort to reset txq and txcmplq iterator after a | ||
252 | iocb_cmpl call. | ||
253 | * Fixed a use after free issue in lpfc_init.c. | ||
254 | * Defined default mailbox completion routine and removed code in | ||
255 | the sli layer which checks the mbox_cmpl == 0 to free mail box | ||
256 | resources. | ||
257 | * In lpfc_workq_post_event, clean up comment formatting and remove | ||
258 | unneeded cast of kmalloc's return. | ||
259 | * Removed loop which calls fc_remote_port_unblock and | ||
260 | fc_remote_port_delete for every target as this same effect is | ||
261 | accomplished by the scsi_remove_host call. | ||
262 | * Minor cleanup of header files. Stop header files including | ||
263 | other header files. Removed sentinels which hide multiple | ||
264 | inclusions. Removed unneeded #include directives. | ||
265 | * Fixed memory leaks in mailbox error paths. | ||
266 | * Moved lock from around of lpfc_work_done to lpfc_work_done | ||
267 | itself. | ||
268 | * Removed typedef for LPFC_WORK_EVT_t and left just struct | ||
269 | lpfc_work_evt to comply with linux_scsi review coding style. | ||
270 | * Fixed some trailing whitespaces, spaces used for indentation and | ||
271 | ill-formatting multiline comments. | ||
272 | * Bug fix for Raw IO errors. Reuse of IOCBs now mandates setting | ||
273 | of ulpPU and fcpi_parm to avoid incorrect read check of Write IO | ||
274 | and incorrect read length. | ||
275 | |||
276 | Changes from 20050110 to 20050124 | ||
277 | |||
278 | * Changed version number to 8.0.21 | ||
279 | * Removed unpleasant casting in the definition and use of | ||
280 | lpfc_disc_action function pointer array. | ||
281 | * Makefile cleanup. Use ?= operator for setting default | ||
282 | KERNELVERSION and BASEINCLUDE values. Use $(PWD) consistently. | ||
283 | * Removed call to lpfc_sli_intr from lpfc_config_port_post. All | ||
284 | Linux systems will service hardware interrupts while bringing up | ||
285 | the driver. | ||
286 | * Christoph Hellwig change request: Reorg of contents of | ||
287 | lpfc_hbadisc.c, lpfc_scsi.h, lpfc_init.c, lpfc_sli.c, | ||
288 | lpfc_attr.c, lpfc_scsi.c. | ||
289 | * Renamed discovery thread to lpfc_worker thread. Moved handling | ||
290 | of error attention and link attention and mbox event handler to | ||
291 | lpfc_worker thread. | ||
292 | * Removed .proc_info and .proc_name from the driver template and | ||
293 | associated code. | ||
294 | * Removed check of FC_UNLOADING flag in lpfc_queuecommand to | ||
295 | determine what result to return. | ||
296 | * Move modification of FC_UNLOADING flag under host_lock. | ||
297 | * Fix IOERR_RCV_BUFFER_WAITING handling for CT and ELS subsystem. | ||
298 | * Workaround firmware bug for IOERR_RCV_BUFFER_WAITING on ELS | ||
299 | ring. | ||
300 | * Fixed a couple lpfc_post_buffer problems in lpfc_init.c. | ||
301 | * Add missing spaces to the parameter descriptions for | ||
302 | lpfc_cr_delay, lpfc_cr_count and lpfc_discovery_threads. | ||
303 | * Lock before calling lpfc_sli_hba_down(). | ||
304 | * Fix leak of "host" in the error path in the remove_one() path. | ||
305 | * Fix comment for lpfc_cr_count. It defaults to 1. | ||
306 | * Fix issue where we are calling lpfc_disc_done() recursively from | ||
307 | lpfc_linkdown(), but list_for_each_entry_safe() is not safe for | ||
308 | such use. | ||
309 | * Bump lpfc_discovery_threads (count of outstading ELS commands in | ||
310 | discovery) to 32 | ||
311 | * If the SCSI midlayer tries to recover from an error on a lun | ||
312 | while the corresponding target is in the NPR state, lpfc driver | ||
313 | will reject all the resets. This will cause the target to be | ||
314 | moved to offline state and block all the I/Os. The fix for this | ||
315 | is to delay the lun reset to a target which is not in MAPPED | ||
316 | state until the target is rediscovered or nodev timeout is | ||
317 | fired. | ||
318 | |||
319 | Changes from 20041229 to 20050110 | ||
320 | |||
321 | * Changed version number to 8.0.20 | ||
322 | * rport fix: use new fc_remote_port_rolechg() function instead of | ||
323 | direct structure change | ||
324 | * rport fix: last null pointer check | ||
325 | * Phase II of GFP_ATOMIC effort. Replaced iocb_mem_pool and | ||
326 | scsibuf_mem_pool with kmalloc and linked list. Inserted list | ||
327 | operations for mempool_alloc calls. General code cleanup. All | ||
328 | abort and reset routines converted. Handle_ring_event | ||
329 | converted. | ||
330 | * If the mbox_cmpl == lpfc_sli_wake_mbox_wait in | ||
331 | lpfc_sli_handle_mb_event, pmb->context1 points to a waitq. Do | ||
332 | not free the structure. | ||
333 | * rport fixes: fix for rmmod crash | ||
334 | * rport fixes: when receiving PRLI's, set node/rport role values | ||
335 | * rport fixes: fix for unload and for fabric port deletes | ||
336 | * VPD info bug fix. | ||
337 | * lpfc_linkdown() should be able to process all outstanding events | ||
338 | by calling lpfc_disc_done() even if it is called from | ||
339 | lpfc_disc_done() Moving all events from phba->dpc_disc to local | ||
340 | local_dpc_disc prevents those events from being processed. | ||
341 | Removing that queue. From now on we should not see "Illegal | ||
342 | State Transition" messages. | ||
343 | * Release host lock and enable interrupts when calling | ||
344 | del_timer_sync() | ||
345 | * All related to rports: Clean up issues with rport deletion | ||
346 | Convert to using block/unblock on list remove (was del/add) | ||
347 | Moved rport delete to freenode - so rport tracks node. | ||
348 | * rport fixes: for fport, get maxframe and class support | ||
349 | information | ||
350 | * Added use of wait_event to work with kthread interface. | ||
351 | * Ensure that scsi_transport_fc.h is always pulled in by | ||
352 | lpfc_scsiport.c | ||
353 | * In remote port changes: no longer nulling target->pnode when | ||
354 | removing from mapped list. Pnode get nulled when the node is | ||
355 | freed (after nodev tmo). This bug was causing i/o recieved in | ||
356 | the small window while the device was blocked to be errored w/ | ||
357 | did_no_connect. With the fix, it returns host_busy | ||
358 | (per the pre-remote port changes). | ||
359 | * Merge in support for fc transport remote port use. This removes | ||
360 | any consistent bindings within the driver. All scanning is now | ||
361 | on a per-target basis driven by the discovery engine. | ||
362 | |||
363 | Changes from 20041220 to 20041229 | ||
364 | |||
365 | * Changed version number to 8.0.19 | ||
366 | * Fixed bug for handling RSCN type 3. Terminate RSCN mode | ||
367 | properly after ADISC handling completes. | ||
368 | * Add list_remove_head macro. Macro cleans up memory allocation | ||
369 | list handling. Also clean up lpfc_reset_bus_handler - routine | ||
370 | does not need to allocate its own scsi_cmnd and scsi_device | ||
371 | structures. | ||
372 | * Fixed potential discovery bug, nlp list corrutpion fix potential | ||
373 | memory leak | ||
374 | * Part 1 of the memory allocation rework request by linux-scsi. | ||
375 | This effort fixes the number of bdes per scsi_buf to 64, makes | ||
376 | the scatter-gather count a module parameter, builds a linked | ||
377 | list of scsi_bufs, and removes all dependencies on lpfc_mem.h. | ||
378 | * Reverted lpfc_do_dpc, probe_one, remove_one to original | ||
379 | implementation. Too many problems (driver not completing | ||
380 | initial discovery, and IO not starting to disks). Backs out | ||
381 | kthread patch. | ||
382 | * Fix race condition in lpfc_do_dpc. If wake_up interrupt occurs | ||
383 | while lpfc_do_dpc is running disc_done and the dpc list is | ||
384 | empty, the latest insertion is missed and the schedule_timeout | ||
385 | does not wakeup. The sleep interval is MAX_SCHEDULE_TIMEOUT | ||
386 | defined as ~0UL >> 1, a very large number. Hacked it to 5*HZ | ||
387 | for now. | ||
388 | * Fixed bug introduced when discovery thread implementation was | ||
389 | moved to kthread. kthread_stop() is not able to wake up thread | ||
390 | waiting on a semaphore and "modprobe -r lpfc" is not always | ||
391 | (most of the times) able to complete. Fix is in not using | ||
392 | semaphore for the interruptable sleep. | ||
393 | * Small Makefile cleanup - Remove remnants of 2.4 vs. 2.6 | ||
394 | determination. | ||
395 | |||
396 | Changes from 20041213 to 20041220 | ||
397 | |||
398 | * Changed version number to 8.0.18 | ||
399 | * Janitorial cleanup after removal of sliinit and ringinit[] ring | ||
400 | statistic is owned by the ring and SLI stats are in sli | ||
401 | structure. | ||
402 | * Integrated patch from Christoph Hellwig <hch@lst.de> Kill | ||
403 | compile warnings on 64 bit platforms: %variables for %llx format | ||
404 | specifiers must be caste to long long because %(u)int64_t can | ||
405 | just be long on 64bit platforms. | ||
406 | * Integrated patch from Christoph Hellwig <hch@lst.de> Removes | ||
407 | dead code. | ||
408 | * Integrated patch from Christoph Hellwig <hch@lst.de>: use | ||
409 | kthread interface. | ||
410 | * Print LPFC_MODULE_DESC banner in module init routine. | ||
411 | * Removed sliinit structure and ringinit[] array. | ||
412 | * Changed log message number from 324 to 326 in lpfc_sli.c. | ||
413 | * Wait longer for commands to complete in lpfc_reset_bus_handler | ||
414 | and lpfc_reset_bus_handler. Also use schedule_timeout() instead | ||
415 | of msleep() and add error message in lpfc_abort_handler() | ||
416 | * When setting lpfc_nodev_tmo, from dev_loss set routine, make 1 | ||
417 | sec minimum value. | ||
418 | * Functions which assume lock being held were called without lock | ||
419 | and kernel complained about unlocking lock which is not locked. | ||
420 | * Added code in linkdown to unreg if we know login session will be | ||
421 | terminated. | ||
422 | * Removed automap config parameter and fixed up use_adisc logic to | ||
423 | include FCP2 devices. | ||
424 | |||
425 | Changes from 20041207 to 20041213 | ||
426 | |||
427 | * Changed version number to 8.0.17 | ||
428 | * Fix sparse warnings by adding __iomem markers to lpfc_compat.h. | ||
429 | * Fix some sparse warnings -- 0 used as NULL pointer. | ||
430 | * Make sure there's a space between every if and it's (. | ||
431 | * Fix some overly long lines and make sure hard tabs are used for | ||
432 | indentation. | ||
433 | * Remove all trailing whitespace. | ||
434 | * Integrate Christoph Hellwig's patch for 8.0.14: if | ||
435 | pci_module_init fails we need to release the transport template. | ||
436 | (also don't print the driver name at startup, linux drivers can | ||
437 | be loaded without hardware present, and noise in the log for | ||
438 | that case is considered unpolite, better print messages only for | ||
439 | hardware actually found). | ||
440 | * Integrate Christoph Hellwig's patch for 8.0.14: Add missing | ||
441 | __iomem annotations, remove broken casts, mark functions static. | ||
442 | Only major changes is chaning of some offsets from word-based to | ||
443 | byte-based so we cans simply do void pointer arithmetics (gcc | ||
444 | extension) instead of casting to uint32_t. | ||
445 | * Integrate Christoph Hellwig's patch for 8.0.14: flag is always | ||
446 | LPFC_SLI_ABORT_IMED, aka 0 - remove dead code. | ||
447 | * Modified preprocessor #ifdef, #if, #ifndef to reflect upstream | ||
448 | kernel submission. Clean build with make clean;make and make | ||
449 | clean;make ADVANCED=1 on SMP x86, 2.6.10-rc2 on RHEL 4 Beta | ||
450 | 1. IO with a few lips and a long cable pull behaved accordingly. | ||
451 | * Implement full VPD support. | ||
452 | * Abort handler will try to wait for abort completion before | ||
453 | returning. Fixes some panics in iocb completion code path. | ||
454 | |||
455 | Changes from 20041130 to 20041207 | ||
456 | |||
457 | * Changed version number to 8.0.16 | ||
458 | * Hung dt session fix. When the midlayer calls to abort a scsi | ||
459 | command, make sure the driver does not complete post-abort | ||
460 | handler. Just NULL the iocb_cmpl callback handler and let SLI | ||
461 | take over. | ||
462 | * Add Read check that uses SLI option to validate all READ data | ||
463 | actually received. | ||
464 | |||
465 | |||
466 | Changes from 20041123 to 20041130 | ||
467 | |||
468 | * Changed version number to 8.0.15 | ||
469 | * Ifdef'd unused "binary" attributes by DFC_DEBUG for clean | ||
470 | compiles | ||
471 | * Stop DID_ERROR from showing up along with QUEUE_FULL set by the | ||
472 | Clarion array (SCSI error ret. val. 0x70028) There is no need | ||
473 | for driver to hard fail command which was failed by the target | ||
474 | device. | ||
475 | * Fix for Scsi device scan bug reported on SourceForge. Driver | ||
476 | was returning a DID_ERROR in lpfc_handle_fcp_error causing | ||
477 | midlayer to mark report luns as failing even though it | ||
478 | succeeded. | ||
479 | * Don't ignore SCSI status on underrun conditions for inquiries, | ||
480 | test unit ready's, etc. This was causing us to lose | ||
481 | reservation conflicts, etc | ||
482 | |||
483 | Changes from 20041018 to 20041123 | ||
484 | |||
485 | * Changed version number to 8.0.14 | ||
486 | * Added new function "iterator" lpfc_sli_next_iocb_slot() which | ||
487 | returns pointer to iocb entry at cmdidx if queue is not full. | ||
488 | It also updates next_cmdidx, and local_getidx (but not cmdidx) | ||
489 | * lpfc_sli_submit_iocb() copies next_cmdidx into cmdidx. Now it is | ||
490 | the only place were we are updating cmdidx. | ||
491 | * lpfc_sli_update_ring() is split in to two -- | ||
492 | lpfc_sli_update_ring() and lpfc_sli_update_full_ring(). | ||
493 | * lpfc_sli_update_ring() don't to read back correct value of | ||
494 | cmdidx. | ||
495 | * Simplified lpfc_sli_resume_iocb() and its use. | ||
496 | * New static function lpfc_sli_next_iocb(phba, pring, &piocb) to | ||
497 | iterate through commands in the TX queue and new command (at the | ||
498 | end). | ||
499 | * Reduced max_lun to 256 (due to issues reported to some arrays). | ||
500 | Fixed comment, and macro values so def=256, min=1, max=32768. | ||
501 | * Fix an obvious typo/bug: kfree was used to free lpfc_scsi_buf | ||
502 | instead of mempool_free in lpfc_scsiport.c. | ||
503 | * Suppress nodev_tmo message for FABRIC nodes. | ||
504 | * Fixed some usage of plain integer as NULL pointer. | ||
505 | * Bug fix for FLOGI cmpl, lpfc_els_chk_latt error path code | ||
506 | cleanup. | ||
507 | * Fixup lpfc_els_chk_latt() to have Fabric NPorts go thru | ||
508 | discovery state machine as well. | ||
509 | * Fixes to lpfc_els_chk_latt(). | ||
510 | * Use DID not SCSI target id as a port_id and add some missing | ||
511 | locks in lpfc_fcp.c. | ||
512 | * Changed eh_abort_handler to return FAILED if command is not | ||
513 | found in driver. | ||
514 | * Fix crash: paging request at virtual address 0000000000100108 - | ||
515 | a result of removing from the txcmpl list item which was already | ||
516 | removed (100100 is a LIST_POISON1 value from the next pointer | ||
517 | and 8 is an offset of the "prev") Driver runs out of iotags and | ||
518 | does not handle that case well. The root of the proble is in the | ||
519 | initialization code in lpfc_sli.c | ||
520 | * Changes to work with proposed linux kernel patch to support | ||
521 | hotplug. | ||
522 | * Zero out seg_cnt in prep_io failure path to prevent double sg | ||
523 | unmap calls. | ||
524 | * Fix setting of upper 32 bits for Host Group Ring Pointers if in | ||
525 | SLIM. Old code was inappropriately masking off low order bits. | ||
526 | * Use scsi_[activate|deactivate]_tcq calls provided in scsi_tcq.h. | ||
527 | * Integrated patch from Christoph Hellwig (hch@lst.de): don't call | ||
528 | pci_dma_sync_* on coherent memory. pci_dma_sync_* is need and | ||
529 | must be used only with streaming dma mappings pci_map_*, not | ||
530 | coherent mappings. Note: There are more consistent mappings | ||
531 | that are using pci_dma_sync calls. Probably these should be | ||
532 | removed as well. | ||
533 | * Modified lpfc_free_scsi_buf to accomodate all three scsi_buf | ||
534 | free types to alleviate miscellaneous panics with cable pull | ||
535 | testing. | ||
536 | * Set hotplug to default 0 and lpfc_target_remove to not remove | ||
537 | devices unless hotplug is enabled. | ||
538 | * Fixed discovery bug: plogi cmpl uses ndlp after its freed. | ||
539 | * Fixed discovery bug: rnid acc cmpl, can potentially use ndlp | ||
540 | after its freed. | ||
541 | * Modularize code path in lpfc_target_remove(). | ||
542 | * Changes to support SCSI hotplug (ifdef'ed out because they need | ||
543 | kernel support USE_SCAN_TARGET requires kernel support to export | ||
544 | the interface to scsi_scan_target and to move the SCAN_WILD_CARD | ||
545 | define to a general scsi header file. USE_RESCAN_HOST requires | ||
546 | kernel support to export an interface to scan_scsi_host() with | ||
547 | the rescan flag turned on). | ||
548 | * Removed redundant variable declaration of lpfc_linkdown_tmo. | ||
549 | * Fix for large port count remove test. | ||
550 | * Added check to see if BAR1 register is valid before using BAR1 | ||
551 | register for programming config_port mail box command. | ||
552 | * Added lpfc_scsi_hotplug to enable/disable driver support of SCSI | ||
553 | hotplug. | ||
554 | * Changed lpfc_disc_neverdev() to lpfc_disc_illegal() and changed | ||
555 | lpfc_disc_nodev() to lpfc_disc_noop(). Adjusted appropriate | ||
556 | events to use these routines. | ||
557 | * Add support for SCSI device hotplug. | ||
558 | * Take dummy lpfc_target's into account for lpfc_slave_destroy(). | ||
559 | * Bug fix to store WWPN / WWNN in NameServer / FDMI lpfc_nodelist | ||
560 | entries. | ||
561 | * Added slavecnt in lpfc_target for diagnostic purposes. | ||
562 | * Added lpfc_hba load/unload flags to take care of special cases | ||
563 | for add/remove device. | ||
564 | * Have target add/remove delay before scanning. | ||
565 | * Have rmmod path cleanup blocked devices before scsi_remove_host. | ||
566 | * Added a #define for msleep for 2.6.5 kernels. | ||
567 | * In reset bus handler if memory allocation fails, return FAILED | ||
568 | and not SUCCESS. | ||
569 | * Have lpfc eh handlers, bus_reset and lun_reset, wait for all | ||
570 | associated I/Os to complete before returning. | ||
571 | * Fix memset byte count in lpfc_hba_init so that | ||
572 | LP1050 would initialize correctly. | ||
573 | * Backround nodev_timeout processing to DPC This enables us to | ||
574 | unblock (stop dev_loss_tmo) when appopriate. | ||
575 | * Fix array discovery with multiple luns. The max_luns was 0 at | ||
576 | the time the host structure was intialized. lpfc_cfg_params | ||
577 | then set the max_luns to the correct value afterwards. | ||
578 | * Remove unused define LPFC_MAX_LUN and set the default value of | ||
579 | lpfc_max_lun parameter to 512. | ||
580 | * Reduced stack usage of lpfc_hba_init. | ||
581 | * Cleaned up the following warning generated by | ||
582 | scripts/checkincludes.pl lpfc_fcp.c: scsi/scsi_cmnd.h is | ||
583 | included more than once. | ||
584 | * Replaced "set_current_state(TASK_UNINTERRUPTIBLE); | ||
585 | schedule_timeout(timeout)" with "msleep(timeout)". | ||
586 | * Fixnode was loosing starget when rediscovered. We saw messages | ||
587 | like: lpfc 0000:04:02.0: 0:0263 Cannot block scsi target as a | ||
588 | result. Moved starget field into struct lpfc_target which is | ||
589 | referenced from the node. | ||
590 | * Add additional SLI layer logging in lpfc_sli.c. | ||
591 | * Ignore more unexpected completions in lpfc_nportdisc.c. | ||
592 | * Can not call lpfc_target_unblock from the soft interrupt | ||
593 | context. It seems to be not nessasery to unblock target from | ||
594 | nodev timeout. | ||
595 | * Introduce and use less lethal event handler for unexpected | ||
596 | events in lpfc_nportdisc.c. | ||
597 | * Can not call fc_target_(un)block() functions with interrupts | ||
598 | disabled in lpfc_scsiport.c. | ||
599 | * Added new configuration parameter, lpfc_max_luns range 1-32768, | ||
600 | default 32768. | ||
601 | * Allow lpfc_fcp.c to call lpfc_get_hba_sym_node_name(). | ||
602 | * Increase nodev timeout from 20 seconds to 30 seconds. | ||
603 | * Replace some kfree((void*)ptr) with kfree(ptr). | ||
604 | * Make 3 functions static: lpfc_get_hba_sym_node_name, | ||
605 | lpfc_intr_prep and lpfc_setup_slim_access. Move lpfc_intr_prep | ||
606 | and lpfc_setup_slim_access so they're defined before being used. | ||
607 | * Remove an unecessary list_del() in lpfc_hbadisc.c. | ||
608 | * Set nlp_state before calling lpfc_nlp_list() since this will | ||
609 | potentially call fc_target_unblock which may cause a race in | ||
610 | queuecommand by releasing host_lock. | ||
611 | * Since lpfc_nodev_tmo < dev_loss_tmo remove queuecommand | ||
612 | DID_BAD_TARGET return for now. | ||
613 | * Fix a problem with rcv logo. | ||
614 | * Remove unused portstatistics_t structure. | ||
615 | * Remove #if 0 and unnecessary checks in lpfc_fcp.c. | ||
616 | * Simplify lpfc_issue_lip: Extra layer of protection removed. | ||
617 | * Grab lock before calling lpfc_sli_issue_mbox(phba, pmb, | ||
618 | MBX_NOWAIT) in lpfc_sli_issue_mbox_wait(). | ||
619 | |||
620 | Changes from 20040920 to 20041018 | ||
621 | |||
622 | * Changed version number to 8.0.13 | ||
623 | * Hide some attributes using #ifndef DFC_DEBUG ... #endif. | ||
624 | * Modify Makefile to (1) make BUILD_NO_DEBUG=1 will hide some | ||
625 | (binary) attributes (2) make BUILD_FC_TRANS=0 will build driver | ||
626 | for 2.6.5 kernel with block/unblock patch. | ||
627 | * Modified #ifdef names. | ||
628 | * Added support for proposed FC transport host attributes (which | ||
629 | replaces some of the attributes we had local to the driver). | ||
630 | Removed the binary statistics sysfs attribute. | ||
631 | * Added extra ELS verbose logging for ELS responses. | ||
632 | * Added recognition for BUILD_FC_TRANS=2 to Makefile to define | ||
633 | FC_TRANS_VER2. | ||
634 | * Add a pointer for link stats allocation. | ||
635 | * Exported lpfc_get_hba_sym_node_name for use by FC_TRANS_VER2 | ||
636 | sysfs routines. | ||
637 | * Fix discovery problem in lip testing: if device sends an ELS cmd | ||
638 | (i.e. LOGO) before our FLOGI completes it should be LS_RJT'ed. | ||
639 | * Moved #defines around to provide target_add/remove for upstream | ||
640 | kernel deliverables only not SLES9. Provided ifdefs to #include | ||
641 | target_block/unblock only if FC_TRANS_VER1. | ||
642 | * Add sanity check in lpfc_nlp_list move setting nlp_Target | ||
643 | outside #ifdef. | ||
644 | * Added a blocked member to the lpfc_target structure for | ||
645 | block/unblock. This member allows the driver to know when to | ||
646 | unblock for pci_remove_one or pci_add_one. #ifdef'd some more | ||
647 | block/unblock stuff and removed some defensive checks from | ||
648 | target_block/unblock. | ||
649 | * Moved + 5 second window to dev_loss_tmo setting and updated | ||
650 | comments. | ||
651 | * Removed NULL target check from target_block/unblock and fixed up | ||
652 | a few comments. | ||
653 | * Enable sysfs attributes on 2.6.5 kernels and remove extra | ||
654 | compatibility code. | ||
655 | * Remove any and all trailing whitespace. | ||
656 | * Added message 0718 and return error when dma_map_single fails. | ||
657 | * Changed the fcpCntl2 commands to include an FCP_ prefix to get | ||
658 | rid of build warnings on later 2.6.9-rc kernels. Build | ||
659 | conflicts with scsi/scsi.h. Remove inclusions of scsi/scsi.h | ||
660 | from hbadisc.c, sli.c, and fcp.c since these modules had no | ||
661 | dependencies on scsi.h. | ||
662 | * Fixed a bug with RSCN handling. A RSCN received on one device, | ||
663 | shouldn't affect other devices not referenced by the RSCN. | ||
664 | * Moved #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,6) to include | ||
665 | lpfc_jedec_to_ascii to prevent warning in SLES 9. | ||
666 | * Update Makefile to account for SLES 9 and scsi-target upstream | ||
667 | kernel. | ||
668 | * This checkin provides block/unblock hooks for the upstream scsi | ||
669 | target kernel and 2.6.5 on SLES9 SP1 with the block/unblock | ||
670 | patch. | ||
671 | * Discovery changes regarding setting targetp->pnode and | ||
672 | ndlp->nlp_Target Ensure fc_target_* routines are called properly | ||
673 | from discovery. Remove list_del's from lpfc_cleanup(). Ensure | ||
674 | all the lpfc_consistent_bind_* routines don't set any driver | ||
675 | structure objects. | ||
676 | * Fix for timeout of READ_LA or READ_SPARAM mailbox command | ||
677 | causing panic. | ||
678 | * Cleanup list_del()'s for Discovery ndlp lists. | ||
679 | * Bug fixes for some insmod/rmmod crashes, link down crashes and | ||
680 | device loss crashes. | ||
681 | * Removed NLP_SEARCH_DEQUE. | ||
682 | * Call lpfc_target_unblock only if the targetp is nonNull and with | ||
683 | the host_lock held. | ||
684 | * Added qcmdcnt back along with misc bug fixes to discovery. | ||
685 | * Changed tgt_io to outfcpio lpfc_fcp.c. | ||
686 | * Fixed errors caused by LIP and cable pulls both with and without | ||
687 | block/unblock patch. | ||
688 | * For now we have to call fc_target_unblock and fc_target_block | ||
689 | with interrupts enabled. | ||
690 | * Save seg_cnt from dma_map_sg. Save scatter-gather start address | ||
691 | and pass back to dma_unmap_sg in error with seg_cnt. | ||
692 | * Incorporating block/unblock calls into driver with ifdefs. This | ||
693 | change is supported by scsi-target-2.6 kernel and forward only. | ||
694 | * Merged in some discovery bug fixes and added tgt io counters. | ||
695 | * Added sysfs attributes/interfaces: read only attribute | ||
696 | "management_version" and write only attribute "issue_lip". | ||
697 | * Fix build on big endian machines: while #if was OK with | ||
698 | __BIG_ENDIAN which defined as 4321, __BIG_ENDIAN_BITFIELD has to | ||
699 | be tested with #ifdef because it does not have any value, it is | ||
700 | either defined or not. | ||
701 | * Add fabric_name and port_type attributes. | ||
702 | * Change mdelay to msleep. mdelay works, but wastefully uses cpu | ||
703 | resources without a lock held. Revert to msleep. Tested with | ||
704 | sg_reset for bus and three attached targets. | ||
705 | * Added the customary #ifndef...#define...#endif to | ||
706 | lpfc_version.h. | ||
707 | * Integrate patches from Christoph Hellwig: two new helpers common | ||
708 | to lpfc_sli_resume_iocb and lpfc_sli_issue_iocb - singificant | ||
709 | cleanup of those two functions - the unused SLI_IOCB_USE_TXQ is | ||
710 | gone - lpfc_sli_issue_iocb_wait loses it's flags argument | ||
711 | totally. | ||
712 | * Fix in lpfc_sli.c: we can not store a 5 bit value in a 4-bit | ||
713 | field. | ||
714 | * Moved some routines out of lpfc_fcp.c into more appropriate | ||
715 | files. | ||
716 | * Whitespace cleanup: remove all trailing whitespace. | ||
717 | * Make lpfc_disc_ndlp_show static to lpfc_fcp.c. | ||
718 | * Remove leftover printk and replace some with | ||
719 | printk(KERN_WARNING) | ||
720 | * Trivial: fix a few long lines and a soft tab. | ||
721 | * Remove warnings generated by Sparse against driver (make | ||
722 | C=1). Mostly these are "using integer as pointer warnings" | ||
723 | i.e. use NULL instead of 0. | ||
724 | * Integrated patch from Christoph Hellwig: Quite a lot of changes | ||
725 | here, the most notable is that the phba->slim2p lpfc_dmabuf goes | ||
726 | away in favour of a typede pointer and a dma_addr_t. Due to the | ||
727 | typed pointer lots of the cast mess can go away, and while at it | ||
728 | I also replaced the messy SLI2_SLIM_t with a simple struct | ||
729 | lpfc2_sli2_slim that only contains the part of the union we care | ||
730 | about while using SLI2_SLIM_SIZE for all size calculations | ||
731 | directly. | ||
732 | * Integrated patch from Christoph Hellwig: This streamlines the | ||
733 | I/O completion path a little more, especially taking care of | ||
734 | fast-pathing the non-error case. Also removes tons of dead | ||
735 | members and defines from lpfc_scsi.h - e.g. lpfc_target is down | ||
736 | to nothing more then the lpfc_nodelist pointer. | ||
737 | * Added binary sysfs file to issue mbox commands | ||
738 | * Replaced #if __BIG_ENDIAN with #if __BIG_ENDIAN_BITFIELD for | ||
739 | compatibility with the user space applications. | ||
740 | * Decrease the amount of data in proc_info. | ||
741 | * Condense nodelist flag members. | ||
742 | * Expand INFO for discovery sysfs shost entries. | ||
743 | * Notify user if information exceeds 4k sysfs limit. | ||
744 | * Removed a bunch of unused #defines. | ||
745 | * Added initial sysfs discovery shost attributes. | ||
746 | * Remove unused #defines lpfc_disc.h. | ||
747 | * Fixed failMask nodelist settings. | ||
748 | * Cleanup some old comments / unused variables. | ||
749 | * Add LP101 to list of recognized adapters. | ||
750 | |||
751 | Changes from 20040908 to 20040920 | ||
752 | |||
753 | * Changed version number to 8.0.12 | ||
754 | * Removed used #defines: DEFAULT_PCI_LATENCY_CLOCKS and | ||
755 | PCI_LATENCY_VALUE from lpfc_hw.h. | ||
756 | * Changes to accomodate rnid. | ||
757 | * Fix RSCN handling so RSCN NS queries only effect NPorts found in | ||
758 | RSCN data. | ||
759 | * If we rcv a plogi on a NPort queued up for discovery, clear the | ||
760 | NLP_NPR_2B_DISC bit since rcv plogi logic will force NPort thru | ||
761 | discovery. | ||
762 | * Ensure lpfc_target is also cleaned up in lpfc_cleanup(). | ||
763 | * Preliminary changes for block/unblock kernel API extensions in | ||
764 | progress with linux-scsi list. These are name changes and | ||
765 | prototype changes only. | ||
766 | * Added send_abts flag to lpfc_els_abort. For rcv LOGO when ADISC | ||
767 | sent, the XRI of the LOGO rcv'ed is the same as the ADISC | ||
768 | sent. Thus we cannot ABTS the ADISC before sending the LOGO ACC. | ||
769 | * Weed out some unused fc_flags. Add FC_DISC_TMO. | ||
770 | * board_online sysfs attribute added to support libdfc functions | ||
771 | InitDiagEnv and SetBrdEnv. | ||
772 | * Streamline code in lpfc_els_retry fixup abort case in | ||
773 | lpfc_els_timeout_handler(). | ||
774 | * Flush discovery/ELS events when we bring SLI layer down. | ||
775 | * ctlreg and slimem binary attributes added to support libdfc | ||
776 | read/write mem/ctl functions. | ||
777 | * Integrated Christoph Hellwig's patch: Cleanup | ||
778 | lpfc_sli_ringpostbuf_get. | ||
779 | * Modified lpfc_slave_alloc and lpfc_slave_destroy to allocate and | ||
780 | free a dummy target pointer. This allows queuecommand to skip | ||
781 | the NULL target pointer check and avoid the console spam when | ||
782 | slave_alloc fails. | ||
783 | * Fix cfg_scan_down logic, it was reversed. | ||
784 | * Init list head ctrspbuflist. | ||
785 | * Change name of lpfc_driver_abort to lpfc_els_abort since it is | ||
786 | only valid for ELS ring. | ||
787 | * Remove unused third argument for lpfc_consistent_bind_get(). | ||
788 | * Fix up iotag fields in lpfc_prep_els_iocb(). | ||
789 | * Remove log message on code path triggered by lpfc_els_abort(). | ||
790 | * Set host->unique_id in lpfc_fcp.c. | ||
791 | * Removed deadwood: lpfc_target.pHba not necessary anymore. | ||
792 | * Integrated patch from Christoph Hellwig: remove dead | ||
793 | SLI_IOCB_POLL handling. | ||
794 | * Integrated patch from Christoph Hellwig: Streamline I/O | ||
795 | submission and completion path a little. | ||
796 | * Remove unnecessary lpfc_brd_no. Ensure brd_no assignment is | ||
797 | unique. | ||
798 | * Removed unused MAX_FCP_LUN. | ||
799 | * Use mod_timer instead of add_timer for fdmi in lpfc_ct.c. | ||
800 | * Fixed misc discovery problems. | ||
801 | * Move stopping timers till just before lpfc_mem_free() call. | ||
802 | * Fix up NameServer reglogin error path. | ||
803 | * Cleanup possible outstanding discovery timers on rmmod. | ||
804 | * Fix discovery NPort to NPort pt2pt problem. | ||
805 | * Get rid of ip_tmofunc / scsi_tmofunc. | ||
806 | * Integrated patch from Christoph Hellwig: | ||
807 | lpfc_disc_done/lpfc_do_dpc cleanup - lpfc_disc_done can return | ||
808 | void - move lpfc_do_dpc and lpfc_disc_done to lpfc_hbadisc.c - | ||
809 | remove checking of list emptiness before calling lpfc_disc_done, | ||
810 | it handles the emtpy list case just fine and the additional | ||
811 | instructions cost less then the bustlocked spinlock operations. | ||
812 | * Integrated patch from Christoph Hellwig: This adds a new 64bit | ||
813 | counter instead, brd_no isn't reused anymore. Also some tiny | ||
814 | whitespace cleanups in surrounding code. | ||
815 | * Reorder functions in lpfc_els.c to remove need for prototypes. | ||
816 | * Removed unsed prototypes from lpfc_crtn.h - | ||
817 | lpfc_ip_timeout_handler, lpfc_read_pci and lpfc_revoke. | ||
818 | * Removed some unused prototypes from lpfc_crtn.h - | ||
819 | lpfc_scsi_hba_reset, lpfc_scsi_issue_inqsn, | ||
820 | lpfc_scsi_issue_inqp0, lpfc_scsi_timeout_handler. | ||
821 | * Integrated patch from Christoph Hellwig: remove TRUE/FALSE | ||
822 | usage. | ||
823 | * Integrated patch from Christoph Hellwig: Remove unused function | ||
824 | prototypes lpfc_set_pkt_len and lpfc_get_pkt_data from | ||
825 | lpfc_crtn.h - fixes build warnings. | ||
826 | * Removed unused struct lpfc_dmabufip definition from lpfc_mem.h. | ||
827 | * Removed pre-2.6.5 MODULE_VERSION macro from lpfc_compat.h. | ||
828 | * Fixing missing static and removing dead code. | ||
829 | * Adding nodewwn, portwwn and portfcid shost attributes. | ||
830 | * Initial support for CT via sysfs. request payloads of size less | ||
831 | than PAGE_SIZE and rsp payloads of size PAGE_SIZE are supported. | ||
832 | Driver maintains a list of rsp's and passes back rsp's | ||
833 | corresponding to the pid of the calling process. | ||
834 | * Support for RefreshInformation, GetAdapterAttributes, | ||
835 | GetPortStatistics. | ||
836 | * Make nodev-tmo default to 20 seconds. | ||
837 | * Fix up some DSM error cases, unreg_login rpi where needed. | ||
838 | * Fix up comments for fc_target_block / fc_target_unblock. | ||
839 | * Fix up code for scsi_block_requests / scsi_unblock_requests. | ||
840 | * Add NLP_FCP_TARGET for nodeinfo support. | ||
841 | * Move suspend/resume in lpfc_nlp_list under appropriate case - | ||
842 | Used host_lock for DPC to avoid race (remove dpc_lock) | ||
843 | * Fix some corner cases for PLOGI receive - simplify error case | ||
844 | for cmpl_reglogin_reglogin_issue. | ||
845 | * Bug fix for ppc64 EEH MMIO panic - always do readl after | ||
846 | writel's of HBA registers to force flush. | ||
847 | * Get rid of initial static routine declarations in lpfc_hbadisc.c | ||
848 | and lpfc_els.c. | ||
849 | * Updates to discovery processing. | ||
850 | |||
851 | Changes from 20040823 to 20040908 | ||
852 | |||
853 | * Changed version number to 8.0.11 | ||
854 | * Removed persistent binding code. | ||
855 | * Display both ASC and ASCQ info. | ||
856 | * Fixed link down->up transitions when linkdown tmo expires. Fix | ||
857 | was in the defensive error checking at the start of | ||
858 | queuecommand. | ||
859 | * Removed lpfc_scsi_timeout_handler as this timer is no longer | ||
860 | required. The midlayer will exhaust retries and then call | ||
861 | lpfc_abort_handler, lpfc_reset_lun_handler, and | ||
862 | lpfc_reset_target_handler. | ||
863 | * Minimal support for SCSI flat space addressing/volume set | ||
864 | addressing. Use 16 bits of LUN address so that flat | ||
865 | addressing/VSA will work. | ||
866 | * Changed 2 occurences of if( 1 != f(x)) to if(f(x) != 1) | ||
867 | * Drop include of lpfc_cfgparm.h. | ||
868 | * Reduce stack usage of lpfc_fdmi_cmd in lpfc_ct.c. | ||
869 | * Add minimum range checking property to /sys write/store | ||
870 | functions. | ||
871 | * Fix display of node_name and port_name via fc transport | ||
872 | attr. | ||
873 | * Removed biosparam code. | ||
874 | * Removed range checking. phba->config[] array elements are now | ||
875 | embedded into the hba struct. lpfc_config_setup() has been | ||
876 | removed. | ||
877 | * Collapsed lpfc_scsi_cmd_start into lpfc_queuecommand and cleaned | ||
878 | up combined routines. | ||
879 | * Removed unused prototypes myprint and | ||
880 | lpfc_sched_service_high_priority_queue. | ||
881 | * Removed unused function lpfc_nodev. | ||
882 | * Removed scsi_cmnd->timeout_per_command cancelation. SCSI midlayer | ||
883 | now times out all commands - FW is instructed to not timeout. | ||
884 | * Removed polling code from lpfc_scsi_cmd_start. Reorganized | ||
885 | queuecommand and cmd_start some. | ||
886 | |||
887 | Changes from 20040810 to 20040823 | ||
888 | |||
889 | * Changed version number to 8.0.10 | ||
890 | * Additional timer changes as per Arjan / Christoph's comments. | ||
891 | * Used mod_timer() instead of del_timer_sync() where appropriate. | ||
892 | * Fixed a use after free case (panic on 2.6.8.1 with | ||
893 | CONFIG_DEBUG_SLAB set). | ||
894 | * Fix compile warning in lpfc_fcp.c. | ||
895 | * Minor fix for log message, that prints unassigned brdno which is | ||
896 | zero. | ||
897 | * Move scsi_host_alloc() to the beginning of probe_one(). This | ||
898 | ensures that host_lock is available at later stages and also | ||
899 | avoids tons of unnecessary initializing if host_alloc() | ||
900 | fails. | ||
901 | * Removed else clause from lpfc_slave_configure that set | ||
902 | sdev->queue_depth. The driver informs the midlayer of its | ||
903 | setting in the template and only overrides if queue tagging is | ||
904 | enabled. | ||
905 | * Added PCI_DEVICE_ID_ZEPHYR and PCI_DEVICE_ID_ZFLY (Junior | ||
906 | Zephyr) support | ||
907 | |||
908 | Changes from 20040730 to 20040810 | ||
909 | |||
910 | * Changed version number to 8.0.9 | ||
911 | * Removed per HBA driver lock. Driver now uses the host->host_lock | ||
912 | * Restored support for the 2.6.5 kernel for those linux distributions | ||
913 | shipped with the 2.6.5 kernel. | ||
914 | * Applied patch from Christoph Hellwig (hch@infradead.org) as follows | ||
915 | "[PATCH] use scsi host private data in ->proc_info. | ||
916 | * Applied patch from Christoph Hellwig (hch@infradead.org) as follows | ||
917 | "Re: [Emulex] Ready for next round. This patch cleans up the memory | ||
918 | allocation routines a little and fixes a missing mempool_destroy and | ||
919 | some missing error handling." | ||
920 | * Changed pointers assignments from 0 to NULL. | ||
921 | * Added fixes to the lpfc_reset_lun_handler and lpfc_reset_bus_handler | ||
922 | entry points that caused kernel to Oops or hang. | ||
923 | * Added fixes to targetless hosts that caused modprobe and insmod to hang. | ||
924 | * Ongoing cleanup to many files | ||
925 | |||
926 | Changes from 20040723 to 20040730 | ||
927 | |||
928 | * Changed version number to 8.0.8 | ||
929 | * Removed unused LPFN_DRIVER_VERSION #define. | ||
930 | * Folded lpfc_findnode_scsiid into lpfc_find_target, its only | ||
931 | caller. | ||
932 | * Removed 2 unneeded arguments to lpfc_find_target (lun and | ||
933 | create_flag). | ||
934 | * Make lpfc_sli_reset_on_init = 1 | ||
935 | * Minor cleanup to quieten sparse. | ||
936 | * Removed missing function = 0 in tmo routine in lpfc_els.c. | ||
937 | * Moved additional binding parameters into lpfc_defaults.c: | ||
938 | lpfc_automap / lpfc_fcp_bind_method | ||
939 | * Use msecs_to_jiffies() where applicable. | ||
940 | * Only use queue depth attribute only after SLI HBA setup was | ||
941 | completed. | ||
942 | * Put in memory barriers for PPC | ||
943 | * Added PCI_DEVICE_ID_HELIOS and PCI_DEVICE_ID_JFLY (Junior | ||
944 | Helios) support | ||
945 | * Added 4&10 gigabit choices in user option link_speed | ||
946 | * Updated timer logic: Set timer data after init_timer use | ||
947 | timer_pending() instead of expires. | ||
948 | * Removed some remnants of IP over FC support from Kconfig and | ||
949 | Makefile. | ||
950 | * Remove redundant prototypes for lpfc_handle_eratt, | ||
951 | lpfc_handle_latt and lpfc_read_pci. | ||
952 | * Ongoing cleanup of lpfc_init.c. | ||
953 | * Changed LPFC_CFG_DFT_HBA_Q_DEPTH -> LPFC_CFG_HBA_Q_DEPTH. | ||
954 | * Another cleanup stab at lpfc_ct.c. Remove castings, structure | ||
955 | code sanely, remove redundant code, reorganize code so that | ||
956 | functions are invoked after definition. | ||
957 | |||
958 | Changes from 20040716 to 20040723 | ||
959 | |||
960 | * Changed version number to 8.0.7 | ||
961 | * Cleanup of lpfc_ct.c. Removed number of casts, removed tons of | ||
962 | dead/redundant code, cleaned up badly and poorly written code, | ||
963 | cleaned up return values. | ||
964 | * Fixed Persistent binding implementation | ||
965 | * Removed all references to lpfc_scsi_req_tmo | ||
966 | * Removed last references to lun_skip config parameter. | ||
967 | * Removed LPFC_DEV_RPTLUN node failure bit because we don't issue | ||
968 | REPORT_LUNS from the driver anymore. | ||
969 | * Removed LUN-tracking in driver. Removed lpfc_lun struct and | ||
970 | moved any functionality we still need to lpfc_target. | ||
971 | * Added new lpfc_jedec_to_ascii() call and replace two instances | ||
972 | of duplicate code with calls to this function. | ||
973 | * Removed Volume Set Addressing handling on LUN IDs. | ||
974 | * Applied patch from Christoph Hellwig (hch@infradead.org) that | ||
975 | removes dead code belonging to lpfc_build_scsi_cmnd() and its | ||
976 | call path. This is related to the recently removed report_lun | ||
977 | code. | ||
978 | |||
979 | Changes from 20040709 to 20040716 | ||
980 | |||
981 | * Changed version number to 8.0.6 | ||
982 | * Removed internal report LUNs usage. Removed functions: | ||
983 | lpfc_disc_issue_rptlun, lpfc_disc_cmpl_rptlun, | ||
984 | lpfc_disc_retry_rptlun and their use. | ||
985 | * Removed usused scheduler prototypes in lpfc_crtn.h | ||
986 | * Replace lpfc_geportname() with generic memcmp(). | ||
987 | * Rearrange code in lpfc_rcv_plogi_plogi_issue() to make it a | ||
988 | little more readable. | ||
989 | * Remove redundant port_cmp != 2 check in if | ||
990 | (!port_cmp) { .... if (port_cmp != 2).... } | ||
991 | * Clock changes: removed struct clk_data and timerList. | ||
992 | * Clock changes: seperate nodev_tmo and els_retry_delay into 2 | ||
993 | seperate timers and convert to 1 argument changed | ||
994 | LPFC_NODE_FARP_PEND_t to struct lpfc_node_farp_pend convert | ||
995 | ipfarp_tmo to 1 argument convert target struct tmofunc and | ||
996 | rtplunfunc to 1 argument * cr_count, cr_delay and | ||
997 | discovery_threads are only needed to be module_params and not | ||
998 | visible via sysfs. | ||
999 | |||
1000 | Changes from 20040614 to 20040709 | ||
1001 | |||
1002 | * Changed version number to 8.0.5 | ||
1003 | * Make lpfc_info static. | ||
1004 | * Make lpfc_get_scsi_buf static. | ||
1005 | * Print a warning if pci_set_mwi returns an error. | ||
1006 | * Changed SERV_PARM to struct serv_parm. | ||
1007 | * Changed LS_RJT to struct ls_rjt. | ||
1008 | * Changed CSP to struct csp. | ||
1009 | * Changed CLASS_PARMS to struct class_parms. | ||
1010 | * Some cosmetic coding style cleanups to lpfc_fcp.c. | ||
1011 | * Providing a sysfs interface that dumps the last 32 | ||
1012 | LINK_[UP|DOWN] and RSCN events. | ||
1013 | * Get rid of delay_iodone timer. | ||
1014 | * Remove qfull timers and qfull logic. | ||
1015 | * Convert mbox_tmo, nlp_xri_tmo to 1 argment clock handler | ||
1016 | * Removed duplicate extern defs of the bind variables. | ||
1017 | * Streamline usage of the defines CLASS2 and CLASS3, removing | ||
1018 | un-necessary checks on config[LPFC_CFG_FCP_CLASS]. | ||
1019 | * Moving the persistent binding variables to new file | ||
1020 | lpfc_defaults.c | ||
1021 | * Changed LPFC_SCSI_BUF_t to struct lpfc_scsi_buf. | ||
1022 | * Moved config specific code from probe_one() into | ||
1023 | config_setup(). Removing a redundant check on scandown value | ||
1024 | from bind_setup() as this is already done in config_setup(). | ||
1025 | * Changed LPFC_SLI_t to struct lpfc_sli. | ||
1026 | * Changed FCP_CMND to struct fcp_cmnd. | ||
1027 | * Changed FCP_RSP to struct fcp_rsp. | ||
1028 | * Remove the need for buf_tmo. | ||
1029 | * Changed ULP_BDE64 to struct ulp_bde64. | ||
1030 | * Changed ULP_BDE to struct ulp_bde. | ||
1031 | * Cleanup lpfc_os_return_scsi_cmd() and it's call path. | ||
1032 | * Removed lpfc_no_device_delay. | ||
1033 | * Consolidating lpfc_hba_put_event() into lpfc_put_event(). | ||
1034 | * Removed following attributes and their functionality: | ||
1035 | lpfc_extra_io_tmo, lpfc_nodev_holdio, lpfc_delay_rsp_err, | ||
1036 | lpfc_tgt_queue_depth and lpfc_check_cond_err. | ||
1037 | * Clock changes consolidating timers, just in the struct lpfc_hba, | ||
1038 | to get rid of clkData and pass only one argument to timeout | ||
1039 | routine. Also, removing need for outstanding clock linked list | ||
1040 | to stop these timers at rmmod. | ||
1041 | * Move lpfc.conf contents into lpfc_fcp.c. Removing per adapter | ||
1042 | attributes in favor of global attributes. | ||
1043 | * Fix a potential null pointer reference of pmbuf in lpfc_ct.c. | ||
1044 | * On reset_lun, issue LUN_RESET as opposed to ABORT_TASK_SET. | ||
1045 | * Removed SCSI_REQ_TMO related code. | ||
1046 | * Introducing two new defines LPFC_ATTR_R and LPFC_ATTR_RW that do | ||
1047 | a module_param, MODULE_PARM_DESC, lpfc_param_show, | ||
1048 | [lpfc_param_store] and CLASS_DEVICE_ATTRIBUTE. | ||
1049 | * Properly clean up when allocation of a linked BDE fails in the | ||
1050 | SCSI queuecommand path. | ||
1051 | * Fail SCSI command if dma_map_sg call fails. | ||
1052 | * Remove unused macros SWAP_ALWAYS and SWAP_ALWAYS16. | ||
1053 | * Reset context2 to 0 on exit in | ||
1054 | lpfc_sli_issue_iocb_wait_high_priority() and | ||
1055 | lpfc_sli_issue_iocb_wait(). | ||
1056 | * Arranging lpfc_scsiport.c to follow style of use after | ||
1057 | definition. This removes the need for the cruft of forward | ||
1058 | declarations. Also removing a redundant #define ScsiResult as it | ||
1059 | already available elsewhere. | ||
1060 | * Applying "Streamline lpfc error handling" patch from Christoph | ||
1061 | Hellwig (hch@infradead.org) with following modifications: fix | ||
1062 | mem leaks, remove some misplaced code that need not be there, | ||
1063 | print a message on exit (old code prints two (entry/exit)), make | ||
1064 | ret values consistent (either 1/0 or SUCCESS/FAILURE), keep all | ||
1065 | eh routines in a single file (lpfc_scsiport.c). | ||
1066 | * Move contents of lpfc_module_param.h into lpfc_fcp.c. | ||
1067 | * Changed sysfs attributes to CLASS_DEVICE_ATTRIBUTES (previously | ||
1068 | DEVICE_ATTRIBUTES). They now appear in | ||
1069 | /sys/class/scsi_host/hostx (previously in | ||
1070 | /sys/bus/pci/drivers/lpfc/devx). | ||
1071 | * Removed lpfc_syfs.h and lpfc_sysfs.c. | ||
1072 | * Cleanup of config params. Throttle params have been removed. | ||
1073 | max_lun has been removed. max_target is replaced with a #define, | ||
1074 | lun_skip is removed. Remove ipfc config params and related | ||
1075 | code. | ||
1076 | * Changed DMABUF_t usage to struct lpfc_dmabuf. | ||
1077 | * Downsizing iCfgParam structure to include a_string, a_low, a_hi | ||
1078 | and a_default values only. | ||
1079 | * Free SCSI buf safety memory pool on shutdown to eliminate memory | ||
1080 | leak. | ||
1081 | * Change lpfc_printf_log to a #define. Also include phba->brd_no | ||
1082 | and newline in the print string rather than in the #define. | ||
1083 | * Remove code that optionally locates Host Group Pointers in host | ||
1084 | memory SLIM since this is no longer needed for PPC64, once | ||
1085 | CONFIG_PORT uses HBA's view of its BAR0. | ||
1086 | * Removed the forward declarations of the sli functions and | ||
1087 | rearranging the code in lpfc_sli.c. | ||
1088 | * Removed the preamble functionality from logging. | ||
1089 | * Make lpfc_sli_hba_setup() return negative error codes on error | ||
1090 | and correct the comment left over in lpfc_fcp.c | ||
1091 | * Removed the lpfc_loadtime variable. | ||
1092 | * Put a space between all ifs and their open parens '('. | ||
1093 | * Change Studly_Caps LPFC_SCSI_BUF_t to struct lpfc_scsi_buf. | ||
1094 | * Fixed insmod hang after hardware error. | ||
1095 | * Relocated scsi_host alloc to before we enable the interrupt | ||
1096 | handler | ||
1097 | * Add .tmp_versions directory to Makefile clean target. This | ||
1098 | directory is created in the 2.6.5+ build process (with Red Hat | ||
1099 | kernels at least). | ||
1100 | * Changing phba->config to kmalloc lpfc_icfgparam and not | ||
1101 | *phba->config. This is manifesting itself as a panic in | ||
1102 | pci_release_region(). | ||
1103 | * Fix for firmware download / board reset problem. | ||
1104 | * Integrated patch from Christoph Hellwig (hch@infradead.org) to | ||
1105 | reorganize and cleanup lpfc_fcp.c | ||
1106 | * Don't abort commands immediately when there is an RSCN event to | ||
1107 | give driver time to rediscover targets before the midlayer | ||
1108 | retries the SCSI commands. | ||
1109 | |||
1110 | Changes from 20040604 to 20040614 | ||
1111 | |||
1112 | * Changed version number to 8.0.4 | ||
1113 | * Removed lpfc_valid_lun function. | ||
1114 | * Added scsi_buf safety pool to address scsi_buf failures in | ||
1115 | queuecommand under low memory conditions. Allocations now come | ||
1116 | from kmalloc initially, but if kmalloc fails, the allocation | ||
1117 | comes from the safety pool. | ||
1118 | * Modified lpfc_slave_alloc to only set the scsi_device->hostdata | ||
1119 | pointer if the driver has discovered the target. This routine | ||
1120 | always returns success now as well since no error ever occurs in | ||
1121 | the alloc routine. | ||
1122 | * Mask only info and warning messages. Print all error messages | ||
1123 | irrespective of mask. | ||
1124 | * Removing lpfc_log_chk_msg_disabled() | ||
1125 | * Changed lpfc_printf_log to take struct lpfc_hba * directly | ||
1126 | instead of a "board number". | ||
1127 | * Convert dma_sync_single to pci_dma_sync_single_for_{device/cpu}. | ||
1128 | * Implemented new style log messages. The message strings are now | ||
1129 | embedded in the call to lpfc_printf_log. | ||
1130 | * Decreased FLOGI discovery timeout to 20 seconds. | ||
1131 | * On error in lpfc_pci_probe_one() return -1 and not 1. | ||
1132 | * Allow for board numbers that are not sequential, paving the way | ||
1133 | for hotplug support. | ||
1134 | * scsi_add_host() can fail, so wrap it around in an if(). Also | ||
1135 | initiate scsi_scan_host() after attaching the sysfs attributes. | ||
1136 | * lpfc_release_version is used only in lpfc_ct.c, so move it there | ||
1137 | and mark it as static. | ||
1138 | * Removed lpfc_sleep_ms and replaced with mdelay or schedule calls | ||
1139 | directly | ||
1140 | * Removed all (struct list_head *) casts from clkData-related list | ||
1141 | handling in list_add, list_del macros. | ||
1142 | * Removed EXPORT_SYMBOLs. | ||
1143 | * Removed LPFC_MIN_QFULL and lpfc_qthrottle_up. | ||
1144 | * Replace LPFCSCSITARGET_t with struct lpfc_target. | ||
1145 | * Replace LPFCSCSILUN_t with struct lpfc_lun. | ||
1146 | * Remove unused struct declarations (fcPathId and fcRouteId) from | ||
1147 | lpfc_scsi.h. | ||
1148 | * Rewrite use of FC transport attributes. | ||
1149 | * Fix crash when link is lost. This was due to lpfc_delay_iodone | ||
1150 | calling list_del on an object that was never put on a list. | ||
1151 | * Remove trailing spaces at the end of all lines. | ||
1152 | * Set MAX_FCP_TARGET to 256 from 0xff. Set MAX_FCP_LUN and | ||
1153 | MAX_FCP_CMDS to their decimal equivalents and updated | ||
1154 | documentation. | ||
1155 | |||
1156 | Changes from 20040526 to 20040604 | ||
1157 | |||
1158 | * Changed version number to 8.0.3 | ||
1159 | * Completed sysfs FC transport support. | ||
1160 | * Removed unused fields in SCSI LUN and SCSI Target structures: | ||
1161 | void *pTargetProto; void *pTargetOSEnv; void *pLunOSEnv; | ||
1162 | * Modified list_for_each to list_for_each_entry. Modified | ||
1163 | list_for_each_safe to list_for_each_entry_safe. | ||
1164 | * Remove lpfc_dfc.h file. | ||
1165 | * Changed pHba->phba, pCommand->pcmd | ||
1166 | * Changed plogi_ndlp -> plogindlp, pos_tmp->postmp, pRsp->prsp, | ||
1167 | pCmd->pcmd | ||
1168 | * Changed pText -> ptext | ||
1169 | * Changed p_tmp_buff -> ptmpbuff | ||
1170 | * Changed pBufList -> pbuflist, pRsp -> prsp, pCmd -> pcmd | ||
1171 | * Changed *pos_tmp -> *postmp, *p_mbuf -> *pmbuf | ||
1172 | * Following changes are made to the SCSI fast path: Added | ||
1173 | DMA_BUF_t member to the lpfc_scsi_buf_t. This will reduce a | ||
1174 | memory allocation in the scsi fast path. Added check for | ||
1175 | targetp == NULL in the scsi fast path. Increased number of | ||
1176 | scatter gather entries in lpfc_scsi_dma_ext to 4 from 3 and | ||
1177 | changed the size of lpfc_scsi_dma_ext to 264 | ||
1178 | * Fixing some missing static lpfc_nportdisc.c. | ||
1179 | * Reordered #include lines so that lpfc.h doesn't have to #include | ||
1180 | other header files. | ||
1181 | * Remove lpfc_get_hba_sym_node_name() as a global EXPORT and make | ||
1182 | it static. | ||
1183 | * Move struct clk_data definition from lpfc_hw.h to lpfc_sli.h. | ||
1184 | * Changed LPFC_IOCBQ_t to struct lpfc_iocbq. | ||
1185 | * Changed LPFC_SLI_RING_t to struct lpfc_sli_ring. | ||
1186 | * Changed LPFC_NODELIST_t to struct lpfc_nodelist. | ||
1187 | * Rearranged lpfc_nportdisc.c by moving state machine array | ||
1188 | (lpfc_disc_action) and the one function that uses it, | ||
1189 | lpfc_disc_state_machine, to the end of the file, removing the | ||
1190 | need for the raft of prototypes at the top. | ||
1191 | * Changed LPFC_BINDLIST_t to struct lpfc_bindlist. | ||
1192 | * Removed lpfc_issue_ct_rsp(), lpfc_sleep(), lpfc_add_bind(), | ||
1193 | lpfc_del_bind(), lpfc_sli_wake_mbox_wait() and | ||
1194 | lpfc_sli_issue_mbox_wait(). | ||
1195 | * Fixed a large number of overly-long lines. | ||
1196 | * Fixed some discovery problems: Introduced deferred ndlp removal | ||
1197 | when in DSM to avoid panic when in nested DMSs Fix NportId | ||
1198 | fffc01 handling to not relogin after LOGO fixed handling of LOGO | ||
1199 | on PLOGI issue. | ||
1200 | * Changed SLI_CT_REQUEST to lpfc_sli_ct_request. | ||
1201 | * Changed NAME_TYPE to struct lpfc_name. | ||
1202 | * Changed lpfcCfgParam_t to struct lpfc_cfgparam. | ||
1203 | * Changed LPFC_STAT_t to struct lpfc_stats. | ||
1204 | * Changed HBAEVT_t to struct lpfc_hba_event. | ||
1205 | * Changed Studly_Caps lpfcHBA_t to struct lpfc_hba. | ||
1206 | * Removed no longer used tasklet_running flag. | ||
1207 | * Removing *PSOME_VAR typedefs and using SOME_VAR* directly. | ||
1208 | * Changing .use_clustering to ENABLE_CLUSTERING. | ||
1209 | * Modify lpfc_queuecommand to return SCSI_MLQUEUE_HOST_BUSY when | ||
1210 | it can't queue a SCSI command. Also, remove cmnds_in_flight | ||
1211 | member of struct lpfcHBA for 2.6 kernels as it was only needed | ||
1212 | to determine what to return from queuecommand. | ||
1213 | * Change return type of lpfc_evt_iocb_free to void as it doesn't | ||
1214 | return anything. | ||
1215 | * Remove unused cmnd_retry_list and in_retry members in struct | ||
1216 | lpfcHBA. | ||
1217 | * Remove some instances of unneeded casting of kmalloc's return in | ||
1218 | lpfc_scsiport.c | ||
1219 | * Remove lpfc_linux_attach() and lpfc_linux_detach(). Integrate | ||
1220 | them into lpfc_probe_one() and lpfc_release_one() respectively. | ||
1221 | * Remove lpfc_num_iocbs, lpfc_num_bufs module parameters | ||
1222 | * Remove #defines for NUM_NODES, NUM_BUFS and NUM_IOCBS | ||
1223 | |||
1224 | Changes from 20040515 to 20040526 | ||
1225 | |||
1226 | * Changing version number to 8.0.2. | ||
1227 | * Including dma-mapping.h as one of the include headers. Also | ||
1228 | rearrange the #include order. | ||
1229 | * Make functions static as appropriate. | ||
1230 | * queuecommand() will now return SCSI_MLQUEUE_HOST_BUSY instead of | ||
1231 | 1 to backpressure midlayer. | ||
1232 | * Removed function prototypes for lpfc_start_timer() and | ||
1233 | lpfc_stop_timer() | ||
1234 | * Changed timer support to be inline. Clk_data is now declared | ||
1235 | right next to the corresponding timer_list entry so we don't | ||
1236 | have to allocate these clk_data dynamically. | ||
1237 | * Add readls after writels to PCI space to flush the writes. | ||
1238 | * Fix misspelled word "safety" in function names. | ||
1239 | * Fix up comments in lpfc.conf for per HBA parameters to reflect | ||
1240 | new implementation. | ||
1241 | * Change lpfc_proc_info handler to get the Nodename from | ||
1242 | fc_nodename and not fc_portname. | ||
1243 | * Fix up some comments and whitespace in lpfc_fcp.c. | ||
1244 | * Formatting changes: get rid of leading spaces in code | ||
1245 | * Move discovery processing from tasklet to a kernel thread. | ||
1246 | * Move ndlp node from unmap list to map list if ADISC completed | ||
1247 | successfully. | ||
1248 | * Flush all the ELS IOCBs when there is a link event. | ||
1249 | * LP9802 qdepth is twice the LP9802DC qdepth. Delay | ||
1250 | elx_sched_init after READ_CONFIG to get max_xri from the | ||
1251 | firmware. Reset ELX_CFG_DFT_HBA_Q_DEPTH to max_xri after | ||
1252 | READ_CONFIG | ||
1253 | * Fix fc_get_cfg_parm() to be more robust and support embedded hex | ||
1254 | values. The lpfc_param's are now defined as: | ||
1255 | lpfc_log_verbose="lpfc:0,lpfc0:0x10,lpfc1:4,lpfc100:0xffff" The | ||
1256 | "," delimter does not matter. It can be anything or not exist at | ||
1257 | all. ie param = "lpfc:0lpfc0:0x10.lpfc1:4txtlpfc100:0xffff" will | ||
1258 | also work. Additionally the string is treated as case | ||
1259 | insensitive. | ||
1260 | * Changed all usage of lpfc_find_lun_device() to lpfc_find_lun(). | ||
1261 | * Removed unnecessary wrappers lpfc_find_lun_device() and | ||
1262 | lpfc_tran_find_lun(). | ||
1263 | * Switch from using internal bus/id/lun to similar data from | ||
1264 | scsi_device structure. | ||
1265 | * Eliminate one-line function lpfc_find_target() | ||
1266 | * Added slave_alloc, slave_destory | ||
1267 | * lpfc_scsi_cmd_start can now acquire lun pointer from | ||
1268 | scsi_device->hostdata, which is setup in slave_alloc. | ||
1269 | * Eliminate unnecessary checking on every cmd just to see if we | ||
1270 | are accessing the device the first time. | ||
1271 | * Remove assumption in lpfc_reset_lun_handler that a valid | ||
1272 | lpfc_scsi_buf is hung off of linux's scsi_cmnd->host_scribble | ||
1273 | when our reset is called. | ||
1274 | |||
1275 | Changes from 20040507 to 20040515 | ||
1276 | |||
1277 | * Changed version to 8.0.1 | ||
1278 | * Fixed crash on driver rmmod after error injection tests and | ||
1279 | lpfc_tasklet deadlock. | ||
1280 | * Modified lpfc.conf to remove limit on number of support hosts | ||
1281 | * Removed HBAAPI | ||
1282 | * Removed duplication of SCSI opcodes from lpfc_fcp.h that are | ||
1283 | available in scsi/scsi.h | ||
1284 | * Rework module_param usage | ||
1285 | * Added MODULE_PARAM_DESC for various module_params | ||
1286 | * Removed #define EXPORT_SYMTAB | ||
1287 | * Removed #includes of if_arp.h and rtnetlink.h | ||
1288 | * Removed string "Open Source" from MODULE_DESC | ||
1289 | * Cleanup duplicated string definitions used by MODULE_DESC | ||
1290 | * Renamed lpfc_pci_[detect|release] to lpfc_pci_[probe|remove]_one | ||
1291 | * Fix formatting of lpfc_driver | ||
1292 | * Remove unnecessary memset to 0 of lpfcDRVR | ||
1293 | * Attach driver attributes always unless pci_module_init failed | ||
1294 | * Remove all one-line wrappers from lpfc_mem. | ||
1295 | * Remove lpfc_sysfs_set_[show|store] as it is no longer needed | ||
1296 | * Redo lpfc_sysfs_params_[show|store] to one value per attribute rule | ||
1297 | * Breakdown lpfc_sysfs_info_show into smaller one value per attribute | ||
1298 | * Use device attributes instead of driver attributes where appropriate | ||
1299 | * Remove no longer needed EXPORT_SYMBOLs | ||
1300 | * Remove some unused code (1600 msg's related) | ||
1301 | |||
1302 | Changes from 20040429 to 20040507 | ||
1303 | |||
1304 | * Change version to 8.0.0 | ||
1305 | * Fix the number of cmd / rsp ring entries in lpfc_fcp.c to match | ||
1306 | the divisions setup in lpfc_hw.h. | ||
1307 | * Remove phba->iflag reference. | ||
1308 | * Several locking improvements. | ||
1309 | * Remove functions lpfc_drvr_init_lock, lpfc_drvr_lock, | ||
1310 | lpfc_drvr_unlock and lpfc_hipri_*. | ||
1311 | * Remove LPFC_DRVR_LOCK and LPFC_DRVR_UNLOCK macros. | ||
1312 | * Make lpfc_info() use lpfc_get_hba_model_desc() instead of | ||
1313 | rewriting almost identical code. | ||
1314 | * Fix 1 overly long line in each of lpfc_cfgparm.h, lpfc_ftp.c and | ||
1315 | lpfc_sli.c. | ||
1316 | * Fix build for Red Hat 2.6.3 kernel by #defining MODULE_VERSION | ||
1317 | only if it isn't already defined. | ||
1318 | * Change elx_sli_issue_mbox_wait to return correct error code to | ||
1319 | the caller. | ||
1320 | * In some of the els completion routines, after calling | ||
1321 | lpfc_elx_chk_latt, driver ignores the return code of the | ||
1322 | lpfc_elx_chk_latt. This will prevent the discovery state machine | ||
1323 | restarting correctly when there are link events in the middle of | ||
1324 | discovery state machine running. Fix this by exiting discovery | ||
1325 | state machine if lpfc_els_chk_latt returns a non zero value. | ||
1326 | * Removed MAX_LPFC_BRDS from lpfc_diag.h | ||
1327 | * Removed unused first_check. | ||
1328 | * Remove some unused fields and defines. | ||
1329 | * Change lpfc-param names to lpfc_param. | ||
1330 | * Add use of MODULE_VERSION macro for 2.6 kernels. | ||
1331 | * Shorten length of some of the comment lines to make them more | ||
1332 | readable. | ||
1333 | * Move FCP_* definitions to their own header file, lpfc_fcp.h. | ||
1334 | * Remove unused prototypes from lpfc_crtn.h: fcptst, iptst, | ||
1335 | lpfc_DELAYMS. | ||
1336 | * Remove duplicated prototypes from lpfc_crtn.h: | ||
1337 | lpfc_config_port_prep, lpfc_config_port_post, | ||
1338 | lpfc_hba_down_prep. | ||
1339 | * Removed some unused export_symbols. | ||
1340 | * Install driver files into */drivers/scsi/lpfc instead of | ||
1341 | */drivers/scsi. | ||
1342 | |||
1343 | Changes from 20040426 to 20040429 | ||
1344 | |||
1345 | * Declared export symbol lpfc_page_alloc and lpfc_page_free | ||
1346 | * Changed lpfc version number to 6.98.3 | ||
1347 | * Move the definition of MAX_LPFC_BRDS to the only header file | ||
1348 | that uses it (lpfc_diag.h). | ||
1349 | * Change lpfc_sli_wake_iocb_wait to do a regular wake_up since | ||
1350 | lpfc_sli_issue_iocb_wait now sleeps uninterruptible. | ||
1351 | * Replace list_for_each() with list_for_each_safe() when a list | ||
1352 | element could be deleted. | ||
1353 | * Fix IOCB memory leak | ||
1354 | |||
1355 | Changes from 20040416 to 20040426 | ||
1356 | |||
1357 | * Change lpfc_config_port_prep() to interpret word 4 of the DUMP | ||
1358 | mbox response as a byte-count | ||
1359 | * Add info attribute to sysfs | ||
1360 | * Minor formatting (spaces to tabs) cleanup in lpfc_sched.h | ||
1361 | * Remove unused log message number 732 | ||
1362 | * Completing MODULE_PARM -> module_param changes | ||
1363 | * Removed unused targetenable module parameter | ||
1364 | * Removed locks from lpfc_sli_issue_mbox_wait routine | ||
1365 | * Removed code that retry 29,00 check condition | ||
1366 | * Removed code that manipulates rspSnsLen. | ||
1367 | * Fix use of lun-q-depth config param | ||
1368 | * Fix severity inconsistency with log message 249 | ||
1369 | * Removed lpfc_max_target from lpfc_linux_attach | ||
1370 | * Replace references to lpfcDRVR.pHba[] with lpfc_get_phba_by_inst() | ||
1371 | * Change lpfc_param to lpfc-param | ||
1372 | * Partially removed 32 HBA restriction within driver. Incorported | ||
1373 | lpfc_instcnt, lpfc_instance[], and pHba[] into lpfcDRVR | ||
1374 | structure Added routines lpfc_get_phba_by_inst() | ||
1375 | lpfc_get_inst_by_phba() lpfc_check_valid_phba() | ||
1376 | * Turn on attributes "set" & "params" by default. | ||
1377 | * Further formatting/whitespace/line length cleanup on: lpfc_ct.c | ||
1378 | lpfc_els.c lpfc_fcp.c lpfc_hbadisc.c lpfc_init.c lpfc_ipport.c | ||
1379 | lpfc_mbox.c lpfc_nportdisc.c lpfc_sched.c lpfc_sched.h | ||
1380 | lpfc_scsi.h lpfc_scsiport.c lpfc_sli.c and lpfc_sli.h | ||
1381 | * Add log message 249 to log any unsupported device addressing | ||
1382 | modes encountered. | ||
1383 | * Add support for 256 targets and 256 LUNs | ||
1384 | * Fixed panic in lpfc_linkdown. | ||
1385 | * Removed (struct list_head*) casting in several calls to list_del | ||
1386 | * Free irq reservation and kill running timers when insmod or | ||
1387 | modprobe are killed via ctrl-c | ||
1388 | * Remove drivers/scsi from include path | ||
1389 | * Wrap use of log message 311 in macro | ||
1390 | * Detect failure return from pci_map_sg call in lpfc_os_prep_io | ||
1391 | * Fix use-after-free of IOCB in lpfc_sli_process_sol_iocb which | ||
1392 | was causing an Oops on 2.6.5 kernel. | ||
1393 | * Cleanup use of several gotos not used for error exit. | ||
1394 | * Replace memcpy_toio() and memcpy_toio() with endian-dependent | ||
1395 | lpfc_memcpy_to_slim() and lpfc_memcpy_from_slim() so that for | ||
1396 | big endian hosts like PPC64, the SLIM is accessed 4 bytes at a | ||
1397 | time instead of as a byte-stream. | ||
1398 | |||
1399 | Changes from 20040409 to 20040416 | ||
1400 | |||
1401 | * The scsi_register and scsi_alloc_host OS calls can fail and | ||
1402 | return a zero-valued host pointer. A ctrl-C on 2.6 kernels | ||
1403 | during driver load will cause this and the driver to panic. | ||
1404 | Fixed this bug. Also found a bug in the error_x handling with | ||
1405 | lpfc_sli_hba_down - it was in the wrong place and the driver | ||
1406 | lock was not held, but needed to be (in lpfc_linux_attach) Fixed | ||
1407 | both. Did some minor comment clean up. | ||
1408 | * Removed unwanted (void *) castings. | ||
1409 | * Replace define of INVALID_PHYS, with kernel 2.6.5's | ||
1410 | dma_mapping_error() and add a inline function for earlier | ||
1411 | kernels. Remove lpfc_bad_scatterlist(). | ||
1412 | * Clean up formatting in hbaapi.h, lpfc.h, lpfc_cfgparm.h, | ||
1413 | lpfc_crtn.h, lpfc_ct.c, lpfc_diag.h, lpfc_disc.h, lpfc_els.c, | ||
1414 | lpfc_fcp.c, lpfc_hbadisc.c, lpfc_hw.h, lpfc_init.c, | ||
1415 | lpfc_ipport.c, lpfc_logmsg.c, lpfc_logmsg.h and lpfc_scsiport.c | ||
1416 | - mostly replacing groups of 8 spaces with hard tabs and keeping | ||
1417 | lines to 80 column max.. | ||
1418 | * Removed LPFC_DRVR_LOCK call from lpfc_unblock_requests for 2.4 | ||
1419 | kernels. The lpfc_scsi_done routine already unlocks the driver | ||
1420 | lock since it expects this lock to be held. | ||
1421 | * Removed global lock capabilities from driver lock routines | ||
1422 | * Remove SA_INTERRUPT flag from request_irq | ||
1423 | * Move dma_addr_t cast inside of getPaddr macro as everywhere | ||
1424 | getPaddr is used, the return is cast to dma_addr_t. | ||
1425 | * Clean up formatting in lpfc_sli.c and lpfc_sysfs.c - mostly | ||
1426 | replacing groups of 8 spaces with hard tabs and keeping lines | ||
1427 | to 80 column max. | ||
1428 | * Fix build for RHEL 2.1 BOOT kernels by always #including | ||
1429 | interrupt.h in lpfc.h. | ||
1430 | * Fix RHEL 3 build by #defining EXPORT_SYMTAB. | ||
1431 | * Replace sprintf with snprintf in lpfc_proc_info. | ||
1432 | * Fix build warnings on 2.6 kernels - remove no longer used calls | ||
1433 | to character device initialization. | ||
1434 | * Initial support code for discovery in tasklet conversion. | ||
1435 | * Removing char interface and ioctl code. | ||
1436 | * Change all elx prefixes to lpfc | ||
1437 | * Replace lpfc_write_slim() & lpfc_read_slim() with memcpy_toio(), | ||
1438 | memcpy_fromio(), writel() & readl(). | ||
1439 | |||
1440 | Changes from 20040402 to 20040409 | ||
1441 | |||
1442 | * Replaced lpfc_read_hbaregs_plus_offset and | ||
1443 | lpfc_write_hbaregs_plus_offset functions with readl and writel. | ||
1444 | * Get rid of long mdelay's in insmod path | ||
1445 | * Changed the way our pci_device_id structures are initialized | ||
1446 | * Replace lpfc_read/write_CA/HA/HC/HS with calls to readl() & | ||
1447 | writel() directly. | ||
1448 | * Increase SLI2_SLIM to 16K Increase cmd / rsp IOCBs accordingly | ||
1449 | * Removed lpfc_els_chk_latt from the lpfc_config_post function. | ||
1450 | lpfc_els_chk_latt will enable the link event interrupts when | ||
1451 | flogi is pending which causes two discovery state machines | ||
1452 | running parallely. | ||
1453 | * Add pci_disable_device to unload path. | ||
1454 | * Move lpfc_sleep_event from lpfc_fcp.c to lpfc_util_ioctl.c | ||
1455 | * Call dma_map_single() & pci_map_single() directly instead of via | ||
1456 | macro lpfc_pci_map(). Allow address 0 for PPC64. | ||
1457 | * Change sleep to uninterruptible in lpfc_sli_issue_icob_wait | ||
1458 | because this function doesn't handle signals. | ||
1459 | * Move lpfc_wakeup_event from lpfc_fcp.c to lpfc_ioctl.c | ||
1460 | * Remove unneeded #include <linux/netdevice.h> | ||
1461 | * Remove unused clock variables lpfc_clkCnt and lpfc_sec_clk. | ||
1462 | * Get rid of capitalization of function names. | ||
1463 | * Removed lpfc_addr_sprintf. | ||
1464 | * Implemented gotos in lpfc_linux_attach for error cases. | ||
1465 | * Replace mlist->dma.list = dmp->dma.list; to mlist = dmp. | ||
1466 | * Remove functions lpfc_get_OsNameVersion and elx_wakeup. Change | ||
1467 | elx_wakeup to wake_up_interruptible | ||
1468 | * Add function lpfc_get_os_nameversion and change | ||
1469 | lpfc_get_OsNameVersion to lpfc_get_os_nameversion. | ||
1470 | * Remove lpfc_get_OsNameVersion | ||
1471 | * Change driver name to a consistent lpfc in every visible place. | ||
1472 | * Fix build warning: removed unused variable ret in lpfc_fdmi_tmo. | ||
1473 | * Remove lpfc_utsname_nodename_check function | ||
1474 | * Remove functions lpfc_register_intr and lpfc_unregister_intr | ||
1475 | * Fill in owner field in lpfc_ops file_operations struct and | ||
1476 | remove now unnecessary open and close entry points. | ||
1477 | * Change function name prefixes from elx_ to lpfc_ | ||
1478 | * Remove special case check for TUR in elx_os_prep_io() | ||
1479 | * Renamed elx_scsi.h to lpfc_scsi.h | ||
1480 | * Renamed elx_sched.h to lpfc_sched.h | ||
1481 | * Renamed elx_mem.h to lpfc_mem.h | ||
1482 | * Renamed elx_sli.h to lpfc_sli.h | ||
1483 | * Renamed elx_logmsg.h to lpfc_logmsg.h | ||
1484 | * Renamed elx.h to lpfc.h | ||
1485 | * Renamed elx_sli.c to lpfc_sli.c | ||
1486 | * Renamed elx_sched.c to lpfc_sched.c | ||
1487 | * Renamed elx_mem.c to lpfc_mem.c | ||
1488 | * Renamed elx_logmsg.c to lpfc_logmsg.c | ||
1489 | * Renamed lpfcLINUXfcp.c lpfc_fcp.c | ||
1490 | * Renamed elx_clock.c to lpfc_clock.c | ||
1491 | * Reduce stack usage in lpfc_info(). | ||
1492 | * Move lpip_stats structure from lpfc_hba.h to lpfc_ip.h. | ||
1493 | * Move lpfc_stats and HBAEVT_t structures from lpfc_hba.h to | ||
1494 | lpfc.h | ||
1495 | * Remove lpfc_hba.h | ||
1496 | * Remove duplicate rc definitions from | ||
1497 | * Removed code which used next pointer to store mbox structure. | ||
1498 | * Cleaned up list iterations. | ||
1499 | * Removed non list manipulation of the next pointers. | ||
1500 | * Change list_del()/INIT_LIST_HEAD sequences to list_del_init() | ||
1501 | * In ELX_IOCBQ_t: Moved hipri_trigger field to iocb_flag. Combined | ||
1502 | hipri_wait_queue and rsp_iocb in union | ||
1503 | * Replaced casting from list_head with list_entry macro. | ||
1504 | * Added ct_ndlp_context field to the ELX_IOCBQ_t. | ||
1505 | * Do not use DMABUf_t list to store ndlp context | ||
1506 | * Return 0 from lpfc_process_iotcl_util() when ELX_INITBRDS | ||
1507 | succeeds. | ||
1508 | * remove elx_os_scsiport.h | ||
1509 | * Do not use DMABUf_t list to hold rpi context | ||
1510 | * Replace elx_cfg_* names with lpfc_cfg-* | ||
1511 | * Moved FCP activity to ring 0. Moved ELS/CT activity to ring 2. | ||
1512 | * Clean up formatting of elx_sli.h (tabs for indents, 80 column | ||
1513 | lines). | ||
1514 | * Remove unused elxclock declaration in elx_sli.h. | ||
1515 | * Since everywhere IOCB_ENTRY is used, the return value is cast, | ||
1516 | move the cast into the macro. | ||
1517 | * Split ioctls out into seperate files | ||
1518 | |||
1519 | Changes from 20040326 to 20040402 | ||
1520 | |||
1521 | * Updated ChangeLog for 20040402 SourceForge drop. | ||
1522 | * Use safe list iterator for ndlp list | ||
1523 | * Added code to return NLP_STE_FREED_NODE from the discovery | ||
1524 | state machine functions if the node is freed from the | ||
1525 | function. | ||
1526 | * Fixes to DMABUF_t handling | ||
1527 | * Fix for load error in discovery | ||
1528 | * Remove loop_cnt variable from lpfc_rcv_plogi_unused_node. | ||
1529 | * Remove nle. reference. | ||
1530 | * Remove support for building 2.4 drivers | ||
1531 | * Remove elx_util.h and replace elx_disc.h with lpfc_disc.h | ||
1532 | * Implemented the Linux list macros in the discovery code. | ||
1533 | Also moved elx_disc.h contents into lpfc_disc.h | ||
1534 | * Unused variable cleanup | ||
1535 | * Use Linux list macros for DMABUF_t | ||
1536 | * Break up ioctls into 3 sections, dfc, util, hbaapi | ||
1537 | rearranged code so this could be easily seperated into a | ||
1538 | differnet module later All 3 are currently turned on by | ||
1539 | defines in lpfc_ioctl.c LPFC_DFC_IOCTL, LPFC_UTIL_IOCTL, | ||
1540 | LPFC_HBAAPI_IOCTL | ||
1541 | * Misc cleanup: some goto's; add comments; clarify function | ||
1542 | args | ||
1543 | * Added code to use list macro for ELXSCSITARGET_t. | ||
1544 | * New list implementation for ELX_MBOXQ_t | ||
1545 | * Cleaned up some list_head casting. | ||
1546 | * Put IPFC ifdef around two members of struct lpfc_nodelist. | ||
1547 | * Cleaned up iocb list using list macros and list_head data | ||
1548 | structure. | ||
1549 | * lpfc_online() was missing some timer routines that were | ||
1550 | started by lpfc_linux_attach(). These routines are now also | ||
1551 | started by lpfc_online(). lpfc_offline() only stopped | ||
1552 | els_timeout routine. It now stops all timeout routines | ||
1553 | associated with that hba. | ||
1554 | * Replace seperate next and prev pointers in struct | ||
1555 | lpfc_bindlist with list_head type. In elxHBA_t, replace | ||
1556 | fc_nlpbind_start and _end with fc_nlpbind_list and use | ||
1557 | list_head macros to access it. | ||
1558 | * Fix ulpStatus for aborting I/Os overlaps with newer firmware | ||
1559 | ulpStatus values | ||
1560 | * Rework params_show/store to be consistent as the other | ||
1561 | routines. Remove generic'ness and rely on set attribute. | ||
1562 | * Remove unused log message. | ||
1563 | * Collapse elx_crtn.h and prod_crtn.h into lpfc_crtn.h | ||
1564 | * Ifdef Scheduler specific routines | ||
1565 | * Removed following ununsed ioclt's: ELX_READ_IOCB | ||
1566 | ELX_READ_MEMSEG ELX_READ_BINFO ELX_READ_EINVAL ELX_READ_LHBA | ||
1567 | ELX_READ_LXHBA ELX_SET ELX_DBG LPFC_TRACE | ||
1568 | * Removed variable fc_dbg_flg | ||
1569 | * Fixed a bug where HBA_Q_DEPTH was set incorrectly for | ||
1570 | 3-digit HBAs. Also changed can_queue so midlayer will only | ||
1571 | send (HBA_Q_DEPTH - 10) cmds. | ||
1572 | * Clean up code in the error path, check condition. Remove | ||
1573 | ununsed sense-related fields in lun structure. | ||
1574 | * Added code for safety pools for following objects: mbuf/bpl, | ||
1575 | mbox, iocb, ndlp, bind | ||
1576 | * Wrapped '#include <elx_sched.h>' in '#ifdef USE_SCHEDULER'. | ||
1577 | * Fixed 'make clean' target. | ||
1578 | * Build now ignores elx_sched.o, and includes lpfc_sysfs.o. | ||
1579 | * Wrapped lpfndd.o target in BUILD_IPFC ifdef. | ||
1580 | * Removed elx_os.h inclusion in implementation files. | ||
1581 | * Removed ELX_OS_IO_t data structure and put data direction | ||
1582 | and non scatter/gather physical address into the scsi buffer | ||
1583 | structure directly. Moved DRVR_LOCK, putPaddr, getPaddr | ||
1584 | macros and some defines into elx.h since they are required | ||
1585 | by the whole driver. | ||
1586 | * Migrated following ioctls (debug) ELX_DISPLAY_PCI_ALL | ||
1587 | ELX_DEVP ELX_READ_BPLIST ELX_RESET_QDEPTH ELX_STAT. | ||
1588 | * Step 1 of attempt to move all Debug ioctls to sysfs. | ||
1589 | Implemented the following IOCTLs in sysfs: ELX_WRITE_HC | ||
1590 | ELX_WRITE_HS ELX_WRITE_HA ELX_WRITE_CA ELX_READ_HC | ||
1591 | ELX_READ_HS ELX_READ_HA ELX_READ_CA ELX_READ_MB ELX_RESET | ||
1592 | ELX_READ_HBA ELX_INSTANCE ELX_LIP. Also introduced | ||
1593 | attribute "set" to be used in conjuction with the above | ||
1594 | attributes. | ||
1595 | * Removed DLINK, enque and deque declarations now that clock | ||
1596 | doesn't use them anymore | ||
1597 | * Separated install rule so that BUILD_IPFC has to be set when | ||
1598 | make is called in order for the install rule to attempt to | ||
1599 | copy the lpfndd.o driver. This change fixes a bug that | ||
1600 | occurs because the install rule by default attempted to | ||
1601 | install lpfndd.o, whereas the default make rule did not by | ||
1602 | default build lpfndd.o. | ||
1603 | * Keep track if hbaapi index numbers need to be refreshed. | ||
1604 | * Removed prod_os.h from include list. | ||
1605 | * Removed LPFC_LOCK and LPFC_UNLOCK macros. Added OS calls | ||
1606 | into elx_os_scsiport.c. This file is now empty. | ||
1607 | * Added spin_lock_irqsave and spin_unlock_irqrestore calls | ||
1608 | into code directly and removed LPFC_LOCK_ and _UNLOCK_ | ||
1609 | macros | ||
1610 | * Remove references to "elx_clock.h" | ||
1611 | * Added utsname.h to include list. The previous checkin to | ||
1612 | elx_os.h removed its inclusion of utsname.h since there is | ||
1613 | precious little in the file. However, lpfcLINUXfcp.c needs | ||
1614 | it and now has it. | ||
1615 | * Removed some commented-out code | ||
1616 | * Removed elx_lck_t data structure, stray elxDRVR_t type, and | ||
1617 | include from file. No longer used. | ||
1618 | * Removed two PCI Sync defines. Removed includes - not | ||
1619 | needed. Cleaned up macro lines. | ||
1620 | * Added two functions from elxLINUXfcp.c. These functions | ||
1621 | were IPFC specific. | ||
1622 | * Removed hipri lock abstractions and added OS call into code. | ||
1623 | Removed elx_lck_t and added spinlock_t directly. Moved two | ||
1624 | IPFC functions into lpfc_ipport.c | ||
1625 | * Moved IP specific structures to lpfc_ip.h file. | ||
1626 | * lpfc_ipfarp_timeout() uses system timer. Remove all usages | ||
1627 | of old internal clock support. | ||
1628 | * Made changes to compile without IPFC support for the default | ||
1629 | build. Added ifdef IPFC for all lpfc_ip.h includes. | ||
1630 | * Patched elx_free_scsi_buf | ||
1631 | * Removed elx_sched.o from 2.6 dependencies | ||
1632 | * Reworked lpfc_pcimap. | ||
1633 | * Use Linux swap macros to replace ELX swapping macros | ||
1634 | (SWAP_SHORT, SWAP_LONG, SWAP_DATA, SWAP_DATA16, | ||
1635 | PCIMEM_SHORT, PCIMEM_LONG, PCIMEM_DATA). | ||
1636 | * move in_interrupt() check inside of elx_sleep_ms() | ||
1637 | * Moved location of pci.h include. | ||
1638 | * Restored elx_lck_t types in elxHBA_t. | ||
1639 | * Removed elx_pci_dma_sync call. Also removed some PCI | ||
1640 | defines from elx_hw.h and removed the spinlock_t locks that | ||
1641 | are no longer used in elx.h | ||
1642 | * elx_iodone() now uses system timer. | ||
1643 | * elx_qfull_retry() now uses system timer. | ||
1644 | * lpfc_put_buf(), lpfc_ip_xri_timeout() and | ||
1645 | lpfc_ip_timeout_handler() now use system timer. | ||
1646 | * lpfc_fdmi_tmo() and lpfc_qthrottle_up() now use system | ||
1647 | timer. | ||
1648 | * Removed num_bufs and num_iocbs configuration parameters. | ||
1649 | * Fixed a memory corruption bug. This was caused by a memory | ||
1650 | write to ndlp structure from lpfc_cmpl_els_acc function. | ||
1651 | This ndlp structure was freed from lpfc_els_unsol_event. | ||
1652 | * lpfc_disc_timeout() and lpfc_establish_link_tmo() now use | ||
1653 | system timer. Also update lpfc_els_retry_delay() to do a | ||
1654 | single lock release at the end. | ||
1655 | * Remove use of PAN (pseudo adapter number). | ||
1656 | * Reintroduced usage of the cross compiler for building on | ||
1657 | ppc64 to remove build errors that were cropping up when | ||
1658 | using the standard gcc compiler. | ||
1659 | * Fix no-unlock-before return in lpfc_els_retry_delay which was | ||
1660 | causing a deadlock on insmod in some environments. | ||
1661 | * Minor format changes fix up comments | ||
1662 | * Create utility clock function elx_start_timer() and | ||
1663 | elx_stop_timer(). All timeout routines now use these common | ||
1664 | routines. | ||
1665 | * Minor formating changes fix up comments | ||
1666 | * Minor formatting changes get rid of failover defines for | ||
1667 | syntax checking | ||
1668 | * Minor formatting changes remove ISCSI defines. | ||
1669 | * Fix typo in install target for 2.4 kernels. | ||
1670 | * Removed unused elx_scsi_add_timer extern function | ||
1671 | declaration. | ||
1672 | * Cleanup casting around DMA masks. | ||
1673 | * Comment out lpfndd.o modules_install section as lpfndd.o is | ||
1674 | not generated if CONFIG_NET_LPFC is not set. Also refer to | ||
1675 | BASEINCLUDE only in out of kernel source module builds as it | ||
1676 | will not exist otherwise. | ||
1677 | * Removed unused malloc counters from lpfcLINUXfcp.c. | ||
1678 | * Remove some unnecessary #includes in lpfcLINUXfcp.c | ||
1679 | * Remove unncessary #includes in elxLINUXfcp.c | ||
1680 | * Minor formatting cleanups in Makefile to avoid some | ||
1681 | linewrapping. | ||
1682 | * Removed unused elx_mem_pool data structure. | ||
1683 | * Remove several unnecessary #includes. | ||
1684 | * Moving fix for memory leak in ioctl lip area to sysfs's lip. | ||
1685 | * Removed unused elx_dma_handle_t elx_acc_handle_t | ||
1686 | FC_MAX_SEGSZ and FC_MAX_POOL. | ||
1687 | * Rewrite of Makefile. Fixes breakages with make -j4 during | ||
1688 | kernel compile. Does not recompile all files on every | ||
1689 | build. Uses the kernel build's definitions of CFLAGS, | ||
1690 | MODFLAGS etc. Removed "make rpm" option. | ||
1691 | * Removed unused #defines CLOSED, DEAD, OPENED, NORMAL_OPEN | ||
1692 | and unneeded #include of elx_sched.h in elx.h. | ||
1693 | * Several log message updates | ||
1694 | * Add PCI_DEVICE_ID_FIREFLY for LP6000 | ||
1695 | * Fixed known issues in 20040326: driver crashes on rmmod in | ||
1696 | both 2.4 and 2.6 kernels | ||
1697 | |||
1698 | |||
1699 | Changes from 20040319 to 20040326 | ||
1700 | |||
1701 | * Updated ChangeLog for 20040326 SourceForge drop. | ||
1702 | * remove lpfc_isr / lpfc_tmr logic fixed up 8 spaces from | ||
1703 | previous checkins with tabs | ||
1704 | * replace elx_in_intr() with in_interrupt() | ||
1705 | * Remove unused messages 1602 and 1603. | ||
1706 | * Fix the following issues with log messages: Remove unused | ||
1707 | messages 406, 407, 409, 927, 928, 1201, 1202, 1204, 1205, 1206 | ||
1708 | and 1207. Create a new message 738 to fix duplicate instances | ||
1709 | of 736. | ||
1710 | * Removed remaining pci interface abstractions from elxLINUXfcp.c. | ||
1711 | Implemented OS calls directly in all remaining files and cleaned | ||
1712 | up modules. Removed prototypes as well. | ||
1713 | * Removed following functions/structures elx_mem_dmapool | ||
1714 | elx_idx_dmapool elx_size_dmapool elx_kmem_lock dfc_data_alloc | ||
1715 | dfc_data_free dfc_mem struct mbuf_info elx_acc_handle_t | ||
1716 | data_handle elx_dma_handle_t dma_handle struct elx_memseg | ||
1717 | MEMSEG_t | ||
1718 | * lpfc_els_timeout_handler() now uses system timer. | ||
1719 | * Further cleanup of #ifdef powerpc | ||
1720 | * lpfc_scsi_timeout_handler() now uses system timer. | ||
1721 | * Replace common driver's own defines for endianess w/ Linux's | ||
1722 | __BIG_ENDIAN etc. | ||
1723 | * Added #ifdef IPFC for all IPFC specific code. | ||
1724 | * lpfc_disc_retry_rptlun() now uses system timer. | ||
1725 | * lpfc_npr_timeout() now uses system timer. | ||
1726 | * Modified detect code, on insmod, to only wait a max of 2 secs if | ||
1727 | link comes up and there are no devices. | ||
1728 | * Move remaining message logging functions into | ||
1729 | elx_logmsg.c/elx_logmsg.h. | ||
1730 | * Added code to clear link attention bit when there is a pending | ||
1731 | link event and the memory allocation for read_la mail box | ||
1732 | command fails. | ||
1733 | * Removed function calls for mapping bar registers and allocating | ||
1734 | kernel virtual memory mappings to the mapped bars Removed | ||
1735 | prototypes, lpfc_driver_cache_line, and pci_bar1_map rename to | ||
1736 | pci_bar2_map. | ||
1737 | * Allocate mbox only if the hba_state is in ready state. | ||
1738 | * Complete lip support via sysfs. To lip, echo brdnum > | ||
1739 | /sys/bus/pci/drivers/lpfc/lip. | ||
1740 | * moving sysfs show/store implementations to lpfc_sysfs.c. Also add | ||
1741 | support for lip. | ||
1742 | * Add files: lpfc_sysfs.c, lpfc_sysfs.h | ||
1743 | * move LPFC_DRIVER_NAME and LPFC_MODULE_DESC out of lpfcLINUXfcp.c | ||
1744 | to lpfc_version.h, since it is now needed in lpfc_sysfs.c | ||
1745 | * elx_mbox_timeout now uses system timer | ||
1746 | * Changed lpfc_nodev_timeout, lpfc_els_retry_delay and | ||
1747 | lpfc_linkdown_timeout to use the system timer instead of | ||
1748 | internal clock support. | ||
1749 | * Move remaining message logging functions in elx_util.c to | ||
1750 | elx_logmsg.c. | ||
1751 | * Remove some unnecessary typecasting. | ||
1752 | * Remove log message that is no longer used (was used by | ||
1753 | elx_str_atox). | ||
1754 | * Replaced DLINK_t and SLINK_t by standard Linux list_head | ||
1755 | * Removed deque macro | ||
1756 | * Replaced ELX_DLINK_t ans ELX_SLINK_t by Linux struct list_head | ||
1757 | (except for clock) | ||
1758 | * Removed following functions from code: linux_kmalloc linux_kfree | ||
1759 | elx_alloc_bigbuf elx_free_bigbuf | ||
1760 | * Removed following abstract functions from the code. elx_malloc | ||
1761 | elx_free elx_ip_get_rcv_buf elx_ip_free_rcv_buf | ||
1762 | elx_mem_alloc_dmabuf elx_mem_alloc_dmabufext elx_mem_alloc_dma | ||
1763 | elx_mem_alloc_buf lpfc_bufmap | ||
1764 | * Removed custom PCI configuration #defines and replaced with | ||
1765 | OS-provided #defines. Also added linux/pci.h to *.c files. | ||
1766 | * Remove elx_str_ctox. Replace elx_str_atox with sscanf. | ||
1767 | * Many indentation/whitespace fixes. | ||
1768 | * Replace elx_str_ctox with isxdigit where it was only used to | ||
1769 | check the value of a character. | ||
1770 | * Removed following functions from the code. elx_kmem_free | ||
1771 | elx_kmem_alloc elx_kmem_zalloc | ||
1772 | * Change use of 2.4 SCSI typedef Scsi_Host_Template to struct | ||
1773 | scsi_host_template for 2.6 kernels. | ||
1774 | * Change use of 2.4 SCSI typedefs (Scsi_Device, Scsi_Cmnd, | ||
1775 | Scsi_Request) the their real struct names. | ||
1776 | * Move 2.6 compatibility irqreturn definitions to lpfc_compat.h. | ||
1777 | Protect these definitions from conflicting with similar ones in | ||
1778 | later 2.4 kernels. | ||
1779 | * Remove unused definitions: LINUX_TGT_t, LINUX_LUN_t, | ||
1780 | LINUX_BUF_t, elx_lun_t, SET_ADAPTER_STATUS. | ||
1781 | * Convert pci_ calls to linux 2.6 dma_ equivalents. | ||
1782 | * Removed unused types: struct buf, struct sc_buf, T_SCSIBUF | ||
1783 | typedef. | ||
1784 | * Fix Makefile so that 2.4 drivers don't always rebuild all files. | ||
1785 | * Remove unused _static_ and fc_lun_t definitions. | ||
1786 | * Cleaned up some memory pool implementation code. | ||
1787 | * Fix panic with char dev changes. Turns out that 2.6.4 code does | ||
1788 | the same in kernel space with the 2.4 interface style | ||
1789 | definitions. So remove the new char dev code altogether. | ||
1790 | * Remove typecasting from fc_get_cfg_param and consolidate | ||
1791 | multiple instances of the parameter switch into a single | ||
1792 | instance. | ||
1793 | * Use lpfc_is_LC_HBA() macro that tests pcidev->device directly | ||
1794 | instead of saving a private copy that undergoes varied shifting | ||
1795 | & casting. | ||
1796 | * Removed usage of all memory pools. | ||
1797 | |||
1798 | Changes from 20040312 to 20040319 | ||
1799 | |||
1800 | * Use dev_warn instead of printk for 2.6 kernels | ||
1801 | * Correct Iocbq completion routine for 2.6 kernel case | ||
1802 | * Change void *pOSCmd to Scsi_Smnd *pCmd | ||
1803 | * Change void *pOScmd to struct sk_buff *pCmd | ||
1804 | * Remove data directon code. | ||
1805 | * Removed memory pool for buf/bpl buffers and use kmalloc/kfree | ||
1806 | pci_pool_alloc/free directly. | ||
1807 | * Move PPC check for DMA address 0 in scatter-gather list, into | ||
1808 | lpfc_compat.h | ||
1809 | * Always use pci_unmap_single() instead of pci_unmap_page() | ||
1810 | * Clean up the 2.6 vs 2.4 #if blocks. | ||
1811 | * Conditionalize Scheduler | ||
1812 | * Add a comment to explain a little what the first Makefile | ||
1813 | section does. | ||
1814 | * Removed lpfc_intr_post | ||
1815 | * Sysfs new display format. Also added write functionality. You | ||
1816 | can [ echo "0 log_verbose 3" > | ||
1817 | /sys/bus/pci/drivers/lpfc/params]. Hex support yet to be added. | ||
1818 | * Removed several #ifdef powerpc, including for a discovery issue | ||
1819 | in lpfc_ValidLun() | ||
1820 | * Change elx_printf_log to use vsprintf. | ||
1821 | * Added lpfc_compat.h provides macros to aid compilation in the | ||
1822 | Linux 2.4 kernel over various platform architectures. Initially | ||
1823 | support mapping to a DMA address. | ||
1824 | * Removed memory pool for nlp/bind buffers and use kmalloc/kfree | ||
1825 | directly. | ||
1826 | * Removed memory pool for iocb buffers and use kmalloc/kfree | ||
1827 | directly. | ||
1828 | * Removed memory pool for mailbox buffers and use kmalloc/kfree | ||
1829 | directly. | ||
1830 | * Cleaned up back and forth casts | ||
1831 | * Initial support for sysfs for 2.6 kernel. | ||
1832 | * Changed elx_dma_addr_t to dma_addr_t | ||
1833 | * Fix a 2.6 kernel check to be >= 2.6.0 instead of > (was missing | ||
1834 | 2.6.0). | ||
1835 | * Remove elx_printf and elx_str_sprintf. Replace elx_print with | ||
1836 | printk. | ||
1837 | * Replace elx_printf with printk. | ||
1838 | * Replace elx_str_sprintf with sprintf. | ||
1839 | * Removed the mem_lock, its prototype, function, macro, and | ||
1840 | iflags. | ||
1841 | * Use kmalloc/kfree for ELX_SCSI_BUF_t | ||
1842 | * Use linux pci_pools for SCSI_DMA_EXT | ||
1843 | * Use linux pci_pools for BPLs. | ||
1844 | * Minor cleanup of DFC args for PPC64. | ||
1845 | * Several small indentation cleanups. | ||
1846 | * New Linux 2.6 style of char device registration. | ||
1847 | * Migrated members of LPFCHBA_t and LINUX_HBA_t into elxHBA_t | ||
1848 | * Use strcpy, strncmp, isdigit, strlen instead of abstractions | ||
1849 | * Cleanup of driver_template. | ||
1850 | * Facilitate compile time turn on/off of lpfc_network_on. | ||
1851 | * Split large source files into smaller, better named ones. | ||
1852 | |||
1853 | Changes from 2.10a to 20040312 | ||
1854 | |||
1855 | * Fix build for 2.4 kernels | ||
1856 | * Move driver version macros into lpfc_version.h file. | ||
1857 | * Fixed data miscompare with LIP. | ||
1858 | * Removed elx_sli, elx_ioc, elx_disc, elx_sch routines, | ||
1859 | prototypes, and reference points. | ||
1860 | * Correct the space insertions with hardtabs | ||
1861 | * Remove routine call pointers in ELX_SLI_INIT_t struct. | ||
1862 | * Removed module locks except for drvr, mem, and clock. | ||
1863 | * Removed unused module locks from sourcebase. Kept drvr_lock, | ||
1864 | mem_lock, and clock_lock. | ||
1865 | * Change NULL to 0 | ||
diff --git a/Documentation/scsi/lpfc.txt b/Documentation/scsi/lpfc.txt new file mode 100644 index 000000000000..4dbe41370a6d --- /dev/null +++ b/Documentation/scsi/lpfc.txt | |||
@@ -0,0 +1,83 @@ | |||
1 | |||
2 | LPFC Driver Release Notes: | ||
3 | |||
4 | ============================================================================= | ||
5 | |||
6 | |||
7 | IMPORTANT: | ||
8 | |||
9 | Starting in the 8.0.17 release, the driver began to be targeted strictly | ||
10 | toward the upstream kernel. As such, we removed #ifdefs for older kernels | ||
11 | (pre 2.6.10). The 8.0.16 release should be used if the driver is to be | ||
12 | run on one of the older kernels. | ||
13 | |||
14 | The proposed modifications to the transport layer for FC remote ports | ||
15 | and extended attribute support is now part of the upstream kernel | ||
16 | as of 2.6.12. We no longer need to provide patches for this support, | ||
17 | nor a *full* version which has old an new kernel support. | ||
18 | |||
19 | The driver now requires a 2.6.12 (if pre-release, 2.6.12-rc1) or later | ||
20 | kernel. | ||
21 | |||
22 | Please heed these dependencies.... | ||
23 | |||
24 | |||
25 | ******************************************************************** | ||
26 | |||
27 | |||
28 | The following information is provided for additional background on the | ||
29 | history of the driver as we push for upstream acceptance. | ||
30 | |||
31 | Cable pull and temporary device Loss: | ||
32 | |||
33 | In older revisions of the lpfc driver, the driver internally queued i/o | ||
34 | received from the midlayer. In the cases where a cable was pulled, link | ||
35 | jitter, or a device temporarily loses connectivity (due to its cable | ||
36 | being removed, a switch rebooting, or a device reboot), the driver could | ||
37 | hide the disappearance of the device from the midlayer. I/O's issued to | ||
38 | the LLDD would simply be queued for a short duration, allowing the device | ||
39 | to reappear or link come back alive, with no inadvertant side effects | ||
40 | to the system. If the driver did not hide these conditions, i/o would be | ||
41 | errored by the driver, the mid-layer would exhaust its retries, and the | ||
42 | device would be taken offline. Manual intervention would be required to | ||
43 | re-enable the device. | ||
44 | |||
45 | The community supporting kernel.org has driven an effort to remove | ||
46 | internal queuing from all LLDDs. The philosophy is that internal | ||
47 | queuing is unnecessary as the block layer already performs the | ||
48 | queuing. Removing the queues from the LLDD makes a more predictable | ||
49 | and more simple LLDD. | ||
50 | |||
51 | As a potential new addition to kernel.org, the 8.x driver was asked to | ||
52 | have all internal queuing removed. Emulex complied with this request. | ||
53 | In explaining the impacts of this change, Emulex has worked with the | ||
54 | community in modifying the behavior of the SCSI midlayer so that SCSI | ||
55 | devices can be temporarily suspended while transport events (such as | ||
56 | those described) can occur. | ||
57 | |||
58 | The proposed patch was posted to the linux-scsi mailing list. The patch | ||
59 | is contained in the 2.6.10-rc2 (and later) patch kits. As such, this | ||
60 | patch is part of the standard 2.6.10 kernel. | ||
61 | |||
62 | By default, the driver expects the patches for block/unblock interfaces | ||
63 | to be present in the kernel. No #define needs to be set to enable support. | ||
64 | |||
65 | |||
66 | Kernel Support | ||
67 | |||
68 | This source package is targeted for the upstream kernel only. (See notes | ||
69 | at the top of this file). It relies on interfaces that are slowing | ||
70 | migrating into the kernel.org kernel. | ||
71 | |||
72 | At this time, the driver requires the 2.6.12 (if pre-release, 2.6.12-rc1) | ||
73 | kernel. | ||
74 | |||
75 | If a driver is needed for older kernels please utilize the 8.0.16 | ||
76 | driver sources. | ||
77 | |||
78 | |||
79 | Patches | ||
80 | |||
81 | Thankfully, at this time, patches are not needed. | ||
82 | |||
83 | |||