|
@@ -1632,6 +1632,54 @@ qla2x00_get_port_name(scsi_qla_host_t *vha, uint16_t loop_id, uint8_t *name,
|
|
|
return rval;
|
|
|
}
|
|
|
|
|
|
+/*
|
|
|
+ * qla24xx_link_initialization
|
|
|
+ * Issue link initialization mailbox command.
|
|
|
+ *
|
|
|
+ * Input:
|
|
|
+ * ha = adapter block pointer.
|
|
|
+ * TARGET_QUEUE_LOCK must be released.
|
|
|
+ * ADAPTER_STATE_LOCK must be released.
|
|
|
+ *
|
|
|
+ * Returns:
|
|
|
+ * qla2x00 local function return status code.
|
|
|
+ *
|
|
|
+ * Context:
|
|
|
+ * Kernel context.
|
|
|
+ */
|
|
|
+int
|
|
|
+qla24xx_link_initialize(scsi_qla_host_t *vha)
|
|
|
+{
|
|
|
+ int rval;
|
|
|
+ mbx_cmd_t mc;
|
|
|
+ mbx_cmd_t *mcp = &mc;
|
|
|
+
|
|
|
+ ql_dbg(ql_dbg_mbx + ql_dbg_verbose, vha, 0x1152,
|
|
|
+ "Entered %s.\n", __func__);
|
|
|
+
|
|
|
+ if (!IS_FWI2_CAPABLE(vha->hw) || IS_CNA_CAPABLE(vha->hw))
|
|
|
+ return QLA_FUNCTION_FAILED;
|
|
|
+
|
|
|
+ mcp->mb[0] = MBC_LINK_INITIALIZATION;
|
|
|
+ mcp->mb[1] = BIT_6|BIT_4;
|
|
|
+ mcp->mb[2] = 0;
|
|
|
+ mcp->mb[3] = 0;
|
|
|
+ mcp->out_mb = MBX_3|MBX_2|MBX_1|MBX_0;
|
|
|
+ mcp->in_mb = MBX_0;
|
|
|
+ mcp->tov = MBX_TOV_SECONDS;
|
|
|
+ mcp->flags = 0;
|
|
|
+ rval = qla2x00_mailbox_command(vha, mcp);
|
|
|
+
|
|
|
+ if (rval != QLA_SUCCESS) {
|
|
|
+ ql_dbg(ql_dbg_mbx, vha, 0x1153, "Failed=%x.\n", rval);
|
|
|
+ } else {
|
|
|
+ ql_dbg(ql_dbg_mbx + ql_dbg_verbose, vha, 0x1154,
|
|
|
+ "Done %s.\n", __func__);
|
|
|
+ }
|
|
|
+
|
|
|
+ return rval;
|
|
|
+}
|
|
|
+
|
|
|
/*
|
|
|
* qla2x00_lip_reset
|
|
|
* Issue LIP reset mailbox command.
|