diff options
Diffstat (limited to 'drivers/scsi/be2iscsi/be_mgmt.c')
| -rw-r--r-- | drivers/scsi/be2iscsi/be_mgmt.c | 14 | 
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/scsi/be2iscsi/be_mgmt.c b/drivers/scsi/be2iscsi/be_mgmt.c index 317bcd042ce..72617b650a7 100644 --- a/drivers/scsi/be2iscsi/be_mgmt.c +++ b/drivers/scsi/be2iscsi/be_mgmt.c @@ -145,14 +145,15 @@ unsigned char mgmt_epfw_cleanup(struct beiscsi_hba *phba, unsigned short chute)  }  unsigned char mgmt_invalidate_icds(struct beiscsi_hba *phba, -				   unsigned int icd, unsigned int cid) +				struct invalidate_command_table *inv_tbl, +				unsigned int num_invalidate, unsigned int cid)  {  	struct be_dma_mem nonemb_cmd;  	struct be_ctrl_info *ctrl = &phba->ctrl;  	struct be_mcc_wrb *wrb;  	struct be_sge *sge;  	struct invalidate_commands_params_in *req; -	unsigned int tag = 0; +	unsigned int i, tag = 0;  	spin_lock(&ctrl->mbox_lock);  	tag = alloc_mcc_tag(phba); @@ -183,9 +184,12 @@ unsigned char mgmt_invalidate_icds(struct beiscsi_hba *phba,  			sizeof(*req));  	req->ref_handle = 0;  	req->cleanup_type = CMD_ISCSI_COMMAND_INVALIDATE; -	req->icd_count = 0; -	req->table[req->icd_count].icd = icd; -	req->table[req->icd_count].cid = cid; +	for (i = 0; i < num_invalidate; i++) { +		req->table[i].icd = inv_tbl->icd; +		req->table[i].cid = inv_tbl->cid; +		req->icd_count++; +		inv_tbl++; +	}  	sge->pa_hi = cpu_to_le32(upper_32_bits(nonemb_cmd.dma));  	sge->pa_lo = cpu_to_le32(nonemb_cmd.dma & 0xFFFFFFFF);  	sge->len = cpu_to_le32(nonemb_cmd.size);  |