All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 01/15] be2iscsi: Fix lack of uninitialize pattern to FW
@ 2013-03-12  4:39 jayamohank
  2013-03-12  4:39 ` [PATCH 02/15] be2iscsi: Fix returning Failure when MBX fails with Insufficient buffer error jayamohank
                   ` (14 more replies)
  0 siblings, 15 replies; 20+ messages in thread
From: jayamohank @ 2013-03-12  4:39 UTC (permalink / raw)
  To: james.bottomley, linux-scsi, michaelc; +Cc: Jayamohan.Kallickal, John Soni Jose

From: "Jayamohan.Kallickal" <jayamohan.kallickal@emulex.com>

 This patch sends uninitialize pattern to FW during driver unload
which is expected by FW for cleanup

Signed-off-by: John Soni Jose <sony.john-n@emulex.com>
Signed-off-by: Jayamohan.Kallickal <jayamohan.kallickal@emulex.com>
---
 drivers/scsi/be2iscsi/be_cmds.c |   51 +++++++++++++++++++++++++++++++++++++++
 drivers/scsi/be2iscsi/be_cmds.h |    1 +
 drivers/scsi/be2iscsi/be_main.c |    1 +
 3 files changed, 53 insertions(+)

diff --git a/drivers/scsi/be2iscsi/be_cmds.c b/drivers/scsi/be2iscsi/be_cmds.c
index 5c87768..0b44cc9 100644
--- a/drivers/scsi/be2iscsi/be_cmds.c
+++ b/drivers/scsi/be2iscsi/be_cmds.c
@@ -732,6 +732,16 @@ int beiscsi_cmd_eq_create(struct be_ctrl_info *ctrl,
 	return status;
 }
 
+/**
+ * be_cmd_fw_initialize()- Initialize FW
+ * @ctrl: Pointer to function control structure
+ *
+ * Send FW initialize pattern for the function.
+ *
+ * return
+ * Success: 0
+ * Failure: Non-Zero value
+ **/
 int be_cmd_fw_initialize(struct be_ctrl_info *ctrl)
 {
 	struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
@@ -762,6 +772,47 @@ int be_cmd_fw_initialize(struct be_ctrl_info *ctrl)
 	return status;
 }
 
+/**
+ * be_cmd_fw_uninit()- Uinitialize FW
+ * @ctrl: Pointer to function control structure
+ *
+ * Send FW uninitialize pattern for the function
+ *
+ * return
+ * Success: 0
+ * Failure: Non-Zero value
+ **/
+int be_cmd_fw_uninit(struct be_ctrl_info *ctrl)
+{
+	struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
+	struct beiscsi_hba *phba = pci_get_drvdata(ctrl->pdev);
+	int status;
+	u8 *endian_check;
+
+	spin_lock(&ctrl->mbox_lock);
+	memset(wrb, 0, sizeof(*wrb));
+
+	endian_check = (u8 *) wrb;
+	*endian_check++ = 0xFF;
+	*endian_check++ = 0xAA;
+	*endian_check++ = 0xBB;
+	*endian_check++ = 0xFF;
+	*endian_check++ = 0xFF;
+	*endian_check++ = 0xCC;
+	*endian_check++ = 0xDD;
+	*endian_check = 0xFF;
+
+	be_dws_cpu_to_le(wrb, sizeof(*wrb));
+
+	status = be_mbox_notify(ctrl);
+	if (status)
+		beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
+			    "BC_%d : be_cmd_fw_uninit Failed\n");
+
+	spin_unlock(&ctrl->mbox_lock);
+	return status;
+}
+
 int beiscsi_cmd_cq_create(struct be_ctrl_info *ctrl,
 			  struct be_queue_info *cq, struct be_queue_info *eq,
 			  bool sol_evts, bool no_delay, int coalesce_wm)
diff --git a/drivers/scsi/be2iscsi/be_cmds.h b/drivers/scsi/be2iscsi/be_cmds.h
index 23397d5..0f8c920 100644
--- a/drivers/scsi/be2iscsi/be_cmds.h
+++ b/drivers/scsi/be2iscsi/be_cmds.h
@@ -697,6 +697,7 @@ int beiscsi_mccq_compl(struct beiscsi_hba *phba,
 			uint32_t tag, struct be_mcc_wrb **wrb, void *cmd_va);
 /*ISCSI Functuions */
 int be_cmd_fw_initialize(struct be_ctrl_info *ctrl);
+int be_cmd_fw_uninit(struct be_ctrl_info *ctrl);
 
 struct be_mcc_wrb *wrb_from_mbox(struct be_dma_mem *mbox_mem);
 struct be_mcc_wrb *wrb_from_mccq(struct beiscsi_hba *phba);
diff --git a/drivers/scsi/be2iscsi/be_main.c b/drivers/scsi/be2iscsi/be_main.c
index 4e2733d..3fb997f 100644
--- a/drivers/scsi/be2iscsi/be_main.c
+++ b/drivers/scsi/be2iscsi/be_main.c
@@ -3430,6 +3430,7 @@ static void hwi_cleanup(struct beiscsi_hba *phba)
 			beiscsi_cmd_q_destroy(ctrl, q, QTYPE_EQ);
 	}
 	be_mcc_queues_destroy(phba);
+	be_cmd_fw_uninit(ctrl);
 }
 
 static int be_mcc_queues_create(struct beiscsi_hba *phba,
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2013-03-27 20:20 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-03-12  4:39 [PATCH 01/15] be2iscsi: Fix lack of uninitialize pattern to FW jayamohank
2013-03-12  4:39 ` [PATCH 02/15] be2iscsi: Fix returning Failure when MBX fails with Insufficient buffer error jayamohank
2013-03-12  4:39 ` [PATCH 03/15] be2iscsi: Fix MBX Command issues jayamohank
2013-03-12  4:39 ` [PATCH 04/15] be2iscsi: Fix MSIx support in SKH-R to 32 jayamohank
2013-03-12  4:39 ` [PATCH 05/15] be2iscsi: Fix freeing CXN specific driver resources jayamohank
2013-03-23  5:56   ` Mike Christie
2013-03-12  4:39 ` [PATCH 06/15] be2iscsi: Fix MACRO for checking the adapter type jayamohank
2013-03-12  4:39 ` [PATCH 07/15] be2iscsi: Fix support for DEFQ extension jayamohank
2013-03-12  4:39 ` [PATCH 08/15] be2iscsi: Fix displaying the FW Version from driver jayamohank
2013-03-13 10:29   ` Steffen Maier
2013-03-23  6:00     ` Mike Christie
2013-03-27 20:19     ` Kallickal, Jayamohan
2013-03-12  4:39 ` [PATCH 09/15] be2iscsi: Fix displaying the Active Session Count " jayamohank
2013-03-12  4:39 ` [PATCH 10/15] be2iscsi: Fix the Port Link Status issue jayamohank
2013-03-12  4:39 ` [PATCH 11/15] be2iscsi: Fix the NOP-In handling code path jayamohank
2013-03-12  4:39 ` [PATCH 12/15] be2iscsi: Fix dynamic CID allocation Mechanism in driver jayamohank
2013-03-12  4:39 ` [PATCH 13/15] be2iscsi: Fix checking Adapter state while establishing CXN jayamohank
2013-03-12  4:39 ` [PATCH 14/15] be2iscsi: Fix the copyright information jayamohank
2013-03-12  4:39 ` [PATCH 15/15] be2iscsi: Bump the driver version jayamohank
2013-03-12  4:39 ` be2iscsi: set of patches for be2iscsi jayamohank

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.