From: root Date: Wed, 2 May 2012 14:25:07 +0000 (+0530) Subject: be2iscsi: Check ASYNC PDU Handle corresponds to HDR/DATA Handle X-Git-Tag: v2.6.39-400.9.0~423^2~47 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=70f465d9767a66d215c5ad72d4fe2d721448820f;p=users%2Fjedix%2Flinux-maple.git be2iscsi: Check ASYNC PDU Handle corresponds to HDR/DATA Handle For each ASYNC PDU received there is an HDR and DATA handle for it. There will be only 1 HDR ASYNC Handle, but DATA Handle can be more than 1 for each ASYNC PDU received. Checking if the ASYNC Handle correspongs to HDR or DATA while returning the Handle to the free list. hwi_free_async_msg just return the handles to the free list. No return values are needed so changing the return type to void. Signed-off-by: root --- diff --git a/drivers/scsi/be2iscsi/be_main.c b/drivers/scsi/be2iscsi/be_main.c index 4439a5e58a66..fda6b36d7dc8 100644 --- a/drivers/scsi/be2iscsi/be_main.c +++ b/drivers/scsi/be2iscsi/be_main.c @@ -1470,14 +1470,13 @@ hwi_update_async_writables(struct hwi_async_pdu_context *pasync_ctx, return 0; } -static unsigned int hwi_free_async_msg(struct beiscsi_hba *phba, +static void hwi_free_async_msg(struct beiscsi_hba *phba, unsigned int cri) { struct hwi_controller *phwi_ctrlr; struct hwi_async_pdu_context *pasync_ctx; struct async_pdu_handle *pasync_handle, *tmp_handle; struct list_head *plist; - unsigned int i = 0; phwi_ctrlr = phba->phwi_ctrlr; pasync_ctx = HWI_GET_ASYNC_PDU_CTX(phwi_ctrlr); @@ -1487,23 +1486,20 @@ static unsigned int hwi_free_async_msg(struct beiscsi_hba *phba, list_for_each_entry_safe(pasync_handle, tmp_handle, plist, link) { list_del(&pasync_handle->link); - if (i == 0) { + if (pasync_handle->is_header) { list_add_tail(&pasync_handle->link, &pasync_ctx->async_header.free_list); pasync_ctx->async_header.free_entries++; - i++; } else { list_add_tail(&pasync_handle->link, &pasync_ctx->async_data.free_list); pasync_ctx->async_data.free_entries++; - i++; } } INIT_LIST_HEAD(&pasync_ctx->async_entry[cri].wait_queue.list); pasync_ctx->async_entry[cri].wait_queue.hdr_received = 0; pasync_ctx->async_entry[cri].wait_queue.bytes_received = 0; - return 0; } static struct phys_addr *