aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/qla2xxx
diff options
context:
space:
mode:
authorBart Van Assche <bvanassche@acm.org>2019-08-08 23:02:01 -0400
committerMartin K. Petersen <martin.petersen@oracle.com>2019-08-12 21:34:08 -0400
commit9933c050fe919ed42408a6e0198e3d7e7d3278a8 (patch)
tree8077412c9b1ec424b618a6137e70de5d08cd3431 /drivers/scsi/qla2xxx
parent0597fe601a3a7d103c35b922046251906e0349b3 (diff)
scsi: qla2xxx: Make it explicit that ELS pass-through IOCBs use little endian
According to the firmware documentation the firmware expects all ELS pass-through IOCB parameters in little endian format. Make this explicit. Cc: Himanshu Madhani <hmadhani@marvell.com> Signed-off-by: Bart Van Assche <bvanassche@acm.org> Tested-by: Himanshu Madhani <hmadhani@marvell.com> Reviewed-by: Himanshu Madhani <hmadhani@marvell.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Diffstat (limited to 'drivers/scsi/qla2xxx')
-rw-r--r--drivers/scsi/qla2xxx/qla_fw.h8
-rw-r--r--drivers/scsi/qla2xxx/qla_iocb.c7
2 files changed, 8 insertions, 7 deletions
diff --git a/drivers/scsi/qla2xxx/qla_fw.h b/drivers/scsi/qla2xxx/qla_fw.h
index df079a8c2b33..732bb871c433 100644
--- a/drivers/scsi/qla2xxx/qla_fw.h
+++ b/drivers/scsi/qla2xxx/qla_fw.h
@@ -761,13 +761,13 @@ struct els_entry_24xx {
761#define ECF_CLR_PASSTHRU_PEND BIT_12 761#define ECF_CLR_PASSTHRU_PEND BIT_12
762#define ECF_INCL_FRAME_HDR BIT_11 762#define ECF_INCL_FRAME_HDR BIT_11
763 763
764 uint32_t rx_byte_count; 764 __le32 rx_byte_count;
765 uint32_t tx_byte_count; 765 __le32 tx_byte_count;
766 766
767 __le64 tx_address __packed; /* Data segment 0 address. */ 767 __le64 tx_address __packed; /* Data segment 0 address. */
768 uint32_t tx_len; /* Data segment 0 length. */ 768 __le32 tx_len; /* Data segment 0 length. */
769 __le64 rx_address __packed; /* Data segment 1 address. */ 769 __le64 rx_address __packed; /* Data segment 1 address. */
770 uint32_t rx_len; /* Data segment 1 length. */ 770 __le32 rx_len; /* Data segment 1 length. */
771}; 771};
772 772
773struct els_sts_entry_24xx { 773struct els_sts_entry_24xx {
diff --git a/drivers/scsi/qla2xxx/qla_iocb.c b/drivers/scsi/qla2xxx/qla_iocb.c
index 6b120254f414..c7b91827c1e7 100644
--- a/drivers/scsi/qla2xxx/qla_iocb.c
+++ b/drivers/scsi/qla2xxx/qla_iocb.c
@@ -2704,12 +2704,12 @@ qla24xx_els_logo_iocb(srb_t *sp, struct els_entry_24xx *els_iocb)
2704 2704
2705 if (elsio->u.els_logo.els_cmd == ELS_DCMD_PLOGI) { 2705 if (elsio->u.els_logo.els_cmd == ELS_DCMD_PLOGI) {
2706 els_iocb->tx_byte_count = els_iocb->tx_len = 2706 els_iocb->tx_byte_count = els_iocb->tx_len =
2707 sizeof(struct els_plogi_payload); 2707 cpu_to_le32(sizeof(struct els_plogi_payload));
2708 put_unaligned_le64(elsio->u.els_plogi.els_plogi_pyld_dma, 2708 put_unaligned_le64(elsio->u.els_plogi.els_plogi_pyld_dma,
2709 &els_iocb->tx_address); 2709 &els_iocb->tx_address);
2710 els_iocb->rx_dsd_count = 1; 2710 els_iocb->rx_dsd_count = 1;
2711 els_iocb->rx_byte_count = els_iocb->rx_len = 2711 els_iocb->rx_byte_count = els_iocb->rx_len =
2712 sizeof(struct els_plogi_payload); 2712 cpu_to_le32(sizeof(struct els_plogi_payload));
2713 put_unaligned_le64(elsio->u.els_plogi.els_resp_pyld_dma, 2713 put_unaligned_le64(elsio->u.els_plogi.els_resp_pyld_dma,
2714 &els_iocb->rx_address); 2714 &els_iocb->rx_address);
2715 2715
@@ -2718,7 +2718,8 @@ qla24xx_els_logo_iocb(srb_t *sp, struct els_entry_24xx *els_iocb)
2718 ql_dump_buffer(ql_log_info, vha, 0x0109, 2718 ql_dump_buffer(ql_log_info, vha, 0x0109,
2719 (uint8_t *)els_iocb, 0x70); 2719 (uint8_t *)els_iocb, 0x70);
2720 } else { 2720 } else {
2721 els_iocb->tx_byte_count = sizeof(struct els_logo_payload); 2721 els_iocb->tx_byte_count =
2722 cpu_to_le32(sizeof(struct els_logo_payload));
2722 put_unaligned_le64(elsio->u.els_logo.els_logo_pyld_dma, 2723 put_unaligned_le64(elsio->u.els_logo.els_logo_pyld_dma,
2723 &els_iocb->tx_address); 2724 &els_iocb->tx_address);
2724 els_iocb->tx_len = cpu_to_le32(sizeof(struct els_logo_payload)); 2725 els_iocb->tx_len = cpu_to_le32(sizeof(struct els_logo_payload));