|
@@ -42,6 +42,7 @@
|
|
|
#include "be_main.h"
|
|
|
#include "be_iscsi.h"
|
|
|
#include "be_mgmt.h"
|
|
|
+#include "be_cmds.h"
|
|
|
|
|
|
static unsigned int be_iopoll_budget = 10;
|
|
|
static unsigned int be_max_phys_size = 64;
|
|
@@ -57,9 +58,105 @@ MODULE_LICENSE("GPL");
|
|
|
module_param(be_iopoll_budget, int, 0);
|
|
|
module_param(enable_msix, int, 0);
|
|
|
module_param(be_max_phys_size, uint, S_IRUGO);
|
|
|
-MODULE_PARM_DESC(be_max_phys_size, "Maximum Size (In Kilobytes) of physically"
|
|
|
- "contiguous memory that can be allocated."
|
|
|
- "Range is 16 - 128");
|
|
|
+MODULE_PARM_DESC(be_max_phys_size,
|
|
|
+ "Maximum Size (In Kilobytes) of physically contiguous "
|
|
|
+ "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", ¶m_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)
|
|
|
{
|
|
@@ -112,9 +209,9 @@ static int beiscsi_eh_abort(struct scsi_cmnd *sc)
|
|
|
sizeof(struct invalidate_commands_params_in),
|
|
|
&nonemb_cmd.dma);
|
|
|
if (nonemb_cmd.va == NULL) {
|
|
|
- SE_DEBUG(DBG_LVL_1,
|
|
|
- "Failed to allocate memory for"
|
|
|
- "mgmt_invalidate_icds\n");
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_EH,
|
|
|
+ "BM_%d : Failed to allocate memory for"
|
|
|
+ "mgmt_invalidate_icds\n");
|
|
|
return FAILED;
|
|
|
}
|
|
|
nonemb_cmd.size = sizeof(struct invalidate_commands_params_in);
|
|
@@ -122,9 +219,9 @@ static int beiscsi_eh_abort(struct scsi_cmnd *sc)
|
|
|
tag = mgmt_invalidate_icds(phba, inv_tbl, num_invalidate,
|
|
|
cid, &nonemb_cmd);
|
|
|
if (!tag) {
|
|
|
- shost_printk(KERN_WARNING, phba->shost,
|
|
|
- "mgmt_invalidate_icds could not be"
|
|
|
- " submitted\n");
|
|
|
+ beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_EH,
|
|
|
+ "BM_%d : mgmt_invalidate_icds could not be"
|
|
|
+ "submitted\n");
|
|
|
pci_free_consistent(phba->ctrl.pdev, nonemb_cmd.size,
|
|
|
nonemb_cmd.va, nonemb_cmd.dma);
|
|
|
|
|
@@ -188,9 +285,9 @@ static int beiscsi_eh_device_reset(struct scsi_cmnd *sc)
|
|
|
sizeof(struct invalidate_commands_params_in),
|
|
|
&nonemb_cmd.dma);
|
|
|
if (nonemb_cmd.va == NULL) {
|
|
|
- SE_DEBUG(DBG_LVL_1,
|
|
|
- "Failed to allocate memory for"
|
|
|
- "mgmt_invalidate_icds\n");
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_EH,
|
|
|
+ "BM_%d : Failed to allocate memory for"
|
|
|
+ "mgmt_invalidate_icds\n");
|
|
|
return FAILED;
|
|
|
}
|
|
|
nonemb_cmd.size = sizeof(struct invalidate_commands_params_in);
|
|
@@ -198,9 +295,9 @@ static int beiscsi_eh_device_reset(struct scsi_cmnd *sc)
|
|
|
tag = mgmt_invalidate_icds(phba, inv_tbl, num_invalidate,
|
|
|
cid, &nonemb_cmd);
|
|
|
if (!tag) {
|
|
|
- shost_printk(KERN_WARNING, phba->shost,
|
|
|
- "mgmt_invalidate_icds could not be"
|
|
|
- " submitted\n");
|
|
|
+ beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_EH,
|
|
|
+ "BM_%d : mgmt_invalidate_icds could not be"
|
|
|
+ " submitted\n");
|
|
|
pci_free_consistent(phba->ctrl.pdev, nonemb_cmd.size,
|
|
|
nonemb_cmd.va, nonemb_cmd.dma);
|
|
|
return FAILED;
|
|
@@ -389,6 +486,7 @@ static DEFINE_PCI_DEVICE_TABLE(beiscsi_pci_id_table) = {
|
|
|
};
|
|
|
MODULE_DEVICE_TABLE(pci, beiscsi_pci_id_table);
|
|
|
|
|
|
+
|
|
|
static struct scsi_host_template beiscsi_sht = {
|
|
|
.module = THIS_MODULE,
|
|
|
.name = "Emulex 10Gbe open-iscsi Initiator Driver",
|
|
@@ -400,6 +498,7 @@ static struct scsi_host_template beiscsi_sht = {
|
|
|
.eh_abort_handler = beiscsi_eh_abort,
|
|
|
.eh_device_reset_handler = beiscsi_eh_device_reset,
|
|
|
.eh_target_reset_handler = iscsi_eh_session_reset,
|
|
|
+ .shost_attrs = beiscsi_attrs,
|
|
|
.sg_tablesize = BEISCSI_SGLIST_ELEMENTS,
|
|
|
.can_queue = BE2_IO_DEPTH,
|
|
|
.this_id = -1,
|
|
@@ -419,8 +518,8 @@ static struct beiscsi_hba *beiscsi_hba_alloc(struct pci_dev *pcidev)
|
|
|
|
|
|
shost = iscsi_host_alloc(&beiscsi_sht, sizeof(*phba), 0);
|
|
|
if (!shost) {
|
|
|
- dev_err(&pcidev->dev, "beiscsi_hba_alloc -"
|
|
|
- "iscsi_host_alloc failed\n");
|
|
|
+ dev_err(&pcidev->dev,
|
|
|
+ "beiscsi_hba_alloc - iscsi_host_alloc failed\n");
|
|
|
return NULL;
|
|
|
}
|
|
|
shost->dma_boundary = pcidev->dma_mask;
|
|
@@ -510,8 +609,8 @@ static int beiscsi_enable_pci(struct pci_dev *pcidev)
|
|
|
|
|
|
ret = pci_enable_device(pcidev);
|
|
|
if (ret) {
|
|
|
- dev_err(&pcidev->dev, "beiscsi_enable_pci - enable device "
|
|
|
- "failed. Returning -ENODEV\n");
|
|
|
+ dev_err(&pcidev->dev,
|
|
|
+ "beiscsi_enable_pci - enable device failed\n");
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
@@ -576,8 +675,9 @@ static void beiscsi_get_params(struct beiscsi_hba *phba)
|
|
|
+ BE2_TMFS) / 512) + 1) * 512;
|
|
|
phba->params.num_eq_entries = (phba->params.num_eq_entries < 1024)
|
|
|
? 1024 : phba->params.num_eq_entries;
|
|
|
- SE_DEBUG(DBG_LVL_8, "phba->params.num_eq_entries=%d\n",
|
|
|
- phba->params.num_eq_entries);
|
|
|
+ beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : phba->params.num_eq_entries=%d\n",
|
|
|
+ phba->params.num_eq_entries);
|
|
|
phba->params.num_cq_entries =
|
|
|
(((BE2_CMDS_PER_CXN * 2 + phba->fw_config.iscsi_cid_count * 2
|
|
|
+ BE2_TMFS) / 512) + 1) * 512;
|
|
@@ -621,8 +721,6 @@ static irqreturn_t be_isr_mcc(int irq, void *dev_id)
|
|
|
phba = pbe_eq->phba;
|
|
|
mcc = &phba->ctrl.mcc_obj.cq;
|
|
|
eqe = queue_tail_node(eq);
|
|
|
- if (!eqe)
|
|
|
- SE_DEBUG(DBG_LVL_1, "eqe is NULL\n");
|
|
|
|
|
|
num_eq_processed = 0;
|
|
|
|
|
@@ -667,8 +765,6 @@ static irqreturn_t be_isr_msix(int irq, void *dev_id)
|
|
|
eq = &pbe_eq->q;
|
|
|
cq = pbe_eq->cq;
|
|
|
eqe = queue_tail_node(eq);
|
|
|
- if (!eqe)
|
|
|
- SE_DEBUG(DBG_LVL_1, "eqe is NULL\n");
|
|
|
|
|
|
phba = pbe_eq->phba;
|
|
|
num_eq_processed = 0;
|
|
@@ -743,8 +839,6 @@ static irqreturn_t be_isr(int irq, void *dev_id)
|
|
|
mcc = &phba->ctrl.mcc_obj.cq;
|
|
|
index = 0;
|
|
|
eqe = queue_tail_node(eq);
|
|
|
- if (!eqe)
|
|
|
- SE_DEBUG(DBG_LVL_1, "eqe is NULL\n");
|
|
|
|
|
|
num_ioeq_processed = 0;
|
|
|
num_mcceq_processed = 0;
|
|
@@ -842,9 +936,10 @@ static int beiscsi_init_irqs(struct beiscsi_hba *phba)
|
|
|
phba->msi_name[i],
|
|
|
&phwi_context->be_eq[i]);
|
|
|
if (ret) {
|
|
|
- shost_printk(KERN_ERR, phba->shost,
|
|
|
- "beiscsi_init_irqs-Failed to"
|
|
|
- "register msix for i = %d\n", i);
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : beiscsi_init_irqs-Failed to"
|
|
|
+ "register msix for i = %d\n",
|
|
|
+ i);
|
|
|
kfree(phba->msi_name[i]);
|
|
|
goto free_msix_irqs;
|
|
|
}
|
|
@@ -860,8 +955,9 @@ static int beiscsi_init_irqs(struct beiscsi_hba *phba)
|
|
|
ret = request_irq(msix_vec, be_isr_mcc, 0, phba->msi_name[i],
|
|
|
&phwi_context->be_eq[i]);
|
|
|
if (ret) {
|
|
|
- shost_printk(KERN_ERR, phba->shost, "beiscsi_init_irqs-"
|
|
|
- "Failed to register beiscsi_msix_mcc\n");
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT ,
|
|
|
+ "BM_%d : beiscsi_init_irqs-"
|
|
|
+ "Failed to register beiscsi_msix_mcc\n");
|
|
|
kfree(phba->msi_name[i]);
|
|
|
goto free_msix_irqs;
|
|
|
}
|
|
@@ -870,8 +966,9 @@ static int beiscsi_init_irqs(struct beiscsi_hba *phba)
|
|
|
ret = request_irq(pcidev->irq, be_isr, IRQF_SHARED,
|
|
|
"beiscsi", phba);
|
|
|
if (ret) {
|
|
|
- shost_printk(KERN_ERR, phba->shost, "beiscsi_init_irqs-"
|
|
|
- "Failed to register irq\\n");
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : beiscsi_init_irqs-"
|
|
|
+ "Failed to register irq\\n");
|
|
|
return ret;
|
|
|
}
|
|
|
}
|
|
@@ -922,7 +1019,9 @@ beiscsi_process_async_pdu(struct beiscsi_conn *beiscsi_conn,
|
|
|
case ISCSI_OP_REJECT:
|
|
|
WARN_ON(!pbuffer);
|
|
|
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;
|
|
|
case ISCSI_OP_LOGIN_RSP:
|
|
|
case ISCSI_OP_TEXT_RSP:
|
|
@@ -932,11 +1031,12 @@ beiscsi_process_async_pdu(struct beiscsi_conn *beiscsi_conn,
|
|
|
login_hdr->itt = io_task->libiscsi_itt;
|
|
|
break;
|
|
|
default:
|
|
|
- shost_printk(KERN_WARNING, phba->shost,
|
|
|
- "Unrecognized opcode 0x%x in async msg\n",
|
|
|
- (ppdu->
|
|
|
+ beiscsi_log(phba, KERN_WARNING,
|
|
|
+ BEISCSI_LOG_IO | BEISCSI_LOG_CONFIG,
|
|
|
+ "BM_%d : Unrecognized opcode 0x%x in async msg\n",
|
|
|
+ (ppdu->
|
|
|
dw[offsetof(struct amap_pdu_base, opcode) / 32]
|
|
|
- & PDUBASE_OPCODE_MASK));
|
|
|
+ & PDUBASE_OPCODE_MASK));
|
|
|
return 1;
|
|
|
}
|
|
|
|
|
@@ -951,9 +1051,11 @@ static struct sgl_handle *alloc_io_sgl_handle(struct beiscsi_hba *phba)
|
|
|
struct sgl_handle *psgl_handle;
|
|
|
|
|
|
if (phba->io_sgl_hndl_avbl) {
|
|
|
- SE_DEBUG(DBG_LVL_8,
|
|
|
- "In alloc_io_sgl_handle,io_sgl_alloc_index=%d\n",
|
|
|
- phba->io_sgl_alloc_index);
|
|
|
+ beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_IO,
|
|
|
+ "BM_%d : In alloc_io_sgl_handle,"
|
|
|
+ " io_sgl_alloc_index=%d\n",
|
|
|
+ phba->io_sgl_alloc_index);
|
|
|
+
|
|
|
psgl_handle = phba->io_sgl_hndl_base[phba->
|
|
|
io_sgl_alloc_index];
|
|
|
phba->io_sgl_hndl_base[phba->io_sgl_alloc_index] = NULL;
|
|
@@ -971,17 +1073,20 @@ static struct sgl_handle *alloc_io_sgl_handle(struct beiscsi_hba *phba)
|
|
|
static void
|
|
|
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",
|
|
|
- phba->io_sgl_free_index);
|
|
|
+ beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_IO,
|
|
|
+ "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]) {
|
|
|
/*
|
|
|
* this can happen if clean_task is called on a task that
|
|
|
* failed in xmit_task or alloc_pdu.
|
|
|
*/
|
|
|
- SE_DEBUG(DBG_LVL_8,
|
|
|
- "Double Free in IO SGL io_sgl_free_index=%d,"
|
|
|
- "value there=%p\n", phba->io_sgl_free_index,
|
|
|
- phba->io_sgl_hndl_base[phba->io_sgl_free_index]);
|
|
|
+ beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_IO,
|
|
|
+ "BM_%d : Double Free in IO SGL io_sgl_free_index=%d,"
|
|
|
+ "value there=%p\n", phba->io_sgl_free_index,
|
|
|
+ phba->io_sgl_hndl_base
|
|
|
+ [phba->io_sgl_free_index]);
|
|
|
return;
|
|
|
}
|
|
|
phba->io_sgl_hndl_base[phba->io_sgl_free_index] = psgl_handle;
|
|
@@ -1043,11 +1148,12 @@ free_wrb_handle(struct beiscsi_hba *phba, struct hwi_wrb_context *pwrb_context,
|
|
|
else
|
|
|
pwrb_context->free_index++;
|
|
|
|
|
|
- SE_DEBUG(DBG_LVL_8,
|
|
|
- "FREE WRB: pwrb_handle=%p free_index=0x%x"
|
|
|
- "wrb_handles_available=%d\n",
|
|
|
- pwrb_handle, pwrb_context->free_index,
|
|
|
- pwrb_context->wrb_handles_available);
|
|
|
+ beiscsi_log(phba, KERN_INFO,
|
|
|
+ BEISCSI_LOG_IO | BEISCSI_LOG_CONFIG,
|
|
|
+ "BM_%d : FREE WRB: pwrb_handle=%p free_index=0x%x"
|
|
|
+ "wrb_handles_available=%d\n",
|
|
|
+ pwrb_handle, pwrb_context->free_index,
|
|
|
+ pwrb_context->wrb_handles_available);
|
|
|
}
|
|
|
|
|
|
static struct sgl_handle *alloc_mgmt_sgl_handle(struct beiscsi_hba *phba)
|
|
@@ -1057,8 +1163,11 @@ static struct sgl_handle *alloc_mgmt_sgl_handle(struct beiscsi_hba *phba)
|
|
|
if (phba->eh_sgl_hndl_avbl) {
|
|
|
psgl_handle = phba->eh_sgl_hndl_base[phba->eh_sgl_alloc_index];
|
|
|
phba->eh_sgl_hndl_base[phba->eh_sgl_alloc_index] = NULL;
|
|
|
- SE_DEBUG(DBG_LVL_8, "mgmt_sgl_alloc_index=%d=0x%x\n",
|
|
|
- phba->eh_sgl_alloc_index, phba->eh_sgl_alloc_index);
|
|
|
+ beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_CONFIG,
|
|
|
+ "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--;
|
|
|
if (phba->eh_sgl_alloc_index ==
|
|
|
(phba->params.icds_per_ctrl - phba->params.ios_per_ctrl -
|
|
@@ -1075,16 +1184,20 @@ void
|
|
|
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",
|
|
|
- phba->eh_sgl_free_index);
|
|
|
+ beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_CONFIG,
|
|
|
+ "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]) {
|
|
|
/*
|
|
|
* this can happen if clean_task is called on a task that
|
|
|
* failed in xmit_task or alloc_pdu.
|
|
|
*/
|
|
|
- SE_DEBUG(DBG_LVL_8,
|
|
|
- "Double Free in eh SGL ,eh_sgl_free_index=%d\n",
|
|
|
- phba->eh_sgl_free_index);
|
|
|
+ beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_CONFIG,
|
|
|
+ "BM_%d : Double Free in eh SGL ,"
|
|
|
+ "eh_sgl_free_index=%d\n",
|
|
|
+ phba->eh_sgl_free_index);
|
|
|
return;
|
|
|
}
|
|
|
phba->eh_sgl_hndl_base[phba->eh_sgl_free_index] = psgl_handle;
|
|
@@ -1326,9 +1439,10 @@ static void hwi_complete_cmd(struct beiscsi_conn *beiscsi_conn,
|
|
|
break;
|
|
|
|
|
|
case HWH_TYPE_LOGIN:
|
|
|
- SE_DEBUG(DBG_LVL_1,
|
|
|
- "\t\t No HWH_TYPE_LOGIN Expected in hwi_complete_cmd"
|
|
|
- "- Solicited path\n");
|
|
|
+ beiscsi_log(phba, KERN_ERR,
|
|
|
+ BEISCSI_LOG_CONFIG | BEISCSI_LOG_IO,
|
|
|
+ "BM_%d :\t\t No HWH_TYPE_LOGIN Expected in"
|
|
|
+ " hwi_complete_cmd- Solicited path\n");
|
|
|
break;
|
|
|
|
|
|
case HWH_TYPE_NOP:
|
|
@@ -1336,13 +1450,14 @@ static void hwi_complete_cmd(struct beiscsi_conn *beiscsi_conn,
|
|
|
break;
|
|
|
|
|
|
default:
|
|
|
- shost_printk(KERN_WARNING, phba->shost,
|
|
|
- "In hwi_complete_cmd, unknown type = %d"
|
|
|
- "wrb_index 0x%x CID 0x%x\n", type,
|
|
|
- ((psol->dw[offsetof(struct amap_iscsi_wrb,
|
|
|
- type) / 32] & SOL_WRB_INDEX_MASK) >> 16),
|
|
|
- ((psol->dw[offsetof(struct amap_sol_cqe,
|
|
|
- cid) / 32] & SOL_CID_MASK) >> 6));
|
|
|
+ beiscsi_log(phba, KERN_WARNING,
|
|
|
+ BEISCSI_LOG_CONFIG | BEISCSI_LOG_IO,
|
|
|
+ "BM_%d : In hwi_complete_cmd, unknown type = %d"
|
|
|
+ "wrb_index 0x%x CID 0x%x\n", type,
|
|
|
+ ((psol->dw[offsetof(struct amap_iscsi_wrb,
|
|
|
+ type) / 32] & SOL_WRB_INDEX_MASK) >> 16),
|
|
|
+ ((psol->dw[offsetof(struct amap_sol_cqe,
|
|
|
+ cid) / 32] & SOL_CID_MASK) >> 6));
|
|
|
break;
|
|
|
}
|
|
|
|
|
@@ -1397,10 +1512,11 @@ hwi_get_async_handle(struct beiscsi_hba *phba,
|
|
|
break;
|
|
|
default:
|
|
|
pbusy_list = NULL;
|
|
|
- shost_printk(KERN_WARNING, phba->shost,
|
|
|
- "Unexpected code=%d\n",
|
|
|
- pdpdu_cqe->dw[offsetof(struct amap_i_t_dpdu_cqe,
|
|
|
- code) / 32] & PDUCQE_CODE_MASK);
|
|
|
+ beiscsi_log(phba, KERN_WARNING,
|
|
|
+ BEISCSI_LOG_IO | BEISCSI_LOG_CONFIG,
|
|
|
+ "BM_%d : Unexpected code=%d\n",
|
|
|
+ pdpdu_cqe->dw[offsetof(struct amap_i_t_dpdu_cqe,
|
|
|
+ code) / 32] & PDUCQE_CODE_MASK);
|
|
|
return NULL;
|
|
|
}
|
|
|
|
|
@@ -1425,8 +1541,9 @@ hwi_get_async_handle(struct beiscsi_hba *phba,
|
|
|
}
|
|
|
|
|
|
static unsigned int
|
|
|
-hwi_update_async_writables(struct hwi_async_pdu_context *pasync_ctx,
|
|
|
- unsigned int is_header, unsigned int cq_index)
|
|
|
+hwi_update_async_writables(struct beiscsi_hba *phba,
|
|
|
+ struct hwi_async_pdu_context *pasync_ctx,
|
|
|
+ unsigned int is_header, unsigned int cq_index)
|
|
|
{
|
|
|
struct list_head *pbusy_list;
|
|
|
struct async_pdu_handle *pasync_handle;
|
|
@@ -1463,9 +1580,10 @@ hwi_update_async_writables(struct hwi_async_pdu_context *pasync_ctx,
|
|
|
}
|
|
|
|
|
|
if (!writables) {
|
|
|
- SE_DEBUG(DBG_LVL_1,
|
|
|
- "Duplicate notification received - index 0x%x!!\n",
|
|
|
- cq_index);
|
|
|
+ beiscsi_log(phba, KERN_ERR,
|
|
|
+ BEISCSI_LOG_CONFIG | BEISCSI_LOG_IO,
|
|
|
+ "BM_%d : Duplicate notification received - index 0x%x!!\n",
|
|
|
+ cq_index);
|
|
|
WARN_ON(1);
|
|
|
}
|
|
|
|
|
@@ -1616,8 +1734,8 @@ static void hwi_flush_default_pdu_buffer(struct beiscsi_hba *phba,
|
|
|
pdpdu_cqe, &cq_index);
|
|
|
BUG_ON(pasync_handle->is_header != 0);
|
|
|
if (pasync_handle->consumed == 0)
|
|
|
- hwi_update_async_writables(pasync_ctx, pasync_handle->is_header,
|
|
|
- cq_index);
|
|
|
+ hwi_update_async_writables(phba, pasync_ctx,
|
|
|
+ pasync_handle->is_header, cq_index);
|
|
|
|
|
|
hwi_free_async_msg(phba, pasync_handle->cri);
|
|
|
hwi_post_async_buffers(phba, pasync_handle->is_header);
|
|
@@ -1745,8 +1863,9 @@ static void hwi_process_default_pdu_ring(struct beiscsi_conn *beiscsi_conn,
|
|
|
pdpdu_cqe, &cq_index);
|
|
|
|
|
|
if (pasync_handle->consumed == 0)
|
|
|
- hwi_update_async_writables(pasync_ctx, pasync_handle->is_header,
|
|
|
- cq_index);
|
|
|
+ hwi_update_async_writables(phba, pasync_ctx,
|
|
|
+ pasync_handle->is_header, cq_index);
|
|
|
+
|
|
|
hwi_gather_async_pdu(beiscsi_conn, phba, pasync_handle);
|
|
|
hwi_post_async_buffers(phba, pasync_handle->is_header);
|
|
|
}
|
|
@@ -1774,9 +1893,10 @@ static void beiscsi_process_mcc_isr(struct beiscsi_hba *phba)
|
|
|
beiscsi_async_link_state_process(phba,
|
|
|
(struct be_async_event_link_state *) mcc_compl);
|
|
|
else
|
|
|
- SE_DEBUG(DBG_LVL_1,
|
|
|
- " Unsupported Async Event, flags"
|
|
|
- " = 0x%08x\n", mcc_compl->flags);
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_MBOX,
|
|
|
+ "BM_%d : Unsupported Async Event, flags"
|
|
|
+ " = 0x%08x\n",
|
|
|
+ mcc_compl->flags);
|
|
|
} else if (mcc_compl->flags & CQE_FLAGS_COMPLETED_MASK) {
|
|
|
be_mcc_compl_process_isr(&phba->ctrl, mcc_compl);
|
|
|
atomic_dec(&phba->ctrl.mcc_obj.q.used);
|
|
@@ -1801,6 +1921,7 @@ static unsigned int beiscsi_process_cq(struct be_eq_obj *pbe_eq)
|
|
|
struct dmsg_cqe *dmsg;
|
|
|
unsigned int num_processed = 0;
|
|
|
unsigned int tot_nump = 0;
|
|
|
+ unsigned short code = 0, cid = 0;
|
|
|
struct beiscsi_conn *beiscsi_conn;
|
|
|
struct beiscsi_endpoint *beiscsi_ep;
|
|
|
struct iscsi_endpoint *ep;
|
|
@@ -1814,10 +1935,11 @@ static unsigned int beiscsi_process_cq(struct be_eq_obj *pbe_eq)
|
|
|
CQE_VALID_MASK) {
|
|
|
be_dws_le_to_cpu(sol, sizeof(struct sol_cqe));
|
|
|
|
|
|
- ep = phba->ep_array[(u32) ((sol->
|
|
|
- dw[offsetof(struct amap_sol_cqe, cid) / 32] &
|
|
|
- SOL_CID_MASK) >> 6) -
|
|
|
- phba->fw_config.iscsi_cid_start];
|
|
|
+ cid = ((sol->dw[offsetof(struct amap_sol_cqe, cid)/32] &
|
|
|
+ CQE_CID_MASK) >> 6);
|
|
|
+ code = (sol->dw[offsetof(struct amap_sol_cqe, code)/32] &
|
|
|
+ CQE_CODE_MASK);
|
|
|
+ ep = phba->ep_array[cid - phba->fw_config.iscsi_cid_start];
|
|
|
|
|
|
beiscsi_ep = ep->dd_data;
|
|
|
beiscsi_conn = beiscsi_ep->conn;
|
|
@@ -1829,32 +1951,41 @@ static unsigned int beiscsi_process_cq(struct be_eq_obj *pbe_eq)
|
|
|
num_processed = 0;
|
|
|
}
|
|
|
|
|
|
- switch ((u32) sol->dw[offsetof(struct amap_sol_cqe, code) /
|
|
|
- 32] & CQE_CODE_MASK) {
|
|
|
+ switch (code) {
|
|
|
case SOL_CMD_COMPLETE:
|
|
|
hwi_complete_cmd(beiscsi_conn, phba, sol);
|
|
|
break;
|
|
|
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;
|
|
|
hwi_complete_drvr_msgs(beiscsi_conn, phba, sol);
|
|
|
break;
|
|
|
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,
|
|
|
(struct i_t_dpdu_cqe *)sol);
|
|
|
break;
|
|
|
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,
|
|
|
(struct i_t_dpdu_cqe *)sol);
|
|
|
break;
|
|
|
case CXN_INVALIDATE_INDEX_NOTIFY:
|
|
|
case CMD_INVALIDATED_NOTIFY:
|
|
|
case CXN_INVALIDATE_NOTIFY:
|
|
|
- SE_DEBUG(DBG_LVL_1,
|
|
|
- "Ignoring CQ Error notification for cmd/cxn"
|
|
|
- "invalidate\n");
|
|
|
+ beiscsi_log(phba, KERN_ERR,
|
|
|
+ BEISCSI_LOG_IO | BEISCSI_LOG_CONFIG,
|
|
|
+ "BM_%d : Ignoring CQ Error notification for"
|
|
|
+ " cmd/cxn invalidate\n");
|
|
|
break;
|
|
|
case SOL_CMD_KILLED_DATA_DIGEST_ERR:
|
|
|
case CMD_KILLED_INVALID_STATSN_RCVD:
|
|
@@ -1864,17 +1995,16 @@ static unsigned int beiscsi_process_cq(struct be_eq_obj *pbe_eq)
|
|
|
case CMD_CXN_KILLED_ITT_INVALID:
|
|
|
case CMD_CXN_KILLED_SEQ_OUTOFORDER:
|
|
|
case CMD_CXN_KILLED_INVALID_DATASN_RCVD:
|
|
|
- SE_DEBUG(DBG_LVL_1,
|
|
|
- "CQ Error notification for cmd.. "
|
|
|
- "code %d cid 0x%x\n",
|
|
|
- sol->dw[offsetof(struct amap_sol_cqe, code) /
|
|
|
- 32] & CQE_CODE_MASK,
|
|
|
- (sol->dw[offsetof(struct amap_sol_cqe, cid) /
|
|
|
- 32] & SOL_CID_MASK));
|
|
|
+ beiscsi_log(phba, KERN_ERR,
|
|
|
+ BEISCSI_LOG_CONFIG | BEISCSI_LOG_IO,
|
|
|
+ "BM_%d : CQ Error notification for cmd.. "
|
|
|
+ "code %d cid 0x%x\n", code, cid);
|
|
|
break;
|
|
|
case UNSOL_DATA_DIGEST_ERROR_NOTIFY:
|
|
|
- SE_DEBUG(DBG_LVL_1,
|
|
|
- "Digest error on def pdu ring, dropping..\n");
|
|
|
+ beiscsi_log(phba, KERN_ERR,
|
|
|
+ BEISCSI_LOG_IO | BEISCSI_LOG_CONFIG,
|
|
|
+ "BM_%d : Digest error on def pdu ring,"
|
|
|
+ " dropping..\n");
|
|
|
hwi_flush_default_pdu_buffer(phba, beiscsi_conn,
|
|
|
(struct i_t_dpdu_cqe *) sol);
|
|
|
break;
|
|
@@ -1892,33 +2022,31 @@ static unsigned int beiscsi_process_cq(struct be_eq_obj *pbe_eq)
|
|
|
case CXN_KILLED_OVER_RUN_RESIDUAL:
|
|
|
case CXN_KILLED_UNDER_RUN_RESIDUAL:
|
|
|
case CXN_KILLED_CMND_DATA_NOT_ON_SAME_CONN:
|
|
|
- SE_DEBUG(DBG_LVL_1, "CQ Error %d, reset CID "
|
|
|
- "0x%x...\n",
|
|
|
- sol->dw[offsetof(struct amap_sol_cqe, code) /
|
|
|
- 32] & CQE_CODE_MASK,
|
|
|
- (sol->dw[offsetof(struct amap_sol_cqe, cid) /
|
|
|
- 32] & CQE_CID_MASK));
|
|
|
- iscsi_conn_failure(beiscsi_conn->conn,
|
|
|
- ISCSI_ERR_CONN_FAILED);
|
|
|
+ beiscsi_log(phba, KERN_ERR,
|
|
|
+ BEISCSI_LOG_IO | BEISCSI_LOG_CONFIG,
|
|
|
+ "BM_%d : CQ Error %d, reset CID 0x%x...\n",
|
|
|
+ code, cid);
|
|
|
+ if (beiscsi_conn)
|
|
|
+ iscsi_conn_failure(beiscsi_conn->conn,
|
|
|
+ ISCSI_ERR_CONN_FAILED);
|
|
|
break;
|
|
|
case CXN_KILLED_RST_SENT:
|
|
|
case CXN_KILLED_RST_RCVD:
|
|
|
- SE_DEBUG(DBG_LVL_1, "CQ Error %d, reset"
|
|
|
- "received/sent on CID 0x%x...\n",
|
|
|
- sol->dw[offsetof(struct amap_sol_cqe, code) /
|
|
|
- 32] & CQE_CODE_MASK,
|
|
|
- (sol->dw[offsetof(struct amap_sol_cqe, cid) /
|
|
|
- 32] & CQE_CID_MASK));
|
|
|
- iscsi_conn_failure(beiscsi_conn->conn,
|
|
|
- ISCSI_ERR_CONN_FAILED);
|
|
|
+ beiscsi_log(phba, KERN_ERR,
|
|
|
+ BEISCSI_LOG_IO | BEISCSI_LOG_CONFIG,
|
|
|
+ "BM_%d : CQ Error %d, reset"
|
|
|
+ "received/sent on CID 0x%x...\n",
|
|
|
+ code, cid);
|
|
|
+ if (beiscsi_conn)
|
|
|
+ iscsi_conn_failure(beiscsi_conn->conn,
|
|
|
+ ISCSI_ERR_CONN_FAILED);
|
|
|
break;
|
|
|
default:
|
|
|
- SE_DEBUG(DBG_LVL_1, "CQ Error Invalid code= %d "
|
|
|
- "received on CID 0x%x...\n",
|
|
|
- sol->dw[offsetof(struct amap_sol_cqe, code) /
|
|
|
- 32] & CQE_CODE_MASK,
|
|
|
- (sol->dw[offsetof(struct amap_sol_cqe, cid) /
|
|
|
- 32] & CQE_CID_MASK));
|
|
|
+ beiscsi_log(phba, KERN_ERR,
|
|
|
+ BEISCSI_LOG_IO | BEISCSI_LOG_CONFIG,
|
|
|
+ "BM_%d : CQ Error Invalid code= %d "
|
|
|
+ "received on CID 0x%x...\n",
|
|
|
+ code, cid);
|
|
|
break;
|
|
|
}
|
|
|
|
|
@@ -1977,7 +2105,10 @@ static int be_iopoll(struct blk_iopoll *iop, int budget)
|
|
|
if (ret < budget) {
|
|
|
phba = pbe_eq->phba;
|
|
|
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);
|
|
|
}
|
|
|
return ret;
|
|
@@ -2348,16 +2479,16 @@ static int beiscsi_init_wrb_handle(struct beiscsi_hba *phba)
|
|
|
kzalloc(sizeof(struct wrb_handle *) *
|
|
|
phba->params.wrbs_per_cxn, GFP_KERNEL);
|
|
|
if (!pwrb_context->pwrb_handle_base) {
|
|
|
- shost_printk(KERN_ERR, phba->shost,
|
|
|
- "Mem Alloc Failed. Failing to load\n");
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : Mem Alloc Failed. Failing to load\n");
|
|
|
goto init_wrb_hndl_failed;
|
|
|
}
|
|
|
pwrb_context->pwrb_handle_basestd =
|
|
|
kzalloc(sizeof(struct wrb_handle *) *
|
|
|
phba->params.wrbs_per_cxn, GFP_KERNEL);
|
|
|
if (!pwrb_context->pwrb_handle_basestd) {
|
|
|
- shost_printk(KERN_ERR, phba->shost,
|
|
|
- "Mem Alloc Failed. Failing to load\n");
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : Mem Alloc Failed. Failing to load\n");
|
|
|
goto init_wrb_hndl_failed;
|
|
|
}
|
|
|
if (!num_cxn_wrbh) {
|
|
@@ -2438,12 +2569,13 @@ static void hwi_init_async_pdu_ctx(struct beiscsi_hba *phba)
|
|
|
mem_descr = (struct be_mem_descriptor *)phba->init_mem;
|
|
|
mem_descr += HWI_MEM_ASYNC_HEADER_BUF;
|
|
|
if (mem_descr->mem_array[0].virtual_address) {
|
|
|
- SE_DEBUG(DBG_LVL_8,
|
|
|
- "hwi_init_async_pdu_ctx HWI_MEM_ASYNC_HEADER_BUF"
|
|
|
- "va=%p\n", mem_descr->mem_array[0].virtual_address);
|
|
|
+ beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : hwi_init_async_pdu_ctx"
|
|
|
+ " HWI_MEM_ASYNC_HEADER_BUF va=%p\n",
|
|
|
+ mem_descr->mem_array[0].virtual_address);
|
|
|
} else
|
|
|
- shost_printk(KERN_WARNING, phba->shost,
|
|
|
- "No Virtual address\n");
|
|
|
+ beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : No Virtual address\n");
|
|
|
|
|
|
pasync_ctx->async_header.va_base =
|
|
|
mem_descr->mem_array[0].virtual_address;
|
|
@@ -2454,24 +2586,27 @@ static void hwi_init_async_pdu_ctx(struct beiscsi_hba *phba)
|
|
|
mem_descr = (struct be_mem_descriptor *)phba->init_mem;
|
|
|
mem_descr += HWI_MEM_ASYNC_HEADER_RING;
|
|
|
if (mem_descr->mem_array[0].virtual_address) {
|
|
|
- SE_DEBUG(DBG_LVL_8,
|
|
|
- "hwi_init_async_pdu_ctx HWI_MEM_ASYNC_HEADER_RING"
|
|
|
- "va=%p\n", mem_descr->mem_array[0].virtual_address);
|
|
|
+ beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : hwi_init_async_pdu_ctx"
|
|
|
+ " HWI_MEM_ASYNC_HEADER_RING va=%p\n",
|
|
|
+ mem_descr->mem_array[0].virtual_address);
|
|
|
} else
|
|
|
- shost_printk(KERN_WARNING, phba->shost,
|
|
|
- "No Virtual address\n");
|
|
|
+ beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : No Virtual address\n");
|
|
|
+
|
|
|
pasync_ctx->async_header.ring_base =
|
|
|
mem_descr->mem_array[0].virtual_address;
|
|
|
|
|
|
mem_descr = (struct be_mem_descriptor *)phba->init_mem;
|
|
|
mem_descr += HWI_MEM_ASYNC_HEADER_HANDLE;
|
|
|
if (mem_descr->mem_array[0].virtual_address) {
|
|
|
- SE_DEBUG(DBG_LVL_8,
|
|
|
- "hwi_init_async_pdu_ctx HWI_MEM_ASYNC_HEADER_HANDLE"
|
|
|
- "va=%p\n", mem_descr->mem_array[0].virtual_address);
|
|
|
+ beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : hwi_init_async_pdu_ctx"
|
|
|
+ " HWI_MEM_ASYNC_HEADER_HANDLE va=%p\n",
|
|
|
+ mem_descr->mem_array[0].virtual_address);
|
|
|
} else
|
|
|
- shost_printk(KERN_WARNING, phba->shost,
|
|
|
- "No Virtual address\n");
|
|
|
+ beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : No Virtual address\n");
|
|
|
|
|
|
pasync_ctx->async_header.handle_base =
|
|
|
mem_descr->mem_array[0].virtual_address;
|
|
@@ -2482,12 +2617,13 @@ static void hwi_init_async_pdu_ctx(struct beiscsi_hba *phba)
|
|
|
mem_descr = (struct be_mem_descriptor *)phba->init_mem;
|
|
|
mem_descr += HWI_MEM_ASYNC_DATA_RING;
|
|
|
if (mem_descr->mem_array[0].virtual_address) {
|
|
|
- SE_DEBUG(DBG_LVL_8,
|
|
|
- "hwi_init_async_pdu_ctx HWI_MEM_ASYNC_DATA_RING"
|
|
|
- "va=%p\n", mem_descr->mem_array[0].virtual_address);
|
|
|
+ beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : hwi_init_async_pdu_ctx"
|
|
|
+ " HWI_MEM_ASYNC_DATA_RING va=%p\n",
|
|
|
+ mem_descr->mem_array[0].virtual_address);
|
|
|
} else
|
|
|
- shost_printk(KERN_WARNING, phba->shost,
|
|
|
- "No Virtual address\n");
|
|
|
+ beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : No Virtual address\n");
|
|
|
|
|
|
pasync_ctx->async_data.ring_base =
|
|
|
mem_descr->mem_array[0].virtual_address;
|
|
@@ -2495,8 +2631,8 @@ static void hwi_init_async_pdu_ctx(struct beiscsi_hba *phba)
|
|
|
mem_descr = (struct be_mem_descriptor *)phba->init_mem;
|
|
|
mem_descr += HWI_MEM_ASYNC_DATA_HANDLE;
|
|
|
if (!mem_descr->mem_array[0].virtual_address)
|
|
|
- shost_printk(KERN_WARNING, phba->shost,
|
|
|
- "No Virtual address\n");
|
|
|
+ beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : No Virtual address\n");
|
|
|
|
|
|
pasync_ctx->async_data.handle_base =
|
|
|
mem_descr->mem_array[0].virtual_address;
|
|
@@ -2511,12 +2647,14 @@ static void hwi_init_async_pdu_ctx(struct beiscsi_hba *phba)
|
|
|
mem_descr = (struct be_mem_descriptor *)phba->init_mem;
|
|
|
mem_descr += HWI_MEM_ASYNC_DATA_BUF;
|
|
|
if (mem_descr->mem_array[0].virtual_address) {
|
|
|
- SE_DEBUG(DBG_LVL_8,
|
|
|
- "hwi_init_async_pdu_ctx HWI_MEM_ASYNC_DATA_BUF"
|
|
|
- "va=%p\n", mem_descr->mem_array[0].virtual_address);
|
|
|
+ beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : hwi_init_async_pdu_ctx"
|
|
|
+ " HWI_MEM_ASYNC_DATA_BUF va=%p\n",
|
|
|
+ mem_descr->mem_array[0].virtual_address);
|
|
|
} else
|
|
|
- shost_printk(KERN_WARNING, phba->shost,
|
|
|
- "No Virtual address\n");
|
|
|
+ beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : No Virtual address\n");
|
|
|
+
|
|
|
idx = 0;
|
|
|
pasync_ctx->async_data.va_base =
|
|
|
mem_descr->mem_array[idx].virtual_address;
|
|
@@ -2657,7 +2795,7 @@ static int beiscsi_create_eqs(struct beiscsi_hba *phba,
|
|
|
struct hwi_context_memory *phwi_context)
|
|
|
{
|
|
|
unsigned int i, num_eq_pages;
|
|
|
- int ret, eq_for_mcc;
|
|
|
+ int ret = 0, eq_for_mcc;
|
|
|
struct be_queue_info *eq;
|
|
|
struct be_dma_mem *mem;
|
|
|
void *eq_vaddress;
|
|
@@ -2684,8 +2822,8 @@ static int beiscsi_create_eqs(struct beiscsi_hba *phba,
|
|
|
ret = be_fill_queue(eq, phba->params.num_eq_entries,
|
|
|
sizeof(struct be_eq_entry), eq_vaddress);
|
|
|
if (ret) {
|
|
|
- shost_printk(KERN_ERR, phba->shost,
|
|
|
- "be_fill_queue Failed for EQ\n");
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : be_fill_queue Failed for EQ\n");
|
|
|
goto create_eq_error;
|
|
|
}
|
|
|
|
|
@@ -2693,12 +2831,15 @@ static int beiscsi_create_eqs(struct beiscsi_hba *phba,
|
|
|
ret = beiscsi_cmd_eq_create(&phba->ctrl, eq,
|
|
|
phwi_context->cur_eqd);
|
|
|
if (ret) {
|
|
|
- shost_printk(KERN_ERR, phba->shost,
|
|
|
- "beiscsi_cmd_eq_create"
|
|
|
- "Failedfor EQ\n");
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : beiscsi_cmd_eq_create"
|
|
|
+ "Failed for EQ\n");
|
|
|
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;
|
|
|
create_eq_error:
|
|
@@ -2717,7 +2858,7 @@ static int beiscsi_create_cqs(struct beiscsi_hba *phba,
|
|
|
struct hwi_context_memory *phwi_context)
|
|
|
{
|
|
|
unsigned int i, num_cq_pages;
|
|
|
- int ret;
|
|
|
+ int ret = 0;
|
|
|
struct be_queue_info *cq, *eq;
|
|
|
struct be_dma_mem *mem;
|
|
|
struct be_eq_obj *pbe_eq;
|
|
@@ -2742,8 +2883,9 @@ static int beiscsi_create_cqs(struct beiscsi_hba *phba,
|
|
|
ret = be_fill_queue(cq, phba->params.num_cq_entries,
|
|
|
sizeof(struct sol_cqe), cq_vaddress);
|
|
|
if (ret) {
|
|
|
- shost_printk(KERN_ERR, phba->shost,
|
|
|
- "be_fill_queue Failed for ISCSI CQ\n");
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : be_fill_queue Failed "
|
|
|
+ "for ISCSI CQ\n");
|
|
|
goto create_cq_error;
|
|
|
}
|
|
|
|
|
@@ -2751,14 +2893,14 @@ static int beiscsi_create_cqs(struct beiscsi_hba *phba,
|
|
|
ret = beiscsi_cmd_cq_create(&phba->ctrl, cq, eq, false,
|
|
|
false, 0);
|
|
|
if (ret) {
|
|
|
- shost_printk(KERN_ERR, phba->shost,
|
|
|
- "beiscsi_cmd_eq_create"
|
|
|
- "Failed for ISCSI CQ\n");
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : beiscsi_cmd_eq_create"
|
|
|
+ "Failed for ISCSI CQ\n");
|
|
|
goto create_cq_error;
|
|
|
}
|
|
|
- SE_DEBUG(DBG_LVL_8, "iscsi cq_id is %d for eq_id %d\n",
|
|
|
- cq->id, eq->id);
|
|
|
- SE_DEBUG(DBG_LVL_8, "ISCSI CQ CREATED\n");
|
|
|
+ beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : iscsi cq_id is %d for eq_id %d\n"
|
|
|
+ "iSCSI CQ CREATED\n", cq->id, eq->id);
|
|
|
}
|
|
|
return 0;
|
|
|
|
|
@@ -2799,8 +2941,8 @@ beiscsi_create_def_hdr(struct beiscsi_hba *phba,
|
|
|
sizeof(struct phys_addr),
|
|
|
sizeof(struct phys_addr), dq_vaddress);
|
|
|
if (ret) {
|
|
|
- shost_printk(KERN_ERR, phba->shost,
|
|
|
- "be_fill_queue Failed for DEF PDU HDR\n");
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : be_fill_queue Failed for DEF PDU HDR\n");
|
|
|
return ret;
|
|
|
}
|
|
|
mem->dma = (unsigned long)mem_descr->mem_array[idx].
|
|
@@ -2809,13 +2951,15 @@ beiscsi_create_def_hdr(struct beiscsi_hba *phba,
|
|
|
def_pdu_ring_sz,
|
|
|
phba->params.defpdu_hdr_sz);
|
|
|
if (ret) {
|
|
|
- shost_printk(KERN_ERR, phba->shost,
|
|
|
- "be_cmd_create_default_pdu_queue Failed DEFHDR\n");
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : be_cmd_create_default_pdu_queue Failed DEFHDR\n");
|
|
|
return ret;
|
|
|
}
|
|
|
phwi_ctrlr->default_pdu_hdr.id = phwi_context->be_def_hdrq.id;
|
|
|
- SE_DEBUG(DBG_LVL_8, "iscsi def pdu id is %d\n",
|
|
|
- phwi_context->be_def_hdrq.id);
|
|
|
+ beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : iscsi def pdu id is %d\n",
|
|
|
+ phwi_context->be_def_hdrq.id);
|
|
|
+
|
|
|
hwi_post_async_buffers(phba, 1);
|
|
|
return 0;
|
|
|
}
|
|
@@ -2844,8 +2988,8 @@ beiscsi_create_def_data(struct beiscsi_hba *phba,
|
|
|
sizeof(struct phys_addr),
|
|
|
sizeof(struct phys_addr), dq_vaddress);
|
|
|
if (ret) {
|
|
|
- shost_printk(KERN_ERR, phba->shost,
|
|
|
- "be_fill_queue Failed for DEF PDU DATA\n");
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : be_fill_queue Failed for DEF PDU DATA\n");
|
|
|
return ret;
|
|
|
}
|
|
|
mem->dma = (unsigned long)mem_descr->mem_array[idx].
|
|
@@ -2854,16 +2998,20 @@ beiscsi_create_def_data(struct beiscsi_hba *phba,
|
|
|
def_pdu_ring_sz,
|
|
|
phba->params.defpdu_data_sz);
|
|
|
if (ret) {
|
|
|
- shost_printk(KERN_ERR, phba->shost,
|
|
|
- "be_cmd_create_default_pdu_queue Failed"
|
|
|
- " for DEF PDU DATA\n");
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d be_cmd_create_default_pdu_queue"
|
|
|
+ " Failed for DEF PDU DATA\n");
|
|
|
return ret;
|
|
|
}
|
|
|
phwi_ctrlr->default_pdu_data.id = phwi_context->be_def_dataq.id;
|
|
|
- SE_DEBUG(DBG_LVL_8, "iscsi def data id is %d\n",
|
|
|
- phwi_context->be_def_dataq.id);
|
|
|
+ beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : iscsi def data id is %d\n",
|
|
|
+ phwi_context->be_def_dataq.id);
|
|
|
+
|
|
|
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;
|
|
|
}
|
|
|
|
|
@@ -2889,13 +3037,14 @@ beiscsi_post_pages(struct beiscsi_hba *phba)
|
|
|
(pm_arr->size / PAGE_SIZE));
|
|
|
page_offset += pm_arr->size / PAGE_SIZE;
|
|
|
if (status != 0) {
|
|
|
- shost_printk(KERN_ERR, phba->shost,
|
|
|
- "post sgl failed.\n");
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : post sgl failed.\n");
|
|
|
return status;
|
|
|
}
|
|
|
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;
|
|
|
}
|
|
|
|
|
@@ -2945,8 +3094,8 @@ beiscsi_create_wrb_rings(struct beiscsi_hba *phba,
|
|
|
pwrb_arr = kmalloc(sizeof(*pwrb_arr) * phba->params.cxns_per_ctrl,
|
|
|
GFP_KERNEL);
|
|
|
if (!pwrb_arr) {
|
|
|
- shost_printk(KERN_ERR, phba->shost,
|
|
|
- "Memory alloc failed in create wrb ring.\n");
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : Memory alloc failed in create wrb ring.\n");
|
|
|
return -ENOMEM;
|
|
|
}
|
|
|
wrb_vaddr = mem_descr->mem_array[idx].virtual_address;
|
|
@@ -2990,8 +3139,8 @@ beiscsi_create_wrb_rings(struct beiscsi_hba *phba,
|
|
|
status = be_cmd_wrbq_create(&phba->ctrl, &sgl,
|
|
|
&phwi_context->be_wrbq[i]);
|
|
|
if (status != 0) {
|
|
|
- shost_printk(KERN_ERR, phba->shost,
|
|
|
- "wrbq create failed.");
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : wrbq create failed.");
|
|
|
kfree(pwrb_arr);
|
|
|
return status;
|
|
|
}
|
|
@@ -3127,7 +3276,6 @@ static int find_num_cpus(void)
|
|
|
if (num_cpus >= MAX_CPUS)
|
|
|
num_cpus = MAX_CPUS - 1;
|
|
|
|
|
|
- SE_DEBUG(DBG_LVL_8, "num_cpus = %d\n", num_cpus);
|
|
|
return num_cpus;
|
|
|
}
|
|
|
|
|
@@ -3150,7 +3298,8 @@ static int hwi_init_port(struct beiscsi_hba *phba)
|
|
|
|
|
|
status = beiscsi_create_eqs(phba, phwi_context);
|
|
|
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;
|
|
|
}
|
|
|
|
|
@@ -3160,51 +3309,55 @@ static int hwi_init_port(struct beiscsi_hba *phba)
|
|
|
|
|
|
status = mgmt_check_supported_fw(ctrl, phba);
|
|
|
if (status != 0) {
|
|
|
- shost_printk(KERN_ERR, phba->shost,
|
|
|
- "Unsupported fw version\n");
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : Unsupported fw version\n");
|
|
|
goto error;
|
|
|
}
|
|
|
|
|
|
status = beiscsi_create_cqs(phba, phwi_context);
|
|
|
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;
|
|
|
}
|
|
|
|
|
|
status = beiscsi_create_def_hdr(phba, phwi_context, phwi_ctrlr,
|
|
|
def_pdu_ring_sz);
|
|
|
if (status != 0) {
|
|
|
- shost_printk(KERN_ERR, phba->shost,
|
|
|
- "Default Header not created\n");
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : Default Header not created\n");
|
|
|
goto error;
|
|
|
}
|
|
|
|
|
|
status = beiscsi_create_def_data(phba, phwi_context,
|
|
|
phwi_ctrlr, def_pdu_ring_sz);
|
|
|
if (status != 0) {
|
|
|
- shost_printk(KERN_ERR, phba->shost,
|
|
|
- "Default Data not created\n");
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : Default Data not created\n");
|
|
|
goto error;
|
|
|
}
|
|
|
|
|
|
status = beiscsi_post_pages(phba);
|
|
|
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;
|
|
|
}
|
|
|
|
|
|
status = beiscsi_create_wrb_rings(phba, phwi_context, phwi_ctrlr);
|
|
|
if (status != 0) {
|
|
|
- shost_printk(KERN_ERR, phba->shost,
|
|
|
- "WRB Rings not created\n");
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : WRB Rings not created\n");
|
|
|
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;
|
|
|
|
|
|
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);
|
|
|
return status;
|
|
|
}
|
|
@@ -3217,12 +3370,13 @@ static int hwi_init_controller(struct beiscsi_hba *phba)
|
|
|
if (1 == phba->init_mem[HWI_MEM_ADDN_CONTEXT].num_elements) {
|
|
|
phwi_ctrlr->phwi_ctxt = (struct hwi_context_memory *)phba->
|
|
|
init_mem[HWI_MEM_ADDN_CONTEXT].mem_array[0].virtual_address;
|
|
|
- SE_DEBUG(DBG_LVL_8, " phwi_ctrlr->phwi_ctxt=%p\n",
|
|
|
- phwi_ctrlr->phwi_ctxt);
|
|
|
+ beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : phwi_ctrlr->phwi_ctxt=%p\n",
|
|
|
+ phwi_ctrlr->phwi_ctxt);
|
|
|
} else {
|
|
|
- shost_printk(KERN_ERR, phba->shost,
|
|
|
- "HWI_MEM_ADDN_CONTEXT is more than one element."
|
|
|
- "Failing to load\n");
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : HWI_MEM_ADDN_CONTEXT is more "
|
|
|
+ "than one element.Failing to load\n");
|
|
|
return -ENOMEM;
|
|
|
}
|
|
|
|
|
@@ -3232,8 +3386,9 @@ static int hwi_init_controller(struct beiscsi_hba *phba)
|
|
|
|
|
|
hwi_init_async_pdu_ctx(phba);
|
|
|
if (hwi_init_port(phba) != 0) {
|
|
|
- shost_printk(KERN_ERR, phba->shost,
|
|
|
- "hwi_init_controller failed\n");
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : hwi_init_controller failed\n");
|
|
|
+
|
|
|
return -ENOMEM;
|
|
|
}
|
|
|
return 0;
|
|
@@ -3268,15 +3423,18 @@ static int beiscsi_init_controller(struct beiscsi_hba *phba)
|
|
|
|
|
|
ret = beiscsi_get_memory(phba);
|
|
|
if (ret < 0) {
|
|
|
- shost_printk(KERN_ERR, phba->shost, "beiscsi_dev_probe -"
|
|
|
- "Failed in beiscsi_alloc_memory\n");
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : beiscsi_dev_probe -"
|
|
|
+ "Failed in beiscsi_alloc_memory\n");
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
ret = hwi_init_controller(phba);
|
|
|
if (ret)
|
|
|
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;
|
|
|
|
|
|
free_init:
|
|
@@ -3301,8 +3459,8 @@ static int beiscsi_init_sgl_handle(struct beiscsi_hba *phba)
|
|
|
phba->params.ios_per_ctrl,
|
|
|
GFP_KERNEL);
|
|
|
if (!phba->io_sgl_hndl_base) {
|
|
|
- shost_printk(KERN_ERR, phba->shost,
|
|
|
- "Mem Alloc Failed. Failing to load\n");
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : Mem Alloc Failed. Failing to load\n");
|
|
|
return -ENOMEM;
|
|
|
}
|
|
|
phba->eh_sgl_hndl_base = kzalloc(sizeof(struct sgl_handle *) *
|
|
@@ -3311,14 +3469,14 @@ static int beiscsi_init_sgl_handle(struct beiscsi_hba *phba)
|
|
|
GFP_KERNEL);
|
|
|
if (!phba->eh_sgl_hndl_base) {
|
|
|
kfree(phba->io_sgl_hndl_base);
|
|
|
- shost_printk(KERN_ERR, phba->shost,
|
|
|
- "Mem Alloc Failed. Failing to load\n");
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : Mem Alloc Failed. Failing to load\n");
|
|
|
return -ENOMEM;
|
|
|
}
|
|
|
} else {
|
|
|
- shost_printk(KERN_ERR, phba->shost,
|
|
|
- "HWI_MEM_SGLH is more than one element."
|
|
|
- "Failing to load\n");
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : HWI_MEM_SGLH is more than one element."
|
|
|
+ "Failing to load\n");
|
|
|
return -ENOMEM;
|
|
|
}
|
|
|
|
|
@@ -3344,15 +3502,18 @@ static int beiscsi_init_sgl_handle(struct beiscsi_hba *phba)
|
|
|
}
|
|
|
idx++;
|
|
|
}
|
|
|
- SE_DEBUG(DBG_LVL_8,
|
|
|
- "phba->io_sgl_hndl_avbl=%d"
|
|
|
- "phba->eh_sgl_hndl_avbl=%d\n",
|
|
|
- phba->io_sgl_hndl_avbl,
|
|
|
- phba->eh_sgl_hndl_avbl);
|
|
|
+ beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : phba->io_sgl_hndl_avbl=%d"
|
|
|
+ "phba->eh_sgl_hndl_avbl=%d\n",
|
|
|
+ phba->io_sgl_hndl_avbl,
|
|
|
+ phba->eh_sgl_hndl_avbl);
|
|
|
+
|
|
|
mem_descr_sg = phba->init_mem;
|
|
|
mem_descr_sg += HWI_MEM_SGE;
|
|
|
- SE_DEBUG(DBG_LVL_8, "\n mem_descr_sg->num_elements=%d\n",
|
|
|
- mem_descr_sg->num_elements);
|
|
|
+ beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_INIT,
|
|
|
+ "\n BM_%d : mem_descr_sg->num_elements=%d\n",
|
|
|
+ mem_descr_sg->num_elements);
|
|
|
+
|
|
|
arr_index = 0;
|
|
|
idx = 0;
|
|
|
while (idx < mem_descr_sg->num_elements) {
|
|
@@ -3390,17 +3551,17 @@ static int hba_setup_cid_tbls(struct beiscsi_hba *phba)
|
|
|
phba->cid_array = kzalloc(sizeof(void *) * phba->params.cxns_per_ctrl,
|
|
|
GFP_KERNEL);
|
|
|
if (!phba->cid_array) {
|
|
|
- shost_printk(KERN_ERR, phba->shost,
|
|
|
- "Failed to allocate memory in "
|
|
|
- "hba_setup_cid_tbls\n");
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : Failed to allocate memory in "
|
|
|
+ "hba_setup_cid_tbls\n");
|
|
|
return -ENOMEM;
|
|
|
}
|
|
|
phba->ep_array = kzalloc(sizeof(struct iscsi_endpoint *) *
|
|
|
phba->params.cxns_per_ctrl * 2, GFP_KERNEL);
|
|
|
if (!phba->ep_array) {
|
|
|
- shost_printk(KERN_ERR, phba->shost,
|
|
|
- "Failed to allocate memory in "
|
|
|
- "hba_setup_cid_tbls\n");
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : Failed to allocate memory in "
|
|
|
+ "hba_setup_cid_tbls\n");
|
|
|
kfree(phba->cid_array);
|
|
|
return -ENOMEM;
|
|
|
}
|
|
@@ -3433,18 +3594,22 @@ static void hwi_enable_intr(struct beiscsi_hba *phba)
|
|
|
enabled = reg & MEMBAR_CTRL_INT_CTRL_HOSTINTR_MASK;
|
|
|
if (!enabled) {
|
|
|
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);
|
|
|
}
|
|
|
|
|
|
if (!phba->msix_enabled) {
|
|
|
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);
|
|
|
} else {
|
|
|
for (i = 0; i <= phba->num_cpus; i++) {
|
|
|
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);
|
|
|
}
|
|
|
}
|
|
@@ -3462,64 +3627,60 @@ static void hwi_disable_intr(struct beiscsi_hba *phba)
|
|
|
reg &= ~MEMBAR_CTRL_INT_CTRL_HOSTINTR_MASK;
|
|
|
iowrite32(reg, addr);
|
|
|
} else
|
|
|
- shost_printk(KERN_WARNING, phba->shost,
|
|
|
- "In hwi_disable_intr, Already Disabled\n");
|
|
|
+ beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : In hwi_disable_intr, Already Disabled\n");
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * beiscsi_get_boot_info()- Get the boot session info
|
|
|
+ * @phba: The device priv structure instance
|
|
|
+ *
|
|
|
+ * Get the boot target info and store in driver priv structure
|
|
|
+ *
|
|
|
+ * return values
|
|
|
+ * Success: 0
|
|
|
+ * Failure: Non-Zero Value
|
|
|
+ **/
|
|
|
static int beiscsi_get_boot_info(struct beiscsi_hba *phba)
|
|
|
{
|
|
|
- struct be_cmd_get_boot_target_resp *boot_resp;
|
|
|
struct be_cmd_get_session_resp *session_resp;
|
|
|
struct be_mcc_wrb *wrb;
|
|
|
struct be_dma_mem nonemb_cmd;
|
|
|
unsigned int tag, wrb_num;
|
|
|
unsigned short status, extd_status;
|
|
|
+ unsigned int s_handle;
|
|
|
struct be_queue_info *mccq = &phba->ctrl.mcc_obj.q;
|
|
|
int ret = -ENOMEM;
|
|
|
|
|
|
- tag = mgmt_get_boot_target(phba);
|
|
|
- if (!tag) {
|
|
|
- SE_DEBUG(DBG_LVL_1, "beiscsi_get_boot_info Failed\n");
|
|
|
- return -EAGAIN;
|
|
|
- } else
|
|
|
- wait_event_interruptible(phba->ctrl.mcc_wait[tag],
|
|
|
- phba->ctrl.mcc_numtag[tag]);
|
|
|
-
|
|
|
- wrb_num = (phba->ctrl.mcc_numtag[tag] & 0x00FF0000) >> 16;
|
|
|
- extd_status = (phba->ctrl.mcc_numtag[tag] & 0x0000FF00) >> 8;
|
|
|
- status = phba->ctrl.mcc_numtag[tag] & 0x000000FF;
|
|
|
- if (status || extd_status) {
|
|
|
- SE_DEBUG(DBG_LVL_1, "beiscsi_get_boot_info Failed"
|
|
|
- " status = %d extd_status = %d\n",
|
|
|
- status, extd_status);
|
|
|
- free_mcc_tag(&phba->ctrl, tag);
|
|
|
- return -EBUSY;
|
|
|
- }
|
|
|
- wrb = queue_get_wrb(mccq, wrb_num);
|
|
|
- free_mcc_tag(&phba->ctrl, tag);
|
|
|
- boot_resp = embedded_payload(wrb);
|
|
|
-
|
|
|
- if (boot_resp->boot_session_handle < 0) {
|
|
|
- shost_printk(KERN_INFO, phba->shost, "No Boot Session.\n");
|
|
|
- return -ENXIO;
|
|
|
+ /* Get the session handle of the boot target */
|
|
|
+ ret = be_mgmt_get_boot_shandle(phba, &s_handle);
|
|
|
+ if (ret) {
|
|
|
+ beiscsi_log(phba, KERN_ERR,
|
|
|
+ BEISCSI_LOG_INIT | BEISCSI_LOG_CONFIG,
|
|
|
+ "BM_%d : No boot session\n");
|
|
|
+ return ret;
|
|
|
}
|
|
|
-
|
|
|
nonemb_cmd.va = pci_alloc_consistent(phba->ctrl.pdev,
|
|
|
sizeof(*session_resp),
|
|
|
&nonemb_cmd.dma);
|
|
|
if (nonemb_cmd.va == NULL) {
|
|
|
- SE_DEBUG(DBG_LVL_1,
|
|
|
- "Failed to allocate memory for"
|
|
|
- "beiscsi_get_session_info\n");
|
|
|
+ beiscsi_log(phba, KERN_ERR,
|
|
|
+ BEISCSI_LOG_INIT | BEISCSI_LOG_CONFIG,
|
|
|
+ "BM_%d : Failed to allocate memory for"
|
|
|
+ "beiscsi_get_session_info\n");
|
|
|
+
|
|
|
return -ENOMEM;
|
|
|
}
|
|
|
|
|
|
memset(nonemb_cmd.va, 0, sizeof(*session_resp));
|
|
|
- tag = mgmt_get_session_info(phba, boot_resp->boot_session_handle,
|
|
|
+ tag = mgmt_get_session_info(phba, s_handle,
|
|
|
&nonemb_cmd);
|
|
|
if (!tag) {
|
|
|
- SE_DEBUG(DBG_LVL_1, "beiscsi_get_session_info"
|
|
|
- " Failed\n");
|
|
|
+ beiscsi_log(phba, KERN_ERR,
|
|
|
+ BEISCSI_LOG_INIT | BEISCSI_LOG_CONFIG,
|
|
|
+ "BM_%d : beiscsi_get_session_info"
|
|
|
+ " Failed\n");
|
|
|
+
|
|
|
goto boot_freemem;
|
|
|
} else
|
|
|
wait_event_interruptible(phba->ctrl.mcc_wait[tag],
|
|
@@ -3529,9 +3690,12 @@ static int beiscsi_get_boot_info(struct beiscsi_hba *phba)
|
|
|
extd_status = (phba->ctrl.mcc_numtag[tag] & 0x0000FF00) >> 8;
|
|
|
status = phba->ctrl.mcc_numtag[tag] & 0x000000FF;
|
|
|
if (status || extd_status) {
|
|
|
- SE_DEBUG(DBG_LVL_1, "beiscsi_get_session_info Failed"
|
|
|
- " status = %d extd_status = %d\n",
|
|
|
- status, extd_status);
|
|
|
+ beiscsi_log(phba, KERN_ERR,
|
|
|
+ BEISCSI_LOG_INIT | BEISCSI_LOG_CONFIG,
|
|
|
+ "BM_%d : beiscsi_get_session_info Failed"
|
|
|
+ " status = %d extd_status = %d\n",
|
|
|
+ status, extd_status);
|
|
|
+
|
|
|
free_mcc_tag(&phba->ctrl, tag);
|
|
|
goto boot_freemem;
|
|
|
}
|
|
@@ -3611,22 +3775,22 @@ static int beiscsi_init_port(struct beiscsi_hba *phba)
|
|
|
|
|
|
ret = beiscsi_init_controller(phba);
|
|
|
if (ret < 0) {
|
|
|
- shost_printk(KERN_ERR, phba->shost,
|
|
|
- "beiscsi_dev_probe - Failed in"
|
|
|
- "beiscsi_init_controller\n");
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : beiscsi_dev_probe - Failed in"
|
|
|
+ "beiscsi_init_controller\n");
|
|
|
return ret;
|
|
|
}
|
|
|
ret = beiscsi_init_sgl_handle(phba);
|
|
|
if (ret < 0) {
|
|
|
- shost_printk(KERN_ERR, phba->shost,
|
|
|
- "beiscsi_dev_probe - Failed in"
|
|
|
- "beiscsi_init_sgl_handle\n");
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : beiscsi_dev_probe - Failed in"
|
|
|
+ "beiscsi_init_sgl_handle\n");
|
|
|
goto do_cleanup_ctrlr;
|
|
|
}
|
|
|
|
|
|
if (hba_setup_cid_tbls(phba)) {
|
|
|
- shost_printk(KERN_ERR, phba->shost,
|
|
|
- "Failed in hba_setup_cid_tbls\n");
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : Failed in hba_setup_cid_tbls\n");
|
|
|
kfree(phba->io_sgl_hndl_base);
|
|
|
kfree(phba->eh_sgl_hndl_base);
|
|
|
goto do_cleanup_ctrlr;
|
|
@@ -3678,8 +3842,8 @@ static void beiscsi_clean_port(struct beiscsi_hba *phba)
|
|
|
|
|
|
mgmt_status = mgmt_epfw_cleanup(phba, CMD_CONNECTION_CHUTE_0);
|
|
|
if (mgmt_status)
|
|
|
- shost_printk(KERN_WARNING, phba->shost,
|
|
|
- "mgmt_epfw_cleanup FAILED\n");
|
|
|
+ beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : mgmt_epfw_cleanup FAILED\n");
|
|
|
|
|
|
hwi_purge_eq(phba);
|
|
|
hwi_cleanup(phba);
|
|
@@ -3960,7 +4124,9 @@ free_hndls:
|
|
|
pci_pool_free(beiscsi_sess->bhs_pool, io_task->cmd_bhs,
|
|
|
io_task->bhs_pa.u.a64.address);
|
|
|
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;
|
|
|
}
|
|
|
|
|
@@ -3981,15 +4147,6 @@ static int beiscsi_iotask(struct iscsi_task *task, struct scatterlist *sg,
|
|
|
io_task->bhs_len = sizeof(struct be_cmd_bhs);
|
|
|
|
|
|
if (writedir) {
|
|
|
- memset(&io_task->cmd_bhs->iscsi_data_pdu, 0, 48);
|
|
|
- AMAP_SET_BITS(struct amap_pdu_data_out, itt,
|
|
|
- &io_task->cmd_bhs->iscsi_data_pdu,
|
|
|
- (unsigned int)io_task->cmd_bhs->iscsi_hdr.itt);
|
|
|
- AMAP_SET_BITS(struct amap_pdu_data_out, opcode,
|
|
|
- &io_task->cmd_bhs->iscsi_data_pdu,
|
|
|
- ISCSI_OPCODE_SCSI_DATA_OUT);
|
|
|
- AMAP_SET_BITS(struct amap_pdu_data_out, final_bit,
|
|
|
- &io_task->cmd_bhs->iscsi_data_pdu, 1);
|
|
|
AMAP_SET_BITS(struct amap_iscsi_wrb, type, pwrb,
|
|
|
INI_WR_CMD);
|
|
|
AMAP_SET_BITS(struct amap_iscsi_wrb, dsp, pwrb, 1);
|
|
@@ -3998,9 +4155,6 @@ static int beiscsi_iotask(struct iscsi_task *task, struct scatterlist *sg,
|
|
|
INI_RD_CMD);
|
|
|
AMAP_SET_BITS(struct amap_iscsi_wrb, dsp, pwrb, 0);
|
|
|
}
|
|
|
- memcpy(&io_task->cmd_bhs->iscsi_data_pdu.
|
|
|
- dw[offsetof(struct amap_pdu_data_out, lun) / 32],
|
|
|
- &io_task->cmd_bhs->iscsi_hdr.lun, sizeof(struct scsi_lun));
|
|
|
|
|
|
AMAP_SET_BITS(struct amap_iscsi_wrb, lun, pwrb,
|
|
|
cpu_to_be16(*(unsigned short *)
|
|
@@ -4090,8 +4244,10 @@ static int beiscsi_mtask(struct iscsi_task *task)
|
|
|
break;
|
|
|
|
|
|
default:
|
|
|
- SE_DEBUG(DBG_LVL_1, "opcode =%d Not supported\n",
|
|
|
- task->hdr->opcode & ISCSI_OPCODE_MASK);
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
|
|
|
+ "BM_%d : opcode =%d Not supported\n",
|
|
|
+ task->hdr->opcode & ISCSI_OPCODE_MASK);
|
|
|
+
|
|
|
return -EINVAL;
|
|
|
}
|
|
|
|
|
@@ -4123,17 +4279,22 @@ static int beiscsi_task_xmit(struct iscsi_task *task)
|
|
|
io_task->scsi_cmnd = sc;
|
|
|
num_sg = scsi_dma_map(sc);
|
|
|
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;
|
|
|
}
|
|
|
xferlen = scsi_bufflen(sc);
|
|
|
sg = scsi_sglist(sc);
|
|
|
- if (sc->sc_data_direction == DMA_TO_DEVICE) {
|
|
|
+ if (sc->sc_data_direction == DMA_TO_DEVICE)
|
|
|
writedir = 1;
|
|
|
- SE_DEBUG(DBG_LVL_4, "task->imm_count=0x%08x\n",
|
|
|
- task->imm_count);
|
|
|
- } else
|
|
|
+ else
|
|
|
writedir = 0;
|
|
|
+
|
|
|
return beiscsi_iotask(task, sg, num_sg, xferlen, writedir);
|
|
|
}
|
|
|
|
|
@@ -4162,14 +4323,17 @@ static int beiscsi_bsg_request(struct bsg_job *job)
|
|
|
job->request_payload.payload_len,
|
|
|
&nonemb_cmd.dma);
|
|
|
if (nonemb_cmd.va == NULL) {
|
|
|
- SE_DEBUG(DBG_LVL_1, "Failed to allocate memory for "
|
|
|
- "beiscsi_bsg_request\n");
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
|
|
|
+ "BM_%d : Failed to allocate memory for "
|
|
|
+ "beiscsi_bsg_request\n");
|
|
|
return -EIO;
|
|
|
}
|
|
|
tag = mgmt_vendor_specific_fw_cmd(&phba->ctrl, phba, job,
|
|
|
&nonemb_cmd);
|
|
|
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,
|
|
|
nonemb_cmd.va, nonemb_cmd.dma);
|
|
|
return -EAGAIN;
|
|
@@ -4191,22 +4355,31 @@ static int beiscsi_bsg_request(struct bsg_job *job)
|
|
|
pci_free_consistent(phba->ctrl.pdev, nonemb_cmd.size,
|
|
|
nonemb_cmd.va, nonemb_cmd.dma);
|
|
|
if (status || extd_status) {
|
|
|
- SE_DEBUG(DBG_LVL_1, "be_cmd_get_mac_addr Failed"
|
|
|
- " status = %d extd_status = %d\n",
|
|
|
- status, extd_status);
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
|
|
|
+ "BM_%d : be_cmd_get_mac_addr Failed"
|
|
|
+ " status = %d extd_status = %d\n",
|
|
|
+ status, extd_status);
|
|
|
+
|
|
|
return -EIO;
|
|
|
}
|
|
|
break;
|
|
|
|
|
|
default:
|
|
|
- SE_DEBUG(DBG_LVL_1, "Unsupported bsg command: 0x%x\n",
|
|
|
- bsg_req->msgcode);
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG,
|
|
|
+ "BM_%d : Unsupported bsg command: 0x%x\n",
|
|
|
+ bsg_req->msgcode);
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
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)
|
|
|
{
|
|
|
struct hwi_controller *phwi_ctrlr;
|
|
@@ -4316,18 +4489,21 @@ static int __devinit beiscsi_dev_probe(struct pci_dev *pcidev,
|
|
|
|
|
|
ret = beiscsi_enable_pci(pcidev);
|
|
|
if (ret < 0) {
|
|
|
- dev_err(&pcidev->dev, "beiscsi_dev_probe-"
|
|
|
- " Failed to enable pci device\n");
|
|
|
+ dev_err(&pcidev->dev,
|
|
|
+ "beiscsi_dev_probe - Failed to enable pci device\n");
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
phba = beiscsi_hba_alloc(pcidev);
|
|
|
if (!phba) {
|
|
|
- dev_err(&pcidev->dev, "beiscsi_dev_probe-"
|
|
|
- " Failed in beiscsi_hba_alloc\n");
|
|
|
+ dev_err(&pcidev->dev,
|
|
|
+ "beiscsi_dev_probe - Failed in beiscsi_hba_alloc\n");
|
|
|
goto disable_pci;
|
|
|
}
|
|
|
|
|
|
+ /* Initialize Driver configuration Paramters */
|
|
|
+ beiscsi_hba_attrs_init(phba);
|
|
|
+
|
|
|
switch (pcidev->device) {
|
|
|
case BE_DEVICE_ID1:
|
|
|
case OC_DEVICE_ID1:
|
|
@@ -4347,7 +4523,9 @@ static int __devinit beiscsi_dev_probe(struct pci_dev *pcidev,
|
|
|
else
|
|
|
num_cpus = 1;
|
|
|
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) {
|
|
|
beiscsi_msix_enable(phba);
|
|
@@ -4356,8 +4534,9 @@ static int __devinit beiscsi_dev_probe(struct pci_dev *pcidev,
|
|
|
}
|
|
|
ret = be_ctrl_init(phba, pcidev);
|
|
|
if (ret) {
|
|
|
- shost_printk(KERN_ERR, phba->shost, "beiscsi_dev_probe-"
|
|
|
- "Failed in be_ctrl_init\n");
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : beiscsi_dev_probe-"
|
|
|
+ "Failed in be_ctrl_init\n");
|
|
|
goto hba_free;
|
|
|
}
|
|
|
|
|
@@ -4366,19 +4545,19 @@ static int __devinit beiscsi_dev_probe(struct pci_dev *pcidev,
|
|
|
value = readl((void *)real_offset);
|
|
|
if (value & 0x00010000) {
|
|
|
gcrashmode++;
|
|
|
- shost_printk(KERN_ERR, phba->shost,
|
|
|
- "Loading Driver in crashdump mode\n");
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : Loading Driver in crashdump mode\n");
|
|
|
ret = beiscsi_cmd_reset_function(phba);
|
|
|
if (ret) {
|
|
|
- shost_printk(KERN_ERR, phba->shost,
|
|
|
- "Reset Failed. Aborting Crashdump\n");
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : Reset Failed. Aborting Crashdump\n");
|
|
|
goto hba_free;
|
|
|
}
|
|
|
ret = be_chk_reset_complete(phba);
|
|
|
if (ret) {
|
|
|
- shost_printk(KERN_ERR, phba->shost,
|
|
|
- "Failed to get out of reset."
|
|
|
- "Aborting Crashdump\n");
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : Failed to get out of reset."
|
|
|
+ "Aborting Crashdump\n");
|
|
|
goto hba_free;
|
|
|
}
|
|
|
} else {
|
|
@@ -4393,8 +4572,8 @@ static int __devinit beiscsi_dev_probe(struct pci_dev *pcidev,
|
|
|
spin_lock_init(&phba->isr_lock);
|
|
|
ret = mgmt_get_fw_config(&phba->ctrl, phba);
|
|
|
if (ret != 0) {
|
|
|
- shost_printk(KERN_ERR, phba->shost,
|
|
|
- "Error getting fw config\n");
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : Error getting fw config\n");
|
|
|
goto free_port;
|
|
|
}
|
|
|
phba->shost->max_id = phba->fw_config.iscsi_cid_count;
|
|
@@ -4402,8 +4581,9 @@ static int __devinit beiscsi_dev_probe(struct pci_dev *pcidev,
|
|
|
phba->shost->can_queue = phba->params.ios_per_ctrl;
|
|
|
ret = beiscsi_init_port(phba);
|
|
|
if (ret < 0) {
|
|
|
- shost_printk(KERN_ERR, phba->shost, "beiscsi_dev_probe-"
|
|
|
- "Failed in beiscsi_init_port\n");
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : beiscsi_dev_probe-"
|
|
|
+ "Failed in beiscsi_init_port\n");
|
|
|
goto free_port;
|
|
|
}
|
|
|
|
|
@@ -4420,8 +4600,9 @@ static int __devinit beiscsi_dev_probe(struct pci_dev *pcidev,
|
|
|
phba->shost->host_no);
|
|
|
phba->wq = alloc_workqueue(phba->wq_name, WQ_MEM_RECLAIM, 1);
|
|
|
if (!phba->wq) {
|
|
|
- shost_printk(KERN_ERR, phba->shost, "beiscsi_dev_probe-"
|
|
|
- "Failed to allocate work queue\n");
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : beiscsi_dev_probe-"
|
|
|
+ "Failed to allocate work queue\n");
|
|
|
goto free_twq;
|
|
|
}
|
|
|
|
|
@@ -4439,8 +4620,9 @@ static int __devinit beiscsi_dev_probe(struct pci_dev *pcidev,
|
|
|
}
|
|
|
ret = beiscsi_init_irqs(phba);
|
|
|
if (ret < 0) {
|
|
|
- shost_printk(KERN_ERR, phba->shost, "beiscsi_dev_probe-"
|
|
|
- "Failed to beiscsi_init_irqs\n");
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : beiscsi_dev_probe-"
|
|
|
+ "Failed to beiscsi_init_irqs\n");
|
|
|
goto free_blkenbld;
|
|
|
}
|
|
|
hwi_enable_intr(phba);
|
|
@@ -4450,11 +4632,13 @@ static int __devinit beiscsi_dev_probe(struct pci_dev *pcidev,
|
|
|
* log error but continue, because we may not be using
|
|
|
* iscsi boot.
|
|
|
*/
|
|
|
- shost_printk(KERN_ERR, phba->shost, "Could not set up "
|
|
|
- "iSCSI boot info.\n");
|
|
|
+ beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
|
|
|
+ "BM_%d : Could not set up "
|
|
|
+ "iSCSI boot info.\n");
|
|
|
|
|
|
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;
|
|
|
|
|
|
free_blkenbld:
|
|
@@ -4542,19 +4726,17 @@ static int __init beiscsi_module_init(void)
|
|
|
beiscsi_scsi_transport =
|
|
|
iscsi_register_transport(&beiscsi_iscsi_transport);
|
|
|
if (!beiscsi_scsi_transport) {
|
|
|
- SE_DEBUG(DBG_LVL_1,
|
|
|
- "beiscsi_module_init - Unable to register beiscsi"
|
|
|
- "transport.\n");
|
|
|
+ printk(KERN_ERR
|
|
|
+ "beiscsi_module_init - Unable to register beiscsi transport.\n");
|
|
|
return -ENOMEM;
|
|
|
}
|
|
|
- SE_DEBUG(DBG_LVL_8, "In beiscsi_module_init, tt=%p\n",
|
|
|
- &beiscsi_iscsi_transport);
|
|
|
+ printk(KERN_INFO "In beiscsi_module_init, tt=%p\n",
|
|
|
+ &beiscsi_iscsi_transport);
|
|
|
|
|
|
ret = pci_register_driver(&beiscsi_pci_driver);
|
|
|
if (ret) {
|
|
|
- SE_DEBUG(DBG_LVL_1,
|
|
|
- "beiscsi_module_init - Unable to register"
|
|
|
- "beiscsi pci driver.\n");
|
|
|
+ printk(KERN_ERR
|
|
|
+ "beiscsi_module_init - Unable to register beiscsi pci driver.\n");
|
|
|
goto unregister_iscsi_transport;
|
|
|
}
|
|
|
return 0;
|