linux/drivers/s390/scsi
Julian Wiedmann b3f0a1ee9e scsi: zfcp: Lift Request Queue tasklet & timer from qdio
The qdio layer currently provides its own infrastructure to scan for
Request Queue completions & to report them to the device driver.  This
comes with several drawbacks - having an async tasklet & timer construct in
qdio introduces additional lifetime complexity, and makes it harder to
integrate them with the rest of the device driver. The timeouts are also
currently hard-coded, and can't be tweaked without affecting other qdio
drivers (ie. qeth).

But due to recent enhancements to the qdio layer, zfcp can actually take
full control of the Request Queue completion processing. It merely needs to
opt-out from the qdio layer mechanisms by setting the scan_threshold to 0,
and then use qdio_inspect_queue() to scan for completions.

So re-implement the tasklet & timer mechanism in zfcp, while initially
copying the scan conditions from qdio's handle_outbound() and
qdio_outbound_tasklet(). One minor behavioural change is that
zfcp_qdio_send() will unconditionally reduce the timeout to 1 HZ, rather
than leaving it at 10 Hz if it was last armed by the tasklet. This just
makes things more consistent. Also note that we can drop a lot of the
accumulated cruft in qdio_outbound_tasklet(), as zfcp doesn't even use PCI
interrupt requests any longer.

This also slightly touches the Response Queue processing, as
qdio_get_next_buffers() will no longer implicitly scan for Request Queue
completions. So complete the migration to qdio_inspect_queue() here as well
and make the tasklet_schedule() visible.

Link: https://lore.kernel.org/r/018d3ddd029f8d6ac00cf4184880288c637c4fd1.1618417667.git.bblock@linux.ibm.com
Reviewed-by: Benjamin Block <bblock@linux.ibm.com>
Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
Signed-off-by: Benjamin Block <bblock@linux.ibm.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2021-04-15 22:19:40 -04:00
..
Makefile scsi: zfcp: diagnostics buffer caching and use for exchange port data 2019-10-28 22:16:14 -04:00
zfcp_aux.c scsi: zfcp: Clean up sysfs code for SFP diagnostics 2021-04-15 22:19:40 -04:00
zfcp_ccw.c s390/zfcp: remove pm support from zfcp driver 2020-12-02 18:19:23 +01:00
zfcp_dbf.c s390/zfcp: remove pm support from zfcp driver 2020-12-02 18:19:23 +01:00
zfcp_dbf.h scsi: zfcp: trace FC Endpoint Security of FCP devices and connections 2020-03-17 13:12:40 -04:00
zfcp_def.h scsi: zfcp: Fix indentation coding style issue 2021-04-15 22:19:39 -04:00
zfcp_diag.c scsi: zfcp: Clean up sysfs code for SFP diagnostics 2021-04-15 22:19:40 -04:00
zfcp_diag.h scsi: zfcp: Clean up sysfs code for SFP diagnostics 2021-04-15 22:19:40 -04:00
zfcp_erp.c scsi: zfcp: Use list_first_entry_or_null() in zfcp_erp_thread() 2020-09-15 18:01:57 -04:00
zfcp_ext.h scsi: zfcp: Clean up sysfs code for SFP diagnostics 2021-04-15 22:19:40 -04:00
zfcp_fc.c scsi: zfcp: Use prandom_u32_max() for backoff 2020-07-08 00:50:52 -04:00
zfcp_fc.h scsi: zfcp: Do not set COMMAND_COMPLETE 2021-01-22 21:14:09 -05:00
zfcp_fsf.c scsi: zfcp: Remove unneeded INIT_LIST_HEAD() for FSF requests 2021-04-15 22:19:39 -04:00
zfcp_fsf.h scsi: zfcp: Handle event-lost notification for Version Change events 2020-10-29 22:17:01 -04:00
zfcp_qdio.c scsi: zfcp: Lift Request Queue tasklet & timer from qdio 2021-04-15 22:19:40 -04:00
zfcp_qdio.h scsi: zfcp: Lift Request Queue tasklet & timer from qdio 2021-04-15 22:19:40 -04:00
zfcp_reqlist.h scsi: zfcp: silence remaining kdoc warnings in header files 2018-11-15 15:01:18 -05:00
zfcp_scsi.c scsi: zfcp: Move allocation of the shost object to after xconf- and xport-data 2020-05-11 23:19:52 -04:00
zfcp_sysfs.c scsi: zfcp: Move the position of put_device() 2021-04-15 22:19:40 -04:00
zfcp_unit.c scsi: zfcp: Move the position of put_device() 2021-04-15 22:19:40 -04:00