A target driver may reuse packets in the following ways:
Resubmit the packet unchanged
Use scsi_sync_pkt(9F) to synchronize the data, then process the data in the driver and resubmit.
Free DMA resources, using scsi_dmafree(9F), and pass the pkt pointer to scsi_init_pkt(9F) for binding to a new bp. The target driver is responsible for reinitializing the packet. The CDB has to have the same length as the previous CDB.
If partial DMA was allocated during the first call to scsi_init_pkt(9F), subsequent calls to scsi_init_pkt(9F) may be made for the same packet and bp to adjust the DMA resources to the next portion of the transfer.