diff options
Diffstat (limited to 'drivers/scsi/be2iscsi/be_cmds.c')
-rw-r--r-- | drivers/scsi/be2iscsi/be_cmds.c | 42 |
1 files changed, 31 insertions, 11 deletions
diff --git a/drivers/scsi/be2iscsi/be_cmds.c b/drivers/scsi/be2iscsi/be_cmds.c index db6c50bc8c02..4f3c93a11c50 100644 --- a/drivers/scsi/be2iscsi/be_cmds.c +++ b/drivers/scsi/be2iscsi/be_cmds.c | |||
@@ -1021,6 +1021,7 @@ int be_cmd_create_default_pdu_queue(struct be_ctrl_info *ctrl, | |||
1021 | struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem); | 1021 | struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem); |
1022 | struct be_defq_create_req *req = embedded_payload(wrb); | 1022 | struct be_defq_create_req *req = embedded_payload(wrb); |
1023 | struct be_dma_mem *q_mem = &dq->dma_mem; | 1023 | struct be_dma_mem *q_mem = &dq->dma_mem; |
1024 | struct beiscsi_hba *phba = pci_get_drvdata(ctrl->pdev); | ||
1024 | void *ctxt = &req->context; | 1025 | void *ctxt = &req->context; |
1025 | int status; | 1026 | int status; |
1026 | 1027 | ||
@@ -1033,17 +1034,36 @@ int be_cmd_create_default_pdu_queue(struct be_ctrl_info *ctrl, | |||
1033 | OPCODE_COMMON_ISCSI_DEFQ_CREATE, sizeof(*req)); | 1034 | OPCODE_COMMON_ISCSI_DEFQ_CREATE, sizeof(*req)); |
1034 | 1035 | ||
1035 | req->num_pages = PAGES_4K_SPANNED(q_mem->va, q_mem->size); | 1036 | req->num_pages = PAGES_4K_SPANNED(q_mem->va, q_mem->size); |
1036 | AMAP_SET_BITS(struct amap_be_default_pdu_context, rx_pdid, ctxt, 0); | 1037 | |
1037 | AMAP_SET_BITS(struct amap_be_default_pdu_context, rx_pdid_valid, ctxt, | 1038 | if (is_chip_be2_be3r(phba)) { |
1038 | 1); | 1039 | AMAP_SET_BITS(struct amap_be_default_pdu_context, |
1039 | AMAP_SET_BITS(struct amap_be_default_pdu_context, pci_func_id, ctxt, | 1040 | rx_pdid, ctxt, 0); |
1040 | PCI_FUNC(ctrl->pdev->devfn)); | 1041 | AMAP_SET_BITS(struct amap_be_default_pdu_context, |
1041 | AMAP_SET_BITS(struct amap_be_default_pdu_context, ring_size, ctxt, | 1042 | rx_pdid_valid, ctxt, 1); |
1042 | be_encoded_q_len(length / sizeof(struct phys_addr))); | 1043 | AMAP_SET_BITS(struct amap_be_default_pdu_context, |
1043 | AMAP_SET_BITS(struct amap_be_default_pdu_context, default_buffer_size, | 1044 | pci_func_id, ctxt, PCI_FUNC(ctrl->pdev->devfn)); |
1044 | ctxt, entry_size); | 1045 | AMAP_SET_BITS(struct amap_be_default_pdu_context, |
1045 | AMAP_SET_BITS(struct amap_be_default_pdu_context, cq_id_recv, ctxt, | 1046 | ring_size, ctxt, |
1046 | cq->id); | 1047 | be_encoded_q_len(length / |
1048 | sizeof(struct phys_addr))); | ||
1049 | AMAP_SET_BITS(struct amap_be_default_pdu_context, | ||
1050 | default_buffer_size, ctxt, entry_size); | ||
1051 | AMAP_SET_BITS(struct amap_be_default_pdu_context, | ||
1052 | cq_id_recv, ctxt, cq->id); | ||
1053 | } else { | ||
1054 | AMAP_SET_BITS(struct amap_default_pdu_context_ext, | ||
1055 | rx_pdid, ctxt, 0); | ||
1056 | AMAP_SET_BITS(struct amap_default_pdu_context_ext, | ||
1057 | rx_pdid_valid, ctxt, 1); | ||
1058 | AMAP_SET_BITS(struct amap_default_pdu_context_ext, | ||
1059 | ring_size, ctxt, | ||
1060 | be_encoded_q_len(length / | ||
1061 | sizeof(struct phys_addr))); | ||
1062 | AMAP_SET_BITS(struct amap_default_pdu_context_ext, | ||
1063 | default_buffer_size, ctxt, entry_size); | ||
1064 | AMAP_SET_BITS(struct amap_default_pdu_context_ext, | ||
1065 | cq_id_recv, ctxt, cq->id); | ||
1066 | } | ||
1047 | 1067 | ||
1048 | be_dws_cpu_to_le(ctxt, sizeof(req->context)); | 1068 | be_dws_cpu_to_le(ctxt, sizeof(req->context)); |
1049 | 1069 | ||