Beispiel #1
0
static int __srp_transfer_data(struct scsi_cmnd *scmd, struct srp_cmd *cmd,
			       enum dma_data_direction dir, rdma_io_t rdma_io)
{
	struct srp_direct_buf *md;
	struct srp_indirect_buf *id;
	int offset, err = 0;
	u8 format;

	offset = cmd->add_cdb_len * 4;
	if (dir == DMA_FROM_DEVICE)
		offset += data_out_desc_size(cmd);

	if (dir == DMA_TO_DEVICE)
		format = cmd->buf_fmt >> 4;
	else
Beispiel #2
0
/*
 * TODO: this can be called multiple times for a single command if it
 * has very long data.
 */
int srp_transfer_data(struct scsi_cmnd *sc, struct srp_cmd *cmd,
                      srp_rdma_t rdma_io, int dma_map, int ext_desc)
{
    struct srp_direct_buf *md;
    struct srp_indirect_buf *id;
    enum dma_data_direction dir;
    int offset, err = 0;
    u8 format;

    offset = cmd->add_cdb_len * 4;

    dir = srp_cmd_direction(cmd);
    if (dir == DMA_FROM_DEVICE)
        offset += data_out_desc_size(cmd);

    if (dir == DMA_TO_DEVICE)
        format = cmd->buf_fmt >> 4;
    else