Commit 99bc5d55 authored by John Soni Jose's avatar John Soni Jose Committed by James Bottomley

[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: default avatarJohn Soni Jose <sony.john-n@emulex.com>
Signed-off-by: default avatarJayamohan Kallickal <jayamohan.kallickal@emulex.com>
Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
parent 9aef4200
...@@ -48,7 +48,8 @@ int beiscsi_pci_soft_reset(struct beiscsi_hba *phba) ...@@ -48,7 +48,8 @@ int beiscsi_pci_soft_reset(struct beiscsi_hba *phba)
} }
if (sreset & BE2_SET_RESET) { 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; return -EIO;
} }
pconline1 = BE2_MPU_IRAM_ONLINE; pconline1 = BE2_MPU_IRAM_ONLINE;
...@@ -67,7 +68,8 @@ int beiscsi_pci_soft_reset(struct beiscsi_hba *phba) ...@@ -67,7 +68,8 @@ int beiscsi_pci_soft_reset(struct beiscsi_hba *phba)
i++; i++;
} }
if (sreset & BE2_SET_RESET) { 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 -EIO;
} }
return 0; return 0;
...@@ -93,8 +95,9 @@ int be_chk_reset_complete(struct beiscsi_hba *phba) ...@@ -93,8 +95,9 @@ int be_chk_reset_complete(struct beiscsi_hba *phba)
} }
if ((status & 0x80000000) || (!num_loop)) { if ((status & 0x80000000) || (!num_loop)) {
printk(KERN_ERR "Failed in be_chk_reset_complete" beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
"status = 0x%x\n", status); "BC_%d : Failed in be_chk_reset_complete"
"status = 0x%x\n", status);
return -EIO; return -EIO;
} }
...@@ -169,6 +172,7 @@ static int be_mcc_compl_process(struct be_ctrl_info *ctrl, ...@@ -169,6 +172,7 @@ static int be_mcc_compl_process(struct be_ctrl_info *ctrl,
struct be_mcc_compl *compl) struct be_mcc_compl *compl)
{ {
u16 compl_status, extd_status; u16 compl_status, extd_status;
struct beiscsi_hba *phba = pci_get_drvdata(ctrl->pdev);
be_dws_le_to_cpu(compl, 4); be_dws_le_to_cpu(compl, 4);
...@@ -177,9 +181,12 @@ static int be_mcc_compl_process(struct be_ctrl_info *ctrl, ...@@ -177,9 +181,12 @@ static int be_mcc_compl_process(struct be_ctrl_info *ctrl,
if (compl_status != MCC_STATUS_SUCCESS) { if (compl_status != MCC_STATUS_SUCCESS) {
extd_status = (compl->status >> CQE_STATUS_EXTD_SHIFT) & extd_status = (compl->status >> CQE_STATUS_EXTD_SHIFT) &
CQE_STATUS_EXTD_MASK; CQE_STATUS_EXTD_MASK;
dev_err(&ctrl->pdev->dev,
"error in cmd completion: status(compl/extd)=%d/%d\n", beiscsi_log(phba, KERN_ERR,
compl_status, extd_status); 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 -EBUSY;
} }
return 0; return 0;
...@@ -233,22 +240,29 @@ void beiscsi_async_link_state_process(struct beiscsi_hba *phba, ...@@ -233,22 +240,29 @@ void beiscsi_async_link_state_process(struct beiscsi_hba *phba,
{ {
switch (evt->port_link_status) { switch (evt->port_link_status) {
case ASYNC_EVENT_LINK_DOWN: case ASYNC_EVENT_LINK_DOWN:
SE_DEBUG(DBG_LVL_1, "Link Down on Physical Port %d\n", beiscsi_log(phba, KERN_ERR,
evt->physical_port); BEISCSI_LOG_CONFIG | BEISCSI_LOG_INIT,
"BC_%d : Link Down on Physical Port %d\n",
evt->physical_port);
phba->state |= BE_ADAPTER_LINK_DOWN; phba->state |= BE_ADAPTER_LINK_DOWN;
iscsi_host_for_each_session(phba->shost, iscsi_host_for_each_session(phba->shost,
be2iscsi_fail_session); be2iscsi_fail_session);
break; break;
case ASYNC_EVENT_LINK_UP: case ASYNC_EVENT_LINK_UP:
phba->state = BE_ADAPTER_UP; phba->state = BE_ADAPTER_UP;
SE_DEBUG(DBG_LVL_1, "Link UP on Physical Port %d\n", beiscsi_log(phba, KERN_ERR,
evt->physical_port); BEISCSI_LOG_CONFIG | BEISCSI_LOG_INIT,
"BC_%d : Link UP on Physical Port %d\n",
evt->physical_port);
break; break;
default: default:
SE_DEBUG(DBG_LVL_1, "Unexpected Async Notification %d on" beiscsi_log(phba, KERN_ERR,
"Physical Port %d\n", BEISCSI_LOG_CONFIG | BEISCSI_LOG_INIT,
evt->port_link_status, "BC_%d : Unexpected Async Notification %d on"
evt->physical_port); "Physical Port %d\n",
evt->port_link_status,
evt->physical_port);
} }
} }
...@@ -279,9 +293,11 @@ int beiscsi_process_mcc(struct beiscsi_hba *phba) ...@@ -279,9 +293,11 @@ int beiscsi_process_mcc(struct beiscsi_hba *phba)
beiscsi_async_link_state_process(phba, beiscsi_async_link_state_process(phba,
(struct be_async_event_link_state *) compl); (struct be_async_event_link_state *) compl);
else else
SE_DEBUG(DBG_LVL_1, beiscsi_log(phba, KERN_ERR,
" Unsupported Async Event, flags" BEISCSI_LOG_CONFIG |
" = 0x%08x\n", compl->flags); BEISCSI_LOG_MBOX,
"BC_%d : Unsupported Async Event, flags"
" = 0x%08x\n", compl->flags);
} else if (compl->flags & CQE_FLAGS_COMPLETED_MASK) { } else if (compl->flags & CQE_FLAGS_COMPLETED_MASK) {
status = be_mcc_compl_process(ctrl, compl); status = be_mcc_compl_process(ctrl, compl);
...@@ -312,7 +328,10 @@ static int be_mcc_wait_compl(struct beiscsi_hba *phba) ...@@ -312,7 +328,10 @@ static int be_mcc_wait_compl(struct beiscsi_hba *phba)
udelay(100); udelay(100);
} }
if (i == mcc_timeout) { 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 -EBUSY;
} }
return 0; return 0;
...@@ -338,7 +357,11 @@ static int be_mbox_db_ready_wait(struct be_ctrl_info *ctrl) ...@@ -338,7 +357,11 @@ static int be_mbox_db_ready_wait(struct be_ctrl_info *ctrl)
break; break;
if (cnt > 12000000) { 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; return -EBUSY;
} }
...@@ -360,6 +383,7 @@ int be_mbox_notify(struct be_ctrl_info *ctrl) ...@@ -360,6 +383,7 @@ int be_mbox_notify(struct be_ctrl_info *ctrl)
struct be_dma_mem *mbox_mem = &ctrl->mbox_mem; struct be_dma_mem *mbox_mem = &ctrl->mbox_mem;
struct be_mcc_mailbox *mbox = mbox_mem->va; struct be_mcc_mailbox *mbox = mbox_mem->va;
struct be_mcc_compl *compl = &mbox->compl; 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_RDY_MASK;
val |= MPU_MAILBOX_DB_HI_MASK; val |= MPU_MAILBOX_DB_HI_MASK;
...@@ -368,7 +392,10 @@ int be_mbox_notify(struct be_ctrl_info *ctrl) ...@@ -368,7 +392,10 @@ int be_mbox_notify(struct be_ctrl_info *ctrl)
status = be_mbox_db_ready_wait(ctrl); status = be_mbox_db_ready_wait(ctrl);
if (status != 0) { 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; return status;
} }
val = 0; val = 0;
...@@ -379,18 +406,27 @@ int be_mbox_notify(struct be_ctrl_info *ctrl) ...@@ -379,18 +406,27 @@ int be_mbox_notify(struct be_ctrl_info *ctrl)
status = be_mbox_db_ready_wait(ctrl); status = be_mbox_db_ready_wait(ctrl);
if (status != 0) { 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; return status;
} }
if (be_mcc_compl_is_new(compl)) { if (be_mcc_compl_is_new(compl)) {
status = be_mcc_compl_process(ctrl, &mbox->compl); status = be_mcc_compl_process(ctrl, &mbox->compl);
be_mcc_compl_use(compl); be_mcc_compl_use(compl);
if (status) { 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; return status;
} }
} else { } 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 -EBUSY;
} }
return 0; return 0;
...@@ -436,7 +472,10 @@ static int be_mbox_notify_wait(struct beiscsi_hba *phba) ...@@ -436,7 +472,10 @@ static int be_mbox_notify_wait(struct beiscsi_hba *phba)
if (status) if (status)
return status; return status;
} else { } 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 -EBUSY;
} }
return 0; return 0;
...@@ -528,7 +567,6 @@ int beiscsi_cmd_eq_create(struct be_ctrl_info *ctrl, ...@@ -528,7 +567,6 @@ int beiscsi_cmd_eq_create(struct be_ctrl_info *ctrl,
struct be_dma_mem *q_mem = &eq->dma_mem; struct be_dma_mem *q_mem = &eq->dma_mem;
int status; int status;
SE_DEBUG(DBG_LVL_8, "In beiscsi_cmd_eq_create\n");
spin_lock(&ctrl->mbox_lock); spin_lock(&ctrl->mbox_lock);
memset(wrb, 0, sizeof(*wrb)); memset(wrb, 0, sizeof(*wrb));
...@@ -563,10 +601,10 @@ int beiscsi_cmd_eq_create(struct be_ctrl_info *ctrl, ...@@ -563,10 +601,10 @@ int beiscsi_cmd_eq_create(struct be_ctrl_info *ctrl,
int be_cmd_fw_initialize(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 be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
struct beiscsi_hba *phba = pci_get_drvdata(ctrl->pdev);
int status; int status;
u8 *endian_check; u8 *endian_check;
SE_DEBUG(DBG_LVL_8, "In be_cmd_fw_initialize\n");
spin_lock(&ctrl->mbox_lock); spin_lock(&ctrl->mbox_lock);
memset(wrb, 0, sizeof(*wrb)); memset(wrb, 0, sizeof(*wrb));
...@@ -583,7 +621,8 @@ int be_cmd_fw_initialize(struct be_ctrl_info *ctrl) ...@@ -583,7 +621,8 @@ int be_cmd_fw_initialize(struct be_ctrl_info *ctrl)
status = be_mbox_notify(ctrl); status = be_mbox_notify(ctrl);
if (status) 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); spin_unlock(&ctrl->mbox_lock);
return status; return status;
...@@ -596,11 +635,11 @@ int beiscsi_cmd_cq_create(struct be_ctrl_info *ctrl, ...@@ -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_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
struct be_cmd_req_cq_create *req = embedded_payload(wrb); struct be_cmd_req_cq_create *req = embedded_payload(wrb);
struct be_cmd_resp_cq_create *resp = 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; struct be_dma_mem *q_mem = &cq->dma_mem;
void *ctxt = &req->context; void *ctxt = &req->context;
int status; int status;
SE_DEBUG(DBG_LVL_8, "In beiscsi_cmd_cq_create\n");
spin_lock(&ctrl->mbox_lock); spin_lock(&ctrl->mbox_lock);
memset(wrb, 0, sizeof(*wrb)); memset(wrb, 0, sizeof(*wrb));
...@@ -608,8 +647,6 @@ int beiscsi_cmd_cq_create(struct be_ctrl_info *ctrl, ...@@ -608,8 +647,6 @@ int beiscsi_cmd_cq_create(struct be_ctrl_info *ctrl,
be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_COMMON, be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_COMMON,
OPCODE_COMMON_CQ_CREATE, sizeof(*req)); 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)); 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, ...@@ -633,8 +670,10 @@ int beiscsi_cmd_cq_create(struct be_ctrl_info *ctrl,
cq->id = le16_to_cpu(resp->cq_id); cq->id = le16_to_cpu(resp->cq_id);
cq->created = true; cq->created = true;
} else } else
SE_DEBUG(DBG_LVL_1, "In be_cmd_cq_create, status=ox%08x\n", beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
status); "BC_%d : In be_cmd_cq_create, status=ox%08x\n",
status);
spin_unlock(&ctrl->mbox_lock); spin_unlock(&ctrl->mbox_lock);
return status; return status;
...@@ -700,10 +739,14 @@ int beiscsi_cmd_q_destroy(struct be_ctrl_info *ctrl, struct be_queue_info *q, ...@@ -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_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
struct be_cmd_req_q_destroy *req = embedded_payload(wrb); struct be_cmd_req_q_destroy *req = embedded_payload(wrb);
struct beiscsi_hba *phba = pci_get_drvdata(ctrl->pdev);
u8 subsys = 0, opcode = 0; u8 subsys = 0, opcode = 0;
int status; 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); spin_lock(&ctrl->mbox_lock);
memset(wrb, 0, sizeof(*wrb)); memset(wrb, 0, sizeof(*wrb));
be_wrb_hdr_prepare(wrb, sizeof(*req), true, 0); 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, ...@@ -759,7 +802,6 @@ int be_cmd_create_default_pdu_queue(struct be_ctrl_info *ctrl,
void *ctxt = &req->context; void *ctxt = &req->context;
int status; int status;
SE_DEBUG(DBG_LVL_8, "In be_cmd_create_default_pdu_queue\n");
spin_lock(&ctrl->mbox_lock); spin_lock(&ctrl->mbox_lock);
memset(wrb, 0, sizeof(*wrb)); memset(wrb, 0, sizeof(*wrb));
...@@ -830,6 +872,7 @@ int be_cmd_iscsi_post_sgl_pages(struct be_ctrl_info *ctrl, ...@@ -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_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
struct be_post_sgl_pages_req *req = embedded_payload(wrb); struct be_post_sgl_pages_req *req = embedded_payload(wrb);
struct beiscsi_hba *phba = pci_get_drvdata(ctrl->pdev);
int status; int status;
unsigned int curr_pages; unsigned int curr_pages;
u32 internal_page_offset = 0; u32 internal_page_offset = 0;
...@@ -860,8 +903,9 @@ int be_cmd_iscsi_post_sgl_pages(struct be_ctrl_info *ctrl, ...@@ -860,8 +903,9 @@ int be_cmd_iscsi_post_sgl_pages(struct be_ctrl_info *ctrl,
status = be_mbox_notify(ctrl); status = be_mbox_notify(ctrl);
if (status) { if (status) {
SE_DEBUG(DBG_LVL_1, beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
"FW CMD to map iscsi frags failed.\n"); "BC_%d : FW CMD to map iscsi frags failed.\n");
goto error; goto error;
} }
} while (num_pages > 0); } while (num_pages > 0);
......
...@@ -50,21 +50,27 @@ struct iscsi_cls_session *beiscsi_session_create(struct iscsi_endpoint *ep, ...@@ -50,21 +50,27 @@ struct iscsi_cls_session *beiscsi_session_create(struct iscsi_endpoint *ep,
struct beiscsi_session *beiscsi_sess; struct beiscsi_session *beiscsi_sess;
struct beiscsi_io_task *io_task; struct beiscsi_io_task *io_task;
SE_DEBUG(DBG_LVL_8, "In beiscsi_session_create\n");
if (!ep) { if (!ep) {
SE_DEBUG(DBG_LVL_1, "beiscsi_session_create: invalid ep\n"); printk(KERN_ERR
"beiscsi_session_create: invalid ep\n");
return NULL; return NULL;
} }
beiscsi_ep = ep->dd_data; beiscsi_ep = ep->dd_data;
phba = beiscsi_ep->phba; phba = beiscsi_ep->phba;
shost = phba->shost; 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) { if (cmds_max > beiscsi_ep->phba->params.wrbs_per_cxn) {
shost_printk(KERN_ERR, shost, "Cannot handle %d cmds." beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
"Max cmds per session supported is %d. Using %d. " "BS_%d : Cannot handle %d cmds."
"\n", cmds_max, "Max cmds per session supported is %d. Using %d."
beiscsi_ep->phba->params.wrbs_per_cxn, "\n", cmds_max,
beiscsi_ep->phba->params.wrbs_per_cxn); beiscsi_ep->phba->params.wrbs_per_cxn,
beiscsi_ep->phba->params.wrbs_per_cxn);
cmds_max = 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) ...@@ -102,7 +108,7 @@ void beiscsi_session_destroy(struct iscsi_cls_session *cls_session)
struct iscsi_session *sess = cls_session->dd_data; struct iscsi_session *sess = cls_session->dd_data;
struct beiscsi_session *beiscsi_sess = sess->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); pci_pool_destroy(beiscsi_sess->bhs_pool);
iscsi_session_teardown(cls_session); iscsi_session_teardown(cls_session);
} }
...@@ -123,11 +129,13 @@ beiscsi_conn_create(struct iscsi_cls_session *cls_session, u32 cid) ...@@ -123,11 +129,13 @@ beiscsi_conn_create(struct iscsi_cls_session *cls_session, u32 cid)
struct iscsi_session *sess; struct iscsi_session *sess;
struct beiscsi_session *beiscsi_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); shost = iscsi_session_to_shost(cls_session);
phba = iscsi_host_priv(shost); 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); cls_conn = iscsi_conn_setup(cls_session, sizeof(*beiscsi_conn), cid);
if (!cls_conn) if (!cls_conn)
return NULL; return NULL;
...@@ -154,12 +162,15 @@ static int beiscsi_bindconn_cid(struct beiscsi_hba *phba, ...@@ -154,12 +162,15 @@ static int beiscsi_bindconn_cid(struct beiscsi_hba *phba,
unsigned int cid) unsigned int cid)
{ {
if (phba->conn_table[cid]) { if (phba->conn_table[cid]) {
SE_DEBUG(DBG_LVL_1, beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
"Connection table already occupied. Detected clash\n"); "BS_%d : Connection table already occupied. Detected clash\n");
return -EINVAL; return -EINVAL;
} else { } else {
SE_DEBUG(DBG_LVL_8, "phba->conn_table[%d]=%p(beiscsi_conn)\n", beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_CONFIG,
cid, beiscsi_conn); "BS_%d : phba->conn_table[%d]=%p(beiscsi_conn)\n",
cid, beiscsi_conn);
phba->conn_table[cid] = beiscsi_conn; phba->conn_table[cid] = beiscsi_conn;
} }
return 0; return 0;
...@@ -184,7 +195,6 @@ int beiscsi_conn_bind(struct iscsi_cls_session *cls_session, ...@@ -184,7 +195,6 @@ int beiscsi_conn_bind(struct iscsi_cls_session *cls_session,
struct beiscsi_endpoint *beiscsi_ep; struct beiscsi_endpoint *beiscsi_ep;
struct iscsi_endpoint *ep; struct iscsi_endpoint *ep;
SE_DEBUG(DBG_LVL_8, "In beiscsi_conn_bind\n");
ep = iscsi_lookup_endpoint(transport_fd); ep = iscsi_lookup_endpoint(transport_fd);
if (!ep) if (!ep)
return -EINVAL; return -EINVAL;
...@@ -195,17 +205,21 @@ int beiscsi_conn_bind(struct iscsi_cls_session *cls_session, ...@@ -195,17 +205,21 @@ int beiscsi_conn_bind(struct iscsi_cls_session *cls_session,
return -EINVAL; return -EINVAL;
if (beiscsi_ep->phba != phba) { if (beiscsi_ep->phba != phba) {
SE_DEBUG(DBG_LVL_8, beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
"beiscsi_ep->hba=%p not equal to phba=%p\n", "BS_%d : beiscsi_ep->hba=%p not equal to phba=%p\n",
beiscsi_ep->phba, phba); beiscsi_ep->phba, phba);
return -EEXIST; return -EEXIST;
} }
beiscsi_conn->beiscsi_conn_cid = beiscsi_ep->ep_cid; beiscsi_conn->beiscsi_conn_cid = beiscsi_ep->ep_cid;
beiscsi_conn->ep = beiscsi_ep; beiscsi_conn->ep = beiscsi_ep;
beiscsi_ep->conn = beiscsi_conn; 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); 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) ...@@ -219,8 +233,9 @@ static int beiscsi_create_ipv4_iface(struct beiscsi_hba *phba)
ISCSI_IFACE_TYPE_IPV4, ISCSI_IFACE_TYPE_IPV4,
0, 0); 0, 0);
if (!phba->ipv4_iface) { if (!phba->ipv4_iface) {
shost_printk(KERN_ERR, phba->shost, "Could not " beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
"create default IPv4 address.\n"); "BS_%d : Could not "
"create default IPv4 address.\n");
return -ENODEV; return -ENODEV;
} }
...@@ -237,8 +252,9 @@ static int beiscsi_create_ipv6_iface(struct beiscsi_hba *phba) ...@@ -237,8 +252,9 @@ static int beiscsi_create_ipv6_iface(struct beiscsi_hba *phba)
ISCSI_IFACE_TYPE_IPV6, ISCSI_IFACE_TYPE_IPV6,
0, 0); 0, 0);
if (!phba->ipv6_iface) { if (!phba->ipv6_iface) {
shost_printk(KERN_ERR, phba->shost, "Could not " beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
"create default IPv6 address.\n"); "BS_%d : Could not "
"create default IPv6 address.\n");
return -ENODEV; return -ENODEV;
} }
...@@ -299,12 +315,14 @@ beiscsi_set_static_ip(struct Scsi_Host *shost, ...@@ -299,12 +315,14 @@ beiscsi_set_static_ip(struct Scsi_Host *shost,
iface_ip = nla_data(nla); iface_ip = nla_data(nla);
break; break;
default: default:
shost_printk(KERN_ERR, shost, "Unsupported param %d\n", beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
iface_param->param); "BS_%d : Unsupported param %d\n",
iface_param->param);
} }
if (!iface_ip || !iface_subnet) { 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; return -EINVAL;
} }
...@@ -335,8 +353,9 @@ beiscsi_set_ipv4(struct Scsi_Host *shost, ...@@ -335,8 +353,9 @@ beiscsi_set_ipv4(struct Scsi_Host *shost,
ret = beiscsi_set_static_ip(shost, iface_param, ret = beiscsi_set_static_ip(shost, iface_param,
data, dt_len); data, dt_len);
else else
shost_printk(KERN_ERR, shost, "Invalid BOOTPROTO: %d\n", beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
iface_param->value[0]); "BS_%d : Invalid BOOTPROTO: %d\n",
iface_param->value[0]);
break; break;
case ISCSI_NET_PARAM_IFACE_ENABLE: case ISCSI_NET_PARAM_IFACE_ENABLE:
if (iface_param->value[0] == ISCSI_IFACE_ENABLE) if (iface_param->value[0] == ISCSI_IFACE_ENABLE)
...@@ -350,8 +369,9 @@ beiscsi_set_ipv4(struct Scsi_Host *shost, ...@@ -350,8 +369,9 @@ beiscsi_set_ipv4(struct Scsi_Host *shost,
data, dt_len); data, dt_len);
break; break;
default: default:
shost_printk(KERN_ERR, shost, "Param %d not supported\n", beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
iface_param->param); "BS_%d : Param %d not supported\n",
iface_param->param);
} }
return ret; return ret;
...@@ -379,8 +399,9 @@ beiscsi_set_ipv6(struct Scsi_Host *shost, ...@@ -379,8 +399,9 @@ beiscsi_set_ipv6(struct Scsi_Host *shost,
ISCSI_BOOTPROTO_STATIC); ISCSI_BOOTPROTO_STATIC);
break; break;
default: default:
shost_printk(KERN_ERR, shost, "Param %d not supported\n", beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
iface_param->param); "BS_%d : Param %d not supported\n",
iface_param->param);
} }
return ret; return ret;
...@@ -390,6 +411,7 @@ int be2iscsi_iface_set_param(struct Scsi_Host *shost, ...@@ -390,6 +411,7 @@ int be2iscsi_iface_set_param(struct Scsi_Host *shost,
void *data, uint32_t dt_len) void *data, uint32_t dt_len)
{ {
struct iscsi_iface_param_info *iface_param = NULL; struct iscsi_iface_param_info *iface_param = NULL;
struct beiscsi_hba *phba = iscsi_host_priv(shost);
struct nlattr *attrib; struct nlattr *attrib;
uint32_t rm_len = dt_len; uint32_t rm_len = dt_len;
int ret = 0 ; int ret = 0 ;
...@@ -404,9 +426,11 @@ int be2iscsi_iface_set_param(struct Scsi_Host *shost, ...@@ -404,9 +426,11 @@ int be2iscsi_iface_set_param(struct Scsi_Host *shost,
* BE2ISCSI only supports 1 interface * BE2ISCSI only supports 1 interface
*/ */
if (iface_param->iface_num) { if (iface_param->iface_num) {
shost_printk(KERN_ERR, shost, "Invalid iface_num %d." beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
"Only iface_num 0 is supported.\n", "BS_%d : Invalid iface_num %d."
iface_param->iface_num); "Only iface_num 0 is supported.\n",
iface_param->iface_num);
return -EINVAL; return -EINVAL;
} }
...@@ -420,9 +444,9 @@ int be2iscsi_iface_set_param(struct Scsi_Host *shost, ...@@ -420,9 +444,9 @@ int be2iscsi_iface_set_param(struct Scsi_Host *shost,
data, dt_len); data, dt_len);
break; break;
default: default:
shost_printk(KERN_ERR, shost, beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
"Invalid iface type :%d passed\n", "BS_%d : Invalid iface type :%d passed\n",
iface_param->iface_type); iface_param->iface_type);
break; break;
} }
...@@ -518,7 +542,10 @@ int beiscsi_ep_get_param(struct iscsi_endpoint *ep, ...@@ -518,7 +542,10 @@ int beiscsi_ep_get_param(struct iscsi_endpoint *ep,
struct beiscsi_endpoint *beiscsi_ep = ep->dd_data; struct beiscsi_endpoint *beiscsi_ep = ep->dd_data;
int len = 0; 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) { switch (param) {
case ISCSI_PARAM_CONN_PORT: case ISCSI_PARAM_CONN_PORT:
...@@ -541,9 +568,14 @@ int beiscsi_set_param(struct iscsi_cls_conn *cls_conn, ...@@ -541,9 +568,14 @@ int beiscsi_set_param(struct iscsi_cls_conn *cls_conn,
{ {
struct iscsi_conn *conn = cls_conn->dd_data; struct iscsi_conn *conn = cls_conn->dd_data;
struct iscsi_session *session = conn->session; struct iscsi_session *session = conn->session;
struct beiscsi_hba *phba = NULL;
int ret; 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); ret = iscsi_set_param(cls_conn, param, buf, buflen);
if (ret) if (ret)
return ret; return ret;
...@@ -593,7 +625,9 @@ static int beiscsi_get_initname(char *buf, struct beiscsi_hba *phba) ...@@ -593,7 +625,9 @@ static int beiscsi_get_initname(char *buf, struct beiscsi_hba *phba)
tag = be_cmd_get_initname(phba); tag = be_cmd_get_initname(phba);
if (!tag) { 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; return -EBUSY;
} else } else
wait_event_interruptible(phba->ctrl.mcc_wait[tag], wait_event_interruptible(phba->ctrl.mcc_wait[tag],
...@@ -604,9 +638,12 @@ static int beiscsi_get_initname(char *buf, struct beiscsi_hba *phba) ...@@ -604,9 +638,12 @@ static int beiscsi_get_initname(char *buf, struct beiscsi_hba *phba)
status = phba->ctrl.mcc_numtag[tag] & 0x000000FF; status = phba->ctrl.mcc_numtag[tag] & 0x000000FF;
if (status || extd_status) { if (status || extd_status) {
SE_DEBUG(DBG_LVL_1, "MailBox Command Failed with " beiscsi_log(phba, KERN_ERR,
"status = %d extd_status = %d\n", BEISCSI_LOG_CONFIG | BEISCSI_LOG_MBOX,
status, extd_status); "BS_%d : MailBox Command Failed with "
"status = %d extd_status = %d\n",
status, extd_status);
free_mcc_tag(&phba->ctrl, tag); free_mcc_tag(&phba->ctrl, tag);
return -EAGAIN; return -EAGAIN;
} }
...@@ -650,7 +687,9 @@ static int beiscsi_get_port_speed(struct Scsi_Host *shost) ...@@ -650,7 +687,9 @@ static int beiscsi_get_port_speed(struct Scsi_Host *shost)
tag = be_cmd_get_port_speed(phba); tag = be_cmd_get_port_speed(phba);
if (!tag) { 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; return -EBUSY;
} else } else
wait_event_interruptible(phba->ctrl.mcc_wait[tag], wait_event_interruptible(phba->ctrl.mcc_wait[tag],
...@@ -661,9 +700,12 @@ static int beiscsi_get_port_speed(struct Scsi_Host *shost) ...@@ -661,9 +700,12 @@ static int beiscsi_get_port_speed(struct Scsi_Host *shost)
status = phba->ctrl.mcc_numtag[tag] & 0x000000FF; status = phba->ctrl.mcc_numtag[tag] & 0x000000FF;
if (status || extd_status) { if (status || extd_status) {
SE_DEBUG(DBG_LVL_1, "MailBox Command Failed with " beiscsi_log(phba, KERN_ERR,
"status = %d extd_status = %d\n", BEISCSI_LOG_CONFIG | BEISCSI_LOG_MBOX,
status, extd_status); "BS_%d : MailBox Command Failed with "
"status = %d extd_status = %d\n",
status, extd_status);
free_mcc_tag(&phba->ctrl, tag); free_mcc_tag(&phba->ctrl, tag);
return -EAGAIN; return -EAGAIN;
} }
...@@ -704,20 +746,24 @@ int beiscsi_get_host_param(struct Scsi_Host *shost, ...@@ -704,20 +746,24 @@ int beiscsi_get_host_param(struct Scsi_Host *shost,
struct beiscsi_hba *phba = iscsi_host_priv(shost); struct beiscsi_hba *phba = iscsi_host_priv(shost);
int status = 0; 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) { switch (param) {
case ISCSI_HOST_PARAM_HWADDRESS: case ISCSI_HOST_PARAM_HWADDRESS:
status = beiscsi_get_macaddr(buf, phba); status = beiscsi_get_macaddr(buf, phba);
if (status < 0) { 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; return status;
} }
break; break;
case ISCSI_HOST_PARAM_INITIATOR_NAME: case ISCSI_HOST_PARAM_INITIATOR_NAME:
status = beiscsi_get_initname(buf, phba); status = beiscsi_get_initname(buf, phba);
if (status < 0) { if (status < 0) {
SE_DEBUG(DBG_LVL_1, beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
"Retreiving Initiator Name Failed\n"); "BS_%d : Retreiving Initiator Name Failed\n");
return status; return status;
} }
break; break;
...@@ -728,8 +774,8 @@ int beiscsi_get_host_param(struct Scsi_Host *shost, ...@@ -728,8 +774,8 @@ int beiscsi_get_host_param(struct Scsi_Host *shost,
case ISCSI_HOST_PARAM_PORT_SPEED: case ISCSI_HOST_PARAM_PORT_SPEED:
status = beiscsi_get_port_speed(shost); status = beiscsi_get_port_speed(shost);
if (status) { if (status) {
SE_DEBUG(DBG_LVL_1, beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
"Retreiving Port Speed Failed\n"); "BS_%d : Retreiving Port Speed Failed\n");
return status; return status;
} }
status = sprintf(buf, "%s\n", iscsi_get_port_speed_name(shost)); 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, ...@@ -768,8 +814,12 @@ void beiscsi_conn_get_stats(struct iscsi_cls_conn *cls_conn,
struct iscsi_stats *stats) struct iscsi_stats *stats)
{ {
struct iscsi_conn *conn = cls_conn->dd_data; 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->txdata_octets = conn->txdata_octets;
stats->rxdata_octets = conn->rxdata_octets; stats->rxdata_octets = conn->rxdata_octets;
stats->dataout_pdus = conn->dataout_pdus_cnt; stats->dataout_pdus = conn->dataout_pdus_cnt;
...@@ -829,11 +879,16 @@ int beiscsi_conn_start(struct iscsi_cls_conn *cls_conn) ...@@ -829,11 +879,16 @@ int beiscsi_conn_start(struct iscsi_cls_conn *cls_conn)
struct beiscsi_endpoint *beiscsi_ep; struct beiscsi_endpoint *beiscsi_ep;
struct beiscsi_offload_params params; 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(&params, 0, sizeof(struct beiscsi_offload_params)); memset(&params, 0, sizeof(struct beiscsi_offload_params));
beiscsi_ep = beiscsi_conn->ep; beiscsi_ep = beiscsi_conn->ep;
if (!beiscsi_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_conn->login_in_progress = 0;
beiscsi_set_params_for_offld(beiscsi_conn, &params); beiscsi_set_params_for_offld(beiscsi_conn, &params);
...@@ -907,19 +962,27 @@ static int beiscsi_open_conn(struct iscsi_endpoint *ep, ...@@ -907,19 +962,27 @@ static int beiscsi_open_conn(struct iscsi_endpoint *ep,
unsigned int tag, wrb_num; unsigned int tag, wrb_num;
int ret = -ENOMEM; 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); beiscsi_ep->ep_cid = beiscsi_get_cid(phba);
if (beiscsi_ep->ep_cid == 0xFFFF) { 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; 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->ep_array[beiscsi_ep->ep_cid -
phba->fw_config.iscsi_cid_start] = ep; phba->fw_config.iscsi_cid_start] = ep;
if (beiscsi_ep->ep_cid > (phba->fw_config.iscsi_cid_start + if (beiscsi_ep->ep_cid > (phba->fw_config.iscsi_cid_start +
phba->params.cxns_per_ctrl * 2)) { 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; goto free_ep;
} }
...@@ -928,9 +991,11 @@ static int beiscsi_open_conn(struct iscsi_endpoint *ep, ...@@ -928,9 +991,11 @@ static int beiscsi_open_conn(struct iscsi_endpoint *ep,
sizeof(struct tcp_connect_and_offload_in), sizeof(struct tcp_connect_and_offload_in),
&nonemb_cmd.dma); &nonemb_cmd.dma);
if (nonemb_cmd.va == NULL) { if (nonemb_cmd.va == NULL) {
SE_DEBUG(DBG_LVL_1,
"Failed to allocate memory for mgmt_open_connection" beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
"\n"); "BS_%d : Failed to allocate memory for"
" mgmt_open_connection\n");
beiscsi_put_cid(phba, beiscsi_ep->ep_cid); beiscsi_put_cid(phba, beiscsi_ep->ep_cid);
return -ENOMEM; return -ENOMEM;
} }
...@@ -938,9 +1003,10 @@ static int beiscsi_open_conn(struct iscsi_endpoint *ep, ...@@ -938,9 +1003,10 @@ static int beiscsi_open_conn(struct iscsi_endpoint *ep,
memset(nonemb_cmd.va, 0, nonemb_cmd.size); memset(nonemb_cmd.va, 0, nonemb_cmd.size);
tag = mgmt_open_connection(phba, dst_addr, beiscsi_ep, &nonemb_cmd); tag = mgmt_open_connection(phba, dst_addr, beiscsi_ep, &nonemb_cmd);
if (!tag) { if (!tag) {
SE_DEBUG(DBG_LVL_1, beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
"mgmt_open_connection Failed for cid=%d\n", "BS_%d : mgmt_open_connection Failed for cid=%d\n",
beiscsi_ep->ep_cid); beiscsi_ep->ep_cid);
beiscsi_put_cid(phba, beiscsi_ep->ep_cid); beiscsi_put_cid(phba, beiscsi_ep->ep_cid);
pci_free_consistent(phba->ctrl.pdev, nonemb_cmd.size, pci_free_consistent(phba->ctrl.pdev, nonemb_cmd.size,
nonemb_cmd.va, nonemb_cmd.dma); nonemb_cmd.va, nonemb_cmd.dma);
...@@ -953,9 +1019,12 @@ static int beiscsi_open_conn(struct iscsi_endpoint *ep, ...@@ -953,9 +1019,12 @@ static int beiscsi_open_conn(struct iscsi_endpoint *ep,
extd_status = (phba->ctrl.mcc_numtag[tag] & 0x0000FF00) >> 8; extd_status = (phba->ctrl.mcc_numtag[tag] & 0x0000FF00) >> 8;
status = phba->ctrl.mcc_numtag[tag] & 0x000000FF; status = phba->ctrl.mcc_numtag[tag] & 0x000000FF;
if (status || extd_status) { if (status || extd_status) {
SE_DEBUG(DBG_LVL_1, "mgmt_open_connection Failed" beiscsi_log(phba, KERN_ERR,
" status = %d extd_status = %d\n", BEISCSI_LOG_CONFIG | BEISCSI_LOG_MBOX,
status, extd_status); "BS_%d : mgmt_open_connection Failed"
" status = %d extd_status = %d\n",
status, extd_status);
free_mcc_tag(&phba->ctrl, tag); free_mcc_tag(&phba->ctrl, tag);
pci_free_consistent(phba->ctrl.pdev, nonemb_cmd.size, pci_free_consistent(phba->ctrl.pdev, nonemb_cmd.size,
nonemb_cmd.va, nonemb_cmd.dma); nonemb_cmd.va, nonemb_cmd.dma);
...@@ -968,7 +1037,8 @@ static int beiscsi_open_conn(struct iscsi_endpoint *ep, ...@@ -968,7 +1037,8 @@ static int beiscsi_open_conn(struct iscsi_endpoint *ep,
beiscsi_ep = ep->dd_data; beiscsi_ep = ep->dd_data;
beiscsi_ep->fw_handle = ptcpcnct_out->connection_handle; beiscsi_ep->fw_handle = ptcpcnct_out->connection_handle;
beiscsi_ep->cid_vld = 1; 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, pci_free_consistent(phba->ctrl.pdev, nonemb_cmd.size,
nonemb_cmd.va, nonemb_cmd.dma); nonemb_cmd.va, nonemb_cmd.dma);
...@@ -996,18 +1066,19 @@ beiscsi_ep_connect(struct Scsi_Host *shost, struct sockaddr *dst_addr, ...@@ -996,18 +1066,19 @@ beiscsi_ep_connect(struct Scsi_Host *shost, struct sockaddr *dst_addr,
struct iscsi_endpoint *ep; struct iscsi_endpoint *ep;
int ret; int ret;
SE_DEBUG(DBG_LVL_8, "In beiscsi_ep_connect\n");
if (shost) if (shost)
phba = iscsi_host_priv(shost); phba = iscsi_host_priv(shost);
else { else {
ret = -ENXIO; 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); return ERR_PTR(ret);
} }
if (phba->state != BE_ADAPTER_UP) { if (phba->state != BE_ADAPTER_UP) {
ret = -EBUSY; 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); return ERR_PTR(ret);
} }
...@@ -1022,7 +1093,8 @@ beiscsi_ep_connect(struct Scsi_Host *shost, struct sockaddr *dst_addr, ...@@ -1022,7 +1093,8 @@ beiscsi_ep_connect(struct Scsi_Host *shost, struct sockaddr *dst_addr,
beiscsi_ep->openiscsi_ep = ep; beiscsi_ep->openiscsi_ep = ep;
ret = beiscsi_open_conn(ep, NULL, dst_addr, non_blocking); ret = beiscsi_open_conn(ep, NULL, dst_addr, non_blocking);
if (ret) { 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; goto free_ep;
} }
...@@ -1044,7 +1116,9 @@ int beiscsi_ep_poll(struct iscsi_endpoint *ep, int timeout_ms) ...@@ -1044,7 +1116,9 @@ int beiscsi_ep_poll(struct iscsi_endpoint *ep, int timeout_ms)
{ {
struct beiscsi_endpoint *beiscsi_ep = ep->dd_data; 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) if (beiscsi_ep->cid_vld == 1)
return 1; return 1;
else else
...@@ -1064,8 +1138,10 @@ static int beiscsi_close_conn(struct beiscsi_endpoint *beiscsi_ep, int flag) ...@@ -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); tag = mgmt_upload_connection(phba, beiscsi_ep->ep_cid, flag);
if (!tag) { if (!tag) {
SE_DEBUG(DBG_LVL_8, "upload failed for cid 0x%x\n", beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_CONFIG,
beiscsi_ep->ep_cid); "BS_%d : upload failed for cid 0x%x\n",
beiscsi_ep->ep_cid);
ret = -EAGAIN; ret = -EAGAIN;
} else { } else {
wait_event_interruptible(phba->ctrl.mcc_wait[tag], wait_event_interruptible(phba->ctrl.mcc_wait[tag],
...@@ -1086,7 +1162,8 @@ static int beiscsi_unbind_conn_to_cid(struct beiscsi_hba *phba, ...@@ -1086,7 +1162,8 @@ static int beiscsi_unbind_conn_to_cid(struct beiscsi_hba *phba,
if (phba->conn_table[cid]) if (phba->conn_table[cid])
phba->conn_table[cid] = NULL; phba->conn_table[cid] = NULL;
else { 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 -EINVAL;
} }
return 0; return 0;
...@@ -1108,27 +1185,31 @@ void beiscsi_ep_disconnect(struct iscsi_endpoint *ep) ...@@ -1108,27 +1185,31 @@ void beiscsi_ep_disconnect(struct iscsi_endpoint *ep)
beiscsi_ep = ep->dd_data; beiscsi_ep = ep->dd_data;
phba = beiscsi_ep->phba; phba = beiscsi_ep->phba;
SE_DEBUG(DBG_LVL_8, "In beiscsi_ep_disconnect for ep_cid = %d\n", beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_CONFIG,
beiscsi_ep->ep_cid); "BS_%d : In beiscsi_ep_disconnect for ep_cid = %d\n",
beiscsi_ep->ep_cid);
if (!beiscsi_ep->conn) { if (!beiscsi_ep->conn) {
SE_DEBUG(DBG_LVL_8, "In beiscsi_ep_disconnect, no " beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_CONFIG,
"beiscsi_ep\n"); "BS_%d : In beiscsi_ep_disconnect, no "
"beiscsi_ep\n");
return; return;
} }
beiscsi_conn = beiscsi_ep->conn; beiscsi_conn = beiscsi_ep->conn;
iscsi_suspend_queue(beiscsi_conn->conn); iscsi_suspend_queue(beiscsi_conn->conn);
SE_DEBUG(DBG_LVL_8, "In beiscsi_ep_disconnect ep_cid = %d\n", beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_CONFIG,
beiscsi_ep->ep_cid); "BS_%d : In beiscsi_ep_disconnect ep_cid = %d\n",
beiscsi_ep->ep_cid);
tag = mgmt_invalidate_connection(phba, beiscsi_ep, tag = mgmt_invalidate_connection(phba, beiscsi_ep,
beiscsi_ep->ep_cid, 1, beiscsi_ep->ep_cid, 1,
savecfg_flag); savecfg_flag);
if (!tag) { if (!tag) {
SE_DEBUG(DBG_LVL_1, beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
"mgmt_invalidate_connection Failed for cid=%d\n", "BS_%d : mgmt_invalidate_connection"
beiscsi_ep->ep_cid); " Failed for cid=%d\n",
beiscsi_ep->ep_cid);
} else { } else {
wait_event_interruptible(phba->ctrl.mcc_wait[tag], wait_event_interruptible(phba->ctrl.mcc_wait[tag],
phba->ctrl.mcc_numtag[tag]); phba->ctrl.mcc_numtag[tag]);
......
...@@ -57,9 +57,105 @@ MODULE_LICENSE("GPL"); ...@@ -57,9 +57,105 @@ MODULE_LICENSE("GPL");
module_param(be_iopoll_budget, int, 0); module_param(be_iopoll_budget, int, 0);
module_param(enable_msix, int, 0); module_param(enable_msix, int, 0);
module_param(be_max_phys_size, uint, S_IRUGO); module_param(be_max_phys_size, uint, S_IRUGO);
MODULE_PARM_DESC(be_max_phys_size, "Maximum Size (In Kilobytes) of physically" MODULE_PARM_DESC(be_max_phys_size,
"contiguous memory that can be allocated." "Maximum Size (In Kilobytes) of physically contiguous "
"Range is 16 - 128"); "memory that can be allocated. Range is 16 - 128");
#define beiscsi_disp_param(_name)\
ssize_t \
beiscsi_##_name##_disp(struct device *dev,\
struct device_attribute *attrib, char *buf) \
{ \
struct Scsi_Host *shost = class_to_shost(dev);\
struct beiscsi_hba *phba = iscsi_host_priv(shost); \
uint32_t param_val = 0; \
param_val = phba->attr_##_name;\
return snprintf(buf, PAGE_SIZE, "%d\n",\
phba->attr_##_name);\
}
#define beiscsi_change_param(_name, _minval, _maxval, _defaval)\
int \
beiscsi_##_name##_change(struct beiscsi_hba *phba, uint32_t val)\
{\
if (val >= _minval && val <= _maxval) {\
beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,\
"BA_%d : beiscsi_"#_name" updated "\
"from 0x%x ==> 0x%x\n",\
phba->attr_##_name, val); \
phba->attr_##_name = val;\
return 0;\
} \
beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT, \
"BA_%d beiscsi_"#_name" attribute "\
"cannot be updated to 0x%x, "\
"range allowed is ["#_minval" - "#_maxval"]\n", val);\
return -EINVAL;\
}
#define beiscsi_store_param(_name) \
ssize_t \
beiscsi_##_name##_store(struct device *dev,\
struct device_attribute *attr, const char *buf,\
size_t count) \
{ \
struct Scsi_Host *shost = class_to_shost(dev);\
struct beiscsi_hba *phba = iscsi_host_priv(shost);\
uint32_t param_val = 0;\
if (!isdigit(buf[0]))\
return -EINVAL;\
if (sscanf(buf, "%i", &param_val) != 1)\
return -EINVAL;\
if (beiscsi_##_name##_change(phba, param_val) == 0) \
return strlen(buf);\
else \
return -EINVAL;\
}
#define beiscsi_init_param(_name, _minval, _maxval, _defval) \
int \
beiscsi_##_name##_init(struct beiscsi_hba *phba, uint32_t val) \
{ \
if (val >= _minval && val <= _maxval) {\
phba->attr_##_name = val;\
return 0;\
} \
beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,\
"BA_%d beiscsi_"#_name" attribute " \
"cannot be updated to 0x%x, "\
"range allowed is ["#_minval" - "#_maxval"]\n", val);\
phba->attr_##_name = _defval;\
return -EINVAL;\
}
#define BEISCSI_RW_ATTR(_name, _minval, _maxval, _defval, _descp) \
static uint beiscsi_##_name = _defval;\
module_param(beiscsi_##_name, uint, S_IRUGO);\
MODULE_PARM_DESC(beiscsi_##_name, _descp);\
beiscsi_disp_param(_name)\
beiscsi_change_param(_name, _minval, _maxval, _defval)\
beiscsi_store_param(_name)\
beiscsi_init_param(_name, _minval, _maxval, _defval)\
DEVICE_ATTR(beiscsi_##_name, S_IRUGO | S_IWUSR,\
beiscsi_##_name##_disp, beiscsi_##_name##_store)
/*
* When new log level added update the
* the MAX allowed value for log_enable
*/
BEISCSI_RW_ATTR(log_enable, 0x00,
0xFF, 0x00, "Enable logging Bit Mask\n"
"\t\t\t\tInitialization Events : 0x01\n"
"\t\t\t\tMailbox Events : 0x02\n"
"\t\t\t\tMiscellaneous Events : 0x04\n"
"\t\t\t\tError Handling : 0x08\n"
"\t\t\t\tIO Path Events : 0x10\n"
"\t\t\t\tConfiguration Path : 0x20\n");
struct device_attribute *beiscsi_attrs[] = {
&dev_attr_beiscsi_log_enable,
NULL,
};
static int beiscsi_slave_configure(struct scsi_device *sdev) static int beiscsi_slave_configure(struct scsi_device *sdev)
{ {
...@@ -112,9 +208,9 @@ static int beiscsi_eh_abort(struct scsi_cmnd *sc) ...@@ -112,9 +208,9 @@ static int beiscsi_eh_abort(struct scsi_cmnd *sc)
sizeof(struct invalidate_commands_params_in), sizeof(struct invalidate_commands_params_in),
&nonemb_cmd.dma); &nonemb_cmd.dma);
if (nonemb_cmd.va == NULL) { if (nonemb_cmd.va == NULL) {
SE_DEBUG(DBG_LVL_1, beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_EH,
"Failed to allocate memory for" "BM_%d : Failed to allocate memory for"
"mgmt_invalidate_icds\n"); "mgmt_invalidate_icds\n");
return FAILED; return FAILED;
} }
nonemb_cmd.size = sizeof(struct invalidate_commands_params_in); nonemb_cmd.size = sizeof(struct invalidate_commands_params_in);
...@@ -122,9 +218,9 @@ static int beiscsi_eh_abort(struct scsi_cmnd *sc) ...@@ -122,9 +218,9 @@ static int beiscsi_eh_abort(struct scsi_cmnd *sc)
tag = mgmt_invalidate_icds(phba, inv_tbl, num_invalidate, tag = mgmt_invalidate_icds(phba, inv_tbl, num_invalidate,
cid, &nonemb_cmd); cid, &nonemb_cmd);
if (!tag) { if (!tag) {
shost_printk(KERN_WARNING, phba->shost, beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_EH,
"mgmt_invalidate_icds could not be" "BM_%d : mgmt_invalidate_icds could not be"
" submitted\n"); "submitted\n");
pci_free_consistent(phba->ctrl.pdev, nonemb_cmd.size, pci_free_consistent(phba->ctrl.pdev, nonemb_cmd.size,
nonemb_cmd.va, nonemb_cmd.dma); nonemb_cmd.va, nonemb_cmd.dma);
...@@ -188,9 +284,9 @@ static int beiscsi_eh_device_reset(struct scsi_cmnd *sc) ...@@ -188,9 +284,9 @@ static int beiscsi_eh_device_reset(struct scsi_cmnd *sc)
sizeof(struct invalidate_commands_params_in), sizeof(struct invalidate_commands_params_in),
&nonemb_cmd.dma); &nonemb_cmd.dma);
if (nonemb_cmd.va == NULL) { if (nonemb_cmd.va == NULL) {
SE_DEBUG(DBG_LVL_1, beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_EH,
"Failed to allocate memory for" "BM_%d : Failed to allocate memory for"
"mgmt_invalidate_icds\n"); "mgmt_invalidate_icds\n");
return FAILED; return FAILED;
} }
nonemb_cmd.size = sizeof(struct invalidate_commands_params_in); nonemb_cmd.size = sizeof(struct invalidate_commands_params_in);
...@@ -198,9 +294,9 @@ static int beiscsi_eh_device_reset(struct scsi_cmnd *sc) ...@@ -198,9 +294,9 @@ static int beiscsi_eh_device_reset(struct scsi_cmnd *sc)
tag = mgmt_invalidate_icds(phba, inv_tbl, num_invalidate, tag = mgmt_invalidate_icds(phba, inv_tbl, num_invalidate,
cid, &nonemb_cmd); cid, &nonemb_cmd);
if (!tag) { if (!tag) {
shost_printk(KERN_WARNING, phba->shost, beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_EH,
"mgmt_invalidate_icds could not be" "BM_%d : mgmt_invalidate_icds could not be"
" submitted\n"); " submitted\n");
pci_free_consistent(phba->ctrl.pdev, nonemb_cmd.size, pci_free_consistent(phba->ctrl.pdev, nonemb_cmd.size,
nonemb_cmd.va, nonemb_cmd.dma); nonemb_cmd.va, nonemb_cmd.dma);
return FAILED; return FAILED;
...@@ -389,6 +485,7 @@ static DEFINE_PCI_DEVICE_TABLE(beiscsi_pci_id_table) = { ...@@ -389,6 +485,7 @@ static DEFINE_PCI_DEVICE_TABLE(beiscsi_pci_id_table) = {
}; };
MODULE_DEVICE_TABLE(pci, beiscsi_pci_id_table); MODULE_DEVICE_TABLE(pci, beiscsi_pci_id_table);
static struct scsi_host_template beiscsi_sht = { static struct scsi_host_template beiscsi_sht = {
.module = THIS_MODULE, .module = THIS_MODULE,
.name = "Emulex 10Gbe open-iscsi Initiator Driver", .name = "Emulex 10Gbe open-iscsi Initiator Driver",
...@@ -400,6 +497,7 @@ static struct scsi_host_template beiscsi_sht = { ...@@ -400,6 +497,7 @@ static struct scsi_host_template beiscsi_sht = {
.eh_abort_handler = beiscsi_eh_abort, .eh_abort_handler = beiscsi_eh_abort,
.eh_device_reset_handler = beiscsi_eh_device_reset, .eh_device_reset_handler = beiscsi_eh_device_reset,
.eh_target_reset_handler = iscsi_eh_session_reset, .eh_target_reset_handler = iscsi_eh_session_reset,
.shost_attrs = beiscsi_attrs,
.sg_tablesize = BEISCSI_SGLIST_ELEMENTS, .sg_tablesize = BEISCSI_SGLIST_ELEMENTS,
.can_queue = BE2_IO_DEPTH, .can_queue = BE2_IO_DEPTH,
.this_id = -1, .this_id = -1,
...@@ -419,8 +517,8 @@ static struct beiscsi_hba *beiscsi_hba_alloc(struct pci_dev *pcidev) ...@@ -419,8 +517,8 @@ static struct beiscsi_hba *beiscsi_hba_alloc(struct pci_dev *pcidev)
shost = iscsi_host_alloc(&beiscsi_sht, sizeof(*phba), 0); shost = iscsi_host_alloc(&beiscsi_sht, sizeof(*phba), 0);
if (!shost) { if (!shost) {
dev_err(&pcidev->dev, "beiscsi_hba_alloc -" dev_err(&pcidev->dev,
"iscsi_host_alloc failed\n"); "beiscsi_hba_alloc - iscsi_host_alloc failed\n");
return NULL; return NULL;
} }
shost->dma_boundary = pcidev->dma_mask; shost->dma_boundary = pcidev->dma_mask;
...@@ -510,8 +608,8 @@ static int beiscsi_enable_pci(struct pci_dev *pcidev) ...@@ -510,8 +608,8 @@ static int beiscsi_enable_pci(struct pci_dev *pcidev)
ret = pci_enable_device(pcidev); ret = pci_enable_device(pcidev);
if (ret) { if (ret) {
dev_err(&pcidev->dev, "beiscsi_enable_pci - enable device " dev_err(&pcidev->dev,
"failed. Returning -ENODEV\n"); "beiscsi_enable_pci - enable device failed\n");
return ret; return ret;
} }
...@@ -576,8 +674,9 @@ static void beiscsi_get_params(struct beiscsi_hba *phba) ...@@ -576,8 +674,9 @@ static void beiscsi_get_params(struct beiscsi_hba *phba)
+ BE2_TMFS) / 512) + 1) * 512; + BE2_TMFS) / 512) + 1) * 512;
phba->params.num_eq_entries = (phba->params.num_eq_entries < 1024) phba->params.num_eq_entries = (phba->params.num_eq_entries < 1024)
? 1024 : phba->params.num_eq_entries; ? 1024 : phba->params.num_eq_entries;
SE_DEBUG(DBG_LVL_8, "phba->params.num_eq_entries=%d\n", beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_INIT,
phba->params.num_eq_entries); "BM_%d : phba->params.num_eq_entries=%d\n",
phba->params.num_eq_entries);
phba->params.num_cq_entries = phba->params.num_cq_entries =
(((BE2_CMDS_PER_CXN * 2 + phba->fw_config.iscsi_cid_count * 2 (((BE2_CMDS_PER_CXN * 2 + phba->fw_config.iscsi_cid_count * 2
+ BE2_TMFS) / 512) + 1) * 512; + BE2_TMFS) / 512) + 1) * 512;
...@@ -621,8 +720,6 @@ static irqreturn_t be_isr_mcc(int irq, void *dev_id) ...@@ -621,8 +720,6 @@ static irqreturn_t be_isr_mcc(int irq, void *dev_id)
phba = pbe_eq->phba; phba = pbe_eq->phba;
mcc = &phba->ctrl.mcc_obj.cq; mcc = &phba->ctrl.mcc_obj.cq;
eqe = queue_tail_node(eq); eqe = queue_tail_node(eq);
if (!eqe)
SE_DEBUG(DBG_LVL_1, "eqe is NULL\n");
num_eq_processed = 0; num_eq_processed = 0;
...@@ -667,8 +764,6 @@ static irqreturn_t be_isr_msix(int irq, void *dev_id) ...@@ -667,8 +764,6 @@ static irqreturn_t be_isr_msix(int irq, void *dev_id)
eq = &pbe_eq->q; eq = &pbe_eq->q;
cq = pbe_eq->cq; cq = pbe_eq->cq;
eqe = queue_tail_node(eq); eqe = queue_tail_node(eq);
if (!eqe)
SE_DEBUG(DBG_LVL_1, "eqe is NULL\n");
phba = pbe_eq->phba; phba = pbe_eq->phba;
num_eq_processed = 0; num_eq_processed = 0;
...@@ -743,8 +838,6 @@ static irqreturn_t be_isr(int irq, void *dev_id) ...@@ -743,8 +838,6 @@ static irqreturn_t be_isr(int irq, void *dev_id)
mcc = &phba->ctrl.mcc_obj.cq; mcc = &phba->ctrl.mcc_obj.cq;
index = 0; index = 0;
eqe = queue_tail_node(eq); eqe = queue_tail_node(eq);
if (!eqe)
SE_DEBUG(DBG_LVL_1, "eqe is NULL\n");
num_ioeq_processed = 0; num_ioeq_processed = 0;
num_mcceq_processed = 0; num_mcceq_processed = 0;
...@@ -842,9 +935,10 @@ static int beiscsi_init_irqs(struct beiscsi_hba *phba) ...@@ -842,9 +935,10 @@ static int beiscsi_init_irqs(struct beiscsi_hba *phba)
phba->msi_name[i], phba->msi_name[i],
&phwi_context->be_eq[i]); &phwi_context->be_eq[i]);
if (ret) { if (ret) {
shost_printk(KERN_ERR, phba->shost, beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
"beiscsi_init_irqs-Failed to" "BM_%d : beiscsi_init_irqs-Failed to"
"register msix for i = %d\n", i); "register msix for i = %d\n",
i);
kfree(phba->msi_name[i]); kfree(phba->msi_name[i]);
goto free_msix_irqs; goto free_msix_irqs;
} }
...@@ -860,8 +954,9 @@ static int beiscsi_init_irqs(struct beiscsi_hba *phba) ...@@ -860,8 +954,9 @@ static int beiscsi_init_irqs(struct beiscsi_hba *phba)
ret = request_irq(msix_vec, be_isr_mcc, 0, phba->msi_name[i], ret = request_irq(msix_vec, be_isr_mcc, 0, phba->msi_name[i],
&phwi_context->be_eq[i]); &phwi_context->be_eq[i]);
if (ret) { if (ret) {
shost_printk(KERN_ERR, phba->shost, "beiscsi_init_irqs-" beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT ,
"Failed to register beiscsi_msix_mcc\n"); "BM_%d : beiscsi_init_irqs-"
"Failed to register beiscsi_msix_mcc\n");
kfree(phba->msi_name[i]); kfree(phba->msi_name[i]);
goto free_msix_irqs; goto free_msix_irqs;
} }
...@@ -870,8 +965,9 @@ static int beiscsi_init_irqs(struct beiscsi_hba *phba) ...@@ -870,8 +965,9 @@ static int beiscsi_init_irqs(struct beiscsi_hba *phba)
ret = request_irq(pcidev->irq, be_isr, IRQF_SHARED, ret = request_irq(pcidev->irq, be_isr, IRQF_SHARED,
"beiscsi", phba); "beiscsi", phba);
if (ret) { if (ret) {
shost_printk(KERN_ERR, phba->shost, "beiscsi_init_irqs-" beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
"Failed to register irq\\n"); "BM_%d : beiscsi_init_irqs-"
"Failed to register irq\\n");
return ret; return ret;
} }
} }
...@@ -922,7 +1018,9 @@ beiscsi_process_async_pdu(struct beiscsi_conn *beiscsi_conn, ...@@ -922,7 +1018,9 @@ beiscsi_process_async_pdu(struct beiscsi_conn *beiscsi_conn,
case ISCSI_OP_REJECT: case ISCSI_OP_REJECT:
WARN_ON(!pbuffer); WARN_ON(!pbuffer);
WARN_ON(!(buf_len == 48)); WARN_ON(!(buf_len == 48));
SE_DEBUG(DBG_LVL_1, "In ISCSI_OP_REJECT\n"); beiscsi_log(phba, KERN_ERR,
BEISCSI_LOG_CONFIG | BEISCSI_LOG_IO,
"BM_%d : In ISCSI_OP_REJECT\n");
break; break;
case ISCSI_OP_LOGIN_RSP: case ISCSI_OP_LOGIN_RSP:
case ISCSI_OP_TEXT_RSP: case ISCSI_OP_TEXT_RSP:
...@@ -932,11 +1030,12 @@ beiscsi_process_async_pdu(struct beiscsi_conn *beiscsi_conn, ...@@ -932,11 +1030,12 @@ beiscsi_process_async_pdu(struct beiscsi_conn *beiscsi_conn,
login_hdr->itt = io_task->libiscsi_itt; login_hdr->itt = io_task->libiscsi_itt;
break; break;
default: default:
shost_printk(KERN_WARNING, phba->shost, beiscsi_log(phba, KERN_WARNING,
"Unrecognized opcode 0x%x in async msg\n", BEISCSI_LOG_IO | BEISCSI_LOG_CONFIG,
(ppdu-> "BM_%d : Unrecognized opcode 0x%x in async msg\n",
(ppdu->
dw[offsetof(struct amap_pdu_base, opcode) / 32] dw[offsetof(struct amap_pdu_base, opcode) / 32]
& PDUBASE_OPCODE_MASK)); & PDUBASE_OPCODE_MASK));
return 1; return 1;
} }
...@@ -951,9 +1050,11 @@ static struct sgl_handle *alloc_io_sgl_handle(struct beiscsi_hba *phba) ...@@ -951,9 +1050,11 @@ static struct sgl_handle *alloc_io_sgl_handle(struct beiscsi_hba *phba)
struct sgl_handle *psgl_handle; struct sgl_handle *psgl_handle;
if (phba->io_sgl_hndl_avbl) { if (phba->io_sgl_hndl_avbl) {
SE_DEBUG(DBG_LVL_8, beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_IO,
"In alloc_io_sgl_handle,io_sgl_alloc_index=%d\n", "BM_%d : In alloc_io_sgl_handle,"
phba->io_sgl_alloc_index); " io_sgl_alloc_index=%d\n",
phba->io_sgl_alloc_index);
psgl_handle = phba->io_sgl_hndl_base[phba-> psgl_handle = phba->io_sgl_hndl_base[phba->
io_sgl_alloc_index]; io_sgl_alloc_index];
phba->io_sgl_hndl_base[phba->io_sgl_alloc_index] = NULL; phba->io_sgl_hndl_base[phba->io_sgl_alloc_index] = NULL;
...@@ -971,17 +1072,20 @@ static struct sgl_handle *alloc_io_sgl_handle(struct beiscsi_hba *phba) ...@@ -971,17 +1072,20 @@ static struct sgl_handle *alloc_io_sgl_handle(struct beiscsi_hba *phba)
static void static void
free_io_sgl_handle(struct beiscsi_hba *phba, struct sgl_handle *psgl_handle) free_io_sgl_handle(struct beiscsi_hba *phba, struct sgl_handle *psgl_handle)
{ {
SE_DEBUG(DBG_LVL_8, "In free_,io_sgl_free_index=%d\n", beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_IO,
phba->io_sgl_free_index); "BM_%d : In free_,io_sgl_free_index=%d\n",
phba->io_sgl_free_index);
if (phba->io_sgl_hndl_base[phba->io_sgl_free_index]) { if (phba->io_sgl_hndl_base[phba->io_sgl_free_index]) {
/* /*
* this can happen if clean_task is called on a task that * this can happen if clean_task is called on a task that
* failed in xmit_task or alloc_pdu. * failed in xmit_task or alloc_pdu.
*/ */
SE_DEBUG(DBG_LVL_8, beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_IO,
"Double Free in IO SGL io_sgl_free_index=%d," "BM_%d : Double Free in IO SGL io_sgl_free_index=%d,"
"value there=%p\n", phba->io_sgl_free_index, "value there=%p\n", phba->io_sgl_free_index,
phba->io_sgl_hndl_base[phba->io_sgl_free_index]); phba->io_sgl_hndl_base
[phba->io_sgl_free_index]);
return; return;
} }
phba->io_sgl_hndl_base[phba->io_sgl_free_index] = psgl_handle; phba->io_sgl_hndl_base[phba->io_sgl_free_index] = psgl_handle;
...@@ -1043,11 +1147,12 @@ free_wrb_handle(struct beiscsi_hba *phba, struct hwi_wrb_context *pwrb_context, ...@@ -1043,11 +1147,12 @@ free_wrb_handle(struct beiscsi_hba *phba, struct hwi_wrb_context *pwrb_context,
else else
pwrb_context->free_index++; pwrb_context->free_index++;
SE_DEBUG(DBG_LVL_8, beiscsi_log(phba, KERN_INFO,
"FREE WRB: pwrb_handle=%p free_index=0x%x" BEISCSI_LOG_IO | BEISCSI_LOG_CONFIG,
"wrb_handles_available=%d\n", "BM_%d : FREE WRB: pwrb_handle=%p free_index=0x%x"
pwrb_handle, pwrb_context->free_index, "wrb_handles_available=%d\n",
pwrb_context->wrb_handles_available); pwrb_handle, pwrb_context->free_index,
pwrb_context->wrb_handles_available);
} }
static struct sgl_handle *alloc_mgmt_sgl_handle(struct beiscsi_hba *phba) static struct sgl_handle *alloc_mgmt_sgl_handle(struct beiscsi_hba *phba)
...@@ -1057,8 +1162,11 @@ static struct sgl_handle *alloc_mgmt_sgl_handle(struct beiscsi_hba *phba) ...@@ -1057,8 +1162,11 @@ static struct sgl_handle *alloc_mgmt_sgl_handle(struct beiscsi_hba *phba)
if (phba->eh_sgl_hndl_avbl) { if (phba->eh_sgl_hndl_avbl) {
psgl_handle = phba->eh_sgl_hndl_base[phba->eh_sgl_alloc_index]; psgl_handle = phba->eh_sgl_hndl_base[phba->eh_sgl_alloc_index];
phba->eh_sgl_hndl_base[phba->eh_sgl_alloc_index] = NULL; phba->eh_sgl_hndl_base[phba->eh_sgl_alloc_index] = NULL;
SE_DEBUG(DBG_LVL_8, "mgmt_sgl_alloc_index=%d=0x%x\n", beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_CONFIG,
phba->eh_sgl_alloc_index, phba->eh_sgl_alloc_index); "BM_%d : mgmt_sgl_alloc_index=%d=0x%x\n",
phba->eh_sgl_alloc_index,
phba->eh_sgl_alloc_index);
phba->eh_sgl_hndl_avbl--; phba->eh_sgl_hndl_avbl--;
if (phba->eh_sgl_alloc_index == if (phba->eh_sgl_alloc_index ==
(phba->params.icds_per_ctrl - phba->params.ios_per_ctrl - (phba->params.icds_per_ctrl - phba->params.ios_per_ctrl -
...@@ -1075,16 +1183,20 @@ void ...@@ -1075,16 +1183,20 @@ void
free_mgmt_sgl_handle(struct beiscsi_hba *phba, struct sgl_handle *psgl_handle) free_mgmt_sgl_handle(struct beiscsi_hba *phba, struct sgl_handle *psgl_handle)
{ {
SE_DEBUG(DBG_LVL_8, "In free_mgmt_sgl_handle,eh_sgl_free_index=%d\n", beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_CONFIG,
phba->eh_sgl_free_index); "BM_%d : In free_mgmt_sgl_handle,"
"eh_sgl_free_index=%d\n",
phba->eh_sgl_free_index);
if (phba->eh_sgl_hndl_base[phba->eh_sgl_free_index]) { if (phba->eh_sgl_hndl_base[phba->eh_sgl_free_index]) {
/* /*
* this can happen if clean_task is called on a task that * this can happen if clean_task is called on a task that
* failed in xmit_task or alloc_pdu. * failed in xmit_task or alloc_pdu.
*/ */
SE_DEBUG(DBG_LVL_8, beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_CONFIG,
"Double Free in eh SGL ,eh_sgl_free_index=%d\n", "BM_%d : Double Free in eh SGL ,"
phba->eh_sgl_free_index); "eh_sgl_free_index=%d\n",
phba->eh_sgl_free_index);
return; return;
} }
phba->eh_sgl_hndl_base[phba->eh_sgl_free_index] = psgl_handle; phba->eh_sgl_hndl_base[phba->eh_sgl_free_index] = psgl_handle;
...@@ -1326,9 +1438,10 @@ static void hwi_complete_cmd(struct beiscsi_conn *beiscsi_conn, ...@@ -1326,9 +1438,10 @@ static void hwi_complete_cmd(struct beiscsi_conn *beiscsi_conn,
break; break;
case HWH_TYPE_LOGIN: case HWH_TYPE_LOGIN:
SE_DEBUG(DBG_LVL_1, beiscsi_log(phba, KERN_ERR,
"\t\t No HWH_TYPE_LOGIN Expected in hwi_complete_cmd" BEISCSI_LOG_CONFIG | BEISCSI_LOG_IO,
"- Solicited path\n"); "BM_%d :\t\t No HWH_TYPE_LOGIN Expected in"
" hwi_complete_cmd- Solicited path\n");
break; break;
case HWH_TYPE_NOP: case HWH_TYPE_NOP:
...@@ -1336,13 +1449,14 @@ static void hwi_complete_cmd(struct beiscsi_conn *beiscsi_conn, ...@@ -1336,13 +1449,14 @@ static void hwi_complete_cmd(struct beiscsi_conn *beiscsi_conn,
break; break;
default: default:
shost_printk(KERN_WARNING, phba->shost, beiscsi_log(phba, KERN_WARNING,
"In hwi_complete_cmd, unknown type = %d" BEISCSI_LOG_CONFIG | BEISCSI_LOG_IO,
"wrb_index 0x%x CID 0x%x\n", type, "BM_%d : In hwi_complete_cmd, unknown type = %d"
((psol->dw[offsetof(struct amap_iscsi_wrb, "wrb_index 0x%x CID 0x%x\n", type,
type) / 32] & SOL_WRB_INDEX_MASK) >> 16), ((psol->dw[offsetof(struct amap_iscsi_wrb,
((psol->dw[offsetof(struct amap_sol_cqe, type) / 32] & SOL_WRB_INDEX_MASK) >> 16),
cid) / 32] & SOL_CID_MASK) >> 6)); ((psol->dw[offsetof(struct amap_sol_cqe,
cid) / 32] & SOL_CID_MASK) >> 6));
break; break;
} }
...@@ -1397,10 +1511,11 @@ hwi_get_async_handle(struct beiscsi_hba *phba, ...@@ -1397,10 +1511,11 @@ hwi_get_async_handle(struct beiscsi_hba *phba,
break; break;
default: default:
pbusy_list = NULL; pbusy_list = NULL;
shost_printk(KERN_WARNING, phba->shost, beiscsi_log(phba, KERN_WARNING,
"Unexpected code=%d\n", BEISCSI_LOG_IO | BEISCSI_LOG_CONFIG,
pdpdu_cqe->dw[offsetof(struct amap_i_t_dpdu_cqe, "BM_%d : Unexpected code=%d\n",
code) / 32] & PDUCQE_CODE_MASK); pdpdu_cqe->dw[offsetof(struct amap_i_t_dpdu_cqe,
code) / 32] & PDUCQE_CODE_MASK);
return NULL; return NULL;
} }
...@@ -1425,8 +1540,9 @@ hwi_get_async_handle(struct beiscsi_hba *phba, ...@@ -1425,8 +1540,9 @@ hwi_get_async_handle(struct beiscsi_hba *phba,
} }
static unsigned int static unsigned int
hwi_update_async_writables(struct hwi_async_pdu_context *pasync_ctx, hwi_update_async_writables(struct beiscsi_hba *phba,
unsigned int is_header, unsigned int cq_index) struct hwi_async_pdu_context *pasync_ctx,
unsigned int is_header, unsigned int cq_index)
{ {
struct list_head *pbusy_list; struct list_head *pbusy_list;
struct async_pdu_handle *pasync_handle; struct async_pdu_handle *pasync_handle;
...@@ -1463,9 +1579,10 @@ hwi_update_async_writables(struct hwi_async_pdu_context *pasync_ctx, ...@@ -1463,9 +1579,10 @@ hwi_update_async_writables(struct hwi_async_pdu_context *pasync_ctx,
} }
if (!writables) { if (!writables) {
SE_DEBUG(DBG_LVL_1, beiscsi_log(phba, KERN_ERR,
"Duplicate notification received - index 0x%x!!\n", BEISCSI_LOG_CONFIG | BEISCSI_LOG_IO,
cq_index); "BM_%d : Duplicate notification received - index 0x%x!!\n",
cq_index);
WARN_ON(1); WARN_ON(1);
} }
...@@ -1616,8 +1733,8 @@ static void hwi_flush_default_pdu_buffer(struct beiscsi_hba *phba, ...@@ -1616,8 +1733,8 @@ static void hwi_flush_default_pdu_buffer(struct beiscsi_hba *phba,
pdpdu_cqe, &cq_index); pdpdu_cqe, &cq_index);
BUG_ON(pasync_handle->is_header != 0); BUG_ON(pasync_handle->is_header != 0);
if (pasync_handle->consumed == 0) if (pasync_handle->consumed == 0)
hwi_update_async_writables(pasync_ctx, pasync_handle->is_header, hwi_update_async_writables(phba, pasync_ctx,
cq_index); pasync_handle->is_header, cq_index);
hwi_free_async_msg(phba, pasync_handle->cri); hwi_free_async_msg(phba, pasync_handle->cri);
hwi_post_async_buffers(phba, pasync_handle->is_header); hwi_post_async_buffers(phba, pasync_handle->is_header);
...@@ -1745,8 +1862,9 @@ static void hwi_process_default_pdu_ring(struct beiscsi_conn *beiscsi_conn, ...@@ -1745,8 +1862,9 @@ static void hwi_process_default_pdu_ring(struct beiscsi_conn *beiscsi_conn,
pdpdu_cqe, &cq_index); pdpdu_cqe, &cq_index);
if (pasync_handle->consumed == 0) if (pasync_handle->consumed == 0)
hwi_update_async_writables(pasync_ctx, pasync_handle->is_header, hwi_update_async_writables(phba, pasync_ctx,
cq_index); pasync_handle->is_header, cq_index);
hwi_gather_async_pdu(beiscsi_conn, phba, pasync_handle); hwi_gather_async_pdu(beiscsi_conn, phba, pasync_handle);
hwi_post_async_buffers(phba, pasync_handle->is_header); hwi_post_async_buffers(phba, pasync_handle->is_header);
} }
...@@ -1774,9 +1892,10 @@ static void beiscsi_process_mcc_isr(struct beiscsi_hba *phba) ...@@ -1774,9 +1892,10 @@ static void beiscsi_process_mcc_isr(struct beiscsi_hba *phba)
beiscsi_async_link_state_process(phba, beiscsi_async_link_state_process(phba,
(struct be_async_event_link_state *) mcc_compl); (struct be_async_event_link_state *) mcc_compl);
else else
SE_DEBUG(DBG_LVL_1, beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_MBOX,
" Unsupported Async Event, flags" "BM_%d : Unsupported Async Event, flags"
" = 0x%08x\n", mcc_compl->flags); " = 0x%08x\n",
mcc_compl->flags);
} else if (mcc_compl->flags & CQE_FLAGS_COMPLETED_MASK) { } else if (mcc_compl->flags & CQE_FLAGS_COMPLETED_MASK) {
be_mcc_compl_process_isr(&phba->ctrl, mcc_compl); be_mcc_compl_process_isr(&phba->ctrl, mcc_compl);
atomic_dec(&phba->ctrl.mcc_obj.q.used); atomic_dec(&phba->ctrl.mcc_obj.q.used);
...@@ -1835,26 +1954,36 @@ static unsigned int beiscsi_process_cq(struct be_eq_obj *pbe_eq) ...@@ -1835,26 +1954,36 @@ static unsigned int beiscsi_process_cq(struct be_eq_obj *pbe_eq)
hwi_complete_cmd(beiscsi_conn, phba, sol); hwi_complete_cmd(beiscsi_conn, phba, sol);
break; break;
case DRIVERMSG_NOTIFY: case DRIVERMSG_NOTIFY:
SE_DEBUG(DBG_LVL_8, "Received DRIVERMSG_NOTIFY\n"); beiscsi_log(phba, KERN_INFO,
BEISCSI_LOG_IO | BEISCSI_LOG_CONFIG,
"BM_%d : Received DRIVERMSG_NOTIFY\n");
dmsg = (struct dmsg_cqe *)sol; dmsg = (struct dmsg_cqe *)sol;
hwi_complete_drvr_msgs(beiscsi_conn, phba, sol); hwi_complete_drvr_msgs(beiscsi_conn, phba, sol);
break; break;
case UNSOL_HDR_NOTIFY: case UNSOL_HDR_NOTIFY:
SE_DEBUG(DBG_LVL_8, "Received UNSOL_HDR_ NOTIFY\n"); beiscsi_log(phba, KERN_INFO,
BEISCSI_LOG_IO | BEISCSI_LOG_CONFIG,
"BM_%d : Received UNSOL_HDR_ NOTIFY\n");
hwi_process_default_pdu_ring(beiscsi_conn, phba, hwi_process_default_pdu_ring(beiscsi_conn, phba,
(struct i_t_dpdu_cqe *)sol); (struct i_t_dpdu_cqe *)sol);
break; break;
case UNSOL_DATA_NOTIFY: case UNSOL_DATA_NOTIFY:
SE_DEBUG(DBG_LVL_8, "Received UNSOL_DATA_NOTIFY\n"); beiscsi_log(phba, KERN_INFO,
BEISCSI_LOG_CONFIG | BEISCSI_LOG_IO,
"BM_%d : Received UNSOL_DATA_NOTIFY\n");
hwi_process_default_pdu_ring(beiscsi_conn, phba, hwi_process_default_pdu_ring(beiscsi_conn, phba,
(struct i_t_dpdu_cqe *)sol); (struct i_t_dpdu_cqe *)sol);
break; break;
case CXN_INVALIDATE_INDEX_NOTIFY: case CXN_INVALIDATE_INDEX_NOTIFY:
case CMD_INVALIDATED_NOTIFY: case CMD_INVALIDATED_NOTIFY:
case CXN_INVALIDATE_NOTIFY: case CXN_INVALIDATE_NOTIFY:
SE_DEBUG(DBG_LVL_1, beiscsi_log(phba, KERN_ERR,
"Ignoring CQ Error notification for cmd/cxn" BEISCSI_LOG_IO | BEISCSI_LOG_CONFIG,
"invalidate\n"); "BM_%d : Ignoring CQ Error notification for"
" cmd/cxn invalidate\n");
break; break;
case SOL_CMD_KILLED_DATA_DIGEST_ERR: case SOL_CMD_KILLED_DATA_DIGEST_ERR:
case CMD_KILLED_INVALID_STATSN_RCVD: case CMD_KILLED_INVALID_STATSN_RCVD:
...@@ -1864,17 +1993,20 @@ static unsigned int beiscsi_process_cq(struct be_eq_obj *pbe_eq) ...@@ -1864,17 +1993,20 @@ static unsigned int beiscsi_process_cq(struct be_eq_obj *pbe_eq)
case CMD_CXN_KILLED_ITT_INVALID: case CMD_CXN_KILLED_ITT_INVALID:
case CMD_CXN_KILLED_SEQ_OUTOFORDER: case CMD_CXN_KILLED_SEQ_OUTOFORDER:
case CMD_CXN_KILLED_INVALID_DATASN_RCVD: case CMD_CXN_KILLED_INVALID_DATASN_RCVD:
SE_DEBUG(DBG_LVL_1, beiscsi_log(phba, KERN_ERR,
"CQ Error notification for cmd.. " BEISCSI_LOG_CONFIG | BEISCSI_LOG_IO,
"code %d cid 0x%x\n", "BM_%d : CQ Error notification for cmd.. "
sol->dw[offsetof(struct amap_sol_cqe, code) / "code %d cid 0x%x\n",
32] & CQE_CODE_MASK, sol->dw[offsetof(struct amap_sol_cqe,
(sol->dw[offsetof(struct amap_sol_cqe, cid) / code) / 32] & CQE_CODE_MASK,
32] & SOL_CID_MASK)); sol->dw[offsetof(struct amap_sol_cqe,
cid) / 32] & SOL_CID_MASK);
break; break;
case UNSOL_DATA_DIGEST_ERROR_NOTIFY: case UNSOL_DATA_DIGEST_ERROR_NOTIFY:
SE_DEBUG(DBG_LVL_1, beiscsi_log(phba, KERN_ERR,
"Digest error on def pdu ring, dropping..\n"); BEISCSI_LOG_IO | BEISCSI_LOG_CONFIG,
"BM_%d : Digest error on def pdu ring,"
" dropping..\n");
hwi_flush_default_pdu_buffer(phba, beiscsi_conn, hwi_flush_default_pdu_buffer(phba, beiscsi_conn,
(struct i_t_dpdu_cqe *) sol); (struct i_t_dpdu_cqe *) sol);
break; break;
...@@ -1892,33 +2024,38 @@ static unsigned int beiscsi_process_cq(struct be_eq_obj *pbe_eq) ...@@ -1892,33 +2024,38 @@ static unsigned int beiscsi_process_cq(struct be_eq_obj *pbe_eq)
case CXN_KILLED_OVER_RUN_RESIDUAL: case CXN_KILLED_OVER_RUN_RESIDUAL:
case CXN_KILLED_UNDER_RUN_RESIDUAL: case CXN_KILLED_UNDER_RUN_RESIDUAL:
case CXN_KILLED_CMND_DATA_NOT_ON_SAME_CONN: case CXN_KILLED_CMND_DATA_NOT_ON_SAME_CONN:
SE_DEBUG(DBG_LVL_1, "CQ Error %d, reset CID " beiscsi_log(phba, KERN_ERR,
"0x%x...\n", BEISCSI_LOG_IO | BEISCSI_LOG_CONFIG,
sol->dw[offsetof(struct amap_sol_cqe, code) / "BM_%d : CQ Error %d, reset CID 0x%x...\n",
32] & CQE_CODE_MASK, sol->dw[offsetof(struct amap_sol_cqe,
(sol->dw[offsetof(struct amap_sol_cqe, cid) / code) / 32] & CQE_CODE_MASK,
32] & CQE_CID_MASK)); sol->dw[offsetof(struct amap_sol_cqe,
cid) / 32] & CQE_CID_MASK);
iscsi_conn_failure(beiscsi_conn->conn, iscsi_conn_failure(beiscsi_conn->conn,
ISCSI_ERR_CONN_FAILED); ISCSI_ERR_CONN_FAILED);
break; break;
case CXN_KILLED_RST_SENT: case CXN_KILLED_RST_SENT:
case CXN_KILLED_RST_RCVD: case CXN_KILLED_RST_RCVD:
SE_DEBUG(DBG_LVL_1, "CQ Error %d, reset" beiscsi_log(phba, KERN_ERR,
"received/sent on CID 0x%x...\n", BEISCSI_LOG_IO | BEISCSI_LOG_CONFIG,
sol->dw[offsetof(struct amap_sol_cqe, code) / "BM_%d : CQ Error %d, reset"
32] & CQE_CODE_MASK, "received/sent on CID 0x%x...\n",
(sol->dw[offsetof(struct amap_sol_cqe, cid) / sol->dw[offsetof(struct amap_sol_cqe,
32] & CQE_CID_MASK)); code) / 32] & CQE_CODE_MASK,
sol->dw[offsetof(struct amap_sol_cqe,
cid) / 32] & CQE_CID_MASK);
iscsi_conn_failure(beiscsi_conn->conn, iscsi_conn_failure(beiscsi_conn->conn,
ISCSI_ERR_CONN_FAILED); ISCSI_ERR_CONN_FAILED);
break; break;
default: default:
SE_DEBUG(DBG_LVL_1, "CQ Error Invalid code= %d " beiscsi_log(phba, KERN_ERR,
"received on CID 0x%x...\n", BEISCSI_LOG_IO | BEISCSI_LOG_CONFIG,
sol->dw[offsetof(struct amap_sol_cqe, code) / "BM_%d : CQ Error Invalid code= %d "
32] & CQE_CODE_MASK, "received on CID 0x%x...\n",
(sol->dw[offsetof(struct amap_sol_cqe, cid) / sol->dw[offsetof(struct amap_sol_cqe,
32] & CQE_CID_MASK)); code) / 32] & CQE_CODE_MASK,
sol->dw[offsetof(struct amap_sol_cqe,
cid) / 32] & CQE_CID_MASK);
break; break;
} }
...@@ -1977,7 +2114,10 @@ static int be_iopoll(struct blk_iopoll *iop, int budget) ...@@ -1977,7 +2114,10 @@ static int be_iopoll(struct blk_iopoll *iop, int budget)
if (ret < budget) { if (ret < budget) {
phba = pbe_eq->phba; phba = pbe_eq->phba;
blk_iopoll_complete(iop); blk_iopoll_complete(iop);
SE_DEBUG(DBG_LVL_8, "rearm pbe_eq->q.id =%d\n", pbe_eq->q.id); beiscsi_log(phba, KERN_INFO,
BEISCSI_LOG_CONFIG | BEISCSI_LOG_IO,
"BM_%d : rearm pbe_eq->q.id =%d\n",
pbe_eq->q.id);
hwi_ring_eq_db(phba, pbe_eq->q.id, 0, 0, 1, 1); hwi_ring_eq_db(phba, pbe_eq->q.id, 0, 0, 1, 1);
} }
return ret; return ret;
...@@ -2348,16 +2488,16 @@ static int beiscsi_init_wrb_handle(struct beiscsi_hba *phba) ...@@ -2348,16 +2488,16 @@ static int beiscsi_init_wrb_handle(struct beiscsi_hba *phba)
kzalloc(sizeof(struct wrb_handle *) * kzalloc(sizeof(struct wrb_handle *) *
phba->params.wrbs_per_cxn, GFP_KERNEL); phba->params.wrbs_per_cxn, GFP_KERNEL);
if (!pwrb_context->pwrb_handle_base) { if (!pwrb_context->pwrb_handle_base) {
shost_printk(KERN_ERR, phba->shost, beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
"Mem Alloc Failed. Failing to load\n"); "BM_%d : Mem Alloc Failed. Failing to load\n");
goto init_wrb_hndl_failed; goto init_wrb_hndl_failed;
} }
pwrb_context->pwrb_handle_basestd = pwrb_context->pwrb_handle_basestd =
kzalloc(sizeof(struct wrb_handle *) * kzalloc(sizeof(struct wrb_handle *) *
phba->params.wrbs_per_cxn, GFP_KERNEL); phba->params.wrbs_per_cxn, GFP_KERNEL);
if (!pwrb_context->pwrb_handle_basestd) { if (!pwrb_context->pwrb_handle_basestd) {
shost_printk(KERN_ERR, phba->shost, beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
"Mem Alloc Failed. Failing to load\n"); "BM_%d : Mem Alloc Failed. Failing to load\n");
goto init_wrb_hndl_failed; goto init_wrb_hndl_failed;
} }
if (!num_cxn_wrbh) { if (!num_cxn_wrbh) {
...@@ -2438,12 +2578,13 @@ static void hwi_init_async_pdu_ctx(struct beiscsi_hba *phba) ...@@ -2438,12 +2578,13 @@ static void hwi_init_async_pdu_ctx(struct beiscsi_hba *phba)
mem_descr = (struct be_mem_descriptor *)phba->init_mem; mem_descr = (struct be_mem_descriptor *)phba->init_mem;
mem_descr += HWI_MEM_ASYNC_HEADER_BUF; mem_descr += HWI_MEM_ASYNC_HEADER_BUF;
if (mem_descr->mem_array[0].virtual_address) { if (mem_descr->mem_array[0].virtual_address) {
SE_DEBUG(DBG_LVL_8, beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_INIT,
"hwi_init_async_pdu_ctx HWI_MEM_ASYNC_HEADER_BUF" "BM_%d : hwi_init_async_pdu_ctx"
"va=%p\n", mem_descr->mem_array[0].virtual_address); " HWI_MEM_ASYNC_HEADER_BUF va=%p\n",
mem_descr->mem_array[0].virtual_address);
} else } else
shost_printk(KERN_WARNING, phba->shost, beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_INIT,
"No Virtual address\n"); "BM_%d : No Virtual address\n");
pasync_ctx->async_header.va_base = pasync_ctx->async_header.va_base =
mem_descr->mem_array[0].virtual_address; mem_descr->mem_array[0].virtual_address;
...@@ -2454,24 +2595,27 @@ static void hwi_init_async_pdu_ctx(struct beiscsi_hba *phba) ...@@ -2454,24 +2595,27 @@ static void hwi_init_async_pdu_ctx(struct beiscsi_hba *phba)
mem_descr = (struct be_mem_descriptor *)phba->init_mem; mem_descr = (struct be_mem_descriptor *)phba->init_mem;
mem_descr += HWI_MEM_ASYNC_HEADER_RING; mem_descr += HWI_MEM_ASYNC_HEADER_RING;
if (mem_descr->mem_array[0].virtual_address) { if (mem_descr->mem_array[0].virtual_address) {
SE_DEBUG(DBG_LVL_8, beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_INIT,
"hwi_init_async_pdu_ctx HWI_MEM_ASYNC_HEADER_RING" "BM_%d : hwi_init_async_pdu_ctx"
"va=%p\n", mem_descr->mem_array[0].virtual_address); " HWI_MEM_ASYNC_HEADER_RING va=%p\n",
mem_descr->mem_array[0].virtual_address);
} else } else
shost_printk(KERN_WARNING, phba->shost, beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_INIT,
"No Virtual address\n"); "BM_%d : No Virtual address\n");
pasync_ctx->async_header.ring_base = pasync_ctx->async_header.ring_base =
mem_descr->mem_array[0].virtual_address; mem_descr->mem_array[0].virtual_address;
mem_descr = (struct be_mem_descriptor *)phba->init_mem; mem_descr = (struct be_mem_descriptor *)phba->init_mem;
mem_descr += HWI_MEM_ASYNC_HEADER_HANDLE; mem_descr += HWI_MEM_ASYNC_HEADER_HANDLE;
if (mem_descr->mem_array[0].virtual_address) { if (mem_descr->mem_array[0].virtual_address) {
SE_DEBUG(DBG_LVL_8, beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_INIT,
"hwi_init_async_pdu_ctx HWI_MEM_ASYNC_HEADER_HANDLE" "BM_%d : hwi_init_async_pdu_ctx"
"va=%p\n", mem_descr->mem_array[0].virtual_address); " HWI_MEM_ASYNC_HEADER_HANDLE va=%p\n",
mem_descr->mem_array[0].virtual_address);
} else } else
shost_printk(KERN_WARNING, phba->shost, beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_INIT,
"No Virtual address\n"); "BM_%d : No Virtual address\n");
pasync_ctx->async_header.handle_base = pasync_ctx->async_header.handle_base =
mem_descr->mem_array[0].virtual_address; mem_descr->mem_array[0].virtual_address;
...@@ -2482,12 +2626,13 @@ static void hwi_init_async_pdu_ctx(struct beiscsi_hba *phba) ...@@ -2482,12 +2626,13 @@ static void hwi_init_async_pdu_ctx(struct beiscsi_hba *phba)
mem_descr = (struct be_mem_descriptor *)phba->init_mem; mem_descr = (struct be_mem_descriptor *)phba->init_mem;
mem_descr += HWI_MEM_ASYNC_DATA_RING; mem_descr += HWI_MEM_ASYNC_DATA_RING;
if (mem_descr->mem_array[0].virtual_address) { if (mem_descr->mem_array[0].virtual_address) {
SE_DEBUG(DBG_LVL_8, beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_INIT,
"hwi_init_async_pdu_ctx HWI_MEM_ASYNC_DATA_RING" "BM_%d : hwi_init_async_pdu_ctx"
"va=%p\n", mem_descr->mem_array[0].virtual_address); " HWI_MEM_ASYNC_DATA_RING va=%p\n",
mem_descr->mem_array[0].virtual_address);
} else } else
shost_printk(KERN_WARNING, phba->shost, beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_INIT,
"No Virtual address\n"); "BM_%d : No Virtual address\n");
pasync_ctx->async_data.ring_base = pasync_ctx->async_data.ring_base =
mem_descr->mem_array[0].virtual_address; mem_descr->mem_array[0].virtual_address;
...@@ -2495,8 +2640,8 @@ static void hwi_init_async_pdu_ctx(struct beiscsi_hba *phba) ...@@ -2495,8 +2640,8 @@ static void hwi_init_async_pdu_ctx(struct beiscsi_hba *phba)
mem_descr = (struct be_mem_descriptor *)phba->init_mem; mem_descr = (struct be_mem_descriptor *)phba->init_mem;
mem_descr += HWI_MEM_ASYNC_DATA_HANDLE; mem_descr += HWI_MEM_ASYNC_DATA_HANDLE;
if (!mem_descr->mem_array[0].virtual_address) if (!mem_descr->mem_array[0].virtual_address)
shost_printk(KERN_WARNING, phba->shost, beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_INIT,
"No Virtual address\n"); "BM_%d : No Virtual address\n");
pasync_ctx->async_data.handle_base = pasync_ctx->async_data.handle_base =
mem_descr->mem_array[0].virtual_address; mem_descr->mem_array[0].virtual_address;
...@@ -2511,12 +2656,14 @@ static void hwi_init_async_pdu_ctx(struct beiscsi_hba *phba) ...@@ -2511,12 +2656,14 @@ static void hwi_init_async_pdu_ctx(struct beiscsi_hba *phba)
mem_descr = (struct be_mem_descriptor *)phba->init_mem; mem_descr = (struct be_mem_descriptor *)phba->init_mem;
mem_descr += HWI_MEM_ASYNC_DATA_BUF; mem_descr += HWI_MEM_ASYNC_DATA_BUF;
if (mem_descr->mem_array[0].virtual_address) { if (mem_descr->mem_array[0].virtual_address) {
SE_DEBUG(DBG_LVL_8, beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_INIT,
"hwi_init_async_pdu_ctx HWI_MEM_ASYNC_DATA_BUF" "BM_%d : hwi_init_async_pdu_ctx"
"va=%p\n", mem_descr->mem_array[0].virtual_address); " HWI_MEM_ASYNC_DATA_BUF va=%p\n",
mem_descr->mem_array[0].virtual_address);
} else } else
shost_printk(KERN_WARNING, phba->shost, beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_INIT,
"No Virtual address\n"); "BM_%d : No Virtual address\n");
idx = 0; idx = 0;
pasync_ctx->async_data.va_base = pasync_ctx->async_data.va_base =
mem_descr->mem_array[idx].virtual_address; mem_descr->mem_array[idx].virtual_address;
...@@ -2657,7 +2804,7 @@ static int beiscsi_create_eqs(struct beiscsi_hba *phba, ...@@ -2657,7 +2804,7 @@ static int beiscsi_create_eqs(struct beiscsi_hba *phba,
struct hwi_context_memory *phwi_context) struct hwi_context_memory *phwi_context)
{ {
unsigned int i, num_eq_pages; unsigned int i, num_eq_pages;
int ret, eq_for_mcc; int ret = 0, eq_for_mcc;
struct be_queue_info *eq; struct be_queue_info *eq;
struct be_dma_mem *mem; struct be_dma_mem *mem;
void *eq_vaddress; void *eq_vaddress;
...@@ -2684,8 +2831,8 @@ static int beiscsi_create_eqs(struct beiscsi_hba *phba, ...@@ -2684,8 +2831,8 @@ static int beiscsi_create_eqs(struct beiscsi_hba *phba,
ret = be_fill_queue(eq, phba->params.num_eq_entries, ret = be_fill_queue(eq, phba->params.num_eq_entries,
sizeof(struct be_eq_entry), eq_vaddress); sizeof(struct be_eq_entry), eq_vaddress);
if (ret) { if (ret) {
shost_printk(KERN_ERR, phba->shost, beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
"be_fill_queue Failed for EQ\n"); "BM_%d : be_fill_queue Failed for EQ\n");
goto create_eq_error; goto create_eq_error;
} }
...@@ -2693,12 +2840,15 @@ static int beiscsi_create_eqs(struct beiscsi_hba *phba, ...@@ -2693,12 +2840,15 @@ static int beiscsi_create_eqs(struct beiscsi_hba *phba,
ret = beiscsi_cmd_eq_create(&phba->ctrl, eq, ret = beiscsi_cmd_eq_create(&phba->ctrl, eq,
phwi_context->cur_eqd); phwi_context->cur_eqd);
if (ret) { if (ret) {
shost_printk(KERN_ERR, phba->shost, beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
"beiscsi_cmd_eq_create" "BM_%d : beiscsi_cmd_eq_create"
"Failedfor EQ\n"); "Failed for EQ\n");
goto create_eq_error; goto create_eq_error;
} }
SE_DEBUG(DBG_LVL_8, "eqid = %d\n", phwi_context->be_eq[i].q.id);
beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_INIT,
"BM_%d : eqid = %d\n",
phwi_context->be_eq[i].q.id);
} }
return 0; return 0;
create_eq_error: create_eq_error:
...@@ -2717,7 +2867,7 @@ static int beiscsi_create_cqs(struct beiscsi_hba *phba, ...@@ -2717,7 +2867,7 @@ static int beiscsi_create_cqs(struct beiscsi_hba *phba,
struct hwi_context_memory *phwi_context) struct hwi_context_memory *phwi_context)
{ {
unsigned int i, num_cq_pages; unsigned int i, num_cq_pages;
int ret; int ret = 0;
struct be_queue_info *cq, *eq; struct be_queue_info *cq, *eq;
struct be_dma_mem *mem; struct be_dma_mem *mem;
struct be_eq_obj *pbe_eq; struct be_eq_obj *pbe_eq;
...@@ -2742,8 +2892,9 @@ static int beiscsi_create_cqs(struct beiscsi_hba *phba, ...@@ -2742,8 +2892,9 @@ static int beiscsi_create_cqs(struct beiscsi_hba *phba,
ret = be_fill_queue(cq, phba->params.num_cq_entries, ret = be_fill_queue(cq, phba->params.num_cq_entries,
sizeof(struct sol_cqe), cq_vaddress); sizeof(struct sol_cqe), cq_vaddress);
if (ret) { if (ret) {
shost_printk(KERN_ERR, phba->shost, beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
"be_fill_queue Failed for ISCSI CQ\n"); "BM_%d : be_fill_queue Failed "
"for ISCSI CQ\n");
goto create_cq_error; goto create_cq_error;
} }
...@@ -2751,14 +2902,14 @@ static int beiscsi_create_cqs(struct beiscsi_hba *phba, ...@@ -2751,14 +2902,14 @@ static int beiscsi_create_cqs(struct beiscsi_hba *phba,
ret = beiscsi_cmd_cq_create(&phba->ctrl, cq, eq, false, ret = beiscsi_cmd_cq_create(&phba->ctrl, cq, eq, false,
false, 0); false, 0);
if (ret) { if (ret) {
shost_printk(KERN_ERR, phba->shost, beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
"beiscsi_cmd_eq_create" "BM_%d : beiscsi_cmd_eq_create"
"Failed for ISCSI CQ\n"); "Failed for ISCSI CQ\n");
goto create_cq_error; goto create_cq_error;
} }
SE_DEBUG(DBG_LVL_8, "iscsi cq_id is %d for eq_id %d\n", beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_INIT,
cq->id, eq->id); "BM_%d : iscsi cq_id is %d for eq_id %d\n"
SE_DEBUG(DBG_LVL_8, "ISCSI CQ CREATED\n"); "iSCSI CQ CREATED\n", cq->id, eq->id);
} }
return 0; return 0;
...@@ -2799,8 +2950,8 @@ beiscsi_create_def_hdr(struct beiscsi_hba *phba, ...@@ -2799,8 +2950,8 @@ beiscsi_create_def_hdr(struct beiscsi_hba *phba,
sizeof(struct phys_addr), sizeof(struct phys_addr),
sizeof(struct phys_addr), dq_vaddress); sizeof(struct phys_addr), dq_vaddress);
if (ret) { if (ret) {
shost_printk(KERN_ERR, phba->shost, beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
"be_fill_queue Failed for DEF PDU HDR\n"); "BM_%d : be_fill_queue Failed for DEF PDU HDR\n");
return ret; return ret;
} }
mem->dma = (unsigned long)mem_descr->mem_array[idx]. mem->dma = (unsigned long)mem_descr->mem_array[idx].
...@@ -2809,13 +2960,15 @@ beiscsi_create_def_hdr(struct beiscsi_hba *phba, ...@@ -2809,13 +2960,15 @@ beiscsi_create_def_hdr(struct beiscsi_hba *phba,
def_pdu_ring_sz, def_pdu_ring_sz,
phba->params.defpdu_hdr_sz); phba->params.defpdu_hdr_sz);
if (ret) { if (ret) {
shost_printk(KERN_ERR, phba->shost, beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
"be_cmd_create_default_pdu_queue Failed DEFHDR\n"); "BM_%d : be_cmd_create_default_pdu_queue Failed DEFHDR\n");
return ret; return ret;
} }
phwi_ctrlr->default_pdu_hdr.id = phwi_context->be_def_hdrq.id; phwi_ctrlr->default_pdu_hdr.id = phwi_context->be_def_hdrq.id;
SE_DEBUG(DBG_LVL_8, "iscsi def pdu id is %d\n", beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_INIT,
phwi_context->be_def_hdrq.id); "BM_%d : iscsi def pdu id is %d\n",
phwi_context->be_def_hdrq.id);
hwi_post_async_buffers(phba, 1); hwi_post_async_buffers(phba, 1);
return 0; return 0;
} }
...@@ -2844,8 +2997,8 @@ beiscsi_create_def_data(struct beiscsi_hba *phba, ...@@ -2844,8 +2997,8 @@ beiscsi_create_def_data(struct beiscsi_hba *phba,
sizeof(struct phys_addr), sizeof(struct phys_addr),
sizeof(struct phys_addr), dq_vaddress); sizeof(struct phys_addr), dq_vaddress);
if (ret) { if (ret) {
shost_printk(KERN_ERR, phba->shost, beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
"be_fill_queue Failed for DEF PDU DATA\n"); "BM_%d : be_fill_queue Failed for DEF PDU DATA\n");
return ret; return ret;
} }
mem->dma = (unsigned long)mem_descr->mem_array[idx]. mem->dma = (unsigned long)mem_descr->mem_array[idx].
...@@ -2854,16 +3007,20 @@ beiscsi_create_def_data(struct beiscsi_hba *phba, ...@@ -2854,16 +3007,20 @@ beiscsi_create_def_data(struct beiscsi_hba *phba,
def_pdu_ring_sz, def_pdu_ring_sz,
phba->params.defpdu_data_sz); phba->params.defpdu_data_sz);
if (ret) { if (ret) {
shost_printk(KERN_ERR, phba->shost, beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
"be_cmd_create_default_pdu_queue Failed" "BM_%d be_cmd_create_default_pdu_queue"
" for DEF PDU DATA\n"); " Failed for DEF PDU DATA\n");
return ret; return ret;
} }
phwi_ctrlr->default_pdu_data.id = phwi_context->be_def_dataq.id; phwi_ctrlr->default_pdu_data.id = phwi_context->be_def_dataq.id;
SE_DEBUG(DBG_LVL_8, "iscsi def data id is %d\n", beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_INIT,
phwi_context->be_def_dataq.id); "BM_%d : iscsi def data id is %d\n",
phwi_context->be_def_dataq.id);
hwi_post_async_buffers(phba, 0); hwi_post_async_buffers(phba, 0);
SE_DEBUG(DBG_LVL_8, "DEFAULT PDU DATA RING CREATED\n"); beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_INIT,
"BM_%d : DEFAULT PDU DATA RING CREATED\n");
return 0; return 0;
} }
...@@ -2889,13 +3046,14 @@ beiscsi_post_pages(struct beiscsi_hba *phba) ...@@ -2889,13 +3046,14 @@ beiscsi_post_pages(struct beiscsi_hba *phba)
(pm_arr->size / PAGE_SIZE)); (pm_arr->size / PAGE_SIZE));
page_offset += pm_arr->size / PAGE_SIZE; page_offset += pm_arr->size / PAGE_SIZE;
if (status != 0) { if (status != 0) {
shost_printk(KERN_ERR, phba->shost, beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
"post sgl failed.\n"); "BM_%d : post sgl failed.\n");
return status; return status;
} }
pm_arr++; pm_arr++;
} }
SE_DEBUG(DBG_LVL_8, "POSTED PAGES\n"); beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_INIT,
"BM_%d : POSTED PAGES\n");
return 0; return 0;
} }
...@@ -2945,8 +3103,8 @@ beiscsi_create_wrb_rings(struct beiscsi_hba *phba, ...@@ -2945,8 +3103,8 @@ beiscsi_create_wrb_rings(struct beiscsi_hba *phba,
pwrb_arr = kmalloc(sizeof(*pwrb_arr) * phba->params.cxns_per_ctrl, pwrb_arr = kmalloc(sizeof(*pwrb_arr) * phba->params.cxns_per_ctrl,
GFP_KERNEL); GFP_KERNEL);
if (!pwrb_arr) { if (!pwrb_arr) {
shost_printk(KERN_ERR, phba->shost, beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
"Memory alloc failed in create wrb ring.\n"); "BM_%d : Memory alloc failed in create wrb ring.\n");
return -ENOMEM; return -ENOMEM;
} }
wrb_vaddr = mem_descr->mem_array[idx].virtual_address; wrb_vaddr = mem_descr->mem_array[idx].virtual_address;
...@@ -2990,8 +3148,8 @@ beiscsi_create_wrb_rings(struct beiscsi_hba *phba, ...@@ -2990,8 +3148,8 @@ beiscsi_create_wrb_rings(struct beiscsi_hba *phba,
status = be_cmd_wrbq_create(&phba->ctrl, &sgl, status = be_cmd_wrbq_create(&phba->ctrl, &sgl,
&phwi_context->be_wrbq[i]); &phwi_context->be_wrbq[i]);
if (status != 0) { if (status != 0) {
shost_printk(KERN_ERR, phba->shost, beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
"wrbq create failed."); "BM_%d : wrbq create failed.");
kfree(pwrb_arr); kfree(pwrb_arr);
return status; return status;
} }
...@@ -3127,7 +3285,6 @@ static int find_num_cpus(void) ...@@ -3127,7 +3285,6 @@ static int find_num_cpus(void)
if (num_cpus >= MAX_CPUS) if (num_cpus >= MAX_CPUS)
num_cpus = MAX_CPUS - 1; num_cpus = MAX_CPUS - 1;
SE_DEBUG(DBG_LVL_8, "num_cpus = %d\n", num_cpus);
return num_cpus; return num_cpus;
} }
...@@ -3150,7 +3307,8 @@ static int hwi_init_port(struct beiscsi_hba *phba) ...@@ -3150,7 +3307,8 @@ static int hwi_init_port(struct beiscsi_hba *phba)
status = beiscsi_create_eqs(phba, phwi_context); status = beiscsi_create_eqs(phba, phwi_context);
if (status != 0) { if (status != 0) {
shost_printk(KERN_ERR, phba->shost, "EQ not created\n"); beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
"BM_%d : EQ not created\n");
goto error; goto error;
} }
...@@ -3160,51 +3318,55 @@ static int hwi_init_port(struct beiscsi_hba *phba) ...@@ -3160,51 +3318,55 @@ static int hwi_init_port(struct beiscsi_hba *phba)
status = mgmt_check_supported_fw(ctrl, phba); status = mgmt_check_supported_fw(ctrl, phba);
if (status != 0) { if (status != 0) {
shost_printk(KERN_ERR, phba->shost, beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
"Unsupported fw version\n"); "BM_%d : Unsupported fw version\n");
goto error; goto error;
} }
status = beiscsi_create_cqs(phba, phwi_context); status = beiscsi_create_cqs(phba, phwi_context);
if (status != 0) { if (status != 0) {
shost_printk(KERN_ERR, phba->shost, "CQ not created\n"); beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
"BM_%d : CQ not created\n");
goto error; goto error;
} }
status = beiscsi_create_def_hdr(phba, phwi_context, phwi_ctrlr, status = beiscsi_create_def_hdr(phba, phwi_context, phwi_ctrlr,
def_pdu_ring_sz); def_pdu_ring_sz);
if (status != 0) { if (status != 0) {
shost_printk(KERN_ERR, phba->shost, beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
"Default Header not created\n"); "BM_%d : Default Header not created\n");
goto error; goto error;
} }
status = beiscsi_create_def_data(phba, phwi_context, status = beiscsi_create_def_data(phba, phwi_context,
phwi_ctrlr, def_pdu_ring_sz); phwi_ctrlr, def_pdu_ring_sz);
if (status != 0) { if (status != 0) {
shost_printk(KERN_ERR, phba->shost, beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
"Default Data not created\n"); "BM_%d : Default Data not created\n");
goto error; goto error;
} }
status = beiscsi_post_pages(phba); status = beiscsi_post_pages(phba);
if (status != 0) { if (status != 0) {
shost_printk(KERN_ERR, phba->shost, "Post SGL Pages Failed\n"); beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
"BM_%d : Post SGL Pages Failed\n");
goto error; goto error;
} }
status = beiscsi_create_wrb_rings(phba, phwi_context, phwi_ctrlr); status = beiscsi_create_wrb_rings(phba, phwi_context, phwi_ctrlr);
if (status != 0) { if (status != 0) {
shost_printk(KERN_ERR, phba->shost, beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
"WRB Rings not created\n"); "BM_%d : WRB Rings not created\n");
goto error; goto error;
} }
SE_DEBUG(DBG_LVL_8, "hwi_init_port success\n"); beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_INIT,
"BM_%d : hwi_init_port success\n");
return 0; return 0;
error: error:
shost_printk(KERN_ERR, phba->shost, "hwi_init_port failed"); beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
"BM_%d : hwi_init_port failed");
hwi_cleanup(phba); hwi_cleanup(phba);
return status; return status;
} }
...@@ -3217,12 +3379,13 @@ static int hwi_init_controller(struct beiscsi_hba *phba) ...@@ -3217,12 +3379,13 @@ static int hwi_init_controller(struct beiscsi_hba *phba)
if (1 == phba->init_mem[HWI_MEM_ADDN_CONTEXT].num_elements) { if (1 == phba->init_mem[HWI_MEM_ADDN_CONTEXT].num_elements) {
phwi_ctrlr->phwi_ctxt = (struct hwi_context_memory *)phba-> phwi_ctrlr->phwi_ctxt = (struct hwi_context_memory *)phba->
init_mem[HWI_MEM_ADDN_CONTEXT].mem_array[0].virtual_address; init_mem[HWI_MEM_ADDN_CONTEXT].mem_array[0].virtual_address;
SE_DEBUG(DBG_LVL_8, " phwi_ctrlr->phwi_ctxt=%p\n", beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_INIT,
phwi_ctrlr->phwi_ctxt); "BM_%d : phwi_ctrlr->phwi_ctxt=%p\n",
phwi_ctrlr->phwi_ctxt);
} else { } else {
shost_printk(KERN_ERR, phba->shost, beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
"HWI_MEM_ADDN_CONTEXT is more than one element." "BM_%d : HWI_MEM_ADDN_CONTEXT is more "
"Failing to load\n"); "than one element.Failing to load\n");
return -ENOMEM; return -ENOMEM;
} }
...@@ -3232,8 +3395,9 @@ static int hwi_init_controller(struct beiscsi_hba *phba) ...@@ -3232,8 +3395,9 @@ static int hwi_init_controller(struct beiscsi_hba *phba)
hwi_init_async_pdu_ctx(phba); hwi_init_async_pdu_ctx(phba);
if (hwi_init_port(phba) != 0) { if (hwi_init_port(phba) != 0) {
shost_printk(KERN_ERR, phba->shost, beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
"hwi_init_controller failed\n"); "BM_%d : hwi_init_controller failed\n");
return -ENOMEM; return -ENOMEM;
} }
return 0; return 0;
...@@ -3268,15 +3432,18 @@ static int beiscsi_init_controller(struct beiscsi_hba *phba) ...@@ -3268,15 +3432,18 @@ static int beiscsi_init_controller(struct beiscsi_hba *phba)
ret = beiscsi_get_memory(phba); ret = beiscsi_get_memory(phba);
if (ret < 0) { if (ret < 0) {
shost_printk(KERN_ERR, phba->shost, "beiscsi_dev_probe -" beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
"Failed in beiscsi_alloc_memory\n"); "BM_%d : beiscsi_dev_probe -"
"Failed in beiscsi_alloc_memory\n");
return ret; return ret;
} }
ret = hwi_init_controller(phba); ret = hwi_init_controller(phba);
if (ret) if (ret)
goto free_init; goto free_init;
SE_DEBUG(DBG_LVL_8, "Return success from beiscsi_init_controller"); beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_INIT,
"BM_%d : Return success from beiscsi_init_controller");
return 0; return 0;
free_init: free_init:
...@@ -3301,8 +3468,8 @@ static int beiscsi_init_sgl_handle(struct beiscsi_hba *phba) ...@@ -3301,8 +3468,8 @@ static int beiscsi_init_sgl_handle(struct beiscsi_hba *phba)
phba->params.ios_per_ctrl, phba->params.ios_per_ctrl,
GFP_KERNEL); GFP_KERNEL);
if (!phba->io_sgl_hndl_base) { if (!phba->io_sgl_hndl_base) {
shost_printk(KERN_ERR, phba->shost, beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
"Mem Alloc Failed. Failing to load\n"); "BM_%d : Mem Alloc Failed. Failing to load\n");
return -ENOMEM; return -ENOMEM;
} }
phba->eh_sgl_hndl_base = kzalloc(sizeof(struct sgl_handle *) * phba->eh_sgl_hndl_base = kzalloc(sizeof(struct sgl_handle *) *
...@@ -3311,14 +3478,14 @@ static int beiscsi_init_sgl_handle(struct beiscsi_hba *phba) ...@@ -3311,14 +3478,14 @@ static int beiscsi_init_sgl_handle(struct beiscsi_hba *phba)
GFP_KERNEL); GFP_KERNEL);
if (!phba->eh_sgl_hndl_base) { if (!phba->eh_sgl_hndl_base) {
kfree(phba->io_sgl_hndl_base); kfree(phba->io_sgl_hndl_base);
shost_printk(KERN_ERR, phba->shost, beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
"Mem Alloc Failed. Failing to load\n"); "BM_%d : Mem Alloc Failed. Failing to load\n");
return -ENOMEM; return -ENOMEM;
} }
} else { } else {
shost_printk(KERN_ERR, phba->shost, beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
"HWI_MEM_SGLH is more than one element." "BM_%d : HWI_MEM_SGLH is more than one element."
"Failing to load\n"); "Failing to load\n");
return -ENOMEM; return -ENOMEM;
} }
...@@ -3344,15 +3511,18 @@ static int beiscsi_init_sgl_handle(struct beiscsi_hba *phba) ...@@ -3344,15 +3511,18 @@ static int beiscsi_init_sgl_handle(struct beiscsi_hba *phba)
} }
idx++; idx++;
} }
SE_DEBUG(DBG_LVL_8, beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_INIT,
"phba->io_sgl_hndl_avbl=%d" "BM_%d : phba->io_sgl_hndl_avbl=%d"
"phba->eh_sgl_hndl_avbl=%d\n", "phba->eh_sgl_hndl_avbl=%d\n",
phba->io_sgl_hndl_avbl, phba->io_sgl_hndl_avbl,
phba->eh_sgl_hndl_avbl); phba->eh_sgl_hndl_avbl);
mem_descr_sg = phba->init_mem; mem_descr_sg = phba->init_mem;
mem_descr_sg += HWI_MEM_SGE; mem_descr_sg += HWI_MEM_SGE;
SE_DEBUG(DBG_LVL_8, "\n mem_descr_sg->num_elements=%d\n", beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_INIT,
mem_descr_sg->num_elements); "\n BM_%d : mem_descr_sg->num_elements=%d\n",
mem_descr_sg->num_elements);
arr_index = 0; arr_index = 0;
idx = 0; idx = 0;
while (idx < mem_descr_sg->num_elements) { while (idx < mem_descr_sg->num_elements) {
...@@ -3390,17 +3560,17 @@ static int hba_setup_cid_tbls(struct beiscsi_hba *phba) ...@@ -3390,17 +3560,17 @@ static int hba_setup_cid_tbls(struct beiscsi_hba *phba)
phba->cid_array = kzalloc(sizeof(void *) * phba->params.cxns_per_ctrl, phba->cid_array = kzalloc(sizeof(void *) * phba->params.cxns_per_ctrl,
GFP_KERNEL); GFP_KERNEL);
if (!phba->cid_array) { if (!phba->cid_array) {
shost_printk(KERN_ERR, phba->shost, beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
"Failed to allocate memory in " "BM_%d : Failed to allocate memory in "
"hba_setup_cid_tbls\n"); "hba_setup_cid_tbls\n");
return -ENOMEM; return -ENOMEM;
} }
phba->ep_array = kzalloc(sizeof(struct iscsi_endpoint *) * phba->ep_array = kzalloc(sizeof(struct iscsi_endpoint *) *
phba->params.cxns_per_ctrl * 2, GFP_KERNEL); phba->params.cxns_per_ctrl * 2, GFP_KERNEL);
if (!phba->ep_array) { if (!phba->ep_array) {
shost_printk(KERN_ERR, phba->shost, beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
"Failed to allocate memory in " "BM_%d : Failed to allocate memory in "
"hba_setup_cid_tbls\n"); "hba_setup_cid_tbls\n");
kfree(phba->cid_array); kfree(phba->cid_array);
return -ENOMEM; return -ENOMEM;
} }
...@@ -3433,18 +3603,22 @@ static void hwi_enable_intr(struct beiscsi_hba *phba) ...@@ -3433,18 +3603,22 @@ static void hwi_enable_intr(struct beiscsi_hba *phba)
enabled = reg & MEMBAR_CTRL_INT_CTRL_HOSTINTR_MASK; enabled = reg & MEMBAR_CTRL_INT_CTRL_HOSTINTR_MASK;
if (!enabled) { if (!enabled) {
reg |= MEMBAR_CTRL_INT_CTRL_HOSTINTR_MASK; reg |= MEMBAR_CTRL_INT_CTRL_HOSTINTR_MASK;
SE_DEBUG(DBG_LVL_8, "reg =x%08x addr=%p\n", reg, addr); beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_INIT,
"BM_%d : reg =x%08x addr=%p\n", reg, addr);
iowrite32(reg, addr); iowrite32(reg, addr);
} }
if (!phba->msix_enabled) { if (!phba->msix_enabled) {
eq = &phwi_context->be_eq[0].q; eq = &phwi_context->be_eq[0].q;
SE_DEBUG(DBG_LVL_8, "eq->id=%d\n", eq->id); beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_INIT,
"BM_%d : eq->id=%d\n", eq->id);
hwi_ring_eq_db(phba, eq->id, 0, 0, 1, 1); hwi_ring_eq_db(phba, eq->id, 0, 0, 1, 1);
} else { } else {
for (i = 0; i <= phba->num_cpus; i++) { for (i = 0; i <= phba->num_cpus; i++) {
eq = &phwi_context->be_eq[i].q; eq = &phwi_context->be_eq[i].q;
SE_DEBUG(DBG_LVL_8, "eq->id=%d\n", eq->id); beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_INIT,
"BM_%d : eq->id=%d\n", eq->id);
hwi_ring_eq_db(phba, eq->id, 0, 0, 1, 1); hwi_ring_eq_db(phba, eq->id, 0, 0, 1, 1);
} }
} }
...@@ -3462,8 +3636,8 @@ static void hwi_disable_intr(struct beiscsi_hba *phba) ...@@ -3462,8 +3636,8 @@ static void hwi_disable_intr(struct beiscsi_hba *phba)
reg &= ~MEMBAR_CTRL_INT_CTRL_HOSTINTR_MASK; reg &= ~MEMBAR_CTRL_INT_CTRL_HOSTINTR_MASK;
iowrite32(reg, addr); iowrite32(reg, addr);
} else } else
shost_printk(KERN_WARNING, phba->shost, beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_INIT,
"In hwi_disable_intr, Already Disabled\n"); "BM_%d : In hwi_disable_intr, Already Disabled\n");
} }
/** /**
...@@ -3490,16 +3664,20 @@ static int beiscsi_get_boot_info(struct beiscsi_hba *phba) ...@@ -3490,16 +3664,20 @@ static int beiscsi_get_boot_info(struct beiscsi_hba *phba)
/* Get the session handle of the boot target */ /* Get the session handle of the boot target */
ret = be_mgmt_get_boot_shandle(phba, &s_handle); ret = be_mgmt_get_boot_shandle(phba, &s_handle);
if (ret) { if (ret) {
SE_DEBUG(DBG_LVL_1, "No boot session\n"); beiscsi_log(phba, KERN_ERR,
BEISCSI_LOG_INIT | BEISCSI_LOG_CONFIG,
"BM_%d : No boot session\n");
return ret; return ret;
} }
nonemb_cmd.va = pci_alloc_consistent(phba->ctrl.pdev, nonemb_cmd.va = pci_alloc_consistent(phba->ctrl.pdev,
sizeof(*session_resp), sizeof(*session_resp),
&nonemb_cmd.dma); &nonemb_cmd.dma);
if (nonemb_cmd.va == NULL) { if (nonemb_cmd.va == NULL) {
SE_DEBUG(DBG_LVL_1, beiscsi_log(phba, KERN_ERR,
"Failed to allocate memory for" BEISCSI_LOG_INIT | BEISCSI_LOG_CONFIG,
"beiscsi_get_session_info\n"); "BM_%d : Failed to allocate memory for"
"beiscsi_get_session_info\n");
return -ENOMEM; return -ENOMEM;
} }
...@@ -3507,8 +3685,11 @@ static int beiscsi_get_boot_info(struct beiscsi_hba *phba) ...@@ -3507,8 +3685,11 @@ static int beiscsi_get_boot_info(struct beiscsi_hba *phba)
tag = mgmt_get_session_info(phba, s_handle, tag = mgmt_get_session_info(phba, s_handle,
&nonemb_cmd); &nonemb_cmd);
if (!tag) { if (!tag) {
SE_DEBUG(DBG_LVL_1, "beiscsi_get_session_info" beiscsi_log(phba, KERN_ERR,
" Failed\n"); BEISCSI_LOG_INIT | BEISCSI_LOG_CONFIG,
"BM_%d : beiscsi_get_session_info"
" Failed\n");
goto boot_freemem; goto boot_freemem;
} else } else
wait_event_interruptible(phba->ctrl.mcc_wait[tag], wait_event_interruptible(phba->ctrl.mcc_wait[tag],
...@@ -3518,9 +3699,12 @@ static int beiscsi_get_boot_info(struct beiscsi_hba *phba) ...@@ -3518,9 +3699,12 @@ static int beiscsi_get_boot_info(struct beiscsi_hba *phba)
extd_status = (phba->ctrl.mcc_numtag[tag] & 0x0000FF00) >> 8; extd_status = (phba->ctrl.mcc_numtag[tag] & 0x0000FF00) >> 8;
status = phba->ctrl.mcc_numtag[tag] & 0x000000FF; status = phba->ctrl.mcc_numtag[tag] & 0x000000FF;
if (status || extd_status) { if (status || extd_status) {
SE_DEBUG(DBG_LVL_1, "beiscsi_get_session_info Failed" beiscsi_log(phba, KERN_ERR,
" status = %d extd_status = %d\n", BEISCSI_LOG_INIT | BEISCSI_LOG_CONFIG,
status, extd_status); "BM_%d : beiscsi_get_session_info Failed"
" status = %d extd_status = %d\n",
status, extd_status);
free_mcc_tag(&phba->ctrl, tag); free_mcc_tag(&phba->ctrl, tag);
goto boot_freemem; goto boot_freemem;
} }
...@@ -3600,22 +3784,22 @@ static int beiscsi_init_port(struct beiscsi_hba *phba) ...@@ -3600,22 +3784,22 @@ static int beiscsi_init_port(struct beiscsi_hba *phba)
ret = beiscsi_init_controller(phba); ret = beiscsi_init_controller(phba);
if (ret < 0) { if (ret < 0) {
shost_printk(KERN_ERR, phba->shost, beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
"beiscsi_dev_probe - Failed in" "BM_%d : beiscsi_dev_probe - Failed in"
"beiscsi_init_controller\n"); "beiscsi_init_controller\n");
return ret; return ret;
} }
ret = beiscsi_init_sgl_handle(phba); ret = beiscsi_init_sgl_handle(phba);
if (ret < 0) { if (ret < 0) {
shost_printk(KERN_ERR, phba->shost, beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
"beiscsi_dev_probe - Failed in" "BM_%d : beiscsi_dev_probe - Failed in"
"beiscsi_init_sgl_handle\n"); "beiscsi_init_sgl_handle\n");
goto do_cleanup_ctrlr; goto do_cleanup_ctrlr;
} }
if (hba_setup_cid_tbls(phba)) { if (hba_setup_cid_tbls(phba)) {
shost_printk(KERN_ERR, phba->shost, beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
"Failed in hba_setup_cid_tbls\n"); "BM_%d : Failed in hba_setup_cid_tbls\n");
kfree(phba->io_sgl_hndl_base); kfree(phba->io_sgl_hndl_base);
kfree(phba->eh_sgl_hndl_base); kfree(phba->eh_sgl_hndl_base);
goto do_cleanup_ctrlr; goto do_cleanup_ctrlr;
...@@ -3667,8 +3851,8 @@ static void beiscsi_clean_port(struct beiscsi_hba *phba) ...@@ -3667,8 +3851,8 @@ static void beiscsi_clean_port(struct beiscsi_hba *phba)
mgmt_status = mgmt_epfw_cleanup(phba, CMD_CONNECTION_CHUTE_0); mgmt_status = mgmt_epfw_cleanup(phba, CMD_CONNECTION_CHUTE_0);
if (mgmt_status) if (mgmt_status)
shost_printk(KERN_WARNING, phba->shost, beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_INIT,
"mgmt_epfw_cleanup FAILED\n"); "BM_%d : mgmt_epfw_cleanup FAILED\n");
hwi_purge_eq(phba); hwi_purge_eq(phba);
hwi_cleanup(phba); hwi_cleanup(phba);
...@@ -3949,7 +4133,9 @@ static int beiscsi_alloc_pdu(struct iscsi_task *task, uint8_t opcode) ...@@ -3949,7 +4133,9 @@ static int beiscsi_alloc_pdu(struct iscsi_task *task, uint8_t opcode)
pci_pool_free(beiscsi_sess->bhs_pool, io_task->cmd_bhs, pci_pool_free(beiscsi_sess->bhs_pool, io_task->cmd_bhs,
io_task->bhs_pa.u.a64.address); io_task->bhs_pa.u.a64.address);
io_task->cmd_bhs = NULL; io_task->cmd_bhs = NULL;
SE_DEBUG(DBG_LVL_1, "Alloc of SGL_ICD Failed\n"); beiscsi_log(phba, KERN_ERR,
BEISCSI_LOG_IO | BEISCSI_LOG_CONFIG,
"BM_%d : Alloc of SGL_ICD Failed\n");
return -ENOMEM; return -ENOMEM;
} }
...@@ -4067,8 +4253,10 @@ static int beiscsi_mtask(struct iscsi_task *task) ...@@ -4067,8 +4253,10 @@ static int beiscsi_mtask(struct iscsi_task *task)
break; break;
default: default:
SE_DEBUG(DBG_LVL_1, "opcode =%d Not supported\n", beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
task->hdr->opcode & ISCSI_OPCODE_MASK); "BM_%d : opcode =%d Not supported\n",
task->hdr->opcode & ISCSI_OPCODE_MASK);
return -EINVAL; return -EINVAL;
} }
...@@ -4100,17 +4288,22 @@ static int beiscsi_task_xmit(struct iscsi_task *task) ...@@ -4100,17 +4288,22 @@ static int beiscsi_task_xmit(struct iscsi_task *task)
io_task->scsi_cmnd = sc; io_task->scsi_cmnd = sc;
num_sg = scsi_dma_map(sc); num_sg = scsi_dma_map(sc);
if (num_sg < 0) { if (num_sg < 0) {
SE_DEBUG(DBG_LVL_1, " scsi_dma_map Failed\n") struct iscsi_conn *conn = task->conn;
struct beiscsi_hba *phba = NULL;
phba = ((struct beiscsi_conn *)conn->dd_data)->phba;
beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_IO,
"BM_%d : scsi_dma_map Failed\n");
return num_sg; return num_sg;
} }
xferlen = scsi_bufflen(sc); xferlen = scsi_bufflen(sc);
sg = scsi_sglist(sc); sg = scsi_sglist(sc);
if (sc->sc_data_direction == DMA_TO_DEVICE) { if (sc->sc_data_direction == DMA_TO_DEVICE)
writedir = 1; writedir = 1;
SE_DEBUG(DBG_LVL_4, "task->imm_count=0x%08x\n", else
task->imm_count);
} else
writedir = 0; writedir = 0;
return beiscsi_iotask(task, sg, num_sg, xferlen, writedir); return beiscsi_iotask(task, sg, num_sg, xferlen, writedir);
} }
...@@ -4139,14 +4332,17 @@ static int beiscsi_bsg_request(struct bsg_job *job) ...@@ -4139,14 +4332,17 @@ static int beiscsi_bsg_request(struct bsg_job *job)
job->request_payload.payload_len, job->request_payload.payload_len,
&nonemb_cmd.dma); &nonemb_cmd.dma);
if (nonemb_cmd.va == NULL) { if (nonemb_cmd.va == NULL) {
SE_DEBUG(DBG_LVL_1, "Failed to allocate memory for " beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
"beiscsi_bsg_request\n"); "BM_%d : Failed to allocate memory for "
"beiscsi_bsg_request\n");
return -EIO; return -EIO;
} }
tag = mgmt_vendor_specific_fw_cmd(&phba->ctrl, phba, job, tag = mgmt_vendor_specific_fw_cmd(&phba->ctrl, phba, job,
&nonemb_cmd); &nonemb_cmd);
if (!tag) { if (!tag) {
SE_DEBUG(DBG_LVL_1, "be_cmd_get_mac_addr Failed\n"); beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
"BM_%d : be_cmd_get_mac_addr Failed\n");
pci_free_consistent(phba->ctrl.pdev, nonemb_cmd.size, pci_free_consistent(phba->ctrl.pdev, nonemb_cmd.size,
nonemb_cmd.va, nonemb_cmd.dma); nonemb_cmd.va, nonemb_cmd.dma);
return -EAGAIN; return -EAGAIN;
...@@ -4168,22 +4364,31 @@ static int beiscsi_bsg_request(struct bsg_job *job) ...@@ -4168,22 +4364,31 @@ static int beiscsi_bsg_request(struct bsg_job *job)
pci_free_consistent(phba->ctrl.pdev, nonemb_cmd.size, pci_free_consistent(phba->ctrl.pdev, nonemb_cmd.size,
nonemb_cmd.va, nonemb_cmd.dma); nonemb_cmd.va, nonemb_cmd.dma);
if (status || extd_status) { if (status || extd_status) {
SE_DEBUG(DBG_LVL_1, "be_cmd_get_mac_addr Failed" beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
" status = %d extd_status = %d\n", "BM_%d : be_cmd_get_mac_addr Failed"
status, extd_status); " status = %d extd_status = %d\n",
status, extd_status);
return -EIO; return -EIO;
} }
break; break;
default: default:
SE_DEBUG(DBG_LVL_1, "Unsupported bsg command: 0x%x\n", beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
bsg_req->msgcode); "BM_%d : Unsupported bsg command: 0x%x\n",
bsg_req->msgcode);
break; break;
} }
return rc; return rc;
} }
void beiscsi_hba_attrs_init(struct beiscsi_hba *phba)
{
/* Set the logging parameter */
beiscsi_log_enable_init(phba, beiscsi_log_enable);
}
static void beiscsi_quiesce(struct beiscsi_hba *phba) static void beiscsi_quiesce(struct beiscsi_hba *phba)
{ {
struct hwi_controller *phwi_ctrlr; struct hwi_controller *phwi_ctrlr;
...@@ -4293,18 +4498,21 @@ static int __devinit beiscsi_dev_probe(struct pci_dev *pcidev, ...@@ -4293,18 +4498,21 @@ static int __devinit beiscsi_dev_probe(struct pci_dev *pcidev,
ret = beiscsi_enable_pci(pcidev); ret = beiscsi_enable_pci(pcidev);
if (ret < 0) { if (ret < 0) {
dev_err(&pcidev->dev, "beiscsi_dev_probe-" dev_err(&pcidev->dev,
" Failed to enable pci device\n"); "beiscsi_dev_probe - Failed to enable pci device\n");
return ret; return ret;
} }
phba = beiscsi_hba_alloc(pcidev); phba = beiscsi_hba_alloc(pcidev);
if (!phba) { if (!phba) {
dev_err(&pcidev->dev, "beiscsi_dev_probe-" dev_err(&pcidev->dev,
" Failed in beiscsi_hba_alloc\n"); "beiscsi_dev_probe - Failed in beiscsi_hba_alloc\n");
goto disable_pci; goto disable_pci;
} }
/* Initialize Driver configuration Paramters */
beiscsi_hba_attrs_init(phba);
switch (pcidev->device) { switch (pcidev->device) {
case BE_DEVICE_ID1: case BE_DEVICE_ID1:
case OC_DEVICE_ID1: case OC_DEVICE_ID1:
...@@ -4324,7 +4532,9 @@ static int __devinit beiscsi_dev_probe(struct pci_dev *pcidev, ...@@ -4324,7 +4532,9 @@ static int __devinit beiscsi_dev_probe(struct pci_dev *pcidev,
else else
num_cpus = 1; num_cpus = 1;
phba->num_cpus = num_cpus; phba->num_cpus = num_cpus;
SE_DEBUG(DBG_LVL_8, "num_cpus = %d\n", phba->num_cpus); beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_INIT,
"BM_%d : num_cpus = %d\n",
phba->num_cpus);
if (enable_msix) { if (enable_msix) {
beiscsi_msix_enable(phba); beiscsi_msix_enable(phba);
...@@ -4333,8 +4543,9 @@ static int __devinit beiscsi_dev_probe(struct pci_dev *pcidev, ...@@ -4333,8 +4543,9 @@ static int __devinit beiscsi_dev_probe(struct pci_dev *pcidev,
} }
ret = be_ctrl_init(phba, pcidev); ret = be_ctrl_init(phba, pcidev);
if (ret) { if (ret) {
shost_printk(KERN_ERR, phba->shost, "beiscsi_dev_probe-" beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
"Failed in be_ctrl_init\n"); "BM_%d : beiscsi_dev_probe-"
"Failed in be_ctrl_init\n");
goto hba_free; goto hba_free;
} }
...@@ -4343,19 +4554,19 @@ static int __devinit beiscsi_dev_probe(struct pci_dev *pcidev, ...@@ -4343,19 +4554,19 @@ static int __devinit beiscsi_dev_probe(struct pci_dev *pcidev,
value = readl((void *)real_offset); value = readl((void *)real_offset);
if (value & 0x00010000) { if (value & 0x00010000) {
gcrashmode++; gcrashmode++;
shost_printk(KERN_ERR, phba->shost, beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
"Loading Driver in crashdump mode\n"); "BM_%d : Loading Driver in crashdump mode\n");
ret = beiscsi_cmd_reset_function(phba); ret = beiscsi_cmd_reset_function(phba);
if (ret) { if (ret) {
shost_printk(KERN_ERR, phba->shost, beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
"Reset Failed. Aborting Crashdump\n"); "BM_%d : Reset Failed. Aborting Crashdump\n");
goto hba_free; goto hba_free;
} }
ret = be_chk_reset_complete(phba); ret = be_chk_reset_complete(phba);
if (ret) { if (ret) {
shost_printk(KERN_ERR, phba->shost, beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
"Failed to get out of reset." "BM_%d : Failed to get out of reset."
"Aborting Crashdump\n"); "Aborting Crashdump\n");
goto hba_free; goto hba_free;
} }
} else { } else {
...@@ -4370,8 +4581,8 @@ static int __devinit beiscsi_dev_probe(struct pci_dev *pcidev, ...@@ -4370,8 +4581,8 @@ static int __devinit beiscsi_dev_probe(struct pci_dev *pcidev,
spin_lock_init(&phba->isr_lock); spin_lock_init(&phba->isr_lock);
ret = mgmt_get_fw_config(&phba->ctrl, phba); ret = mgmt_get_fw_config(&phba->ctrl, phba);
if (ret != 0) { if (ret != 0) {
shost_printk(KERN_ERR, phba->shost, beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
"Error getting fw config\n"); "BM_%d : Error getting fw config\n");
goto free_port; goto free_port;
} }
phba->shost->max_id = phba->fw_config.iscsi_cid_count; phba->shost->max_id = phba->fw_config.iscsi_cid_count;
...@@ -4379,8 +4590,9 @@ static int __devinit beiscsi_dev_probe(struct pci_dev *pcidev, ...@@ -4379,8 +4590,9 @@ static int __devinit beiscsi_dev_probe(struct pci_dev *pcidev,
phba->shost->can_queue = phba->params.ios_per_ctrl; phba->shost->can_queue = phba->params.ios_per_ctrl;
ret = beiscsi_init_port(phba); ret = beiscsi_init_port(phba);
if (ret < 0) { if (ret < 0) {
shost_printk(KERN_ERR, phba->shost, "beiscsi_dev_probe-" beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
"Failed in beiscsi_init_port\n"); "BM_%d : beiscsi_dev_probe-"
"Failed in beiscsi_init_port\n");
goto free_port; goto free_port;
} }
...@@ -4397,8 +4609,9 @@ static int __devinit beiscsi_dev_probe(struct pci_dev *pcidev, ...@@ -4397,8 +4609,9 @@ static int __devinit beiscsi_dev_probe(struct pci_dev *pcidev,
phba->shost->host_no); phba->shost->host_no);
phba->wq = alloc_workqueue(phba->wq_name, WQ_MEM_RECLAIM, 1); phba->wq = alloc_workqueue(phba->wq_name, WQ_MEM_RECLAIM, 1);
if (!phba->wq) { if (!phba->wq) {
shost_printk(KERN_ERR, phba->shost, "beiscsi_dev_probe-" beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
"Failed to allocate work queue\n"); "BM_%d : beiscsi_dev_probe-"
"Failed to allocate work queue\n");
goto free_twq; goto free_twq;
} }
...@@ -4416,8 +4629,9 @@ static int __devinit beiscsi_dev_probe(struct pci_dev *pcidev, ...@@ -4416,8 +4629,9 @@ static int __devinit beiscsi_dev_probe(struct pci_dev *pcidev,
} }
ret = beiscsi_init_irqs(phba); ret = beiscsi_init_irqs(phba);
if (ret < 0) { if (ret < 0) {
shost_printk(KERN_ERR, phba->shost, "beiscsi_dev_probe-" beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
"Failed to beiscsi_init_irqs\n"); "BM_%d : beiscsi_dev_probe-"
"Failed to beiscsi_init_irqs\n");
goto free_blkenbld; goto free_blkenbld;
} }
hwi_enable_intr(phba); hwi_enable_intr(phba);
...@@ -4427,11 +4641,13 @@ static int __devinit beiscsi_dev_probe(struct pci_dev *pcidev, ...@@ -4427,11 +4641,13 @@ static int __devinit beiscsi_dev_probe(struct pci_dev *pcidev,
* log error but continue, because we may not be using * log error but continue, because we may not be using
* iscsi boot. * iscsi boot.
*/ */
shost_printk(KERN_ERR, phba->shost, "Could not set up " beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
"iSCSI boot info.\n"); "BM_%d : Could not set up "
"iSCSI boot info.\n");
beiscsi_create_def_ifaces(phba); beiscsi_create_def_ifaces(phba);
SE_DEBUG(DBG_LVL_8, "\n\n\n SUCCESS - DRIVER LOADED\n\n\n"); beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_INIT,
"\n\n\n BM_%d : SUCCESS - DRIVER LOADED\n\n\n");
return 0; return 0;
free_blkenbld: free_blkenbld:
...@@ -4519,19 +4735,17 @@ static int __init beiscsi_module_init(void) ...@@ -4519,19 +4735,17 @@ static int __init beiscsi_module_init(void)
beiscsi_scsi_transport = beiscsi_scsi_transport =
iscsi_register_transport(&beiscsi_iscsi_transport); iscsi_register_transport(&beiscsi_iscsi_transport);
if (!beiscsi_scsi_transport) { if (!beiscsi_scsi_transport) {
SE_DEBUG(DBG_LVL_1, printk(KERN_ERR
"beiscsi_module_init - Unable to register beiscsi" "beiscsi_module_init - Unable to register beiscsi transport.\n");
"transport.\n");
return -ENOMEM; return -ENOMEM;
} }
SE_DEBUG(DBG_LVL_8, "In beiscsi_module_init, tt=%p\n", printk(KERN_INFO "In beiscsi_module_init, tt=%p\n",
&beiscsi_iscsi_transport); &beiscsi_iscsi_transport);
ret = pci_register_driver(&beiscsi_pci_driver); ret = pci_register_driver(&beiscsi_pci_driver);
if (ret) { if (ret) {
SE_DEBUG(DBG_LVL_1, printk(KERN_ERR
"beiscsi_module_init - Unable to register" "beiscsi_module_init - Unable to register beiscsi pci driver.\n");
"beiscsi pci driver.\n");
goto unregister_iscsi_transport; goto unregister_iscsi_transport;
} }
return 0; return 0;
......
...@@ -24,6 +24,8 @@ ...@@ -24,6 +24,8 @@
#include <linux/pci.h> #include <linux/pci.h>
#include <linux/if_ether.h> #include <linux/if_ether.h>
#include <linux/in.h> #include <linux/in.h>
#include <linux/ctype.h>
#include <linux/module.h>
#include <scsi/scsi.h> #include <scsi/scsi.h>
#include <scsi/scsi_cmnd.h> #include <scsi/scsi_cmnd.h>
#include <scsi/scsi_device.h> #include <scsi/scsi_device.h>
...@@ -85,23 +87,6 @@ ...@@ -85,23 +87,6 @@
#define IIOC_SCSI_DATA 0x05 /* Write Operation */ #define IIOC_SCSI_DATA 0x05 /* Write Operation */
#define INVALID_SESS_HANDLE 0xFFFFFFFF #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_UP 0x00000000
#define BE_ADAPTER_LINK_DOWN 0x00000001 #define BE_ADAPTER_LINK_DOWN 0x00000001
...@@ -352,6 +337,8 @@ struct beiscsi_hba { ...@@ -352,6 +337,8 @@ struct beiscsi_hba {
struct mgmt_session_info boot_sess; struct mgmt_session_info boot_sess;
struct invalidate_command_table inv_tbl[128]; struct invalidate_command_table inv_tbl[128];
unsigned int attr_log_enable;
}; };
struct beiscsi_session { struct beiscsi_session {
...@@ -861,4 +848,20 @@ struct hwi_context_memory { ...@@ -861,4 +848,20 @@ struct hwi_context_memory {
struct hwi_async_pdu_context *pasync_ctx; 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 #endif
...@@ -42,7 +42,10 @@ unsigned int mgmt_reopen_session(struct beiscsi_hba *phba, ...@@ -42,7 +42,10 @@ unsigned int mgmt_reopen_session(struct beiscsi_hba *phba,
struct be_cmd_reopen_session_req *req; struct be_cmd_reopen_session_req *req;
unsigned int tag = 0; 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); spin_lock(&ctrl->mbox_lock);
tag = alloc_mcc_tag(phba); tag = alloc_mcc_tag(phba);
if (!tag) { if (!tag) {
...@@ -74,7 +77,10 @@ unsigned int mgmt_get_boot_target(struct beiscsi_hba *phba) ...@@ -74,7 +77,10 @@ unsigned int mgmt_get_boot_target(struct beiscsi_hba *phba)
struct be_cmd_get_boot_target_req *req; struct be_cmd_get_boot_target_req *req;
unsigned int tag = 0; 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); spin_lock(&ctrl->mbox_lock);
tag = alloc_mcc_tag(phba); tag = alloc_mcc_tag(phba);
if (!tag) { if (!tag) {
...@@ -106,7 +112,10 @@ unsigned int mgmt_get_session_info(struct beiscsi_hba *phba, ...@@ -106,7 +112,10 @@ unsigned int mgmt_get_session_info(struct beiscsi_hba *phba,
struct be_cmd_get_session_resp *resp; struct be_cmd_get_session_resp *resp;
struct be_sge *sge; 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); spin_lock(&ctrl->mbox_lock);
tag = alloc_mcc_tag(phba); tag = alloc_mcc_tag(phba);
if (!tag) { if (!tag) {
...@@ -165,16 +174,16 @@ int mgmt_get_fw_config(struct be_ctrl_info *ctrl, ...@@ -165,16 +174,16 @@ int mgmt_get_fw_config(struct be_ctrl_info *ctrl,
phba->fw_config.iscsi_cid_count = phba->fw_config.iscsi_cid_count =
pfw_cfg->ulp[0].sq_count; pfw_cfg->ulp[0].sq_count;
if (phba->fw_config.iscsi_cid_count > (BE2_MAX_SESSIONS / 2)) { if (phba->fw_config.iscsi_cid_count > (BE2_MAX_SESSIONS / 2)) {
SE_DEBUG(DBG_LVL_8, beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_INIT,
"FW reported MAX CXNS as %d\t" "BG_%d : FW reported MAX CXNS as %d\t"
"Max Supported = %d.\n", "Max Supported = %d.\n",
phba->fw_config.iscsi_cid_count, phba->fw_config.iscsi_cid_count,
BE2_MAX_SESSIONS); BE2_MAX_SESSIONS);
phba->fw_config.iscsi_cid_count = BE2_MAX_SESSIONS / 2; phba->fw_config.iscsi_cid_count = BE2_MAX_SESSIONS / 2;
} }
} else { } else {
shost_printk(KERN_WARNING, phba->shost, beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_INIT,
"Failed in mgmt_get_fw_config\n"); "BG_%d : Failed in mgmt_get_fw_config\n");
} }
spin_unlock(&ctrl->mbox_lock); spin_unlock(&ctrl->mbox_lock);
...@@ -194,9 +203,9 @@ int mgmt_check_supported_fw(struct be_ctrl_info *ctrl, ...@@ -194,9 +203,9 @@ int mgmt_check_supported_fw(struct be_ctrl_info *ctrl,
sizeof(struct be_mgmt_controller_attributes), sizeof(struct be_mgmt_controller_attributes),
&nonemb_cmd.dma); &nonemb_cmd.dma);
if (nonemb_cmd.va == NULL) { if (nonemb_cmd.va == NULL) {
SE_DEBUG(DBG_LVL_1, beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
"Failed to allocate memory for mgmt_check_supported_fw" "BG_%d : Failed to allocate memory for "
"\n"); "mgmt_check_supported_fw\n");
return -ENOMEM; return -ENOMEM;
} }
nonemb_cmd.size = sizeof(struct be_mgmt_controller_attributes); nonemb_cmd.size = sizeof(struct be_mgmt_controller_attributes);
...@@ -213,18 +222,23 @@ int mgmt_check_supported_fw(struct be_ctrl_info *ctrl, ...@@ -213,18 +222,23 @@ int mgmt_check_supported_fw(struct be_ctrl_info *ctrl,
status = be_mbox_notify(ctrl); status = be_mbox_notify(ctrl);
if (!status) { if (!status) {
struct be_mgmt_controller_attributes_resp *resp = nonemb_cmd.va; struct be_mgmt_controller_attributes_resp *resp = nonemb_cmd.va;
SE_DEBUG(DBG_LVL_8, "Firmware version of CMD: %s\n", beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_INIT,
resp->params.hba_attribs.flashrom_version_string); "BG_%d : Firmware Version of CMD : %s\n"
SE_DEBUG(DBG_LVL_8, "Firmware version is : %s\n", "Firmware Version is : %s\n"
resp->params.hba_attribs.firmware_version_string); "Developer Build, not performing version check...\n",
SE_DEBUG(DBG_LVL_8, resp->params.hba_attribs
"Developer Build, not performing version check...\n"); .flashrom_version_string,
resp->params.hba_attribs.
firmware_version_string);
phba->fw_config.iscsi_features = phba->fw_config.iscsi_features =
resp->params.hba_attribs.iscsi_features; resp->params.hba_attribs.iscsi_features;
SE_DEBUG(DBG_LVL_8, " phba->fw_config.iscsi_features = %d\n", beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_INIT,
phba->fw_config.iscsi_features); "BM_%d : phba->fw_config.iscsi_features = %d\n",
phba->fw_config.iscsi_features);
} else } 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); spin_unlock(&ctrl->mbox_lock);
if (nonemb_cmd.va) if (nonemb_cmd.va)
pci_free_consistent(ctrl->pdev, nonemb_cmd.size, pci_free_consistent(ctrl->pdev, nonemb_cmd.size,
...@@ -273,9 +287,10 @@ unsigned int mgmt_vendor_specific_fw_cmd(struct be_ctrl_info *ctrl, ...@@ -273,9 +287,10 @@ unsigned int mgmt_vendor_specific_fw_cmd(struct be_ctrl_info *ctrl,
OPCODE_COMMON_READ_FLASH, sizeof(*req)); OPCODE_COMMON_READ_FLASH, sizeof(*req));
break; break;
default: default:
shost_printk(KERN_WARNING, phba->shost, beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_CONFIG,
"Unsupported cmd = 0x%x\n\n", bsg_req->rqst_data. "BG_%d : Unsupported cmd = 0x%x\n\n",
h_vendor.vendor_cmd[0]); bsg_req->rqst_data.h_vendor.vendor_cmd[0]);
spin_unlock(&ctrl->mbox_lock); spin_unlock(&ctrl->mbox_lock);
return -ENOSYS; return -ENOSYS;
} }
...@@ -319,8 +334,8 @@ int mgmt_epfw_cleanup(struct beiscsi_hba *phba, unsigned short chute) ...@@ -319,8 +334,8 @@ int mgmt_epfw_cleanup(struct beiscsi_hba *phba, unsigned short chute)
status = be_mcc_notify_wait(phba); status = be_mcc_notify_wait(phba);
if (status) if (status)
shost_printk(KERN_WARNING, phba->shost, beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_INIT,
" mgmt_epfw_cleanup , FAILED\n"); "BG_%d : mgmt_epfw_cleanup , FAILED\n");
spin_unlock(&ctrl->mbox_lock); spin_unlock(&ctrl->mbox_lock);
return status; return status;
} }
...@@ -503,8 +518,9 @@ int mgmt_open_connection(struct beiscsi_hba *phba, ...@@ -503,8 +518,9 @@ int mgmt_open_connection(struct beiscsi_hba *phba,
&daddr_in6->sin6_addr.in6_u.u6_addr8, 16); &daddr_in6->sin6_addr.in6_u.u6_addr8, 16);
beiscsi_ep->ip_type = BE2_IPV6; beiscsi_ep->ip_type = BE2_IPV6;
} else{ } else{
shost_printk(KERN_ERR, phba->shost, "unknown addr family %d\n", beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
dst_addr->sa_family); "BG_%d : unknown addr family %d\n",
dst_addr->sa_family);
spin_unlock(&ctrl->mbox_lock); spin_unlock(&ctrl->mbox_lock);
free_mcc_tag(&phba->ctrl, tag); free_mcc_tag(&phba->ctrl, tag);
return -EINVAL; return -EINVAL;
...@@ -515,7 +531,8 @@ int mgmt_open_connection(struct beiscsi_hba *phba, ...@@ -515,7 +531,8 @@ int mgmt_open_connection(struct beiscsi_hba *phba,
if (phba->nxt_cqid == phba->num_cpus) if (phba->nxt_cqid == phba->num_cpus)
phba->nxt_cqid = 0; phba->nxt_cqid = 0;
req->cq_id = phwi_context->be_cq[i].id; 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->defq_id = def_hdr_id;
req->hdr_ring_id = def_hdr_id; req->hdr_ring_id = def_hdr_id;
req->data_ring_id = def_data_id; req->data_ring_id = def_data_id;
...@@ -550,8 +567,8 @@ unsigned int mgmt_get_all_if_id(struct beiscsi_hba *phba) ...@@ -550,8 +567,8 @@ unsigned int mgmt_get_all_if_id(struct beiscsi_hba *phba)
if (!status) if (!status)
phba->interface_handle = pbe_allid->if_hndl_list[0]; phba->interface_handle = pbe_allid->if_hndl_list[0];
else { else {
shost_printk(KERN_WARNING, phba->shost, beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_CONFIG,
"Failed in mgmt_get_all_if_id\n"); "BG_%d : Failed in mgmt_get_all_if_id\n");
} }
spin_unlock(&ctrl->mbox_lock); spin_unlock(&ctrl->mbox_lock);
...@@ -594,9 +611,10 @@ static int mgmt_exec_nonemb_cmd(struct beiscsi_hba *phba, ...@@ -594,9 +611,10 @@ static int mgmt_exec_nonemb_cmd(struct beiscsi_hba *phba,
extd_status = (phba->ctrl.mcc_numtag[tag] & 0x0000FF00) >> 8; extd_status = (phba->ctrl.mcc_numtag[tag] & 0x0000FF00) >> 8;
status = phba->ctrl.mcc_numtag[tag] & 0x000000FF; status = phba->ctrl.mcc_numtag[tag] & 0x000000FF;
if (status || extd_status) { if (status || extd_status) {
SE_DEBUG(DBG_LVL_1, beiscsi_log(phba, KERN_ERR,
"mgmt_exec_nonemb_cmd Failed status = %d" BEISCSI_LOG_CONFIG | BEISCSI_LOG_MBOX,
"extd_status = %d\n", status, extd_status); "BG_%d : mgmt_exec_nonemb_cmd Failed status = %d"
"extd_status = %d\n", status, extd_status);
rc = -EIO; rc = -EIO;
goto free_tag; goto free_tag;
} }
...@@ -617,7 +635,8 @@ static int mgmt_alloc_cmd_data(struct beiscsi_hba *phba, struct be_dma_mem *cmd, ...@@ -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); cmd->va = pci_alloc_consistent(phba->ctrl.pdev, size, &cmd->dma);
if (!cmd->va) { 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; return -ENOMEM;
} }
memset(cmd->va, 0, size); memset(cmd->va, 0, size);
...@@ -673,8 +692,8 @@ mgmt_static_ip_modify(struct beiscsi_hba *phba, ...@@ -673,8 +692,8 @@ mgmt_static_ip_modify(struct beiscsi_hba *phba,
rc = mgmt_exec_nonemb_cmd(phba, &nonemb_cmd, NULL, 0); rc = mgmt_exec_nonemb_cmd(phba, &nonemb_cmd, NULL, 0);
if (rc < 0) if (rc < 0)
shost_printk(KERN_WARNING, phba->shost, beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_CONFIG,
"Failed to Modify existing IP Address\n"); "BG_%d : Failed to Modify existing IP Address\n");
return rc; return rc;
} }
...@@ -728,8 +747,8 @@ int mgmt_set_ip(struct beiscsi_hba *phba, ...@@ -728,8 +747,8 @@ int mgmt_set_ip(struct beiscsi_hba *phba,
if (boot_proto == ISCSI_BOOTPROTO_DHCP) { if (boot_proto == ISCSI_BOOTPROTO_DHCP) {
if (if_info.dhcp_state) { if (if_info.dhcp_state) {
shost_printk(KERN_WARNING, phba->shost, beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_CONFIG,
"DHCP Already Enabled\n"); "BG_%d : DHCP Already Enabled\n");
return 0; return 0;
} }
/* The ip_param->len is 1 in DHCP case. Setting /* The ip_param->len is 1 in DHCP case. Setting
...@@ -756,8 +775,9 @@ int mgmt_set_ip(struct beiscsi_hba *phba, ...@@ -756,8 +775,9 @@ int mgmt_set_ip(struct beiscsi_hba *phba,
rc = mgmt_exec_nonemb_cmd(phba, &nonemb_cmd, NULL, 0); rc = mgmt_exec_nonemb_cmd(phba, &nonemb_cmd, NULL, 0);
if (rc < 0) { if (rc < 0) {
shost_printk(KERN_WARNING, phba->shost, beiscsi_log(phba, KERN_WARNING,
"Failed to Delete existing dhcp\n"); BEISCSI_LOG_CONFIG,
"BG_%d : Failed to Delete existing dhcp\n");
return rc; return rc;
} }
} }
...@@ -776,8 +796,8 @@ int mgmt_set_ip(struct beiscsi_hba *phba, ...@@ -776,8 +796,8 @@ int mgmt_set_ip(struct beiscsi_hba *phba,
memset(&gtway_addr_set, 0, sizeof(gtway_addr_set)); memset(&gtway_addr_set, 0, sizeof(gtway_addr_set));
rc = mgmt_get_gateway(phba, BE2_IPV4, &gtway_addr_set); rc = mgmt_get_gateway(phba, BE2_IPV4, &gtway_addr_set);
if (rc) { if (rc) {
shost_printk(KERN_WARNING, phba->shost, beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_CONFIG,
"Failed to Get Gateway Addr\n"); "BG_%d : Failed to Get Gateway Addr\n");
return rc; return rc;
} }
...@@ -787,8 +807,9 @@ int mgmt_set_ip(struct beiscsi_hba *phba, ...@@ -787,8 +807,9 @@ int mgmt_set_ip(struct beiscsi_hba *phba,
IP_ACTION_DEL, IP_V4_LEN); IP_ACTION_DEL, IP_V4_LEN);
if (rc) { if (rc) {
shost_printk(KERN_WARNING, phba->shost, beiscsi_log(phba, KERN_WARNING,
"Failed to clear Gateway Addr Set\n"); BEISCSI_LOG_CONFIG,
"BG_%d : Failed to clear Gateway Addr Set\n");
return rc; return rc;
} }
} }
...@@ -827,8 +848,8 @@ int mgmt_set_gateway(struct beiscsi_hba *phba, ...@@ -827,8 +848,8 @@ int mgmt_set_gateway(struct beiscsi_hba *phba,
memset(&gtway_addr_set, 0, sizeof(gtway_addr_set)); memset(&gtway_addr_set, 0, sizeof(gtway_addr_set));
rt_val = mgmt_get_gateway(phba, BE2_IPV4, &gtway_addr_set); rt_val = mgmt_get_gateway(phba, BE2_IPV4, &gtway_addr_set);
if (rt_val) { if (rt_val) {
shost_printk(KERN_WARNING, phba->shost, beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_CONFIG,
"Failed to Get Gateway Addr\n"); "BG_%d : Failed to Get Gateway Addr\n");
return rt_val; return rt_val;
} }
...@@ -837,8 +858,8 @@ int mgmt_set_gateway(struct beiscsi_hba *phba, ...@@ -837,8 +858,8 @@ int mgmt_set_gateway(struct beiscsi_hba *phba,
rt_val = mgmt_modify_gateway(phba, gtway_addr, IP_ACTION_DEL, rt_val = mgmt_modify_gateway(phba, gtway_addr, IP_ACTION_DEL,
gateway_param->len); gateway_param->len);
if (rt_val) { if (rt_val) {
shost_printk(KERN_WARNING, phba->shost, beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_CONFIG,
"Failed to clear Gateway Addr Set\n"); "BG_%d : Failed to clear Gateway Addr Set\n");
return rt_val; return rt_val;
} }
} }
...@@ -848,8 +869,8 @@ int mgmt_set_gateway(struct beiscsi_hba *phba, ...@@ -848,8 +869,8 @@ int mgmt_set_gateway(struct beiscsi_hba *phba,
gateway_param->len); gateway_param->len);
if (rt_val) if (rt_val)
shost_printk(KERN_WARNING, phba->shost, beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_CONFIG,
"Failed to Set Gateway Addr\n"); "BG_%d : Failed to Set Gateway Addr\n");
return rt_val; return rt_val;
} }
...@@ -997,7 +1018,9 @@ int be_mgmt_get_boot_shandle(struct beiscsi_hba *phba, ...@@ -997,7 +1018,9 @@ int be_mgmt_get_boot_shandle(struct beiscsi_hba *phba,
/* Get the Boot Target Session Handle and Count*/ /* Get the Boot Target Session Handle and Count*/
tag = mgmt_get_boot_target(phba); tag = mgmt_get_boot_target(phba);
if (!tag) { 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; return -EAGAIN;
} else } else
wait_event_interruptible(phba->ctrl.mcc_wait[tag], wait_event_interruptible(phba->ctrl.mcc_wait[tag],
...@@ -1007,9 +1030,11 @@ int be_mgmt_get_boot_shandle(struct beiscsi_hba *phba, ...@@ -1007,9 +1030,11 @@ int be_mgmt_get_boot_shandle(struct beiscsi_hba *phba,
extd_status = (phba->ctrl.mcc_numtag[tag] & 0x0000FF00) >> 8; extd_status = (phba->ctrl.mcc_numtag[tag] & 0x0000FF00) >> 8;
status = phba->ctrl.mcc_numtag[tag] & 0x000000FF; status = phba->ctrl.mcc_numtag[tag] & 0x000000FF;
if (status || extd_status) { if (status || extd_status) {
SE_DEBUG(DBG_LVL_1, "mgmt_get_boot_target Failed" beiscsi_log(phba, KERN_ERR,
" status = %d extd_status = %d\n", BEISCSI_LOG_INIT | BEISCSI_LOG_CONFIG,
status, extd_status); "BG_%d : mgmt_get_boot_target Failed"
" status = %d extd_status = %d\n",
status, extd_status);
free_mcc_tag(&phba->ctrl, tag); free_mcc_tag(&phba->ctrl, tag);
return -EBUSY; return -EBUSY;
} }
...@@ -1019,7 +1044,9 @@ int be_mgmt_get_boot_shandle(struct beiscsi_hba *phba, ...@@ -1019,7 +1044,9 @@ int be_mgmt_get_boot_shandle(struct beiscsi_hba *phba,
/* Check if the there are any Boot targets configured */ /* Check if the there are any Boot targets configured */
if (!boot_resp->boot_session_count) { 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; return -ENXIO;
} }
...@@ -1033,7 +1060,9 @@ int be_mgmt_get_boot_shandle(struct beiscsi_hba *phba, ...@@ -1033,7 +1060,9 @@ int be_mgmt_get_boot_shandle(struct beiscsi_hba *phba,
tag = mgmt_reopen_session(phba, BE_REOPEN_BOOT_SESSIONS, tag = mgmt_reopen_session(phba, BE_REOPEN_BOOT_SESSIONS,
INVALID_SESS_HANDLE); INVALID_SESS_HANDLE);
if (!tag) { 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; return -EAGAIN;
} else } else
wait_event_interruptible(phba->ctrl.mcc_wait[tag], wait_event_interruptible(phba->ctrl.mcc_wait[tag],
...@@ -1043,9 +1072,11 @@ int be_mgmt_get_boot_shandle(struct beiscsi_hba *phba, ...@@ -1043,9 +1072,11 @@ int be_mgmt_get_boot_shandle(struct beiscsi_hba *phba,
extd_status = (phba->ctrl.mcc_numtag[tag] & 0x0000FF00) >> 8; extd_status = (phba->ctrl.mcc_numtag[tag] & 0x0000FF00) >> 8;
status = phba->ctrl.mcc_numtag[tag] & 0x000000FF; status = phba->ctrl.mcc_numtag[tag] & 0x000000FF;
if (status || extd_status) { if (status || extd_status) {
SE_DEBUG(DBG_LVL_1, "mgmt_reopen_session Failed" beiscsi_log(phba, KERN_ERR,
" status = %d extd_status = %d\n", BEISCSI_LOG_INIT | BEISCSI_LOG_CONFIG,
status, extd_status); "BG_%d : mgmt_reopen_session Failed"
" status = %d extd_status = %d\n",
status, extd_status);
free_mcc_tag(&phba->ctrl, tag); free_mcc_tag(&phba->ctrl, tag);
return -EBUSY; return -EBUSY;
} }
...@@ -1054,6 +1085,8 @@ int be_mgmt_get_boot_shandle(struct beiscsi_hba *phba, ...@@ -1054,6 +1085,8 @@ int be_mgmt_get_boot_shandle(struct beiscsi_hba *phba,
} while (--boot_retry); } while (--boot_retry);
/* Couldn't log into the boot target */ /* 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; return -ENXIO;
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment