Merge branch 'modsplit-Oct31_2011' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-flexiantxendom0-3.2.10.git] / drivers / infiniband / ulp / iser / iscsi_iser.c
index 5263107..7e7373a 100644 (file)
@@ -152,7 +152,6 @@ int iser_initialize_task_headers(struct iscsi_task *task,
        tx_desc->tx_sg[0].length = ISER_HEADERS_LEN;
        tx_desc->tx_sg[0].lkey   = device->mr->lkey;
 
-       iser_task->headers_initialized  = 1;
        iser_task->iser_conn            = iser_conn;
        return 0;
 }
@@ -167,8 +166,7 @@ iscsi_iser_task_init(struct iscsi_task *task)
 {
        struct iscsi_iser_task *iser_task = task->dd_data;
 
-       if (!iser_task->headers_initialized)
-               if (iser_initialize_task_headers(task, &iser_task->desc))
+       if (iser_initialize_task_headers(task, &iser_task->desc))
                        return -ENOMEM;
 
        /* mgmt task */
@@ -279,6 +277,13 @@ iscsi_iser_task_xmit(struct iscsi_task *task)
 static void iscsi_iser_cleanup_task(struct iscsi_task *task)
 {
        struct iscsi_iser_task *iser_task = task->dd_data;
+       struct iser_tx_desc     *tx_desc = &iser_task->desc;
+
+       struct iscsi_iser_conn *iser_conn = task->conn->dd_data;
+       struct iser_device     *device    = iser_conn->ib_conn->device;
+
+       ib_dma_unmap_single(device->ib_device,
+               tx_desc->dma_addr, ISER_HEADERS_LEN, DMA_TO_DEVICE);
 
        /* mgmt tasks do not need special cleanup */
        if (!task->sc)