scsi: be2iscsi: Fix iSCSI cmd cleanup IOCTL
Prepare the IOCTL with appropriate sizes of buffers of V0 and V1. Set missing chute number in V1 IOCTL. Signed-off-by: Jitendra Bhivare <jitendra.bhivare@broadcom.com> Reviewed-by: Hannes Reinecke <hare@suse.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
3f7f62ee5b
commit
d740105548
|
@ -1700,31 +1700,34 @@ int beiscsi_cmd_iscsi_cleanup(struct beiscsi_hba *phba, unsigned short ulp)
|
||||||
struct be_ctrl_info *ctrl = &phba->ctrl;
|
struct be_ctrl_info *ctrl = &phba->ctrl;
|
||||||
struct iscsi_cleanup_req_v1 *req_v1;
|
struct iscsi_cleanup_req_v1 *req_v1;
|
||||||
struct iscsi_cleanup_req *req;
|
struct iscsi_cleanup_req *req;
|
||||||
|
u16 hdr_ring_id, data_ring_id;
|
||||||
struct be_mcc_wrb *wrb;
|
struct be_mcc_wrb *wrb;
|
||||||
int status;
|
int status;
|
||||||
|
|
||||||
mutex_lock(&ctrl->mbox_lock);
|
mutex_lock(&ctrl->mbox_lock);
|
||||||
wrb = wrb_from_mbox(&ctrl->mbox_mem);
|
wrb = wrb_from_mbox(&ctrl->mbox_mem);
|
||||||
req = embedded_payload(wrb);
|
|
||||||
be_wrb_hdr_prepare(wrb, sizeof(*req), true, 0);
|
|
||||||
be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_ISCSI,
|
|
||||||
OPCODE_COMMON_ISCSI_CLEANUP, sizeof(*req));
|
|
||||||
|
|
||||||
/**
|
hdr_ring_id = HWI_GET_DEF_HDRQ_ID(phba, ulp);
|
||||||
* TODO: Check with FW folks the chute value to be set.
|
data_ring_id = HWI_GET_DEF_BUFQ_ID(phba, ulp);
|
||||||
* For now, use the ULP_MASK as the chute value.
|
|
||||||
*/
|
|
||||||
if (is_chip_be2_be3r(phba)) {
|
if (is_chip_be2_be3r(phba)) {
|
||||||
|
req = embedded_payload(wrb);
|
||||||
|
be_wrb_hdr_prepare(wrb, sizeof(*req), true, 0);
|
||||||
|
be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_ISCSI,
|
||||||
|
OPCODE_COMMON_ISCSI_CLEANUP, sizeof(*req));
|
||||||
req->chute = (1 << ulp);
|
req->chute = (1 << ulp);
|
||||||
req->hdr_ring_id = HWI_GET_DEF_HDRQ_ID(phba, ulp);
|
/* BE2/BE3 FW creates 8-bit ring id */
|
||||||
req->data_ring_id = HWI_GET_DEF_BUFQ_ID(phba, ulp);
|
req->hdr_ring_id = hdr_ring_id;
|
||||||
|
req->data_ring_id = data_ring_id;
|
||||||
} else {
|
} else {
|
||||||
req_v1 = (struct iscsi_cleanup_req_v1 *)req;
|
req_v1 = embedded_payload(wrb);
|
||||||
|
be_wrb_hdr_prepare(wrb, sizeof(*req_v1), true, 0);
|
||||||
|
be_cmd_hdr_prepare(&req_v1->hdr, CMD_SUBSYSTEM_ISCSI,
|
||||||
|
OPCODE_COMMON_ISCSI_CLEANUP,
|
||||||
|
sizeof(*req_v1));
|
||||||
req_v1->hdr.version = 1;
|
req_v1->hdr.version = 1;
|
||||||
req_v1->hdr_ring_id = cpu_to_le16(HWI_GET_DEF_HDRQ_ID(phba,
|
req_v1->chute = (1 << ulp);
|
||||||
ulp));
|
req_v1->hdr_ring_id = cpu_to_le16(hdr_ring_id);
|
||||||
req_v1->data_ring_id = cpu_to_le16(HWI_GET_DEF_BUFQ_ID(phba,
|
req_v1->data_ring_id = cpu_to_le16(data_ring_id);
|
||||||
ulp));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
status = be_mbox_notify(ctrl);
|
status = be_mbox_notify(ctrl);
|
||||||
|
|
|
@ -2747,7 +2747,7 @@ static int hwi_init_async_pdu_ctx(struct beiscsi_hba *phba)
|
||||||
|
|
||||||
for (ulp_num = 0; ulp_num < BEISCSI_ULP_COUNT; ulp_num++) {
|
for (ulp_num = 0; ulp_num < BEISCSI_ULP_COUNT; ulp_num++) {
|
||||||
if (test_bit(ulp_num, &phba->fw_config.ulp_supported)) {
|
if (test_bit(ulp_num, &phba->fw_config.ulp_supported)) {
|
||||||
/* get async_ctx for each ULP */
|
/* get async_ctx for each ULP */
|
||||||
mem_descr = (struct be_mem_descriptor *)phba->init_mem;
|
mem_descr = (struct be_mem_descriptor *)phba->init_mem;
|
||||||
mem_descr += (HWI_MEM_ASYNC_PDU_CONTEXT_ULP0 +
|
mem_descr += (HWI_MEM_ASYNC_PDU_CONTEXT_ULP0 +
|
||||||
(ulp_num * MEM_DESCR_OFFSET));
|
(ulp_num * MEM_DESCR_OFFSET));
|
||||||
|
@ -3814,7 +3814,6 @@ static int hwi_init_port(struct beiscsi_hba *phba)
|
||||||
/**
|
/**
|
||||||
* Now that the default PDU rings have been created,
|
* Now that the default PDU rings have been created,
|
||||||
* let EP know about it.
|
* let EP know about it.
|
||||||
* Call beiscsi_cmd_iscsi_cleanup before posting?
|
|
||||||
*/
|
*/
|
||||||
beiscsi_hdq_post_handles(phba, BEISCSI_DEFQ_HDR,
|
beiscsi_hdq_post_handles(phba, BEISCSI_DEFQ_HDR,
|
||||||
ulp_num);
|
ulp_num);
|
||||||
|
|
Loading…
Reference in New Issue