Commit 3efde862 authored by John Soni Jose's avatar John Soni Jose Committed by James Bottomley

be2iscsi : Fix the retry count for boot targets

 Increment the retry count to get the boot target info when
 port async event is received by the driver. Update sysfs enteries
 with the boot target  parameters.
Signed-off-by: default avatarMinh Tran <minhduc.tran@emulex.com>
Signed-off-by: default avatarJohn Soni Jose <sony.john-n@emulex.com>
Signed-off-by: default avatarJayamohan Kallickal <jayamohan.kallickal@emulex.com>
Reviewed-by: default avatarMike Christie <michaelc@cs.wisc.edu>
Signed-off-by: default avatarJames Bottomley <JBottomley@Odin.com>
parent a9555534
...@@ -452,6 +452,7 @@ void beiscsi_async_link_state_process(struct beiscsi_hba *phba, ...@@ -452,6 +452,7 @@ void beiscsi_async_link_state_process(struct beiscsi_hba *phba,
((evt->port_link_status & ASYNC_EVENT_LOGICAL) && ((evt->port_link_status & ASYNC_EVENT_LOGICAL) &&
(evt->port_fault == BEISCSI_PHY_LINK_FAULT_NONE))) { (evt->port_fault == BEISCSI_PHY_LINK_FAULT_NONE))) {
phba->state = BE_ADAPTER_LINK_UP | BE_ADAPTER_CHECK_BOOT; phba->state = BE_ADAPTER_LINK_UP | BE_ADAPTER_CHECK_BOOT;
phba->get_boot = BE_GET_BOOT_RETRIES;
beiscsi_log(phba, KERN_ERR, beiscsi_log(phba, KERN_ERR,
BEISCSI_LOG_CONFIG | BEISCSI_LOG_INIT, BEISCSI_LOG_CONFIG | BEISCSI_LOG_INIT,
...@@ -480,6 +481,7 @@ int beiscsi_process_mcc(struct beiscsi_hba *phba) ...@@ -480,6 +481,7 @@ int beiscsi_process_mcc(struct beiscsi_hba *phba)
case ASYNC_EVENT_NEW_ISCSI_CONN: case ASYNC_EVENT_NEW_ISCSI_CONN:
case ASYNC_EVENT_NEW_TCP_CONN: case ASYNC_EVENT_NEW_TCP_CONN:
phba->state |= BE_ADAPTER_CHECK_BOOT; phba->state |= BE_ADAPTER_CHECK_BOOT;
phba->get_boot = BE_GET_BOOT_RETRIES;
beiscsi_log(phba, KERN_ERR, beiscsi_log(phba, KERN_ERR,
BEISCSI_LOG_CONFIG | BEISCSI_LOG_CONFIG |
BEISCSI_LOG_MBOX, BEISCSI_LOG_MBOX,
...@@ -488,6 +490,8 @@ int beiscsi_process_mcc(struct beiscsi_hba *phba) ...@@ -488,6 +490,8 @@ int beiscsi_process_mcc(struct beiscsi_hba *phba)
compl->flags); compl->flags);
break; break;
default: default:
phba->state |= BE_ADAPTER_CHECK_BOOT;
phba->get_boot = BE_GET_BOOT_RETRIES;
beiscsi_log(phba, KERN_ERR, beiscsi_log(phba, KERN_ERR,
BEISCSI_LOG_CONFIG | BEISCSI_LOG_CONFIG |
BEISCSI_LOG_MBOX, BEISCSI_LOG_MBOX,
......
...@@ -2037,11 +2037,16 @@ static void beiscsi_process_mcc_isr(struct beiscsi_hba *phba) ...@@ -2037,11 +2037,16 @@ static void beiscsi_process_mcc_isr(struct beiscsi_hba *phba)
/* Interpret compl as a async link evt */ /* Interpret compl as a async link evt */
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 {
beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_MBOX, beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_MBOX,
"BM_%d : Unsupported Async Event, flags" "BM_%d : Unsupported Async Event, flags"
" = 0x%08x\n", " = 0x%08x\n",
mcc_compl->flags); mcc_compl->flags);
if (phba->state & BE_ADAPTER_LINK_UP) {
phba->state |= BE_ADAPTER_CHECK_BOOT;
phba->get_boot = BE_GET_BOOT_RETRIES;
}
}
} 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);
...@@ -4328,8 +4333,14 @@ static int beiscsi_get_boot_info(struct beiscsi_hba *phba) ...@@ -4328,8 +4333,14 @@ static int beiscsi_get_boot_info(struct beiscsi_hba *phba)
beiscsi_log(phba, KERN_ERR, beiscsi_log(phba, KERN_ERR,
BEISCSI_LOG_INIT | BEISCSI_LOG_CONFIG, BEISCSI_LOG_INIT | BEISCSI_LOG_CONFIG,
"BM_%d : No boot session\n"); "BM_%d : No boot session\n");
if (ret == -ENXIO)
phba->get_boot = 0;
return ret; return ret;
} }
phba->get_boot = 0;
nonemb_cmd.va = pci_zalloc_consistent(phba->ctrl.pdev, nonemb_cmd.va = pci_zalloc_consistent(phba->ctrl.pdev,
sizeof(*session_resp), sizeof(*session_resp),
&nonemb_cmd.dma); &nonemb_cmd.dma);
...@@ -5374,8 +5385,14 @@ beiscsi_hw_health_check(struct work_struct *work) ...@@ -5374,8 +5385,14 @@ beiscsi_hw_health_check(struct work_struct *work)
be_eqd_update(phba); be_eqd_update(phba);
if (phba->state & BE_ADAPTER_CHECK_BOOT) { if (phba->state & BE_ADAPTER_CHECK_BOOT) {
phba->state &= ~BE_ADAPTER_CHECK_BOOT; if ((phba->get_boot > 0) && (!phba->boot_kset)) {
be_check_boot_session(phba); phba->get_boot--;
if (!(phba->get_boot % BE_GET_BOOT_TO))
be_check_boot_session(phba);
} else {
phba->state &= ~BE_ADAPTER_CHECK_BOOT;
phba->get_boot = 0;
}
} }
beiscsi_ue_detect(phba); beiscsi_ue_detect(phba);
......
...@@ -109,6 +109,9 @@ ...@@ -109,6 +109,9 @@
#define BEISCSI_CLEAN_UNLOAD 0x01 #define BEISCSI_CLEAN_UNLOAD 0x01
#define BEISCSI_EEH_UNLOAD 0x02 #define BEISCSI_EEH_UNLOAD 0x02
#define BE_GET_BOOT_RETRIES 45
#define BE_GET_BOOT_TO 20
/** /**
* hardware needs the async PDU buffers to be posted in multiples of 8 * hardware needs the async PDU buffers to be posted in multiples of 8
* So have atleast 8 of them by default * So have atleast 8 of them by default
...@@ -413,6 +416,7 @@ struct beiscsi_hba { ...@@ -413,6 +416,7 @@ struct beiscsi_hba {
} fw_config; } fw_config;
unsigned int state; unsigned int state;
int get_boot;
bool fw_timeout; bool fw_timeout;
bool ue_detected; bool ue_detected;
struct delayed_work beiscsi_hw_check_task; struct delayed_work beiscsi_hw_check_task;
......
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