Commit ce61c574 authored by Suganath prabu Subramani's avatar Suganath prabu Subramani Committed by Martin K. Petersen

mpt3sas: Used IEEE SGL instead of MPI SGL while framing a SMP Passthrough request message.

As driver was using MPI SGL while framing the SMP Passthrough request
message due to which firmware unable to post the Reply Data in the host
memory and timeout is observed for this SMP Passthrough request message
and so unable to perform phy disable operation.
Signed-off-by: default avatarSuganath prabu Subramani <suganath-prabu.subramani@avagotech.com>
Signed-off-by: default avatarChaitra P B <chaitra.basappa@avagotech.com>
Reviewed-by: default avatarTomas Henzl <thenzl@redhat.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent b130b0d5
...@@ -1418,7 +1418,6 @@ _transport_expander_phy_control(struct MPT3SAS_ADAPTER *ioc, ...@@ -1418,7 +1418,6 @@ _transport_expander_phy_control(struct MPT3SAS_ADAPTER *ioc,
u32 ioc_state; u32 ioc_state;
unsigned long timeleft; unsigned long timeleft;
void *psge; void *psge;
u32 sgl_flags;
u8 issue_reset = 0; u8 issue_reset = 0;
void *data_out = NULL; void *data_out = NULL;
dma_addr_t data_out_dma; dma_addr_t data_out_dma;
...@@ -1507,24 +1506,10 @@ _transport_expander_phy_control(struct MPT3SAS_ADAPTER *ioc, ...@@ -1507,24 +1506,10 @@ _transport_expander_phy_control(struct MPT3SAS_ADAPTER *ioc,
cpu_to_le16(sizeof(struct phy_error_log_request)); cpu_to_le16(sizeof(struct phy_error_log_request));
psge = &mpi_request->SGL; psge = &mpi_request->SGL;
/* WRITE sgel first */ ioc->build_sg(ioc, psge, data_out_dma,
sgl_flags = (MPI2_SGE_FLAGS_SIMPLE_ELEMENT | sizeof(struct phy_control_request),
MPI2_SGE_FLAGS_END_OF_BUFFER | MPI2_SGE_FLAGS_HOST_TO_IOC); data_out_dma + sizeof(struct phy_control_request),
sgl_flags = sgl_flags << MPI2_SGE_FLAGS_SHIFT; sizeof(struct phy_control_reply));
ioc->base_add_sg_single(psge, sgl_flags |
sizeof(struct phy_control_request), data_out_dma);
/* incr sgel */
psge += ioc->sge_size;
/* READ sgel last */
sgl_flags = (MPI2_SGE_FLAGS_SIMPLE_ELEMENT |
MPI2_SGE_FLAGS_LAST_ELEMENT | MPI2_SGE_FLAGS_END_OF_BUFFER |
MPI2_SGE_FLAGS_END_OF_LIST);
sgl_flags = sgl_flags << MPI2_SGE_FLAGS_SHIFT;
ioc->base_add_sg_single(psge, sgl_flags |
sizeof(struct phy_control_reply), data_out_dma +
sizeof(struct phy_control_request));
dtransportprintk(ioc, pr_info(MPT3SAS_FMT dtransportprintk(ioc, pr_info(MPT3SAS_FMT
"phy_control - send to sas_addr(0x%016llx), phy(%d), opcode(%d)\n", "phy_control - send to sas_addr(0x%016llx), phy(%d), opcode(%d)\n",
......
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