Commit d4556a49 authored by Bart Van Assche's avatar Bart Van Assche Committed by Martin K. Petersen

scsi: qla2xxx: Use __le64 instead of uint32_t[2] for sending DMA addresses to firmware

This patch makes the code easier to read and more compact.

Cc: Himanshu Madhani <hmadhani@marvell.com>
Cc: Giridhar Malavali <gmalavali@marvell.com>
Signed-off-by: default avatarBart Van Assche <bvanassche@acm.org>
Acked-by: default avatarHimanshu Madhani <hmadhani@marvell.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent 15b7a68c
...@@ -1329,8 +1329,8 @@ typedef struct { ...@@ -1329,8 +1329,8 @@ typedef struct {
uint16_t response_q_inpointer; uint16_t response_q_inpointer;
uint16_t request_q_length; uint16_t request_q_length;
uint16_t response_q_length; uint16_t response_q_length;
uint32_t request_q_address[2]; __le64 request_q_address __packed;
uint32_t response_q_address[2]; __le64 response_q_address __packed;
uint16_t lun_enables; uint16_t lun_enables;
uint8_t command_resource_count; uint8_t command_resource_count;
...@@ -3031,7 +3031,7 @@ struct sns_cmd_pkt { ...@@ -3031,7 +3031,7 @@ struct sns_cmd_pkt {
struct { struct {
uint16_t buffer_length; uint16_t buffer_length;
uint16_t reserved_1; uint16_t reserved_1;
uint32_t buffer_address[2]; __le64 buffer_address __packed;
uint16_t subcommand_length; uint16_t subcommand_length;
uint16_t reserved_2; uint16_t reserved_2;
uint16_t subcommand; uint16_t subcommand;
......
...@@ -341,9 +341,9 @@ struct init_cb_24xx { ...@@ -341,9 +341,9 @@ struct init_cb_24xx {
uint16_t prio_request_q_length; uint16_t prio_request_q_length;
uint32_t request_q_address[2]; __le64 request_q_address __packed;
uint32_t response_q_address[2]; __le64 response_q_address __packed;
uint32_t prio_request_q_address[2]; __le64 prio_request_q_address __packed;
uint16_t msix; uint16_t msix;
uint16_t msix_atio; uint16_t msix_atio;
...@@ -351,7 +351,7 @@ struct init_cb_24xx { ...@@ -351,7 +351,7 @@ struct init_cb_24xx {
uint16_t atio_q_inpointer; uint16_t atio_q_inpointer;
uint16_t atio_q_length; uint16_t atio_q_length;
uint32_t atio_q_address[2]; __le64 atio_q_address __packed;
uint16_t interrupt_delay_timer; /* 100us increments. */ uint16_t interrupt_delay_timer; /* 100us increments. */
uint16_t login_timeout; uint16_t login_timeout;
...@@ -455,7 +455,7 @@ struct cmd_bidir { ...@@ -455,7 +455,7 @@ struct cmd_bidir {
#define BD_WRITE_DATA BIT_0 #define BD_WRITE_DATA BIT_0
uint16_t fcp_cmnd_dseg_len; /* Data segment length. */ uint16_t fcp_cmnd_dseg_len; /* Data segment length. */
uint32_t fcp_cmnd_dseg_address[2]; /* Data segment address. */ __le64 fcp_cmnd_dseg_address __packed;/* Data segment address. */
uint16_t reserved[2]; /* Reserved */ uint16_t reserved[2]; /* Reserved */
...@@ -492,10 +492,11 @@ struct cmd_type_6 { ...@@ -492,10 +492,11 @@ struct cmd_type_6 {
#define CF_READ_DATA BIT_1 #define CF_READ_DATA BIT_1
#define CF_WRITE_DATA BIT_0 #define CF_WRITE_DATA BIT_0
uint16_t fcp_cmnd_dseg_len; /* Data segment length. */ uint16_t fcp_cmnd_dseg_len; /* Data segment length. */
uint32_t fcp_cmnd_dseg_address[2]; /* Data segment address. */ /* Data segment address. */
__le64 fcp_cmnd_dseg_address __packed;
uint32_t fcp_rsp_dseg_address[2]; /* Data segment address. */ /* Data segment address. */
__le64 fcp_rsp_dseg_address __packed;
uint32_t byte_count; /* Total byte count. */ uint32_t byte_count; /* Total byte count. */
...@@ -572,17 +573,17 @@ struct cmd_type_crc_2 { ...@@ -572,17 +573,17 @@ struct cmd_type_crc_2 {
uint16_t control_flags; /* Control flags. */ uint16_t control_flags; /* Control flags. */
uint16_t fcp_cmnd_dseg_len; /* Data segment length. */ uint16_t fcp_cmnd_dseg_len; /* Data segment length. */
uint32_t fcp_cmnd_dseg_address[2]; /* Data segment address. */ __le64 fcp_cmnd_dseg_address __packed;
/* Data segment address. */
uint32_t fcp_rsp_dseg_address[2]; /* Data segment address. */ __le64 fcp_rsp_dseg_address __packed;
uint32_t byte_count; /* Total byte count. */ uint32_t byte_count; /* Total byte count. */
uint8_t port_id[3]; /* PortID of destination port. */ uint8_t port_id[3]; /* PortID of destination port. */
uint8_t vp_index; uint8_t vp_index;
uint32_t crc_context_address[2]; /* Data segment address. */ __le64 crc_context_address __packed; /* Data segment address. */
uint16_t crc_context_len; /* Data segment length. */ uint16_t crc_context_len; /* Data segment length. */
uint16_t reserved_1; /* MUST be set to 0. */ uint16_t reserved_1; /* MUST be set to 0. */
}; };
...@@ -763,9 +764,9 @@ struct els_entry_24xx { ...@@ -763,9 +764,9 @@ struct els_entry_24xx {
uint32_t rx_byte_count; uint32_t rx_byte_count;
uint32_t tx_byte_count; uint32_t tx_byte_count;
uint32_t tx_address[2]; /* Data segment 0 address. */ __le64 tx_address __packed; /* Data segment 0 address. */
uint32_t tx_len; /* Data segment 0 length. */ uint32_t tx_len; /* Data segment 0 length. */
uint32_t rx_address[2]; /* Data segment 1 address. */ __le64 rx_address __packed; /* Data segment 1 address. */
uint32_t rx_len; /* Data segment 1 length. */ uint32_t rx_len; /* Data segment 1 length. */
}; };
...@@ -1418,9 +1419,9 @@ struct vf_evfp_entry_24xx { ...@@ -1418,9 +1419,9 @@ struct vf_evfp_entry_24xx {
uint16_t control_flags; uint16_t control_flags;
uint32_t io_parameter_0; uint32_t io_parameter_0;
uint32_t io_parameter_1; uint32_t io_parameter_1;
uint32_t tx_address[2]; /* Data segment 0 address. */ __le64 tx_address __packed; /* Data segment 0 address. */
uint32_t tx_len; /* Data segment 0 length. */ uint32_t tx_len; /* Data segment 0 length. */
uint32_t rx_address[2]; /* Data segment 1 address. */ __le64 rx_address __packed; /* Data segment 1 address. */
uint32_t rx_len; /* Data segment 1 length. */ uint32_t rx_len; /* Data segment 1 length. */
}; };
...@@ -1927,15 +1928,15 @@ struct init_cb_81xx { ...@@ -1927,15 +1928,15 @@ struct init_cb_81xx {
uint16_t prio_request_q_length; uint16_t prio_request_q_length;
uint32_t request_q_address[2]; __le64 request_q_address __packed;
uint32_t response_q_address[2]; __le64 response_q_address __packed;
uint32_t prio_request_q_address[2]; __le64 prio_request_q_address __packed;
uint8_t reserved_4[8]; uint8_t reserved_4[8];
uint16_t atio_q_inpointer; uint16_t atio_q_inpointer;
uint16_t atio_q_length; uint16_t atio_q_length;
uint32_t atio_q_address[2]; __le64 atio_q_address __packed;
uint16_t interrupt_delay_timer; /* 100us increments. */ uint16_t interrupt_delay_timer; /* 100us increments. */
uint16_t login_timeout; uint16_t login_timeout;
......
...@@ -996,8 +996,7 @@ qla2x00_prep_sns_cmd(scsi_qla_host_t *vha, uint16_t cmd, uint16_t scmd_len, ...@@ -996,8 +996,7 @@ qla2x00_prep_sns_cmd(scsi_qla_host_t *vha, uint16_t cmd, uint16_t scmd_len,
memset(sns_cmd, 0, sizeof(struct sns_cmd_pkt)); memset(sns_cmd, 0, sizeof(struct sns_cmd_pkt));
wc = data_size / 2; /* Size in 16bit words. */ wc = data_size / 2; /* Size in 16bit words. */
sns_cmd->p.cmd.buffer_length = cpu_to_le16(wc); sns_cmd->p.cmd.buffer_length = cpu_to_le16(wc);
sns_cmd->p.cmd.buffer_address[0] = cpu_to_le32(LSD(ha->sns_cmd_dma)); put_unaligned_le64(ha->sns_cmd_dma, &sns_cmd->p.cmd.buffer_address);
sns_cmd->p.cmd.buffer_address[1] = cpu_to_le32(MSD(ha->sns_cmd_dma));
sns_cmd->p.cmd.subcommand_length = cpu_to_le16(scmd_len); sns_cmd->p.cmd.subcommand_length = cpu_to_le16(scmd_len);
sns_cmd->p.cmd.subcommand = cpu_to_le16(cmd); sns_cmd->p.cmd.subcommand = cpu_to_le16(cmd);
wc = (data_size - 16) / 4; /* Size in 32bit words. */ wc = (data_size - 16) / 4; /* Size in 32bit words. */
......
...@@ -3941,10 +3941,8 @@ qla2x00_config_rings(struct scsi_qla_host *vha) ...@@ -3941,10 +3941,8 @@ qla2x00_config_rings(struct scsi_qla_host *vha)
ha->init_cb->response_q_inpointer = cpu_to_le16(0); ha->init_cb->response_q_inpointer = cpu_to_le16(0);
ha->init_cb->request_q_length = cpu_to_le16(req->length); ha->init_cb->request_q_length = cpu_to_le16(req->length);
ha->init_cb->response_q_length = cpu_to_le16(rsp->length); ha->init_cb->response_q_length = cpu_to_le16(rsp->length);
ha->init_cb->request_q_address[0] = cpu_to_le32(LSD(req->dma)); put_unaligned_le64(req->dma, &ha->init_cb->request_q_address);
ha->init_cb->request_q_address[1] = cpu_to_le32(MSD(req->dma)); put_unaligned_le64(rsp->dma, &ha->init_cb->response_q_address);
ha->init_cb->response_q_address[0] = cpu_to_le32(LSD(rsp->dma));
ha->init_cb->response_q_address[1] = cpu_to_le32(MSD(rsp->dma));
WRT_REG_WORD(ISP_REQ_Q_IN(ha, reg), 0); WRT_REG_WORD(ISP_REQ_Q_IN(ha, reg), 0);
WRT_REG_WORD(ISP_REQ_Q_OUT(ha, reg), 0); WRT_REG_WORD(ISP_REQ_Q_OUT(ha, reg), 0);
...@@ -3971,16 +3969,13 @@ qla24xx_config_rings(struct scsi_qla_host *vha) ...@@ -3971,16 +3969,13 @@ qla24xx_config_rings(struct scsi_qla_host *vha)
icb->response_q_inpointer = cpu_to_le16(0); icb->response_q_inpointer = cpu_to_le16(0);
icb->request_q_length = cpu_to_le16(req->length); icb->request_q_length = cpu_to_le16(req->length);
icb->response_q_length = cpu_to_le16(rsp->length); icb->response_q_length = cpu_to_le16(rsp->length);
icb->request_q_address[0] = cpu_to_le32(LSD(req->dma)); put_unaligned_le64(req->dma, &icb->request_q_address);
icb->request_q_address[1] = cpu_to_le32(MSD(req->dma)); put_unaligned_le64(rsp->dma, &icb->response_q_address);
icb->response_q_address[0] = cpu_to_le32(LSD(rsp->dma));
icb->response_q_address[1] = cpu_to_le32(MSD(rsp->dma));
/* Setup ATIO queue dma pointers for target mode */ /* Setup ATIO queue dma pointers for target mode */
icb->atio_q_inpointer = cpu_to_le16(0); icb->atio_q_inpointer = cpu_to_le16(0);
icb->atio_q_length = cpu_to_le16(ha->tgt.atio_q_length); icb->atio_q_length = cpu_to_le16(ha->tgt.atio_q_length);
icb->atio_q_address[0] = cpu_to_le32(LSD(ha->tgt.atio_dma)); put_unaligned_le64(ha->tgt.atio_dma, &icb->atio_q_address);
icb->atio_q_address[1] = cpu_to_le32(MSD(ha->tgt.atio_dma));
if (IS_SHADOW_REG_CAPABLE(ha)) if (IS_SHADOW_REG_CAPABLE(ha))
icb->firmware_options_2 |= cpu_to_le32(BIT_30|BIT_29); icb->firmware_options_2 |= cpu_to_le32(BIT_30|BIT_29);
......
...@@ -1445,8 +1445,7 @@ qla24xx_build_scsi_crc_2_iocbs(srb_t *sp, struct cmd_type_crc_2 *cmd_pkt, ...@@ -1445,8 +1445,7 @@ qla24xx_build_scsi_crc_2_iocbs(srb_t *sp, struct cmd_type_crc_2 *cmd_pkt,
qla24xx_set_t10dif_tags(sp, (struct fw_dif_context *) qla24xx_set_t10dif_tags(sp, (struct fw_dif_context *)
&crc_ctx_pkt->ref_tag, tot_prot_dsds); &crc_ctx_pkt->ref_tag, tot_prot_dsds);
cmd_pkt->crc_context_address[0] = cpu_to_le32(LSD(crc_ctx_dma)); put_unaligned_le64(crc_ctx_dma, &cmd_pkt->crc_context_address);
cmd_pkt->crc_context_address[1] = cpu_to_le32(MSD(crc_ctx_dma));
cmd_pkt->crc_context_len = CRC_CONTEXT_LEN_FW; cmd_pkt->crc_context_len = CRC_CONTEXT_LEN_FW;
/* Determine SCSI command length -- align to 4 byte boundary */ /* Determine SCSI command length -- align to 4 byte boundary */
...@@ -1473,10 +1472,8 @@ qla24xx_build_scsi_crc_2_iocbs(srb_t *sp, struct cmd_type_crc_2 *cmd_pkt, ...@@ -1473,10 +1472,8 @@ qla24xx_build_scsi_crc_2_iocbs(srb_t *sp, struct cmd_type_crc_2 *cmd_pkt,
int_to_scsilun(cmd->device->lun, &fcp_cmnd->lun); int_to_scsilun(cmd->device->lun, &fcp_cmnd->lun);
memcpy(fcp_cmnd->cdb, cmd->cmnd, cmd->cmd_len); memcpy(fcp_cmnd->cdb, cmd->cmnd, cmd->cmd_len);
cmd_pkt->fcp_cmnd_dseg_len = cpu_to_le16(fcp_cmnd_len); cmd_pkt->fcp_cmnd_dseg_len = cpu_to_le16(fcp_cmnd_len);
cmd_pkt->fcp_cmnd_dseg_address[0] = cpu_to_le32( put_unaligned_le64(crc_ctx_dma + CRC_CONTEXT_FCPCMND_OFF,
LSD(crc_ctx_dma + CRC_CONTEXT_FCPCMND_OFF)); &cmd_pkt->fcp_cmnd_dseg_address);
cmd_pkt->fcp_cmnd_dseg_address[1] = cpu_to_le32(
MSD(crc_ctx_dma + CRC_CONTEXT_FCPCMND_OFF));
fcp_cmnd->task_management = 0; fcp_cmnd->task_management = 0;
fcp_cmnd->task_attribute = TSK_SIMPLE; fcp_cmnd->task_attribute = TSK_SIMPLE;
...@@ -2707,18 +2704,13 @@ qla24xx_els_logo_iocb(srb_t *sp, struct els_entry_24xx *els_iocb) ...@@ -2707,18 +2704,13 @@ qla24xx_els_logo_iocb(srb_t *sp, struct els_entry_24xx *els_iocb)
if (elsio->u.els_logo.els_cmd == ELS_DCMD_PLOGI) { if (elsio->u.els_logo.els_cmd == ELS_DCMD_PLOGI) {
els_iocb->tx_byte_count = els_iocb->tx_len = els_iocb->tx_byte_count = els_iocb->tx_len =
sizeof(struct els_plogi_payload); sizeof(struct els_plogi_payload);
els_iocb->tx_address[0] = put_unaligned_le64(elsio->u.els_plogi.els_plogi_pyld_dma,
cpu_to_le32(LSD(elsio->u.els_plogi.els_plogi_pyld_dma)); &els_iocb->tx_address);
els_iocb->tx_address[1] =
cpu_to_le32(MSD(elsio->u.els_plogi.els_plogi_pyld_dma));
els_iocb->rx_dsd_count = 1; els_iocb->rx_dsd_count = 1;
els_iocb->rx_byte_count = els_iocb->rx_len = els_iocb->rx_byte_count = els_iocb->rx_len =
sizeof(struct els_plogi_payload); sizeof(struct els_plogi_payload);
els_iocb->rx_address[0] = put_unaligned_le64(elsio->u.els_plogi.els_resp_pyld_dma,
cpu_to_le32(LSD(elsio->u.els_plogi.els_resp_pyld_dma)); &els_iocb->rx_address);
els_iocb->rx_address[1] =
cpu_to_le32(MSD(elsio->u.els_plogi.els_resp_pyld_dma));
ql_dbg(ql_dbg_io + ql_dbg_buffer, vha, 0x3073, ql_dbg(ql_dbg_io + ql_dbg_buffer, vha, 0x3073,
"PLOGI ELS IOCB:\n"); "PLOGI ELS IOCB:\n");
...@@ -2726,15 +2718,12 @@ qla24xx_els_logo_iocb(srb_t *sp, struct els_entry_24xx *els_iocb) ...@@ -2726,15 +2718,12 @@ qla24xx_els_logo_iocb(srb_t *sp, struct els_entry_24xx *els_iocb)
(uint8_t *)els_iocb, 0x70); (uint8_t *)els_iocb, 0x70);
} else { } else {
els_iocb->tx_byte_count = sizeof(struct els_logo_payload); els_iocb->tx_byte_count = sizeof(struct els_logo_payload);
els_iocb->tx_address[0] = put_unaligned_le64(elsio->u.els_logo.els_logo_pyld_dma,
cpu_to_le32(LSD(elsio->u.els_logo.els_logo_pyld_dma)); &els_iocb->tx_address);
els_iocb->tx_address[1] =
cpu_to_le32(MSD(elsio->u.els_logo.els_logo_pyld_dma));
els_iocb->tx_len = cpu_to_le32(sizeof(struct els_logo_payload)); els_iocb->tx_len = cpu_to_le32(sizeof(struct els_logo_payload));
els_iocb->rx_byte_count = 0; els_iocb->rx_byte_count = 0;
els_iocb->rx_address[0] = 0; els_iocb->rx_address = 0;
els_iocb->rx_address[1] = 0;
els_iocb->rx_len = 0; els_iocb->rx_len = 0;
} }
...@@ -2957,17 +2946,13 @@ qla24xx_els_iocb(srb_t *sp, struct els_entry_24xx *els_iocb) ...@@ -2957,17 +2946,13 @@ qla24xx_els_iocb(srb_t *sp, struct els_entry_24xx *els_iocb)
els_iocb->tx_byte_count = els_iocb->tx_byte_count =
cpu_to_le32(bsg_job->request_payload.payload_len); cpu_to_le32(bsg_job->request_payload.payload_len);
els_iocb->tx_address[0] = cpu_to_le32(LSD(sg_dma_address put_unaligned_le64(sg_dma_address(bsg_job->request_payload.sg_list),
(bsg_job->request_payload.sg_list))); &els_iocb->tx_address);
els_iocb->tx_address[1] = cpu_to_le32(MSD(sg_dma_address
(bsg_job->request_payload.sg_list)));
els_iocb->tx_len = cpu_to_le32(sg_dma_len els_iocb->tx_len = cpu_to_le32(sg_dma_len
(bsg_job->request_payload.sg_list)); (bsg_job->request_payload.sg_list));
els_iocb->rx_address[0] = cpu_to_le32(LSD(sg_dma_address put_unaligned_le64(sg_dma_address(bsg_job->reply_payload.sg_list),
(bsg_job->reply_payload.sg_list))); &els_iocb->rx_address);
els_iocb->rx_address[1] = cpu_to_le32(MSD(sg_dma_address
(bsg_job->reply_payload.sg_list)));
els_iocb->rx_len = cpu_to_le32(sg_dma_len els_iocb->rx_len = cpu_to_le32(sg_dma_len
(bsg_job->reply_payload.sg_list)); (bsg_job->reply_payload.sg_list));
...@@ -3004,12 +2989,12 @@ qla2x00_ct_iocb(srb_t *sp, ms_iocb_entry_t *ct_iocb) ...@@ -3004,12 +2989,12 @@ qla2x00_ct_iocb(srb_t *sp, ms_iocb_entry_t *ct_iocb)
ct_iocb->rsp_bytecount = ct_iocb->rsp_bytecount =
cpu_to_le32(bsg_job->reply_payload.payload_len); cpu_to_le32(bsg_job->reply_payload.payload_len);
ct_iocb->req_dsd.address = put_unaligned_le64(sg_dma_address(bsg_job->request_payload.sg_list),
cpu_to_le64(sg_dma_address(bsg_job->request_payload.sg_list)); &ct_iocb->req_dsd.address);
ct_iocb->req_dsd.length = ct_iocb->req_bytecount; ct_iocb->req_dsd.length = ct_iocb->req_bytecount;
ct_iocb->rsp_dsd.address = put_unaligned_le64(sg_dma_address(bsg_job->reply_payload.sg_list),
cpu_to_le64(sg_dma_address(bsg_job->reply_payload.sg_list)); &ct_iocb->rsp_dsd.address);
ct_iocb->rsp_dsd.length = ct_iocb->rsp_bytecount; ct_iocb->rsp_dsd.length = ct_iocb->rsp_bytecount;
avail_dsds = 1; avail_dsds = 1;
...@@ -3332,10 +3317,8 @@ qla82xx_start_scsi(srb_t *sp) ...@@ -3332,10 +3317,8 @@ qla82xx_start_scsi(srb_t *sp)
*fcp_dl = htonl((uint32_t)scsi_bufflen(cmd)); *fcp_dl = htonl((uint32_t)scsi_bufflen(cmd));
cmd_pkt->fcp_cmnd_dseg_len = cpu_to_le16(ctx->fcp_cmnd_len); cmd_pkt->fcp_cmnd_dseg_len = cpu_to_le16(ctx->fcp_cmnd_len);
cmd_pkt->fcp_cmnd_dseg_address[0] = put_unaligned_le64(ctx->fcp_cmnd_dma,
cpu_to_le32(LSD(ctx->fcp_cmnd_dma)); &cmd_pkt->fcp_cmnd_dseg_address);
cmd_pkt->fcp_cmnd_dseg_address[1] =
cpu_to_le32(MSD(ctx->fcp_cmnd_dma));
sp->flags |= SRB_FCP_CMND_DMA_VALID; sp->flags |= SRB_FCP_CMND_DMA_VALID;
cmd_pkt->byte_count = cpu_to_le32((uint32_t)scsi_bufflen(cmd)); cmd_pkt->byte_count = cpu_to_le32((uint32_t)scsi_bufflen(cmd));
......
...@@ -3278,8 +3278,8 @@ qlafx00_fxdisc_iocb(srb_t *sp, struct fxdisc_entry_fx00 *pfxiocb) ...@@ -3278,8 +3278,8 @@ qlafx00_fxdisc_iocb(srb_t *sp, struct fxdisc_entry_fx00 *pfxiocb)
fx_iocb.req_dsdcnt = cpu_to_le16(1); fx_iocb.req_dsdcnt = cpu_to_le16(1);
fx_iocb.req_xfrcnt = fx_iocb.req_xfrcnt =
cpu_to_le16(fxio->u.fxiocb.req_len); cpu_to_le16(fxio->u.fxiocb.req_len);
fx_iocb.dseg_rq.address = put_unaligned_le64(fxio->u.fxiocb.req_dma_handle,
cpu_to_le64(fxio->u.fxiocb.req_dma_handle); &fx_iocb.dseg_rq.address);
fx_iocb.dseg_rq.length = fx_iocb.dseg_rq.length =
cpu_to_le32(fxio->u.fxiocb.req_len); cpu_to_le32(fxio->u.fxiocb.req_len);
} }
...@@ -3288,8 +3288,8 @@ qlafx00_fxdisc_iocb(srb_t *sp, struct fxdisc_entry_fx00 *pfxiocb) ...@@ -3288,8 +3288,8 @@ qlafx00_fxdisc_iocb(srb_t *sp, struct fxdisc_entry_fx00 *pfxiocb)
fx_iocb.rsp_dsdcnt = cpu_to_le16(1); fx_iocb.rsp_dsdcnt = cpu_to_le16(1);
fx_iocb.rsp_xfrcnt = fx_iocb.rsp_xfrcnt =
cpu_to_le16(fxio->u.fxiocb.rsp_len); cpu_to_le16(fxio->u.fxiocb.rsp_len);
fx_iocb.dseg_rsp.address = put_unaligned_le64(fxio->u.fxiocb.rsp_dma_handle,
cpu_to_le64(fxio->u.fxiocb.rsp_dma_handle); &fx_iocb.dseg_rsp.address);
fx_iocb.dseg_rsp.length = fx_iocb.dseg_rsp.length =
cpu_to_le32(fxio->u.fxiocb.rsp_len); cpu_to_le32(fxio->u.fxiocb.rsp_len);
} }
......
...@@ -410,13 +410,11 @@ static inline int qla2x00_start_nvme_mq(srb_t *sp) ...@@ -410,13 +410,11 @@ static inline int qla2x00_start_nvme_mq(srb_t *sp)
/* NVME RSP IU */ /* NVME RSP IU */
cmd_pkt->nvme_rsp_dsd_len = cpu_to_le16(fd->rsplen); cmd_pkt->nvme_rsp_dsd_len = cpu_to_le16(fd->rsplen);
cmd_pkt->nvme_rsp_dseg_address[0] = cpu_to_le32(LSD(fd->rspdma)); put_unaligned_le64(fd->rspdma, &cmd_pkt->nvme_rsp_dseg_address);
cmd_pkt->nvme_rsp_dseg_address[1] = cpu_to_le32(MSD(fd->rspdma));
/* NVME CNMD IU */ /* NVME CNMD IU */
cmd_pkt->nvme_cmnd_dseg_len = cpu_to_le16(fd->cmdlen); cmd_pkt->nvme_cmnd_dseg_len = cpu_to_le16(fd->cmdlen);
cmd_pkt->nvme_cmnd_dseg_address[0] = cpu_to_le32(LSD(fd->cmddma)); cmd_pkt->nvme_cmnd_dseg_address = cpu_to_le64(fd->cmddma);
cmd_pkt->nvme_cmnd_dseg_address[1] = cpu_to_le32(MSD(fd->cmddma));
cmd_pkt->dseg_count = cpu_to_le16(tot_dsds); cmd_pkt->dseg_count = cpu_to_le16(tot_dsds);
cmd_pkt->byte_count = cpu_to_le32(fd->payload_length); cmd_pkt->byte_count = cpu_to_le32(fd->payload_length);
......
...@@ -65,8 +65,8 @@ struct cmd_nvme { ...@@ -65,8 +65,8 @@ struct cmd_nvme {
#define CF_WRITE_DATA BIT_0 #define CF_WRITE_DATA BIT_0
uint16_t nvme_cmnd_dseg_len; /* Data segment length. */ uint16_t nvme_cmnd_dseg_len; /* Data segment length. */
uint32_t nvme_cmnd_dseg_address[2]; /* Data segment address. */ __le64 nvme_cmnd_dseg_address __packed;/* Data segment address. */
uint32_t nvme_rsp_dseg_address[2]; /* Data segment address. */ __le64 nvme_rsp_dseg_address __packed; /* Data segment address. */
uint32_t byte_count; /* Total byte count. */ uint32_t byte_count; /* Total byte count. */
......
...@@ -1788,10 +1788,8 @@ void qla82xx_config_rings(struct scsi_qla_host *vha) ...@@ -1788,10 +1788,8 @@ void qla82xx_config_rings(struct scsi_qla_host *vha)
icb->response_q_inpointer = cpu_to_le16(0); icb->response_q_inpointer = cpu_to_le16(0);
icb->request_q_length = cpu_to_le16(req->length); icb->request_q_length = cpu_to_le16(req->length);
icb->response_q_length = cpu_to_le16(rsp->length); icb->response_q_length = cpu_to_le16(rsp->length);
icb->request_q_address[0] = cpu_to_le32(LSD(req->dma)); put_unaligned_le64(req->dma, &icb->request_q_address);
icb->request_q_address[1] = cpu_to_le32(MSD(req->dma)); put_unaligned_le64(rsp->dma, &icb->response_q_address);
icb->response_q_address[0] = cpu_to_le32(LSD(rsp->dma));
icb->response_q_address[1] = cpu_to_le32(MSD(rsp->dma));
WRT_REG_DWORD(&reg->req_q_out[0], 0); WRT_REG_DWORD(&reg->req_q_out[0], 0);
WRT_REG_DWORD(&reg->rsp_q_in[0], 0); WRT_REG_DWORD(&reg->rsp_q_in[0], 0);
......
...@@ -3175,8 +3175,7 @@ qlt_build_ctio_crc2_pkt(struct qla_qpair *qpair, struct qla_tgt_prm *prm) ...@@ -3175,8 +3175,7 @@ qlt_build_ctio_crc2_pkt(struct qla_qpair *qpair, struct qla_tgt_prm *prm)
qla_tgt_set_dif_tags(cmd, crc_ctx_pkt, &fw_prot_opts); qla_tgt_set_dif_tags(cmd, crc_ctx_pkt, &fw_prot_opts);
pkt->crc_context_address[0] = cpu_to_le32(LSD(crc_ctx_dma)); put_unaligned_le64(crc_ctx_dma, &pkt->crc_context_address);
pkt->crc_context_address[1] = cpu_to_le32(MSD(crc_ctx_dma));
pkt->crc_context_len = CRC_CONTEXT_LEN_FW; pkt->crc_context_len = CRC_CONTEXT_LEN_FW;
if (!bundling) { if (!bundling) {
......
...@@ -519,10 +519,10 @@ struct ctio_crc2_to_fw { ...@@ -519,10 +519,10 @@ struct ctio_crc2_to_fw {
uint32_t reserved5; uint32_t reserved5;
__le32 transfer_length; /* total fc transfer length */ __le32 transfer_length; /* total fc transfer length */
uint32_t reserved6; uint32_t reserved6;
__le32 crc_context_address[2];/* Data segment address. */ __le64 crc_context_address __packed; /* Data segment address. */
uint16_t crc_context_len; /* Data segment length. */ uint16_t crc_context_len; /* Data segment length. */
uint16_t reserved_1; /* MUST be set to 0. */ uint16_t reserved_1; /* MUST be set to 0. */
} __packed; };
/* CTIO Type CRC_x Status IOCB */ /* CTIO Type CRC_x Status IOCB */
struct ctio_crc_from_fw { struct ctio_crc_from_fw {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment