mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-28 20:02:17 +00:00
lpfc: fix low priority issues from fortify source code scan
Fixed Low priority issues from lpfc given by fortify source code scan. Signed-off-by: James Smart <james.smart@emulex.com> Signed-off-by: Dick Kennedy <dick.kennedy@emulex.com> Signed-off-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
parent
a2fc4aefa0
commit
eb01656688
8 changed files with 25 additions and 49 deletions
|
@ -3385,7 +3385,7 @@ lpfc_stat_data_ctrl_store(struct device *dev, struct device_attribute *attr,
|
||||||
if (strlen(buf) > (LPFC_MAX_DATA_CTRL_LEN - 1))
|
if (strlen(buf) > (LPFC_MAX_DATA_CTRL_LEN - 1))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
strcpy(bucket_data, buf);
|
strncpy(bucket_data, buf, LPFC_MAX_DATA_CTRL_LEN);
|
||||||
str_ptr = &bucket_data[0];
|
str_ptr = &bucket_data[0];
|
||||||
/* Ignore this token - this is command token */
|
/* Ignore this token - this is command token */
|
||||||
token = strsep(&str_ptr, "\t ");
|
token = strsep(&str_ptr, "\t ");
|
||||||
|
|
|
@ -656,7 +656,6 @@ lpfc_bsg_rport_els(struct fc_bsg_job *job)
|
||||||
struct lpfc_nodelist *ndlp = rdata->pnode;
|
struct lpfc_nodelist *ndlp = rdata->pnode;
|
||||||
uint32_t elscmd;
|
uint32_t elscmd;
|
||||||
uint32_t cmdsize;
|
uint32_t cmdsize;
|
||||||
uint32_t rspsize;
|
|
||||||
struct lpfc_iocbq *cmdiocbq;
|
struct lpfc_iocbq *cmdiocbq;
|
||||||
uint16_t rpi = 0;
|
uint16_t rpi = 0;
|
||||||
struct bsg_job_data *dd_data;
|
struct bsg_job_data *dd_data;
|
||||||
|
@ -687,7 +686,6 @@ lpfc_bsg_rport_els(struct fc_bsg_job *job)
|
||||||
|
|
||||||
elscmd = job->request->rqst_data.r_els.els_code;
|
elscmd = job->request->rqst_data.r_els.els_code;
|
||||||
cmdsize = job->request_payload.payload_len;
|
cmdsize = job->request_payload.payload_len;
|
||||||
rspsize = job->reply_payload.payload_len;
|
|
||||||
|
|
||||||
if (!lpfc_nlp_get(ndlp)) {
|
if (!lpfc_nlp_get(ndlp)) {
|
||||||
rc = -ENODEV;
|
rc = -ENODEV;
|
||||||
|
@ -2251,7 +2249,6 @@ lpfc_sli4_bsg_diag_mode_end(struct fc_bsg_job *job)
|
||||||
i = 0;
|
i = 0;
|
||||||
while (phba->link_state != LPFC_LINK_DOWN) {
|
while (phba->link_state != LPFC_LINK_DOWN) {
|
||||||
if (i++ > timeout) {
|
if (i++ > timeout) {
|
||||||
rc = -ETIMEDOUT;
|
|
||||||
lpfc_printf_log(phba, KERN_INFO, LOG_LIBDFC,
|
lpfc_printf_log(phba, KERN_INFO, LOG_LIBDFC,
|
||||||
"3140 Timeout waiting for link to "
|
"3140 Timeout waiting for link to "
|
||||||
"diagnostic mode_end, timeout:%d ms\n",
|
"diagnostic mode_end, timeout:%d ms\n",
|
||||||
|
@ -2291,7 +2288,6 @@ lpfc_sli4_bsg_link_diag_test(struct fc_bsg_job *job)
|
||||||
LPFC_MBOXQ_t *pmboxq;
|
LPFC_MBOXQ_t *pmboxq;
|
||||||
struct sli4_link_diag *link_diag_test_cmd;
|
struct sli4_link_diag *link_diag_test_cmd;
|
||||||
uint32_t req_len, alloc_len;
|
uint32_t req_len, alloc_len;
|
||||||
uint32_t timeout;
|
|
||||||
struct lpfc_mbx_run_link_diag_test *run_link_diag_test;
|
struct lpfc_mbx_run_link_diag_test *run_link_diag_test;
|
||||||
union lpfc_sli4_cfg_shdr *shdr;
|
union lpfc_sli4_cfg_shdr *shdr;
|
||||||
uint32_t shdr_status, shdr_add_status;
|
uint32_t shdr_status, shdr_add_status;
|
||||||
|
@ -2342,7 +2338,6 @@ lpfc_sli4_bsg_link_diag_test(struct fc_bsg_job *job)
|
||||||
|
|
||||||
link_diag_test_cmd = (struct sli4_link_diag *)
|
link_diag_test_cmd = (struct sli4_link_diag *)
|
||||||
job->request->rqst_data.h_vendor.vendor_cmd;
|
job->request->rqst_data.h_vendor.vendor_cmd;
|
||||||
timeout = link_diag_test_cmd->timeout * 100;
|
|
||||||
|
|
||||||
rc = lpfc_sli4_bsg_set_link_diag_state(phba, 1);
|
rc = lpfc_sli4_bsg_set_link_diag_state(phba, 1);
|
||||||
|
|
||||||
|
|
|
@ -1439,7 +1439,7 @@ lpfc_fdmi_cmd(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, int cmdcode)
|
||||||
/* #2 HBA attribute entry */
|
/* #2 HBA attribute entry */
|
||||||
ae = (ATTRIBUTE_ENTRY *) ((uint8_t *) rh + size);
|
ae = (ATTRIBUTE_ENTRY *) ((uint8_t *) rh + size);
|
||||||
ae->ad.bits.AttrType = be16_to_cpu(MANUFACTURER);
|
ae->ad.bits.AttrType = be16_to_cpu(MANUFACTURER);
|
||||||
strcpy(ae->un.Manufacturer, "Emulex Corporation");
|
strncpy(ae->un.Manufacturer, "Emulex Corporation", 64);
|
||||||
len = strlen(ae->un.Manufacturer);
|
len = strlen(ae->un.Manufacturer);
|
||||||
len += (len & 3) ? (4 - (len & 3)) : 4;
|
len += (len & 3) ? (4 - (len & 3)) : 4;
|
||||||
ae->ad.bits.AttrLen = be16_to_cpu(FOURBYTES + len);
|
ae->ad.bits.AttrLen = be16_to_cpu(FOURBYTES + len);
|
||||||
|
@ -1449,7 +1449,7 @@ lpfc_fdmi_cmd(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, int cmdcode)
|
||||||
/* #3 HBA attribute entry */
|
/* #3 HBA attribute entry */
|
||||||
ae = (ATTRIBUTE_ENTRY *) ((uint8_t *) rh + size);
|
ae = (ATTRIBUTE_ENTRY *) ((uint8_t *) rh + size);
|
||||||
ae->ad.bits.AttrType = be16_to_cpu(SERIAL_NUMBER);
|
ae->ad.bits.AttrType = be16_to_cpu(SERIAL_NUMBER);
|
||||||
strcpy(ae->un.SerialNumber, phba->SerialNumber);
|
strncpy(ae->un.SerialNumber, phba->SerialNumber, 64);
|
||||||
len = strlen(ae->un.SerialNumber);
|
len = strlen(ae->un.SerialNumber);
|
||||||
len += (len & 3) ? (4 - (len & 3)) : 4;
|
len += (len & 3) ? (4 - (len & 3)) : 4;
|
||||||
ae->ad.bits.AttrLen = be16_to_cpu(FOURBYTES + len);
|
ae->ad.bits.AttrLen = be16_to_cpu(FOURBYTES + len);
|
||||||
|
@ -1459,7 +1459,7 @@ lpfc_fdmi_cmd(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, int cmdcode)
|
||||||
/* #4 HBA attribute entry */
|
/* #4 HBA attribute entry */
|
||||||
ae = (ATTRIBUTE_ENTRY *) ((uint8_t *) rh + size);
|
ae = (ATTRIBUTE_ENTRY *) ((uint8_t *) rh + size);
|
||||||
ae->ad.bits.AttrType = be16_to_cpu(MODEL);
|
ae->ad.bits.AttrType = be16_to_cpu(MODEL);
|
||||||
strcpy(ae->un.Model, phba->ModelName);
|
strncpy(ae->un.Model, phba->ModelName, 256);
|
||||||
len = strlen(ae->un.Model);
|
len = strlen(ae->un.Model);
|
||||||
len += (len & 3) ? (4 - (len & 3)) : 4;
|
len += (len & 3) ? (4 - (len & 3)) : 4;
|
||||||
ae->ad.bits.AttrLen = be16_to_cpu(FOURBYTES + len);
|
ae->ad.bits.AttrLen = be16_to_cpu(FOURBYTES + len);
|
||||||
|
@ -1469,7 +1469,7 @@ lpfc_fdmi_cmd(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, int cmdcode)
|
||||||
/* #5 HBA attribute entry */
|
/* #5 HBA attribute entry */
|
||||||
ae = (ATTRIBUTE_ENTRY *) ((uint8_t *) rh + size);
|
ae = (ATTRIBUTE_ENTRY *) ((uint8_t *) rh + size);
|
||||||
ae->ad.bits.AttrType = be16_to_cpu(MODEL_DESCRIPTION);
|
ae->ad.bits.AttrType = be16_to_cpu(MODEL_DESCRIPTION);
|
||||||
strcpy(ae->un.ModelDescription, phba->ModelDesc);
|
strncpy(ae->un.ModelDescription, phba->ModelDesc, 256);
|
||||||
len = strlen(ae->un.ModelDescription);
|
len = strlen(ae->un.ModelDescription);
|
||||||
len += (len & 3) ? (4 - (len & 3)) : 4;
|
len += (len & 3) ? (4 - (len & 3)) : 4;
|
||||||
ae->ad.bits.AttrLen = be16_to_cpu(FOURBYTES + len);
|
ae->ad.bits.AttrLen = be16_to_cpu(FOURBYTES + len);
|
||||||
|
@ -1500,7 +1500,8 @@ lpfc_fdmi_cmd(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, int cmdcode)
|
||||||
/* #7 HBA attribute entry */
|
/* #7 HBA attribute entry */
|
||||||
ae = (ATTRIBUTE_ENTRY *) ((uint8_t *) rh + size);
|
ae = (ATTRIBUTE_ENTRY *) ((uint8_t *) rh + size);
|
||||||
ae->ad.bits.AttrType = be16_to_cpu(DRIVER_VERSION);
|
ae->ad.bits.AttrType = be16_to_cpu(DRIVER_VERSION);
|
||||||
strcpy(ae->un.DriverVersion, lpfc_release_version);
|
strncpy(ae->un.DriverVersion,
|
||||||
|
lpfc_release_version, 256);
|
||||||
len = strlen(ae->un.DriverVersion);
|
len = strlen(ae->un.DriverVersion);
|
||||||
len += (len & 3) ? (4 - (len & 3)) : 4;
|
len += (len & 3) ? (4 - (len & 3)) : 4;
|
||||||
ae->ad.bits.AttrLen = be16_to_cpu(FOURBYTES + len);
|
ae->ad.bits.AttrLen = be16_to_cpu(FOURBYTES + len);
|
||||||
|
@ -1510,7 +1511,8 @@ lpfc_fdmi_cmd(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, int cmdcode)
|
||||||
/* #8 HBA attribute entry */
|
/* #8 HBA attribute entry */
|
||||||
ae = (ATTRIBUTE_ENTRY *) ((uint8_t *) rh + size);
|
ae = (ATTRIBUTE_ENTRY *) ((uint8_t *) rh + size);
|
||||||
ae->ad.bits.AttrType = be16_to_cpu(OPTION_ROM_VERSION);
|
ae->ad.bits.AttrType = be16_to_cpu(OPTION_ROM_VERSION);
|
||||||
strcpy(ae->un.OptionROMVersion, phba->OptionROMVersion);
|
strncpy(ae->un.OptionROMVersion,
|
||||||
|
phba->OptionROMVersion, 256);
|
||||||
len = strlen(ae->un.OptionROMVersion);
|
len = strlen(ae->un.OptionROMVersion);
|
||||||
len += (len & 3) ? (4 - (len & 3)) : 4;
|
len += (len & 3) ? (4 - (len & 3)) : 4;
|
||||||
ae->ad.bits.AttrLen = be16_to_cpu(FOURBYTES + len);
|
ae->ad.bits.AttrLen = be16_to_cpu(FOURBYTES + len);
|
||||||
|
|
|
@ -269,7 +269,7 @@ static int
|
||||||
lpfc_debugfs_hbqinfo_data(struct lpfc_hba *phba, char *buf, int size)
|
lpfc_debugfs_hbqinfo_data(struct lpfc_hba *phba, char *buf, int size)
|
||||||
{
|
{
|
||||||
int len = 0;
|
int len = 0;
|
||||||
int cnt, i, j, found, posted, low;
|
int i, j, found, posted, low;
|
||||||
uint32_t phys, raw_index, getidx;
|
uint32_t phys, raw_index, getidx;
|
||||||
struct lpfc_hbq_init *hip;
|
struct lpfc_hbq_init *hip;
|
||||||
struct hbq_s *hbqs;
|
struct hbq_s *hbqs;
|
||||||
|
@ -279,7 +279,7 @@ lpfc_debugfs_hbqinfo_data(struct lpfc_hba *phba, char *buf, int size)
|
||||||
|
|
||||||
if (phba->sli_rev != 3)
|
if (phba->sli_rev != 3)
|
||||||
return 0;
|
return 0;
|
||||||
cnt = LPFC_HBQINFO_SIZE;
|
|
||||||
spin_lock_irq(&phba->hbalock);
|
spin_lock_irq(&phba->hbalock);
|
||||||
|
|
||||||
/* toggle between multiple hbqs, if any */
|
/* toggle between multiple hbqs, if any */
|
||||||
|
|
|
@ -1829,7 +1829,7 @@ lpfc_cmpl_els_plogi(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb,
|
||||||
IOCB_t *irsp;
|
IOCB_t *irsp;
|
||||||
struct lpfc_nodelist *ndlp;
|
struct lpfc_nodelist *ndlp;
|
||||||
struct lpfc_dmabuf *prsp;
|
struct lpfc_dmabuf *prsp;
|
||||||
int disc, rc, did, type;
|
int disc, rc;
|
||||||
|
|
||||||
/* we pass cmdiocb to state machine which needs rspiocb as well */
|
/* we pass cmdiocb to state machine which needs rspiocb as well */
|
||||||
cmdiocb->context_un.rsp_iocb = rspiocb;
|
cmdiocb->context_un.rsp_iocb = rspiocb;
|
||||||
|
@ -1874,10 +1874,6 @@ lpfc_cmpl_els_plogi(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb,
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ndlp could be freed in DSM, save these values now */
|
|
||||||
type = ndlp->nlp_type;
|
|
||||||
did = ndlp->nlp_DID;
|
|
||||||
|
|
||||||
if (irsp->ulpStatus) {
|
if (irsp->ulpStatus) {
|
||||||
/* Check for retry */
|
/* Check for retry */
|
||||||
if (lpfc_els_retry(phba, cmdiocb, rspiocb)) {
|
if (lpfc_els_retry(phba, cmdiocb, rspiocb)) {
|
||||||
|
@ -2270,8 +2266,6 @@ lpfc_adisc_done(struct lpfc_vport *vport)
|
||||||
void
|
void
|
||||||
lpfc_more_adisc(struct lpfc_vport *vport)
|
lpfc_more_adisc(struct lpfc_vport *vport)
|
||||||
{
|
{
|
||||||
int sentadisc;
|
|
||||||
|
|
||||||
if (vport->num_disc_nodes)
|
if (vport->num_disc_nodes)
|
||||||
vport->num_disc_nodes--;
|
vport->num_disc_nodes--;
|
||||||
/* Continue discovery with <num_disc_nodes> ADISCs to go */
|
/* Continue discovery with <num_disc_nodes> ADISCs to go */
|
||||||
|
@ -2284,7 +2278,7 @@ lpfc_more_adisc(struct lpfc_vport *vport)
|
||||||
if (vport->fc_flag & FC_NLP_MORE) {
|
if (vport->fc_flag & FC_NLP_MORE) {
|
||||||
lpfc_set_disctmo(vport);
|
lpfc_set_disctmo(vport);
|
||||||
/* go thru NPR nodes and issue any remaining ELS ADISCs */
|
/* go thru NPR nodes and issue any remaining ELS ADISCs */
|
||||||
sentadisc = lpfc_els_disc_adisc(vport);
|
lpfc_els_disc_adisc(vport);
|
||||||
}
|
}
|
||||||
if (!vport->num_disc_nodes)
|
if (!vport->num_disc_nodes)
|
||||||
lpfc_adisc_done(vport);
|
lpfc_adisc_done(vport);
|
||||||
|
@ -3028,10 +3022,9 @@ lpfc_els_retry_delay_handler(struct lpfc_nodelist *ndlp)
|
||||||
{
|
{
|
||||||
struct lpfc_vport *vport = ndlp->vport;
|
struct lpfc_vport *vport = ndlp->vport;
|
||||||
struct Scsi_Host *shost = lpfc_shost_from_vport(vport);
|
struct Scsi_Host *shost = lpfc_shost_from_vport(vport);
|
||||||
uint32_t cmd, did, retry;
|
uint32_t cmd, retry;
|
||||||
|
|
||||||
spin_lock_irq(shost->host_lock);
|
spin_lock_irq(shost->host_lock);
|
||||||
did = ndlp->nlp_DID;
|
|
||||||
cmd = ndlp->nlp_last_elscmd;
|
cmd = ndlp->nlp_last_elscmd;
|
||||||
ndlp->nlp_last_elscmd = 0;
|
ndlp->nlp_last_elscmd = 0;
|
||||||
|
|
||||||
|
@ -5289,10 +5282,9 @@ lpfc_els_rcv_rnid(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb,
|
||||||
IOCB_t *icmd;
|
IOCB_t *icmd;
|
||||||
RNID *rn;
|
RNID *rn;
|
||||||
struct ls_rjt stat;
|
struct ls_rjt stat;
|
||||||
uint32_t cmd, did;
|
uint32_t cmd;
|
||||||
|
|
||||||
icmd = &cmdiocb->iocb;
|
icmd = &cmdiocb->iocb;
|
||||||
did = icmd->un.elsreq64.remoteID;
|
|
||||||
pcmd = (struct lpfc_dmabuf *) cmdiocb->context2;
|
pcmd = (struct lpfc_dmabuf *) cmdiocb->context2;
|
||||||
lp = (uint32_t *) pcmd->virt;
|
lp = (uint32_t *) pcmd->virt;
|
||||||
|
|
||||||
|
|
|
@ -5031,7 +5031,6 @@ lpfc_disc_start(struct lpfc_vport *vport)
|
||||||
struct lpfc_hba *phba = vport->phba;
|
struct lpfc_hba *phba = vport->phba;
|
||||||
uint32_t num_sent;
|
uint32_t num_sent;
|
||||||
uint32_t clear_la_pending;
|
uint32_t clear_la_pending;
|
||||||
int did_changed;
|
|
||||||
|
|
||||||
if (!lpfc_is_link_up(phba)) {
|
if (!lpfc_is_link_up(phba)) {
|
||||||
lpfc_printf_vlog(vport, KERN_INFO, LOG_SLI,
|
lpfc_printf_vlog(vport, KERN_INFO, LOG_SLI,
|
||||||
|
@ -5050,11 +5049,6 @@ lpfc_disc_start(struct lpfc_vport *vport)
|
||||||
|
|
||||||
lpfc_set_disctmo(vport);
|
lpfc_set_disctmo(vport);
|
||||||
|
|
||||||
if (vport->fc_prevDID == vport->fc_myDID)
|
|
||||||
did_changed = 0;
|
|
||||||
else
|
|
||||||
did_changed = 1;
|
|
||||||
|
|
||||||
vport->fc_prevDID = vport->fc_myDID;
|
vport->fc_prevDID = vport->fc_myDID;
|
||||||
vport->num_disc_nodes = 0;
|
vport->num_disc_nodes = 0;
|
||||||
|
|
||||||
|
@ -6343,7 +6337,7 @@ lpfc_parse_fcoe_conf(struct lpfc_hba *phba,
|
||||||
uint8_t *buff,
|
uint8_t *buff,
|
||||||
uint32_t size)
|
uint32_t size)
|
||||||
{
|
{
|
||||||
uint32_t offset = 0, rec_length;
|
uint32_t offset = 0;
|
||||||
uint8_t *rec_ptr;
|
uint8_t *rec_ptr;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -6370,8 +6364,6 @@ lpfc_parse_fcoe_conf(struct lpfc_hba *phba,
|
||||||
}
|
}
|
||||||
offset += 4;
|
offset += 4;
|
||||||
|
|
||||||
rec_length = buff[offset + 1];
|
|
||||||
|
|
||||||
/* Read FCoE param record */
|
/* Read FCoE param record */
|
||||||
rec_ptr = lpfc_get_rec_conf23(&buff[offset],
|
rec_ptr = lpfc_get_rec_conf23(&buff[offset],
|
||||||
size - offset, FCOE_PARAM_TYPE);
|
size - offset, FCOE_PARAM_TYPE);
|
||||||
|
|
|
@ -6719,7 +6719,6 @@ lpfc_sli4_read_config(struct lpfc_hba *phba)
|
||||||
struct lpfc_mbx_get_func_cfg *get_func_cfg;
|
struct lpfc_mbx_get_func_cfg *get_func_cfg;
|
||||||
struct lpfc_rsrc_desc_fcfcoe *desc;
|
struct lpfc_rsrc_desc_fcfcoe *desc;
|
||||||
char *pdesc_0;
|
char *pdesc_0;
|
||||||
uint32_t desc_count;
|
|
||||||
int length, i, rc = 0, rc2;
|
int length, i, rc = 0, rc2;
|
||||||
|
|
||||||
pmb = (LPFC_MBOXQ_t *) mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL);
|
pmb = (LPFC_MBOXQ_t *) mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL);
|
||||||
|
@ -6850,7 +6849,6 @@ lpfc_sli4_read_config(struct lpfc_hba *phba)
|
||||||
|
|
||||||
/* search for fc_fcoe resrouce descriptor */
|
/* search for fc_fcoe resrouce descriptor */
|
||||||
get_func_cfg = &pmb->u.mqe.un.get_func_cfg;
|
get_func_cfg = &pmb->u.mqe.un.get_func_cfg;
|
||||||
desc_count = get_func_cfg->func_cfg.rsrc_desc_count;
|
|
||||||
|
|
||||||
pdesc_0 = (char *)&get_func_cfg->func_cfg.desc[0];
|
pdesc_0 = (char *)&get_func_cfg->func_cfg.desc[0];
|
||||||
desc = (struct lpfc_rsrc_desc_fcfcoe *)pdesc_0;
|
desc = (struct lpfc_rsrc_desc_fcfcoe *)pdesc_0;
|
||||||
|
|
|
@ -187,7 +187,6 @@ lpfc_sli4_mq_put(struct lpfc_queue *q, struct lpfc_mqe *mqe)
|
||||||
{
|
{
|
||||||
struct lpfc_mqe *temp_mqe;
|
struct lpfc_mqe *temp_mqe;
|
||||||
struct lpfc_register doorbell;
|
struct lpfc_register doorbell;
|
||||||
uint32_t host_index;
|
|
||||||
|
|
||||||
/* sanity check on queue memory */
|
/* sanity check on queue memory */
|
||||||
if (unlikely(!q))
|
if (unlikely(!q))
|
||||||
|
@ -202,7 +201,6 @@ lpfc_sli4_mq_put(struct lpfc_queue *q, struct lpfc_mqe *mqe)
|
||||||
q->phba->mbox = (MAILBOX_t *)temp_mqe;
|
q->phba->mbox = (MAILBOX_t *)temp_mqe;
|
||||||
|
|
||||||
/* Update the host index before invoking device */
|
/* Update the host index before invoking device */
|
||||||
host_index = q->host_index;
|
|
||||||
q->host_index = ((q->host_index + 1) % q->entry_count);
|
q->host_index = ((q->host_index + 1) % q->entry_count);
|
||||||
|
|
||||||
/* Ring Doorbell */
|
/* Ring Doorbell */
|
||||||
|
@ -2435,11 +2433,9 @@ lpfc_sli_process_unsol_iocb(struct lpfc_hba *phba, struct lpfc_sli_ring *pring,
|
||||||
IOCB_t * irsp;
|
IOCB_t * irsp;
|
||||||
WORD5 * w5p;
|
WORD5 * w5p;
|
||||||
uint32_t Rctl, Type;
|
uint32_t Rctl, Type;
|
||||||
uint32_t match;
|
|
||||||
struct lpfc_iocbq *iocbq;
|
struct lpfc_iocbq *iocbq;
|
||||||
struct lpfc_dmabuf *dmzbuf;
|
struct lpfc_dmabuf *dmzbuf;
|
||||||
|
|
||||||
match = 0;
|
|
||||||
irsp = &(saveq->iocb);
|
irsp = &(saveq->iocb);
|
||||||
|
|
||||||
if (irsp->ulpCommand == CMD_ASYNC_STATUS) {
|
if (irsp->ulpCommand == CMD_ASYNC_STATUS) {
|
||||||
|
@ -2865,7 +2861,7 @@ lpfc_sli_rsp_pointers_error(struct lpfc_hba *phba, struct lpfc_sli_ring *pring)
|
||||||
void lpfc_poll_eratt(unsigned long ptr)
|
void lpfc_poll_eratt(unsigned long ptr)
|
||||||
{
|
{
|
||||||
struct lpfc_hba *phba;
|
struct lpfc_hba *phba;
|
||||||
uint32_t eratt = 0, rem;
|
uint32_t eratt = 0;
|
||||||
uint64_t sli_intr, cnt;
|
uint64_t sli_intr, cnt;
|
||||||
|
|
||||||
phba = (struct lpfc_hba *)ptr;
|
phba = (struct lpfc_hba *)ptr;
|
||||||
|
@ -2880,7 +2876,7 @@ void lpfc_poll_eratt(unsigned long ptr)
|
||||||
cnt = (sli_intr - phba->sli.slistat.sli_prev_intr);
|
cnt = (sli_intr - phba->sli.slistat.sli_prev_intr);
|
||||||
|
|
||||||
/* 64-bit integer division not supporte on 32-bit x86 - use do_div */
|
/* 64-bit integer division not supporte on 32-bit x86 - use do_div */
|
||||||
rem = do_div(cnt, LPFC_ERATT_POLL_INTERVAL);
|
do_div(cnt, LPFC_ERATT_POLL_INTERVAL);
|
||||||
phba->sli.slistat.sli_ips = cnt;
|
phba->sli.slistat.sli_ips = cnt;
|
||||||
|
|
||||||
phba->sli.slistat.sli_prev_intr = sli_intr;
|
phba->sli.slistat.sli_prev_intr = sli_intr;
|
||||||
|
@ -5953,9 +5949,6 @@ lpfc_sli4_get_allocated_extnts(struct lpfc_hba *phba, uint16_t type,
|
||||||
curr_blks++;
|
curr_blks++;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Calculate the total requested length of the dma memory. */
|
|
||||||
req_len = curr_blks * sizeof(uint16_t);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Calculate the size of an embedded mailbox. The uint32_t
|
* Calculate the size of an embedded mailbox. The uint32_t
|
||||||
* accounts for extents-specific word.
|
* accounts for extents-specific word.
|
||||||
|
@ -6766,13 +6759,16 @@ void
|
||||||
lpfc_mbox_timeout_handler(struct lpfc_hba *phba)
|
lpfc_mbox_timeout_handler(struct lpfc_hba *phba)
|
||||||
{
|
{
|
||||||
LPFC_MBOXQ_t *pmbox = phba->sli.mbox_active;
|
LPFC_MBOXQ_t *pmbox = phba->sli.mbox_active;
|
||||||
MAILBOX_t *mb = &pmbox->u.mb;
|
MAILBOX_t *mb = NULL;
|
||||||
|
|
||||||
struct lpfc_sli *psli = &phba->sli;
|
struct lpfc_sli *psli = &phba->sli;
|
||||||
|
|
||||||
/* If the mailbox completed, process the completion and return */
|
/* If the mailbox completed, process the completion and return */
|
||||||
if (lpfc_sli4_process_missed_mbox_completions(phba))
|
if (lpfc_sli4_process_missed_mbox_completions(phba))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (pmbox != NULL)
|
||||||
|
mb = &pmbox->u.mb;
|
||||||
/* Check the pmbox pointer first. There is a race condition
|
/* Check the pmbox pointer first. There is a race condition
|
||||||
* between the mbox timeout handler getting executed in the
|
* between the mbox timeout handler getting executed in the
|
||||||
* worklist and the mailbox actually completing. When this
|
* worklist and the mailbox actually completing. When this
|
||||||
|
@ -8121,7 +8117,6 @@ lpfc_sli4_scmd_to_wqidx_distr(struct lpfc_hba *phba)
|
||||||
cpup += cpu;
|
cpup += cpu;
|
||||||
return cpup->channel_id;
|
return cpup->channel_id;
|
||||||
}
|
}
|
||||||
chann = cpu;
|
|
||||||
}
|
}
|
||||||
chann = atomic_add_return(1, &phba->fcp_qidx);
|
chann = atomic_add_return(1, &phba->fcp_qidx);
|
||||||
chann = (chann % phba->cfg_fcp_io_channel);
|
chann = (chann % phba->cfg_fcp_io_channel);
|
||||||
|
@ -12604,6 +12599,9 @@ lpfc_sli4_hba_intr_handler(int irq, void *dev_id)
|
||||||
* Process all the event on FCP fast-path EQ
|
* Process all the event on FCP fast-path EQ
|
||||||
*/
|
*/
|
||||||
while ((eqe = lpfc_sli4_eq_get(fpeq))) {
|
while ((eqe = lpfc_sli4_eq_get(fpeq))) {
|
||||||
|
if (eqe == NULL)
|
||||||
|
break;
|
||||||
|
|
||||||
lpfc_sli4_hba_handle_eqe(phba, eqe, fcp_eqidx);
|
lpfc_sli4_hba_handle_eqe(phba, eqe, fcp_eqidx);
|
||||||
if (!(++ecount % fpeq->entry_repost))
|
if (!(++ecount % fpeq->entry_repost))
|
||||||
lpfc_sli4_eq_release(fpeq, LPFC_QUEUE_NOARM);
|
lpfc_sli4_eq_release(fpeq, LPFC_QUEUE_NOARM);
|
||||||
|
@ -14244,7 +14242,6 @@ lpfc_sli4_post_sgl(struct lpfc_hba *phba,
|
||||||
"2511 POST_SGL mailbox failed with "
|
"2511 POST_SGL mailbox failed with "
|
||||||
"status x%x add_status x%x, mbx status x%x\n",
|
"status x%x add_status x%x, mbx status x%x\n",
|
||||||
shdr_status, shdr_add_status, rc);
|
shdr_status, shdr_add_status, rc);
|
||||||
rc = -ENXIO;
|
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue