IB/srp: Sync buffer before posting send
srp_send_tsk_mgmt() was missing the proper DMA sync calls before posting the buffer to the device. Signed-off-by: David Dillow <dillowda@ornl.gov> Signed-off-by: Roland Dreier <rolandd@cisco.com>
This commit is contained in:
parent
21c1a90769
commit
19081f31ce
|
@ -1442,6 +1442,7 @@ static int srp_cm_handler(struct ib_cm_id *cm_id, struct ib_cm_event *event)
|
||||||
static int srp_send_tsk_mgmt(struct srp_target_port *target,
|
static int srp_send_tsk_mgmt(struct srp_target_port *target,
|
||||||
struct srp_request *req, u8 func)
|
struct srp_request *req, u8 func)
|
||||||
{
|
{
|
||||||
|
struct ib_device *dev = target->srp_host->srp_dev->dev;
|
||||||
struct srp_iu *iu;
|
struct srp_iu *iu;
|
||||||
struct srp_tsk_mgmt *tsk_mgmt;
|
struct srp_tsk_mgmt *tsk_mgmt;
|
||||||
|
|
||||||
|
@ -1459,6 +1460,8 @@ static int srp_send_tsk_mgmt(struct srp_target_port *target,
|
||||||
if (!iu)
|
if (!iu)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
|
ib_dma_sync_single_for_cpu(dev, iu->dma, sizeof *tsk_mgmt,
|
||||||
|
DMA_TO_DEVICE);
|
||||||
tsk_mgmt = iu->buf;
|
tsk_mgmt = iu->buf;
|
||||||
memset(tsk_mgmt, 0, sizeof *tsk_mgmt);
|
memset(tsk_mgmt, 0, sizeof *tsk_mgmt);
|
||||||
|
|
||||||
|
@ -1468,6 +1471,8 @@ static int srp_send_tsk_mgmt(struct srp_target_port *target,
|
||||||
tsk_mgmt->tsk_mgmt_func = func;
|
tsk_mgmt->tsk_mgmt_func = func;
|
||||||
tsk_mgmt->task_tag = req->index;
|
tsk_mgmt->task_tag = req->index;
|
||||||
|
|
||||||
|
ib_dma_sync_single_for_device(dev, iu->dma, sizeof *tsk_mgmt,
|
||||||
|
DMA_TO_DEVICE);
|
||||||
if (__srp_post_send(target, iu, sizeof *tsk_mgmt))
|
if (__srp_post_send(target, iu, sizeof *tsk_mgmt))
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue