• Dan Williams's avatar
    [SCSI] isci: atapi support · b50102d3
    Dan Williams authored
    Based on original implementation from Jiangbi Liu and Maciej Trela.
    
    ATAPI transfers happen in two-to-three stages.  The two stage atapi
    commands are those that include a dma data transfer.  The data transfer
    portion of these operations is handled by the hardware packet-dma
    acceleration.  The three-stage commands do not have a data transfer and
    are handled without hardware assistance in raw frame mode.
    
    stage1: transmit host-to-device fis to notify the device of an incoming
    atapi cdb.  Upon reception of the pio-setup-fis repost the task_context
    to perform the dma transfer of the cdb+data (go to stage3), or repost
    the task_context to transmit the cdb as a raw frame (go to stage 2).
    
    stage2: wait for hardware notification of the cdb transmission and then
    go to stage 3.
    
    stage3: wait for the arrival of the terminating device-to-host fis and
    terminate the command.
    
    To keep the implementation simple we only support ATAPI packet-dma
    protocol (for commands with data) to avoid needing to handle the data
    transfer manually (like we do for SATA-PIO).  This may affect
    compatibility for a small number of devices (see
    ATA_HORKAGE_ATAPI_MOD16_DMA).
    
    If the data-transfer underruns, or encounters an error the
    device-to-host fis is expected to arrive in the unsolicited frame queue
    to pass to libata for disposition.  However, in the DONE_UNEXP_FIS (data
    underrun) case it appears we need to craft a response.  In the
    DONE_REG_ERR case we do receive the UF and propagate it to libsas.
    Signed-off-by: default avatarMaciej Trela <maciej.trela@intel.com>
    Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
    Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
    b50102d3
Name
Last commit
Last update
..
aacraid Loading commit data...
aic7xxx Loading commit data...
aic7xxx_old Loading commit data...
aic94xx Loading commit data...
arcmsr Loading commit data...
arm Loading commit data...
be2iscsi Loading commit data...
bfa Loading commit data...
bnx2fc Loading commit data...
bnx2i Loading commit data...
cxgbi Loading commit data...
device_handler Loading commit data...
dpt Loading commit data...
fcoe Loading commit data...
fnic Loading commit data...
ibmvscsi Loading commit data...
isci Loading commit data...
libfc Loading commit data...
libsas Loading commit data...
lpfc Loading commit data...
megaraid Loading commit data...
mpt2sas Loading commit data...
mvsas Loading commit data...
osd Loading commit data...
pcmcia Loading commit data...
pm8001 Loading commit data...
qla2xxx Loading commit data...
qla4xxx Loading commit data...
sym53c8xx_2 Loading commit data...
.gitignore Loading commit data...
3w-9xxx.c Loading commit data...
3w-9xxx.h Loading commit data...
3w-sas.c Loading commit data...
3w-sas.h Loading commit data...
3w-xxxx.c Loading commit data...
3w-xxxx.h Loading commit data...
53c700.c Loading commit data...
53c700.h Loading commit data...
53c700.scr Loading commit data...
53c700_d.h_shipped Loading commit data...
BusLogic.c Loading commit data...
BusLogic.h Loading commit data...
FlashPoint.c Loading commit data...
Kconfig Loading commit data...
Makefile Loading commit data...
NCR5380.c Loading commit data...
NCR5380.h Loading commit data...
NCR53c406a.c Loading commit data...
NCR_D700.c Loading commit data...
NCR_D700.h Loading commit data...
NCR_Q720.c Loading commit data...
NCR_Q720.h Loading commit data...
a100u2w.c Loading commit data...
a100u2w.h Loading commit data...
a2091.c Loading commit data...
a2091.h Loading commit data...
a3000.c Loading commit data...
a3000.h Loading commit data...
a4000t.c Loading commit data...
advansys.c Loading commit data...
aha152x.c Loading commit data...
aha152x.h Loading commit data...
aha1542.c Loading commit data...
aha1542.h Loading commit data...
aha1740.c Loading commit data...
aha1740.h Loading commit data...
aic7xxx_old.c Loading commit data...
atari_NCR5380.c Loading commit data...
atari_scsi.c Loading commit data...
atari_scsi.h Loading commit data...
atp870u.c Loading commit data...
atp870u.h Loading commit data...
bvme6000_scsi.c Loading commit data...
ch.c Loading commit data...
constants.c Loading commit data...
dc395x.c Loading commit data...
dc395x.h Loading commit data...
dmx3191d.c Loading commit data...
dpt_i2o.c Loading commit data...
dpti.h Loading commit data...
dtc.c Loading commit data...
dtc.h Loading commit data...
eata.c Loading commit data...
eata_generic.h Loading commit data...
eata_pio.c Loading commit data...
eata_pio.h Loading commit data...
esp_scsi.c Loading commit data...
esp_scsi.h Loading commit data...
fd_mcs.c Loading commit data...
fdomain.c Loading commit data...
fdomain.h Loading commit data...
g_NCR5380.c Loading commit data...
g_NCR5380.h Loading commit data...
g_NCR5380_mmio.c Loading commit data...
gdth.c Loading commit data...
gdth.h Loading commit data...
gdth_ioctl.h Loading commit data...
gdth_proc.c Loading commit data...
gdth_proc.h Loading commit data...
gvp11.c Loading commit data...
gvp11.h Loading commit data...
hosts.c Loading commit data...
hpsa.c Loading commit data...
hpsa.h Loading commit data...
hpsa_cmd.h Loading commit data...
hptiop.c Loading commit data...
hptiop.h Loading commit data...
ibmmca.c Loading commit data...
imm.c Loading commit data...
imm.h Loading commit data...
in2000.c Loading commit data...
in2000.h Loading commit data...
initio.c Loading commit data...
initio.h Loading commit data...
ipr.c Loading commit data...
ipr.h Loading commit data...
ips.c Loading commit data...
ips.h Loading commit data...
iscsi_boot_sysfs.c Loading commit data...
iscsi_tcp.c Loading commit data...
iscsi_tcp.h Loading commit data...
jazz_esp.c Loading commit data...
lasi700.c Loading commit data...
libiscsi.c Loading commit data...
libiscsi_tcp.c Loading commit data...
libsrp.c Loading commit data...
mac53c94.c Loading commit data...
mac53c94.h Loading commit data...
mac_esp.c Loading commit data...
mac_scsi.c Loading commit data...
mac_scsi.h Loading commit data...
megaraid.c Loading commit data...
megaraid.h Loading commit data...
mesh.c Loading commit data...
mesh.h Loading commit data...
mvme147.c Loading commit data...
mvme147.h Loading commit data...
mvme16x_scsi.c Loading commit data...
mvumi.c Loading commit data...
mvumi.h Loading commit data...
ncr53c8xx.c Loading commit data...
ncr53c8xx.h Loading commit data...
nsp32.c Loading commit data...
nsp32.h Loading commit data...
nsp32_debug.c Loading commit data...
nsp32_io.h Loading commit data...
osst.c Loading commit data...
osst.h Loading commit data...
osst_detect.h Loading commit data...
osst_options.h Loading commit data...
pas16.c Loading commit data...
pas16.h Loading commit data...
pmcraid.c Loading commit data...
pmcraid.h Loading commit data...
ppa.c Loading commit data...
ppa.h Loading commit data...
ps3rom.c Loading commit data...
qla1280.c Loading commit data...
qla1280.h Loading commit data...
qlogicfas.c Loading commit data...
qlogicfas408.c Loading commit data...
qlogicfas408.h Loading commit data...
qlogicpti.c Loading commit data...
qlogicpti.h Loading commit data...
raid_class.c Loading commit data...
script_asm.pl Loading commit data...
scsi.c Loading commit data...
scsi.h Loading commit data...
scsi_debug.c Loading commit data...
scsi_devinfo.c Loading commit data...
scsi_error.c Loading commit data...
scsi_ioctl.c Loading commit data...
scsi_lib.c Loading commit data...
scsi_lib_dma.c Loading commit data...
scsi_logging.h Loading commit data...
scsi_module.c Loading commit data...
scsi_netlink.c Loading commit data...
scsi_pm.c Loading commit data...
scsi_priv.h Loading commit data...
scsi_proc.c Loading commit data...
scsi_sas_internal.h Loading commit data...
scsi_scan.c Loading commit data...
scsi_sysctl.c Loading commit data...
scsi_sysfs.c Loading commit data...
scsi_tgt_if.c Loading commit data...
scsi_tgt_lib.c Loading commit data...
scsi_tgt_priv.h Loading commit data...
scsi_trace.c Loading commit data...
scsi_transport_api.h Loading commit data...
scsi_transport_fc.c Loading commit data...
scsi_transport_fc_internal.h Loading commit data...
scsi_transport_iscsi.c Loading commit data...
scsi_transport_sas.c Loading commit data...
scsi_transport_spi.c Loading commit data...
scsi_transport_srp.c Loading commit data...
scsi_transport_srp_internal.h Loading commit data...
scsi_typedefs.h Loading commit data...
scsi_wait_scan.c Loading commit data...
scsicam.c Loading commit data...
sd.c Loading commit data...
sd.h Loading commit data...
sd_dif.c Loading commit data...
ses.c Loading commit data...
sg.c Loading commit data...
sgiwd93.c Loading commit data...
sim710.c Loading commit data...
sni_53c710.c Loading commit data...
sr.c Loading commit data...
sr.h Loading commit data...
sr_ioctl.c Loading commit data...
sr_vendor.c Loading commit data...
st.c Loading commit data...
st.h Loading commit data...
st_options.h Loading commit data...
stex.c Loading commit data...
sun3_NCR5380.c Loading commit data...
sun3_scsi.c Loading commit data...
sun3_scsi.h Loading commit data...
sun3_scsi_vme.c Loading commit data...
sun3x_esp.c Loading commit data...
sun_esp.c Loading commit data...
sym53c416.c Loading commit data...
sym53c416.h Loading commit data...
t128.c Loading commit data...
t128.h Loading commit data...
tmscsim.c Loading commit data...
tmscsim.h Loading commit data...
u14-34f.c Loading commit data...
ultrastor.c Loading commit data...
ultrastor.h Loading commit data...
vmw_pvscsi.c Loading commit data...
vmw_pvscsi.h Loading commit data...
wd33c93.c Loading commit data...
wd33c93.h Loading commit data...
wd7000.c Loading commit data...
zalon.c Loading commit data...
zorro7xx.c Loading commit data...