]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - drivers/scsi/be2iscsi/be_mgmt.c
Merge branches 'for-4.4/upstream-fixes', 'for-4.5/async-suspend', 'for-4.5/container...
[mirror_ubuntu-artful-kernel.git] / drivers / scsi / be2iscsi / be_mgmt.c
index 1b2bd044dad6dacc4ef81a4298ac80c7071493a3..aea3e6b9477dcc73df18b263365609a93abd3758 100644 (file)
@@ -1573,7 +1573,8 @@ beiscsi_phys_port_disp(struct device *dev, struct device_attribute *attr,
 
 void beiscsi_offload_cxn_v0(struct beiscsi_offload_params *params,
                             struct wrb_handle *pwrb_handle,
-                            struct be_mem_descriptor *mem_descr)
+                            struct be_mem_descriptor *mem_descr,
+                            struct hwi_wrb_context *pwrb_context)
 {
        struct iscsi_wrb *pwrb = pwrb_handle->pwrb;
 
@@ -1617,7 +1618,14 @@ void beiscsi_offload_cxn_v0(struct beiscsi_offload_params *params,
                      max_burst_length) / 32]);
 
        AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb, ptr2nextwrb,
-                     pwrb, pwrb_handle->nxt_wrb_index);
+                     pwrb, pwrb_handle->wrb_index);
+       if (pwrb_context->plast_wrb)
+               AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb,
+                             ptr2nextwrb,
+                             pwrb_context->plast_wrb,
+                             pwrb_handle->wrb_index);
+       pwrb_context->plast_wrb = pwrb;
+
        AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb,
                      session_state, pwrb, 0);
        AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb, compltonack,
@@ -1637,7 +1645,8 @@ void beiscsi_offload_cxn_v0(struct beiscsi_offload_params *params,
 }
 
 void beiscsi_offload_cxn_v2(struct beiscsi_offload_params *params,
-                            struct wrb_handle *pwrb_handle)
+                            struct wrb_handle *pwrb_handle,
+                            struct hwi_wrb_context *pwrb_context)
 {
        struct iscsi_wrb *pwrb = pwrb_handle->pwrb;
 
@@ -1652,7 +1661,14 @@ void beiscsi_offload_cxn_v2(struct beiscsi_offload_params *params,
                      BE_TGT_CTX_UPDT_CMD);
        AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb_v2,
                      ptr2nextwrb,
-                     pwrb, pwrb_handle->nxt_wrb_index);
+                     pwrb, pwrb_handle->wrb_index);
+       if (pwrb_context->plast_wrb)
+               AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb_v2,
+                             ptr2nextwrb,
+                             pwrb_context->plast_wrb,
+                             pwrb_handle->wrb_index);
+       pwrb_context->plast_wrb = pwrb;
+
        AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb_v2, wrb_idx,
                      pwrb, pwrb_handle->wrb_index);
        AMAP_SET_BITS(struct amap_iscsi_target_context_update_wrb_v2,