[SCSI] be2iscsi: Added Logging mechanism for the driver.
Added new log level mechanism for different events. These log levels can be set at driver load time/run time. The log level is set for each Scsi_host. Fixed few multi-line print warning to get over the new checkpatch.pl warnings on multi-line strings. Signed-off-by: John Soni Jose <sony.john-n@emulex.com> Signed-off-by: Jayamohan Kallickal <jayamohan.kallickal@emulex.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
This commit is contained in:
parent
9aef4200ee
commit
99bc5d55c0
5 changed files with 886 additions and 511 deletions
|
@ -48,7 +48,8 @@ int beiscsi_pci_soft_reset(struct beiscsi_hba *phba)
|
|||
}
|
||||
|
||||
if (sreset & BE2_SET_RESET) {
|
||||
printk(KERN_ERR "Soft Reset did not deassert\n");
|
||||
printk(KERN_ERR DRV_NAME
|
||||
" Soft Reset did not deassert\n");
|
||||
return -EIO;
|
||||
}
|
||||
pconline1 = BE2_MPU_IRAM_ONLINE;
|
||||
|
@ -67,7 +68,8 @@ int beiscsi_pci_soft_reset(struct beiscsi_hba *phba)
|
|||
i++;
|
||||
}
|
||||
if (sreset & BE2_SET_RESET) {
|
||||
printk(KERN_ERR "MPU Online Soft Reset did not deassert\n");
|
||||
printk(KERN_ERR DRV_NAME
|
||||
" MPU Online Soft Reset did not deassert\n");
|
||||
return -EIO;
|
||||
}
|
||||
return 0;
|
||||
|
@ -93,8 +95,9 @@ int be_chk_reset_complete(struct beiscsi_hba *phba)
|
|||
}
|
||||
|
||||
if ((status & 0x80000000) || (!num_loop)) {
|
||||
printk(KERN_ERR "Failed in be_chk_reset_complete"
|
||||
"status = 0x%x\n", status);
|
||||
beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
|
||||
"BC_%d : Failed in be_chk_reset_complete"
|
||||
"status = 0x%x\n", status);
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
|
@ -169,6 +172,7 @@ static int be_mcc_compl_process(struct be_ctrl_info *ctrl,
|
|||
struct be_mcc_compl *compl)
|
||||
{
|
||||
u16 compl_status, extd_status;
|
||||
struct beiscsi_hba *phba = pci_get_drvdata(ctrl->pdev);
|
||||
|
||||
be_dws_le_to_cpu(compl, 4);
|
||||
|
||||
|
@ -177,9 +181,12 @@ static int be_mcc_compl_process(struct be_ctrl_info *ctrl,
|
|||
if (compl_status != MCC_STATUS_SUCCESS) {
|
||||
extd_status = (compl->status >> CQE_STATUS_EXTD_SHIFT) &
|
||||
CQE_STATUS_EXTD_MASK;
|
||||
dev_err(&ctrl->pdev->dev,
|
||||
"error in cmd completion: status(compl/extd)=%d/%d\n",
|
||||
compl_status, extd_status);
|
||||
|
||||
beiscsi_log(phba, KERN_ERR,
|
||||
BEISCSI_LOG_CONFIG | BEISCSI_LOG_MBOX,
|
||||
"BC_%d : error in cmd completion: status(compl/extd)=%d/%d\n",
|
||||
compl_status, extd_status);
|
||||
|
||||
return -EBUSY;
|
||||
}
|
||||
return 0;
|
||||
|
@ -233,22 +240,29 @@ void beiscsi_async_link_state_process(struct beiscsi_hba *phba,
|
|||
{
|
||||
switch (evt->port_link_status) {
|
||||
case ASYNC_EVENT_LINK_DOWN:
|
||||
SE_DEBUG(DBG_LVL_1, "Link Down on Physical Port %d\n",
|
||||
evt->physical_port);
|
||||
beiscsi_log(phba, KERN_ERR,
|
||||
BEISCSI_LOG_CONFIG | BEISCSI_LOG_INIT,
|
||||
"BC_%d : Link Down on Physical Port %d\n",
|
||||
evt->physical_port);
|
||||
|
||||
phba->state |= BE_ADAPTER_LINK_DOWN;
|
||||
iscsi_host_for_each_session(phba->shost,
|
||||
be2iscsi_fail_session);
|
||||
break;
|
||||
case ASYNC_EVENT_LINK_UP:
|
||||
phba->state = BE_ADAPTER_UP;
|
||||
SE_DEBUG(DBG_LVL_1, "Link UP on Physical Port %d\n",
|
||||
evt->physical_port);
|
||||
beiscsi_log(phba, KERN_ERR,
|
||||
BEISCSI_LOG_CONFIG | BEISCSI_LOG_INIT,
|
||||
"BC_%d : Link UP on Physical Port %d\n",
|
||||
evt->physical_port);
|
||||
break;
|
||||
default:
|
||||
SE_DEBUG(DBG_LVL_1, "Unexpected Async Notification %d on"
|
||||
"Physical Port %d\n",
|
||||
evt->port_link_status,
|
||||
evt->physical_port);
|
||||
beiscsi_log(phba, KERN_ERR,
|
||||
BEISCSI_LOG_CONFIG | BEISCSI_LOG_INIT,
|
||||
"BC_%d : Unexpected Async Notification %d on"
|
||||
"Physical Port %d\n",
|
||||
evt->port_link_status,
|
||||
evt->physical_port);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -279,9 +293,11 @@ int beiscsi_process_mcc(struct beiscsi_hba *phba)
|
|||
beiscsi_async_link_state_process(phba,
|
||||
(struct be_async_event_link_state *) compl);
|
||||
else
|
||||
SE_DEBUG(DBG_LVL_1,
|
||||
" Unsupported Async Event, flags"
|
||||
" = 0x%08x\n", compl->flags);
|
||||
beiscsi_log(phba, KERN_ERR,
|
||||
BEISCSI_LOG_CONFIG |
|
||||
BEISCSI_LOG_MBOX,
|
||||
"BC_%d : Unsupported Async Event, flags"
|
||||
" = 0x%08x\n", compl->flags);
|
||||
|
||||
} else if (compl->flags & CQE_FLAGS_COMPLETED_MASK) {
|
||||
status = be_mcc_compl_process(ctrl, compl);
|
||||
|
@ -312,7 +328,10 @@ static int be_mcc_wait_compl(struct beiscsi_hba *phba)
|
|||
udelay(100);
|
||||
}
|
||||
if (i == mcc_timeout) {
|
||||
dev_err(&phba->pcidev->dev, "mccq poll timed out\n");
|
||||
beiscsi_log(phba, KERN_ERR,
|
||||
BEISCSI_LOG_CONFIG | BEISCSI_LOG_MBOX,
|
||||
"BC_%d : mccq poll timed out\n");
|
||||
|
||||
return -EBUSY;
|
||||
}
|
||||
return 0;
|
||||
|
@ -338,7 +357,11 @@ static int be_mbox_db_ready_wait(struct be_ctrl_info *ctrl)
|
|||
break;
|
||||
|
||||
if (cnt > 12000000) {
|
||||
dev_err(&ctrl->pdev->dev, "mbox_db poll timed out\n");
|
||||
struct beiscsi_hba *phba = pci_get_drvdata(ctrl->pdev);
|
||||
beiscsi_log(phba, KERN_ERR,
|
||||
BEISCSI_LOG_CONFIG | BEISCSI_LOG_MBOX,
|
||||
"BC_%d : mbox_db poll timed out\n");
|
||||
|
||||
return -EBUSY;
|
||||
}
|
||||
|
||||
|
@ -360,6 +383,7 @@ int be_mbox_notify(struct be_ctrl_info *ctrl)
|
|||
struct be_dma_mem *mbox_mem = &ctrl->mbox_mem;
|
||||
struct be_mcc_mailbox *mbox = mbox_mem->va;
|
||||
struct be_mcc_compl *compl = &mbox->compl;
|
||||
struct beiscsi_hba *phba = pci_get_drvdata(ctrl->pdev);
|
||||
|
||||
val &= ~MPU_MAILBOX_DB_RDY_MASK;
|
||||
val |= MPU_MAILBOX_DB_HI_MASK;
|
||||
|
@ -368,7 +392,10 @@ int be_mbox_notify(struct be_ctrl_info *ctrl)
|
|||
|
||||
status = be_mbox_db_ready_wait(ctrl);
|
||||
if (status != 0) {
|
||||
SE_DEBUG(DBG_LVL_1, " be_mbox_db_ready_wait failed\n");
|
||||
beiscsi_log(phba, KERN_ERR,
|
||||
BEISCSI_LOG_CONFIG | BEISCSI_LOG_MBOX,
|
||||
"BC_%d : be_mbox_db_ready_wait failed\n");
|
||||
|
||||
return status;
|
||||
}
|
||||
val = 0;
|
||||
|
@ -379,18 +406,27 @@ int be_mbox_notify(struct be_ctrl_info *ctrl)
|
|||
|
||||
status = be_mbox_db_ready_wait(ctrl);
|
||||
if (status != 0) {
|
||||
SE_DEBUG(DBG_LVL_1, " be_mbox_db_ready_wait failed\n");
|
||||
beiscsi_log(phba, KERN_ERR,
|
||||
BEISCSI_LOG_CONFIG | BEISCSI_LOG_MBOX,
|
||||
"BC_%d : be_mbox_db_ready_wait failed\n");
|
||||
|
||||
return status;
|
||||
}
|
||||
if (be_mcc_compl_is_new(compl)) {
|
||||
status = be_mcc_compl_process(ctrl, &mbox->compl);
|
||||
be_mcc_compl_use(compl);
|
||||
if (status) {
|
||||
SE_DEBUG(DBG_LVL_1, "After be_mcc_compl_process\n");
|
||||
beiscsi_log(phba, KERN_ERR,
|
||||
BEISCSI_LOG_CONFIG | BEISCSI_LOG_MBOX,
|
||||
"BC_%d : After be_mcc_compl_process\n");
|
||||
|
||||
return status;
|
||||
}
|
||||
} else {
|
||||
dev_err(&ctrl->pdev->dev, "invalid mailbox completion\n");
|
||||
beiscsi_log(phba, KERN_ERR,
|
||||
BEISCSI_LOG_CONFIG | BEISCSI_LOG_MBOX,
|
||||
"BC_%d : Invalid Mailbox Completion\n");
|
||||
|
||||
return -EBUSY;
|
||||
}
|
||||
return 0;
|
||||
|
@ -436,7 +472,10 @@ static int be_mbox_notify_wait(struct beiscsi_hba *phba)
|
|||
if (status)
|
||||
return status;
|
||||
} else {
|
||||
dev_err(&phba->pcidev->dev, "invalid mailbox completion\n");
|
||||
beiscsi_log(phba, KERN_ERR,
|
||||
BEISCSI_LOG_CONFIG | BEISCSI_LOG_MBOX,
|
||||
"BC_%d : invalid mailbox completion\n");
|
||||
|
||||
return -EBUSY;
|
||||
}
|
||||
return 0;
|
||||
|
@ -528,7 +567,6 @@ int beiscsi_cmd_eq_create(struct be_ctrl_info *ctrl,
|
|||
struct be_dma_mem *q_mem = &eq->dma_mem;
|
||||
int status;
|
||||
|
||||
SE_DEBUG(DBG_LVL_8, "In beiscsi_cmd_eq_create\n");
|
||||
spin_lock(&ctrl->mbox_lock);
|
||||
memset(wrb, 0, sizeof(*wrb));
|
||||
|
||||
|
@ -563,10 +601,10 @@ int beiscsi_cmd_eq_create(struct be_ctrl_info *ctrl,
|
|||
int be_cmd_fw_initialize(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;
|
||||
|
||||
SE_DEBUG(DBG_LVL_8, "In be_cmd_fw_initialize\n");
|
||||
spin_lock(&ctrl->mbox_lock);
|
||||
memset(wrb, 0, sizeof(*wrb));
|
||||
|
||||
|
@ -583,7 +621,8 @@ int be_cmd_fw_initialize(struct be_ctrl_info *ctrl)
|
|||
|
||||
status = be_mbox_notify(ctrl);
|
||||
if (status)
|
||||
SE_DEBUG(DBG_LVL_1, "be_cmd_fw_initialize Failed\n");
|
||||
beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
|
||||
"BC_%d : be_cmd_fw_initialize Failed\n");
|
||||
|
||||
spin_unlock(&ctrl->mbox_lock);
|
||||
return status;
|
||||
|
@ -596,11 +635,11 @@ int beiscsi_cmd_cq_create(struct be_ctrl_info *ctrl,
|
|||
struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
|
||||
struct be_cmd_req_cq_create *req = embedded_payload(wrb);
|
||||
struct be_cmd_resp_cq_create *resp = embedded_payload(wrb);
|
||||
struct beiscsi_hba *phba = pci_get_drvdata(ctrl->pdev);
|
||||
struct be_dma_mem *q_mem = &cq->dma_mem;
|
||||
void *ctxt = &req->context;
|
||||
int status;
|
||||
|
||||
SE_DEBUG(DBG_LVL_8, "In beiscsi_cmd_cq_create\n");
|
||||
spin_lock(&ctrl->mbox_lock);
|
||||
memset(wrb, 0, sizeof(*wrb));
|
||||
|
||||
|
@ -608,8 +647,6 @@ int beiscsi_cmd_cq_create(struct be_ctrl_info *ctrl,
|
|||
|
||||
be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_COMMON,
|
||||
OPCODE_COMMON_CQ_CREATE, sizeof(*req));
|
||||
if (!q_mem->va)
|
||||
SE_DEBUG(DBG_LVL_1, "uninitialized q_mem->va\n");
|
||||
|
||||
req->num_pages = cpu_to_le16(PAGES_4K_SPANNED(q_mem->va, q_mem->size));
|
||||
|
||||
|
@ -633,8 +670,10 @@ int beiscsi_cmd_cq_create(struct be_ctrl_info *ctrl,
|
|||
cq->id = le16_to_cpu(resp->cq_id);
|
||||
cq->created = true;
|
||||
} else
|
||||
SE_DEBUG(DBG_LVL_1, "In be_cmd_cq_create, status=ox%08x\n",
|
||||
status);
|
||||
beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
|
||||
"BC_%d : In be_cmd_cq_create, status=ox%08x\n",
|
||||
status);
|
||||
|
||||
spin_unlock(&ctrl->mbox_lock);
|
||||
|
||||
return status;
|
||||
|
@ -700,10 +739,14 @@ int beiscsi_cmd_q_destroy(struct be_ctrl_info *ctrl, struct be_queue_info *q,
|
|||
{
|
||||
struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
|
||||
struct be_cmd_req_q_destroy *req = embedded_payload(wrb);
|
||||
struct beiscsi_hba *phba = pci_get_drvdata(ctrl->pdev);
|
||||
u8 subsys = 0, opcode = 0;
|
||||
int status;
|
||||
|
||||
SE_DEBUG(DBG_LVL_8, "In beiscsi_cmd_q_destroy\n");
|
||||
beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_INIT,
|
||||
"BC_%d : In beiscsi_cmd_q_destroy "
|
||||
"queue_type : %d\n", queue_type);
|
||||
|
||||
spin_lock(&ctrl->mbox_lock);
|
||||
memset(wrb, 0, sizeof(*wrb));
|
||||
be_wrb_hdr_prepare(wrb, sizeof(*req), true, 0);
|
||||
|
@ -759,7 +802,6 @@ int be_cmd_create_default_pdu_queue(struct be_ctrl_info *ctrl,
|
|||
void *ctxt = &req->context;
|
||||
int status;
|
||||
|
||||
SE_DEBUG(DBG_LVL_8, "In be_cmd_create_default_pdu_queue\n");
|
||||
spin_lock(&ctrl->mbox_lock);
|
||||
memset(wrb, 0, sizeof(*wrb));
|
||||
|
||||
|
@ -830,6 +872,7 @@ int be_cmd_iscsi_post_sgl_pages(struct be_ctrl_info *ctrl,
|
|||
{
|
||||
struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
|
||||
struct be_post_sgl_pages_req *req = embedded_payload(wrb);
|
||||
struct beiscsi_hba *phba = pci_get_drvdata(ctrl->pdev);
|
||||
int status;
|
||||
unsigned int curr_pages;
|
||||
u32 internal_page_offset = 0;
|
||||
|
@ -860,8 +903,9 @@ int be_cmd_iscsi_post_sgl_pages(struct be_ctrl_info *ctrl,
|
|||
|
||||
status = be_mbox_notify(ctrl);
|
||||
if (status) {
|
||||
SE_DEBUG(DBG_LVL_1,
|
||||
"FW CMD to map iscsi frags failed.\n");
|
||||
beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
|
||||
"BC_%d : FW CMD to map iscsi frags failed.\n");
|
||||
|
||||
goto error;
|
||||
}
|
||||
} while (num_pages > 0);
|
||||
|
|
|
@ -50,21 +50,27 @@ struct iscsi_cls_session *beiscsi_session_create(struct iscsi_endpoint *ep,
|
|||
struct beiscsi_session *beiscsi_sess;
|
||||
struct beiscsi_io_task *io_task;
|
||||
|
||||
SE_DEBUG(DBG_LVL_8, "In beiscsi_session_create\n");
|
||||
|
||||
if (!ep) {
|
||||
SE_DEBUG(DBG_LVL_1, "beiscsi_session_create: invalid ep\n");
|
||||
printk(KERN_ERR
|
||||
"beiscsi_session_create: invalid ep\n");
|
||||
return NULL;
|
||||
}
|
||||
beiscsi_ep = ep->dd_data;
|
||||
phba = beiscsi_ep->phba;
|
||||
shost = phba->shost;
|
||||
|
||||
beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_CONFIG,
|
||||
"BS_%d : In beiscsi_session_create\n");
|
||||
|
||||
if (cmds_max > beiscsi_ep->phba->params.wrbs_per_cxn) {
|
||||
shost_printk(KERN_ERR, shost, "Cannot handle %d cmds."
|
||||
"Max cmds per session supported is %d. Using %d. "
|
||||
"\n", cmds_max,
|
||||
beiscsi_ep->phba->params.wrbs_per_cxn,
|
||||
beiscsi_ep->phba->params.wrbs_per_cxn);
|
||||
beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
|
||||
"BS_%d : Cannot handle %d cmds."
|
||||
"Max cmds per session supported is %d. Using %d."
|
||||
"\n", cmds_max,
|
||||
beiscsi_ep->phba->params.wrbs_per_cxn,
|
||||
beiscsi_ep->phba->params.wrbs_per_cxn);
|
||||
|
||||
cmds_max = beiscsi_ep->phba->params.wrbs_per_cxn;
|
||||
}
|
||||
|
||||
|
@ -102,7 +108,7 @@ void beiscsi_session_destroy(struct iscsi_cls_session *cls_session)
|
|||
struct iscsi_session *sess = cls_session->dd_data;
|
||||
struct beiscsi_session *beiscsi_sess = sess->dd_data;
|
||||
|
||||
SE_DEBUG(DBG_LVL_8, "In beiscsi_session_destroy\n");
|
||||
printk(KERN_INFO "In beiscsi_session_destroy\n");
|
||||
pci_pool_destroy(beiscsi_sess->bhs_pool);
|
||||
iscsi_session_teardown(cls_session);
|
||||
}
|
||||
|
@ -123,11 +129,13 @@ beiscsi_conn_create(struct iscsi_cls_session *cls_session, u32 cid)
|
|||
struct iscsi_session *sess;
|
||||
struct beiscsi_session *beiscsi_sess;
|
||||
|
||||
SE_DEBUG(DBG_LVL_8, "In beiscsi_conn_create ,cid"
|
||||
"from iscsi layer=%d\n", cid);
|
||||
shost = iscsi_session_to_shost(cls_session);
|
||||
phba = iscsi_host_priv(shost);
|
||||
|
||||
beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_CONFIG,
|
||||
"BS_%d : In beiscsi_conn_create ,cid"
|
||||
"from iscsi layer=%d\n", cid);
|
||||
|
||||
cls_conn = iscsi_conn_setup(cls_session, sizeof(*beiscsi_conn), cid);
|
||||
if (!cls_conn)
|
||||
return NULL;
|
||||
|
@ -154,12 +162,15 @@ static int beiscsi_bindconn_cid(struct beiscsi_hba *phba,
|
|||
unsigned int cid)
|
||||
{
|
||||
if (phba->conn_table[cid]) {
|
||||
SE_DEBUG(DBG_LVL_1,
|
||||
"Connection table already occupied. Detected clash\n");
|
||||
beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
|
||||
"BS_%d : Connection table already occupied. Detected clash\n");
|
||||
|
||||
return -EINVAL;
|
||||
} else {
|
||||
SE_DEBUG(DBG_LVL_8, "phba->conn_table[%d]=%p(beiscsi_conn)\n",
|
||||
cid, beiscsi_conn);
|
||||
beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_CONFIG,
|
||||
"BS_%d : phba->conn_table[%d]=%p(beiscsi_conn)\n",
|
||||
cid, beiscsi_conn);
|
||||
|
||||
phba->conn_table[cid] = beiscsi_conn;
|
||||
}
|
||||
return 0;
|
||||
|
@ -184,7 +195,6 @@ int beiscsi_conn_bind(struct iscsi_cls_session *cls_session,
|
|||
struct beiscsi_endpoint *beiscsi_ep;
|
||||
struct iscsi_endpoint *ep;
|
||||
|
||||
SE_DEBUG(DBG_LVL_8, "In beiscsi_conn_bind\n");
|
||||
ep = iscsi_lookup_endpoint(transport_fd);
|
||||
if (!ep)
|
||||
return -EINVAL;
|
||||
|
@ -195,17 +205,21 @@ int beiscsi_conn_bind(struct iscsi_cls_session *cls_session,
|
|||
return -EINVAL;
|
||||
|
||||
if (beiscsi_ep->phba != phba) {
|
||||
SE_DEBUG(DBG_LVL_8,
|
||||
"beiscsi_ep->hba=%p not equal to phba=%p\n",
|
||||
beiscsi_ep->phba, phba);
|
||||
beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
|
||||
"BS_%d : beiscsi_ep->hba=%p not equal to phba=%p\n",
|
||||
beiscsi_ep->phba, phba);
|
||||
|
||||
return -EEXIST;
|
||||
}
|
||||
|
||||
beiscsi_conn->beiscsi_conn_cid = beiscsi_ep->ep_cid;
|
||||
beiscsi_conn->ep = beiscsi_ep;
|
||||
beiscsi_ep->conn = beiscsi_conn;
|
||||
SE_DEBUG(DBG_LVL_8, "beiscsi_conn=%p conn=%p ep_cid=%d\n",
|
||||
beiscsi_conn, conn, beiscsi_ep->ep_cid);
|
||||
|
||||
beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_CONFIG,
|
||||
"BS_%d : beiscsi_conn=%p conn=%p ep_cid=%d\n",
|
||||
beiscsi_conn, conn, beiscsi_ep->ep_cid);
|
||||
|
||||
return beiscsi_bindconn_cid(phba, beiscsi_conn, beiscsi_ep->ep_cid);
|
||||
}
|
||||
|
||||
|
@ -219,8 +233,9 @@ static int beiscsi_create_ipv4_iface(struct beiscsi_hba *phba)
|
|||
ISCSI_IFACE_TYPE_IPV4,
|
||||
0, 0);
|
||||
if (!phba->ipv4_iface) {
|
||||
shost_printk(KERN_ERR, phba->shost, "Could not "
|
||||
"create default IPv4 address.\n");
|
||||
beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
|
||||
"BS_%d : Could not "
|
||||
"create default IPv4 address.\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
|
@ -237,8 +252,9 @@ static int beiscsi_create_ipv6_iface(struct beiscsi_hba *phba)
|
|||
ISCSI_IFACE_TYPE_IPV6,
|
||||
0, 0);
|
||||
if (!phba->ipv6_iface) {
|
||||
shost_printk(KERN_ERR, phba->shost, "Could not "
|
||||
"create default IPv6 address.\n");
|
||||
beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
|
||||
"BS_%d : Could not "
|
||||
"create default IPv6 address.\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
|
@ -299,12 +315,14 @@ beiscsi_set_static_ip(struct Scsi_Host *shost,
|
|||
iface_ip = nla_data(nla);
|
||||
break;
|
||||
default:
|
||||
shost_printk(KERN_ERR, shost, "Unsupported param %d\n",
|
||||
iface_param->param);
|
||||
beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
|
||||
"BS_%d : Unsupported param %d\n",
|
||||
iface_param->param);
|
||||
}
|
||||
|
||||
if (!iface_ip || !iface_subnet) {
|
||||
shost_printk(KERN_ERR, shost, "IP and Subnet Mask required\n");
|
||||
beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
|
||||
"BS_%d : IP and Subnet Mask required\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
@ -335,8 +353,9 @@ beiscsi_set_ipv4(struct Scsi_Host *shost,
|
|||
ret = beiscsi_set_static_ip(shost, iface_param,
|
||||
data, dt_len);
|
||||
else
|
||||
shost_printk(KERN_ERR, shost, "Invalid BOOTPROTO: %d\n",
|
||||
iface_param->value[0]);
|
||||
beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
|
||||
"BS_%d : Invalid BOOTPROTO: %d\n",
|
||||
iface_param->value[0]);
|
||||
break;
|
||||
case ISCSI_NET_PARAM_IFACE_ENABLE:
|
||||
if (iface_param->value[0] == ISCSI_IFACE_ENABLE)
|
||||
|
@ -350,8 +369,9 @@ beiscsi_set_ipv4(struct Scsi_Host *shost,
|
|||
data, dt_len);
|
||||
break;
|
||||
default:
|
||||
shost_printk(KERN_ERR, shost, "Param %d not supported\n",
|
||||
iface_param->param);
|
||||
beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
|
||||
"BS_%d : Param %d not supported\n",
|
||||
iface_param->param);
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
@ -379,8 +399,9 @@ beiscsi_set_ipv6(struct Scsi_Host *shost,
|
|||
ISCSI_BOOTPROTO_STATIC);
|
||||
break;
|
||||
default:
|
||||
shost_printk(KERN_ERR, shost, "Param %d not supported\n",
|
||||
iface_param->param);
|
||||
beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
|
||||
"BS_%d : Param %d not supported\n",
|
||||
iface_param->param);
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
@ -390,6 +411,7 @@ int be2iscsi_iface_set_param(struct Scsi_Host *shost,
|
|||
void *data, uint32_t dt_len)
|
||||
{
|
||||
struct iscsi_iface_param_info *iface_param = NULL;
|
||||
struct beiscsi_hba *phba = iscsi_host_priv(shost);
|
||||
struct nlattr *attrib;
|
||||
uint32_t rm_len = dt_len;
|
||||
int ret = 0 ;
|
||||
|
@ -404,9 +426,11 @@ int be2iscsi_iface_set_param(struct Scsi_Host *shost,
|
|||
* BE2ISCSI only supports 1 interface
|
||||
*/
|
||||
if (iface_param->iface_num) {
|
||||
shost_printk(KERN_ERR, shost, "Invalid iface_num %d."
|
||||
"Only iface_num 0 is supported.\n",
|
||||
iface_param->iface_num);
|
||||
beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
|
||||
"BS_%d : Invalid iface_num %d."
|
||||
"Only iface_num 0 is supported.\n",
|
||||
iface_param->iface_num);
|
||||
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
@ -420,9 +444,9 @@ int be2iscsi_iface_set_param(struct Scsi_Host *shost,
|
|||
data, dt_len);
|
||||
break;
|
||||
default:
|
||||
shost_printk(KERN_ERR, shost,
|
||||
"Invalid iface type :%d passed\n",
|
||||
iface_param->iface_type);
|
||||
beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
|
||||
"BS_%d : Invalid iface type :%d passed\n",
|
||||
iface_param->iface_type);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -518,7 +542,10 @@ int beiscsi_ep_get_param(struct iscsi_endpoint *ep,
|
|||
struct beiscsi_endpoint *beiscsi_ep = ep->dd_data;
|
||||
int len = 0;
|
||||
|
||||
SE_DEBUG(DBG_LVL_8, "In beiscsi_ep_get_param, param= %d\n", param);
|
||||
beiscsi_log(beiscsi_ep->phba, KERN_INFO,
|
||||
BEISCSI_LOG_CONFIG,
|
||||
"BS_%d : In beiscsi_ep_get_param,"
|
||||
" param= %d\n", param);
|
||||
|
||||
switch (param) {
|
||||
case ISCSI_PARAM_CONN_PORT:
|
||||
|
@ -541,9 +568,14 @@ int beiscsi_set_param(struct iscsi_cls_conn *cls_conn,
|
|||
{
|
||||
struct iscsi_conn *conn = cls_conn->dd_data;
|
||||
struct iscsi_session *session = conn->session;
|
||||
struct beiscsi_hba *phba = NULL;
|
||||
int ret;
|
||||
|
||||
SE_DEBUG(DBG_LVL_8, "In beiscsi_conn_set_param, param= %d\n", param);
|
||||
phba = ((struct beiscsi_conn *)conn->dd_data)->phba;
|
||||
beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_CONFIG,
|
||||
"BS_%d : In beiscsi_conn_set_param,"
|
||||
" param= %d\n", param);
|
||||
|
||||
ret = iscsi_set_param(cls_conn, param, buf, buflen);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
@ -593,7 +625,9 @@ static int beiscsi_get_initname(char *buf, struct beiscsi_hba *phba)
|
|||
|
||||
tag = be_cmd_get_initname(phba);
|
||||
if (!tag) {
|
||||
SE_DEBUG(DBG_LVL_1, "Getting Initiator Name Failed\n");
|
||||
beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
|
||||
"BS_%d : Getting Initiator Name Failed\n");
|
||||
|
||||
return -EBUSY;
|
||||
} else
|
||||
wait_event_interruptible(phba->ctrl.mcc_wait[tag],
|
||||
|
@ -604,9 +638,12 @@ static int beiscsi_get_initname(char *buf, struct beiscsi_hba *phba)
|
|||
status = phba->ctrl.mcc_numtag[tag] & 0x000000FF;
|
||||
|
||||
if (status || extd_status) {
|
||||
SE_DEBUG(DBG_LVL_1, "MailBox Command Failed with "
|
||||
"status = %d extd_status = %d\n",
|
||||
status, extd_status);
|
||||
beiscsi_log(phba, KERN_ERR,
|
||||
BEISCSI_LOG_CONFIG | BEISCSI_LOG_MBOX,
|
||||
"BS_%d : MailBox Command Failed with "
|
||||
"status = %d extd_status = %d\n",
|
||||
status, extd_status);
|
||||
|
||||
free_mcc_tag(&phba->ctrl, tag);
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
@ -650,7 +687,9 @@ static int beiscsi_get_port_speed(struct Scsi_Host *shost)
|
|||
|
||||
tag = be_cmd_get_port_speed(phba);
|
||||
if (!tag) {
|
||||
SE_DEBUG(DBG_LVL_1, "Getting Port Speed Failed\n");
|
||||
beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
|
||||
"BS_%d : Getting Port Speed Failed\n");
|
||||
|
||||
return -EBUSY;
|
||||
} else
|
||||
wait_event_interruptible(phba->ctrl.mcc_wait[tag],
|
||||
|
@ -661,9 +700,12 @@ static int beiscsi_get_port_speed(struct Scsi_Host *shost)
|
|||
status = phba->ctrl.mcc_numtag[tag] & 0x000000FF;
|
||||
|
||||
if (status || extd_status) {
|
||||
SE_DEBUG(DBG_LVL_1, "MailBox Command Failed with "
|
||||
"status = %d extd_status = %d\n",
|
||||
status, extd_status);
|
||||
beiscsi_log(phba, KERN_ERR,
|
||||
BEISCSI_LOG_CONFIG | BEISCSI_LOG_MBOX,
|
||||
"BS_%d : MailBox Command Failed with "
|
||||
"status = %d extd_status = %d\n",
|
||||
status, extd_status);
|
||||
|
||||
free_mcc_tag(&phba->ctrl, tag);
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
@ -704,20 +746,24 @@ int beiscsi_get_host_param(struct Scsi_Host *shost,
|
|||
struct beiscsi_hba *phba = iscsi_host_priv(shost);
|
||||
int status = 0;
|
||||
|
||||
SE_DEBUG(DBG_LVL_8, "In beiscsi_get_host_param, param= %d\n", param);
|
||||
beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_CONFIG,
|
||||
"BS_%d : In beiscsi_get_host_param,"
|
||||
" param= %d\n", param);
|
||||
|
||||
switch (param) {
|
||||
case ISCSI_HOST_PARAM_HWADDRESS:
|
||||
status = beiscsi_get_macaddr(buf, phba);
|
||||
if (status < 0) {
|
||||
SE_DEBUG(DBG_LVL_1, "beiscsi_get_macaddr Failed\n");
|
||||
beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
|
||||
"BS_%d : beiscsi_get_macaddr Failed\n");
|
||||
return status;
|
||||
}
|
||||
break;
|
||||
case ISCSI_HOST_PARAM_INITIATOR_NAME:
|
||||
status = beiscsi_get_initname(buf, phba);
|
||||
if (status < 0) {
|
||||
SE_DEBUG(DBG_LVL_1,
|
||||
"Retreiving Initiator Name Failed\n");
|
||||
beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
|
||||
"BS_%d : Retreiving Initiator Name Failed\n");
|
||||
return status;
|
||||
}
|
||||
break;
|
||||
|
@ -728,8 +774,8 @@ int beiscsi_get_host_param(struct Scsi_Host *shost,
|
|||
case ISCSI_HOST_PARAM_PORT_SPEED:
|
||||
status = beiscsi_get_port_speed(shost);
|
||||
if (status) {
|
||||
SE_DEBUG(DBG_LVL_1,
|
||||
"Retreiving Port Speed Failed\n");
|
||||
beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
|
||||
"BS_%d : Retreiving Port Speed Failed\n");
|
||||
return status;
|
||||
}
|
||||
status = sprintf(buf, "%s\n", iscsi_get_port_speed_name(shost));
|
||||
|
@ -768,8 +814,12 @@ void beiscsi_conn_get_stats(struct iscsi_cls_conn *cls_conn,
|
|||
struct iscsi_stats *stats)
|
||||
{
|
||||
struct iscsi_conn *conn = cls_conn->dd_data;
|
||||
struct beiscsi_hba *phba = NULL;
|
||||
|
||||
phba = ((struct beiscsi_conn *)conn->dd_data)->phba;
|
||||
beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_CONFIG,
|
||||
"BS_%d : In beiscsi_conn_get_stats\n");
|
||||
|
||||
SE_DEBUG(DBG_LVL_8, "In beiscsi_conn_get_stats\n");
|
||||
stats->txdata_octets = conn->txdata_octets;
|
||||
stats->rxdata_octets = conn->rxdata_octets;
|
||||
stats->dataout_pdus = conn->dataout_pdus_cnt;
|
||||
|
@ -829,11 +879,16 @@ int beiscsi_conn_start(struct iscsi_cls_conn *cls_conn)
|
|||
struct beiscsi_endpoint *beiscsi_ep;
|
||||
struct beiscsi_offload_params params;
|
||||
|
||||
SE_DEBUG(DBG_LVL_8, "In beiscsi_conn_start\n");
|
||||
beiscsi_log(beiscsi_conn->phba, KERN_INFO,
|
||||
BEISCSI_LOG_CONFIG,
|
||||
"BS_%d : In beiscsi_conn_start\n");
|
||||
|
||||
memset(¶ms, 0, sizeof(struct beiscsi_offload_params));
|
||||
beiscsi_ep = beiscsi_conn->ep;
|
||||
if (!beiscsi_ep)
|
||||
SE_DEBUG(DBG_LVL_1, "In beiscsi_conn_start , no beiscsi_ep\n");
|
||||
beiscsi_log(beiscsi_conn->phba, KERN_ERR,
|
||||
BEISCSI_LOG_CONFIG,
|
||||
"BS_%d : In beiscsi_conn_start , no beiscsi_ep\n");
|
||||
|
||||
beiscsi_conn->login_in_progress = 0;
|
||||
beiscsi_set_params_for_offld(beiscsi_conn, ¶ms);
|
||||
|
@ -907,19 +962,27 @@ static int beiscsi_open_conn(struct iscsi_endpoint *ep,
|
|||
unsigned int tag, wrb_num;
|
||||
int ret = -ENOMEM;
|
||||
|
||||
SE_DEBUG(DBG_LVL_8, "In beiscsi_open_conn\n");
|
||||
beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_CONFIG,
|
||||
"BS_%d : In beiscsi_open_conn\n");
|
||||
|
||||
beiscsi_ep->ep_cid = beiscsi_get_cid(phba);
|
||||
if (beiscsi_ep->ep_cid == 0xFFFF) {
|
||||
SE_DEBUG(DBG_LVL_1, "No free cid available\n");
|
||||
beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
|
||||
"BS_%d : No free cid available\n");
|
||||
return ret;
|
||||
}
|
||||
SE_DEBUG(DBG_LVL_8, "In beiscsi_open_conn, ep_cid=%d\n",
|
||||
beiscsi_ep->ep_cid);
|
||||
|
||||
beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_CONFIG,
|
||||
"BS_%d : In beiscsi_open_conn, ep_cid=%d\n",
|
||||
beiscsi_ep->ep_cid);
|
||||
|
||||
phba->ep_array[beiscsi_ep->ep_cid -
|
||||
phba->fw_config.iscsi_cid_start] = ep;
|
||||
if (beiscsi_ep->ep_cid > (phba->fw_config.iscsi_cid_start +
|
||||
phba->params.cxns_per_ctrl * 2)) {
|
||||
SE_DEBUG(DBG_LVL_1, "Failed in allocate iscsi cid\n");
|
||||
|
||||
beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
|
||||
"BS_%d : Failed in allocate iscsi cid\n");
|
||||
goto free_ep;
|
||||
}
|
||||
|
||||
|
@ -928,9 +991,11 @@ static int beiscsi_open_conn(struct iscsi_endpoint *ep,
|
|||
sizeof(struct tcp_connect_and_offload_in),
|
||||
&nonemb_cmd.dma);
|
||||
if (nonemb_cmd.va == NULL) {
|
||||
SE_DEBUG(DBG_LVL_1,
|
||||
"Failed to allocate memory for mgmt_open_connection"
|
||||
"\n");
|
||||
|
||||
beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
|
||||
"BS_%d : Failed to allocate memory for"
|
||||
" mgmt_open_connection\n");
|
||||
|
||||
beiscsi_put_cid(phba, beiscsi_ep->ep_cid);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
@ -938,9 +1003,10 @@ static int beiscsi_open_conn(struct iscsi_endpoint *ep,
|
|||
memset(nonemb_cmd.va, 0, nonemb_cmd.size);
|
||||
tag = mgmt_open_connection(phba, dst_addr, beiscsi_ep, &nonemb_cmd);
|
||||
if (!tag) {
|
||||
SE_DEBUG(DBG_LVL_1,
|
||||
"mgmt_open_connection Failed for cid=%d\n",
|
||||
beiscsi_ep->ep_cid);
|
||||
beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
|
||||
"BS_%d : mgmt_open_connection Failed for cid=%d\n",
|
||||
beiscsi_ep->ep_cid);
|
||||
|
||||
beiscsi_put_cid(phba, beiscsi_ep->ep_cid);
|
||||
pci_free_consistent(phba->ctrl.pdev, nonemb_cmd.size,
|
||||
nonemb_cmd.va, nonemb_cmd.dma);
|
||||
|
@ -953,9 +1019,12 @@ static int beiscsi_open_conn(struct iscsi_endpoint *ep,
|
|||
extd_status = (phba->ctrl.mcc_numtag[tag] & 0x0000FF00) >> 8;
|
||||
status = phba->ctrl.mcc_numtag[tag] & 0x000000FF;
|
||||
if (status || extd_status) {
|
||||
SE_DEBUG(DBG_LVL_1, "mgmt_open_connection Failed"
|
||||
" status = %d extd_status = %d\n",
|
||||
status, extd_status);
|
||||
beiscsi_log(phba, KERN_ERR,
|
||||
BEISCSI_LOG_CONFIG | BEISCSI_LOG_MBOX,
|
||||
"BS_%d : mgmt_open_connection Failed"
|
||||
" status = %d extd_status = %d\n",
|
||||
status, extd_status);
|
||||
|
||||
free_mcc_tag(&phba->ctrl, tag);
|
||||
pci_free_consistent(phba->ctrl.pdev, nonemb_cmd.size,
|
||||
nonemb_cmd.va, nonemb_cmd.dma);
|
||||
|
@ -968,7 +1037,8 @@ static int beiscsi_open_conn(struct iscsi_endpoint *ep,
|
|||
beiscsi_ep = ep->dd_data;
|
||||
beiscsi_ep->fw_handle = ptcpcnct_out->connection_handle;
|
||||
beiscsi_ep->cid_vld = 1;
|
||||
SE_DEBUG(DBG_LVL_8, "mgmt_open_connection Success\n");
|
||||
beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_CONFIG,
|
||||
"BS_%d : mgmt_open_connection Success\n");
|
||||
}
|
||||
pci_free_consistent(phba->ctrl.pdev, nonemb_cmd.size,
|
||||
nonemb_cmd.va, nonemb_cmd.dma);
|
||||
|
@ -996,18 +1066,19 @@ beiscsi_ep_connect(struct Scsi_Host *shost, struct sockaddr *dst_addr,
|
|||
struct iscsi_endpoint *ep;
|
||||
int ret;
|
||||
|
||||
SE_DEBUG(DBG_LVL_8, "In beiscsi_ep_connect\n");
|
||||
if (shost)
|
||||
phba = iscsi_host_priv(shost);
|
||||
else {
|
||||
ret = -ENXIO;
|
||||
SE_DEBUG(DBG_LVL_1, "shost is NULL\n");
|
||||
printk(KERN_ERR
|
||||
"beiscsi_ep_connect shost is NULL\n");
|
||||
return ERR_PTR(ret);
|
||||
}
|
||||
|
||||
if (phba->state != BE_ADAPTER_UP) {
|
||||
ret = -EBUSY;
|
||||
SE_DEBUG(DBG_LVL_1, "The Adapter state is Not UP\n");
|
||||
beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
|
||||
"BS_%d : The Adapter state is Not UP\n");
|
||||
return ERR_PTR(ret);
|
||||
}
|
||||
|
||||
|
@ -1022,7 +1093,8 @@ beiscsi_ep_connect(struct Scsi_Host *shost, struct sockaddr *dst_addr,
|
|||
beiscsi_ep->openiscsi_ep = ep;
|
||||
ret = beiscsi_open_conn(ep, NULL, dst_addr, non_blocking);
|
||||
if (ret) {
|
||||
SE_DEBUG(DBG_LVL_1, "Failed in beiscsi_open_conn\n");
|
||||
beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
|
||||
"BS_%d : Failed in beiscsi_open_conn\n");
|
||||
goto free_ep;
|
||||
}
|
||||
|
||||
|
@ -1044,7 +1116,9 @@ int beiscsi_ep_poll(struct iscsi_endpoint *ep, int timeout_ms)
|
|||
{
|
||||
struct beiscsi_endpoint *beiscsi_ep = ep->dd_data;
|
||||
|
||||
SE_DEBUG(DBG_LVL_8, "In beiscsi_ep_poll\n");
|
||||
beiscsi_log(beiscsi_ep->phba, KERN_INFO, BEISCSI_LOG_CONFIG,
|
||||
"BS_%d : In beiscsi_ep_poll\n");
|
||||
|
||||
if (beiscsi_ep->cid_vld == 1)
|
||||
return 1;
|
||||
else
|
||||
|
@ -1064,8 +1138,10 @@ static int beiscsi_close_conn(struct beiscsi_endpoint *beiscsi_ep, int flag)
|
|||
|
||||
tag = mgmt_upload_connection(phba, beiscsi_ep->ep_cid, flag);
|
||||
if (!tag) {
|
||||
SE_DEBUG(DBG_LVL_8, "upload failed for cid 0x%x\n",
|
||||
beiscsi_ep->ep_cid);
|
||||
beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_CONFIG,
|
||||
"BS_%d : upload failed for cid 0x%x\n",
|
||||
beiscsi_ep->ep_cid);
|
||||
|
||||
ret = -EAGAIN;
|
||||
} else {
|
||||
wait_event_interruptible(phba->ctrl.mcc_wait[tag],
|
||||
|
@ -1086,7 +1162,8 @@ static int beiscsi_unbind_conn_to_cid(struct beiscsi_hba *phba,
|
|||
if (phba->conn_table[cid])
|
||||
phba->conn_table[cid] = NULL;
|
||||
else {
|
||||
SE_DEBUG(DBG_LVL_8, "Connection table Not occupied.\n");
|
||||
beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_CONFIG,
|
||||
"BS_%d : Connection table Not occupied.\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
return 0;
|
||||
|
@ -1108,27 +1185,31 @@ void beiscsi_ep_disconnect(struct iscsi_endpoint *ep)
|
|||
|
||||
beiscsi_ep = ep->dd_data;
|
||||
phba = beiscsi_ep->phba;
|
||||
SE_DEBUG(DBG_LVL_8, "In beiscsi_ep_disconnect for ep_cid = %d\n",
|
||||
beiscsi_ep->ep_cid);
|
||||
beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_CONFIG,
|
||||
"BS_%d : In beiscsi_ep_disconnect for ep_cid = %d\n",
|
||||
beiscsi_ep->ep_cid);
|
||||
|
||||
if (!beiscsi_ep->conn) {
|
||||
SE_DEBUG(DBG_LVL_8, "In beiscsi_ep_disconnect, no "
|
||||
"beiscsi_ep\n");
|
||||
beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_CONFIG,
|
||||
"BS_%d : In beiscsi_ep_disconnect, no "
|
||||
"beiscsi_ep\n");
|
||||
return;
|
||||
}
|
||||
beiscsi_conn = beiscsi_ep->conn;
|
||||
iscsi_suspend_queue(beiscsi_conn->conn);
|
||||
|
||||
SE_DEBUG(DBG_LVL_8, "In beiscsi_ep_disconnect ep_cid = %d\n",
|
||||
beiscsi_ep->ep_cid);
|
||||
beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_CONFIG,
|
||||
"BS_%d : In beiscsi_ep_disconnect ep_cid = %d\n",
|
||||
beiscsi_ep->ep_cid);
|
||||
|
||||
tag = mgmt_invalidate_connection(phba, beiscsi_ep,
|
||||
beiscsi_ep->ep_cid, 1,
|
||||
savecfg_flag);
|
||||
if (!tag) {
|
||||
SE_DEBUG(DBG_LVL_1,
|
||||
"mgmt_invalidate_connection Failed for cid=%d\n",
|
||||
beiscsi_ep->ep_cid);
|
||||
beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
|
||||
"BS_%d : mgmt_invalidate_connection"
|
||||
" Failed for cid=%d\n",
|
||||
beiscsi_ep->ep_cid);
|
||||
} else {
|
||||
wait_event_interruptible(phba->ctrl.mcc_wait[tag],
|
||||
phba->ctrl.mcc_numtag[tag]);
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -24,6 +24,8 @@
|
|||
#include <linux/pci.h>
|
||||
#include <linux/if_ether.h>
|
||||
#include <linux/in.h>
|
||||
#include <linux/ctype.h>
|
||||
#include <linux/module.h>
|
||||
#include <scsi/scsi.h>
|
||||
#include <scsi/scsi_cmnd.h>
|
||||
#include <scsi/scsi_device.h>
|
||||
|
@ -85,23 +87,6 @@
|
|||
#define IIOC_SCSI_DATA 0x05 /* Write Operation */
|
||||
|
||||
#define INVALID_SESS_HANDLE 0xFFFFFFFF
|
||||
#define DBG_LVL 0x00000001
|
||||
#define DBG_LVL_1 0x00000001
|
||||
#define DBG_LVL_2 0x00000002
|
||||
#define DBG_LVL_3 0x00000004
|
||||
#define DBG_LVL_4 0x00000008
|
||||
#define DBG_LVL_5 0x00000010
|
||||
#define DBG_LVL_6 0x00000020
|
||||
#define DBG_LVL_7 0x00000040
|
||||
#define DBG_LVL_8 0x00000080
|
||||
|
||||
#define SE_DEBUG(debug_mask, fmt, args...) \
|
||||
do { \
|
||||
if (debug_mask & DBG_LVL) { \
|
||||
printk(KERN_ERR "(%s():%d):", __func__, __LINE__);\
|
||||
printk(fmt, ##args); \
|
||||
} \
|
||||
} while (0);
|
||||
|
||||
#define BE_ADAPTER_UP 0x00000000
|
||||
#define BE_ADAPTER_LINK_DOWN 0x00000001
|
||||
|
@ -352,6 +337,8 @@ struct beiscsi_hba {
|
|||
struct mgmt_session_info boot_sess;
|
||||
struct invalidate_command_table inv_tbl[128];
|
||||
|
||||
unsigned int attr_log_enable;
|
||||
|
||||
};
|
||||
|
||||
struct beiscsi_session {
|
||||
|
@ -861,4 +848,20 @@ struct hwi_context_memory {
|
|||
struct hwi_async_pdu_context *pasync_ctx;
|
||||
};
|
||||
|
||||
/* Logging related definitions */
|
||||
#define BEISCSI_LOG_INIT 0x0001 /* Initialization events */
|
||||
#define BEISCSI_LOG_MBOX 0x0002 /* Mailbox Events */
|
||||
#define BEISCSI_LOG_MISC 0x0004 /* Miscllaneous Events */
|
||||
#define BEISCSI_LOG_EH 0x0008 /* Error Handler */
|
||||
#define BEISCSI_LOG_IO 0x0010 /* IO Code Path */
|
||||
#define BEISCSI_LOG_CONFIG 0x0020 /* CONFIG Code Path */
|
||||
|
||||
#define beiscsi_log(phba, level, mask, fmt, arg...) \
|
||||
do { \
|
||||
uint32_t log_value = phba->attr_log_enable; \
|
||||
if (((mask) & log_value) || (level[1] <= '3')) \
|
||||
shost_printk(level, phba->shost, \
|
||||
fmt, __LINE__, ##arg); \
|
||||
} while (0)
|
||||
|
||||
#endif
|
||||
|
|
|
@ -42,7 +42,10 @@ unsigned int mgmt_reopen_session(struct beiscsi_hba *phba,
|
|||
struct be_cmd_reopen_session_req *req;
|
||||
unsigned int tag = 0;
|
||||
|
||||
SE_DEBUG(DBG_LVL_8, "In bescsi_get_boot_target\n");
|
||||
beiscsi_log(phba, KERN_INFO,
|
||||
BEISCSI_LOG_CONFIG | BEISCSI_LOG_MBOX,
|
||||
"BG_%d : In bescsi_get_boot_target\n");
|
||||
|
||||
spin_lock(&ctrl->mbox_lock);
|
||||
tag = alloc_mcc_tag(phba);
|
||||
if (!tag) {
|
||||
|
@ -74,7 +77,10 @@ unsigned int mgmt_get_boot_target(struct beiscsi_hba *phba)
|
|||
struct be_cmd_get_boot_target_req *req;
|
||||
unsigned int tag = 0;
|
||||
|
||||
SE_DEBUG(DBG_LVL_8, "In bescsi_get_boot_target\n");
|
||||
beiscsi_log(phba, KERN_INFO,
|
||||
BEISCSI_LOG_CONFIG | BEISCSI_LOG_MBOX,
|
||||
"BG_%d : In bescsi_get_boot_target\n");
|
||||
|
||||
spin_lock(&ctrl->mbox_lock);
|
||||
tag = alloc_mcc_tag(phba);
|
||||
if (!tag) {
|
||||
|
@ -106,7 +112,10 @@ unsigned int mgmt_get_session_info(struct beiscsi_hba *phba,
|
|||
struct be_cmd_get_session_resp *resp;
|
||||
struct be_sge *sge;
|
||||
|
||||
SE_DEBUG(DBG_LVL_8, "In beiscsi_get_session_info\n");
|
||||
beiscsi_log(phba, KERN_INFO,
|
||||
BEISCSI_LOG_CONFIG | BEISCSI_LOG_MBOX,
|
||||
"BG_%d : In beiscsi_get_session_info\n");
|
||||
|
||||
spin_lock(&ctrl->mbox_lock);
|
||||
tag = alloc_mcc_tag(phba);
|
||||
if (!tag) {
|
||||
|
@ -165,16 +174,16 @@ int mgmt_get_fw_config(struct be_ctrl_info *ctrl,
|
|||
phba->fw_config.iscsi_cid_count =
|
||||
pfw_cfg->ulp[0].sq_count;
|
||||
if (phba->fw_config.iscsi_cid_count > (BE2_MAX_SESSIONS / 2)) {
|
||||
SE_DEBUG(DBG_LVL_8,
|
||||
"FW reported MAX CXNS as %d\t"
|
||||
"Max Supported = %d.\n",
|
||||
phba->fw_config.iscsi_cid_count,
|
||||
BE2_MAX_SESSIONS);
|
||||
beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_INIT,
|
||||
"BG_%d : FW reported MAX CXNS as %d\t"
|
||||
"Max Supported = %d.\n",
|
||||
phba->fw_config.iscsi_cid_count,
|
||||
BE2_MAX_SESSIONS);
|
||||
phba->fw_config.iscsi_cid_count = BE2_MAX_SESSIONS / 2;
|
||||
}
|
||||
} else {
|
||||
shost_printk(KERN_WARNING, phba->shost,
|
||||
"Failed in mgmt_get_fw_config\n");
|
||||
beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_INIT,
|
||||
"BG_%d : Failed in mgmt_get_fw_config\n");
|
||||
}
|
||||
|
||||
spin_unlock(&ctrl->mbox_lock);
|
||||
|
@ -194,9 +203,9 @@ int mgmt_check_supported_fw(struct be_ctrl_info *ctrl,
|
|||
sizeof(struct be_mgmt_controller_attributes),
|
||||
&nonemb_cmd.dma);
|
||||
if (nonemb_cmd.va == NULL) {
|
||||
SE_DEBUG(DBG_LVL_1,
|
||||
"Failed to allocate memory for mgmt_check_supported_fw"
|
||||
"\n");
|
||||
beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
|
||||
"BG_%d : Failed to allocate memory for "
|
||||
"mgmt_check_supported_fw\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
nonemb_cmd.size = sizeof(struct be_mgmt_controller_attributes);
|
||||
|
@ -213,18 +222,23 @@ int mgmt_check_supported_fw(struct be_ctrl_info *ctrl,
|
|||
status = be_mbox_notify(ctrl);
|
||||
if (!status) {
|
||||
struct be_mgmt_controller_attributes_resp *resp = nonemb_cmd.va;
|
||||
SE_DEBUG(DBG_LVL_8, "Firmware version of CMD: %s\n",
|
||||
resp->params.hba_attribs.flashrom_version_string);
|
||||
SE_DEBUG(DBG_LVL_8, "Firmware version is : %s\n",
|
||||
resp->params.hba_attribs.firmware_version_string);
|
||||
SE_DEBUG(DBG_LVL_8,
|
||||
"Developer Build, not performing version check...\n");
|
||||
beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_INIT,
|
||||
"BG_%d : Firmware Version of CMD : %s\n"
|
||||
"Firmware Version is : %s\n"
|
||||
"Developer Build, not performing version check...\n",
|
||||
resp->params.hba_attribs
|
||||
.flashrom_version_string,
|
||||
resp->params.hba_attribs.
|
||||
firmware_version_string);
|
||||
|
||||
phba->fw_config.iscsi_features =
|
||||
resp->params.hba_attribs.iscsi_features;
|
||||
SE_DEBUG(DBG_LVL_8, " phba->fw_config.iscsi_features = %d\n",
|
||||
phba->fw_config.iscsi_features);
|
||||
beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_INIT,
|
||||
"BM_%d : phba->fw_config.iscsi_features = %d\n",
|
||||
phba->fw_config.iscsi_features);
|
||||
} else
|
||||
SE_DEBUG(DBG_LVL_1, " Failed in mgmt_check_supported_fw\n");
|
||||
beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
|
||||
"BG_%d : Failed in mgmt_check_supported_fw\n");
|
||||
spin_unlock(&ctrl->mbox_lock);
|
||||
if (nonemb_cmd.va)
|
||||
pci_free_consistent(ctrl->pdev, nonemb_cmd.size,
|
||||
|
@ -273,9 +287,10 @@ unsigned int mgmt_vendor_specific_fw_cmd(struct be_ctrl_info *ctrl,
|
|||
OPCODE_COMMON_READ_FLASH, sizeof(*req));
|
||||
break;
|
||||
default:
|
||||
shost_printk(KERN_WARNING, phba->shost,
|
||||
"Unsupported cmd = 0x%x\n\n", bsg_req->rqst_data.
|
||||
h_vendor.vendor_cmd[0]);
|
||||
beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_CONFIG,
|
||||
"BG_%d : Unsupported cmd = 0x%x\n\n",
|
||||
bsg_req->rqst_data.h_vendor.vendor_cmd[0]);
|
||||
|
||||
spin_unlock(&ctrl->mbox_lock);
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
@ -319,8 +334,8 @@ int mgmt_epfw_cleanup(struct beiscsi_hba *phba, unsigned short chute)
|
|||
|
||||
status = be_mcc_notify_wait(phba);
|
||||
if (status)
|
||||
shost_printk(KERN_WARNING, phba->shost,
|
||||
" mgmt_epfw_cleanup , FAILED\n");
|
||||
beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_INIT,
|
||||
"BG_%d : mgmt_epfw_cleanup , FAILED\n");
|
||||
spin_unlock(&ctrl->mbox_lock);
|
||||
return status;
|
||||
}
|
||||
|
@ -503,8 +518,9 @@ int mgmt_open_connection(struct beiscsi_hba *phba,
|
|||
&daddr_in6->sin6_addr.in6_u.u6_addr8, 16);
|
||||
beiscsi_ep->ip_type = BE2_IPV6;
|
||||
} else{
|
||||
shost_printk(KERN_ERR, phba->shost, "unknown addr family %d\n",
|
||||
dst_addr->sa_family);
|
||||
beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
|
||||
"BG_%d : unknown addr family %d\n",
|
||||
dst_addr->sa_family);
|
||||
spin_unlock(&ctrl->mbox_lock);
|
||||
free_mcc_tag(&phba->ctrl, tag);
|
||||
return -EINVAL;
|
||||
|
@ -515,7 +531,8 @@ int mgmt_open_connection(struct beiscsi_hba *phba,
|
|||
if (phba->nxt_cqid == phba->num_cpus)
|
||||
phba->nxt_cqid = 0;
|
||||
req->cq_id = phwi_context->be_cq[i].id;
|
||||
SE_DEBUG(DBG_LVL_8, "i=%d cq_id=%d\n", i, req->cq_id);
|
||||
beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_CONFIG,
|
||||
"BG_%d : i=%d cq_id=%d\n", i, req->cq_id);
|
||||
req->defq_id = def_hdr_id;
|
||||
req->hdr_ring_id = def_hdr_id;
|
||||
req->data_ring_id = def_data_id;
|
||||
|
@ -550,8 +567,8 @@ unsigned int mgmt_get_all_if_id(struct beiscsi_hba *phba)
|
|||
if (!status)
|
||||
phba->interface_handle = pbe_allid->if_hndl_list[0];
|
||||
else {
|
||||
shost_printk(KERN_WARNING, phba->shost,
|
||||
"Failed in mgmt_get_all_if_id\n");
|
||||
beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_CONFIG,
|
||||
"BG_%d : Failed in mgmt_get_all_if_id\n");
|
||||
}
|
||||
spin_unlock(&ctrl->mbox_lock);
|
||||
|
||||
|
@ -594,9 +611,10 @@ static int mgmt_exec_nonemb_cmd(struct beiscsi_hba *phba,
|
|||
extd_status = (phba->ctrl.mcc_numtag[tag] & 0x0000FF00) >> 8;
|
||||
status = phba->ctrl.mcc_numtag[tag] & 0x000000FF;
|
||||
if (status || extd_status) {
|
||||
SE_DEBUG(DBG_LVL_1,
|
||||
"mgmt_exec_nonemb_cmd Failed status = %d"
|
||||
"extd_status = %d\n", status, extd_status);
|
||||
beiscsi_log(phba, KERN_ERR,
|
||||
BEISCSI_LOG_CONFIG | BEISCSI_LOG_MBOX,
|
||||
"BG_%d : mgmt_exec_nonemb_cmd Failed status = %d"
|
||||
"extd_status = %d\n", status, extd_status);
|
||||
rc = -EIO;
|
||||
goto free_tag;
|
||||
}
|
||||
|
@ -617,7 +635,8 @@ static int mgmt_alloc_cmd_data(struct beiscsi_hba *phba, struct be_dma_mem *cmd,
|
|||
{
|
||||
cmd->va = pci_alloc_consistent(phba->ctrl.pdev, size, &cmd->dma);
|
||||
if (!cmd->va) {
|
||||
SE_DEBUG(DBG_LVL_1, "Failed to allocate memory for if info\n");
|
||||
beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
|
||||
"BG_%d : Failed to allocate memory for if info\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
memset(cmd->va, 0, size);
|
||||
|
@ -673,8 +692,8 @@ mgmt_static_ip_modify(struct beiscsi_hba *phba,
|
|||
|
||||
rc = mgmt_exec_nonemb_cmd(phba, &nonemb_cmd, NULL, 0);
|
||||
if (rc < 0)
|
||||
shost_printk(KERN_WARNING, phba->shost,
|
||||
"Failed to Modify existing IP Address\n");
|
||||
beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_CONFIG,
|
||||
"BG_%d : Failed to Modify existing IP Address\n");
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
@ -728,8 +747,8 @@ int mgmt_set_ip(struct beiscsi_hba *phba,
|
|||
|
||||
if (boot_proto == ISCSI_BOOTPROTO_DHCP) {
|
||||
if (if_info.dhcp_state) {
|
||||
shost_printk(KERN_WARNING, phba->shost,
|
||||
"DHCP Already Enabled\n");
|
||||
beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_CONFIG,
|
||||
"BG_%d : DHCP Already Enabled\n");
|
||||
return 0;
|
||||
}
|
||||
/* The ip_param->len is 1 in DHCP case. Setting
|
||||
|
@ -756,8 +775,9 @@ int mgmt_set_ip(struct beiscsi_hba *phba,
|
|||
|
||||
rc = mgmt_exec_nonemb_cmd(phba, &nonemb_cmd, NULL, 0);
|
||||
if (rc < 0) {
|
||||
shost_printk(KERN_WARNING, phba->shost,
|
||||
"Failed to Delete existing dhcp\n");
|
||||
beiscsi_log(phba, KERN_WARNING,
|
||||
BEISCSI_LOG_CONFIG,
|
||||
"BG_%d : Failed to Delete existing dhcp\n");
|
||||
return rc;
|
||||
}
|
||||
}
|
||||
|
@ -776,8 +796,8 @@ int mgmt_set_ip(struct beiscsi_hba *phba,
|
|||
memset(>way_addr_set, 0, sizeof(gtway_addr_set));
|
||||
rc = mgmt_get_gateway(phba, BE2_IPV4, >way_addr_set);
|
||||
if (rc) {
|
||||
shost_printk(KERN_WARNING, phba->shost,
|
||||
"Failed to Get Gateway Addr\n");
|
||||
beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_CONFIG,
|
||||
"BG_%d : Failed to Get Gateway Addr\n");
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
@ -787,8 +807,9 @@ int mgmt_set_ip(struct beiscsi_hba *phba,
|
|||
IP_ACTION_DEL, IP_V4_LEN);
|
||||
|
||||
if (rc) {
|
||||
shost_printk(KERN_WARNING, phba->shost,
|
||||
"Failed to clear Gateway Addr Set\n");
|
||||
beiscsi_log(phba, KERN_WARNING,
|
||||
BEISCSI_LOG_CONFIG,
|
||||
"BG_%d : Failed to clear Gateway Addr Set\n");
|
||||
return rc;
|
||||
}
|
||||
}
|
||||
|
@ -827,8 +848,8 @@ int mgmt_set_gateway(struct beiscsi_hba *phba,
|
|||
memset(>way_addr_set, 0, sizeof(gtway_addr_set));
|
||||
rt_val = mgmt_get_gateway(phba, BE2_IPV4, >way_addr_set);
|
||||
if (rt_val) {
|
||||
shost_printk(KERN_WARNING, phba->shost,
|
||||
"Failed to Get Gateway Addr\n");
|
||||
beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_CONFIG,
|
||||
"BG_%d : Failed to Get Gateway Addr\n");
|
||||
return rt_val;
|
||||
}
|
||||
|
||||
|
@ -837,8 +858,8 @@ int mgmt_set_gateway(struct beiscsi_hba *phba,
|
|||
rt_val = mgmt_modify_gateway(phba, gtway_addr, IP_ACTION_DEL,
|
||||
gateway_param->len);
|
||||
if (rt_val) {
|
||||
shost_printk(KERN_WARNING, phba->shost,
|
||||
"Failed to clear Gateway Addr Set\n");
|
||||
beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_CONFIG,
|
||||
"BG_%d : Failed to clear Gateway Addr Set\n");
|
||||
return rt_val;
|
||||
}
|
||||
}
|
||||
|
@ -848,8 +869,8 @@ int mgmt_set_gateway(struct beiscsi_hba *phba,
|
|||
gateway_param->len);
|
||||
|
||||
if (rt_val)
|
||||
shost_printk(KERN_WARNING, phba->shost,
|
||||
"Failed to Set Gateway Addr\n");
|
||||
beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_CONFIG,
|
||||
"BG_%d : Failed to Set Gateway Addr\n");
|
||||
|
||||
return rt_val;
|
||||
}
|
||||
|
@ -997,7 +1018,9 @@ int be_mgmt_get_boot_shandle(struct beiscsi_hba *phba,
|
|||
/* Get the Boot Target Session Handle and Count*/
|
||||
tag = mgmt_get_boot_target(phba);
|
||||
if (!tag) {
|
||||
SE_DEBUG(DBG_LVL_1, "mgmt_get_boot_target Failed\n");
|
||||
beiscsi_log(phba, KERN_ERR,
|
||||
BEISCSI_LOG_CONFIG | BEISCSI_LOG_INIT,
|
||||
"BG_%d : Getting Boot Target Info Failed\n");
|
||||
return -EAGAIN;
|
||||
} else
|
||||
wait_event_interruptible(phba->ctrl.mcc_wait[tag],
|
||||
|
@ -1007,9 +1030,11 @@ int be_mgmt_get_boot_shandle(struct beiscsi_hba *phba,
|
|||
extd_status = (phba->ctrl.mcc_numtag[tag] & 0x0000FF00) >> 8;
|
||||
status = phba->ctrl.mcc_numtag[tag] & 0x000000FF;
|
||||
if (status || extd_status) {
|
||||
SE_DEBUG(DBG_LVL_1, "mgmt_get_boot_target Failed"
|
||||
" status = %d extd_status = %d\n",
|
||||
status, extd_status);
|
||||
beiscsi_log(phba, KERN_ERR,
|
||||
BEISCSI_LOG_INIT | BEISCSI_LOG_CONFIG,
|
||||
"BG_%d : mgmt_get_boot_target Failed"
|
||||
" status = %d extd_status = %d\n",
|
||||
status, extd_status);
|
||||
free_mcc_tag(&phba->ctrl, tag);
|
||||
return -EBUSY;
|
||||
}
|
||||
|
@ -1019,7 +1044,9 @@ int be_mgmt_get_boot_shandle(struct beiscsi_hba *phba,
|
|||
|
||||
/* Check if the there are any Boot targets configured */
|
||||
if (!boot_resp->boot_session_count) {
|
||||
SE_DEBUG(DBG_LVL_8, "No boot targets configured\n");
|
||||
beiscsi_log(phba, KERN_INFO,
|
||||
BEISCSI_LOG_INIT | BEISCSI_LOG_CONFIG,
|
||||
"BG_%d ;No boot targets configured\n");
|
||||
return -ENXIO;
|
||||
}
|
||||
|
||||
|
@ -1033,7 +1060,9 @@ int be_mgmt_get_boot_shandle(struct beiscsi_hba *phba,
|
|||
tag = mgmt_reopen_session(phba, BE_REOPEN_BOOT_SESSIONS,
|
||||
INVALID_SESS_HANDLE);
|
||||
if (!tag) {
|
||||
SE_DEBUG(DBG_LVL_1, "mgmt_reopen_session Failed\n");
|
||||
beiscsi_log(phba, KERN_ERR,
|
||||
BEISCSI_LOG_INIT | BEISCSI_LOG_CONFIG,
|
||||
"BG_%d : mgmt_reopen_session Failed\n");
|
||||
return -EAGAIN;
|
||||
} else
|
||||
wait_event_interruptible(phba->ctrl.mcc_wait[tag],
|
||||
|
@ -1043,9 +1072,11 @@ int be_mgmt_get_boot_shandle(struct beiscsi_hba *phba,
|
|||
extd_status = (phba->ctrl.mcc_numtag[tag] & 0x0000FF00) >> 8;
|
||||
status = phba->ctrl.mcc_numtag[tag] & 0x000000FF;
|
||||
if (status || extd_status) {
|
||||
SE_DEBUG(DBG_LVL_1, "mgmt_reopen_session Failed"
|
||||
" status = %d extd_status = %d\n",
|
||||
status, extd_status);
|
||||
beiscsi_log(phba, KERN_ERR,
|
||||
BEISCSI_LOG_INIT | BEISCSI_LOG_CONFIG,
|
||||
"BG_%d : mgmt_reopen_session Failed"
|
||||
" status = %d extd_status = %d\n",
|
||||
status, extd_status);
|
||||
free_mcc_tag(&phba->ctrl, tag);
|
||||
return -EBUSY;
|
||||
}
|
||||
|
@ -1054,6 +1085,8 @@ int be_mgmt_get_boot_shandle(struct beiscsi_hba *phba,
|
|||
} while (--boot_retry);
|
||||
|
||||
/* Couldn't log into the boot target */
|
||||
SE_DEBUG(DBG_LVL_1, "Login to Boot Target Failed\n");
|
||||
beiscsi_log(phba, KERN_ERR,
|
||||
BEISCSI_LOG_INIT | BEISCSI_LOG_CONFIG,
|
||||
"BG_%d : Login to Boot Target Failed\n");
|
||||
return -ENXIO;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue