• Julian Wiedmann's avatar
    scsi: zfcp: Lift Request Queue tasklet & timer from qdio · b3f0a1ee
    Julian Wiedmann authored
    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.comReviewed-by: default avatarBenjamin Block <bblock@linux.ibm.com>
    Signed-off-by: default avatarJulian Wiedmann <jwi@linux.ibm.com>
    Signed-off-by: default avatarBenjamin Block <bblock@linux.ibm.com>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    b3f0a1ee
zfcp_qdio.c 16.2 KB