* Re: [PATCH 1/4] be2iscsi : Fix the retry count for boot targets
2014-12-17 2:33 [PATCH 1/4] be2iscsi : Fix the retry count for boot targets John Soni Jose
@ 2014-12-16 16:53 ` Mike Christie
2014-12-17 5:21 ` Minh Duc Tran
0 siblings, 1 reply; 3+ messages in thread
From: Mike Christie @ 2014-12-16 16:53 UTC (permalink / raw)
To: John Soni Jose; +Cc: linux-scsi, Minh Tran, Jayamohan Kallickal
On 12/16/14, 8:33 PM, John Soni Jose wrote:
> +#define GET_BOOT_RETRIES 45
> +#define GET_BOOT_TO 20
> /**
Does beiscsi_get_boot_info() succeed when the fw is able to log into the
target (go into iscsi full feature phase) or just able to reach it (ICMP
ping the port or something like that)? It was not clear why the above
values were selected. Was it meant to detect when the target could be
down for extended periods due to something like maintenance or a reboot,
or is just handling some shorter settle period where the link is up but
the fw could not reach the target port due to needing to do some other
network setup.
Also, I think you want to add some sort of BEISCSI or at least BE prefix
to the names to avoid collisions since they are pretty generic.
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH 1/4] be2iscsi : Fix the retry count for boot targets
@ 2014-12-17 2:33 John Soni Jose
2014-12-16 16:53 ` Mike Christie
0 siblings, 1 reply; 3+ messages in thread
From: John Soni Jose @ 2014-12-17 2:33 UTC (permalink / raw)
To: linux-scsi, michaelc; +Cc: John Soni Jose, Minh Tran, Jayamohan Kallickal
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: Minh Tran <minhduc.tran@emulex.com>
Signed-off-by: John Soni Jose <sony.john-n@emulex.com>
Signed-off-by: Jayamohan Kallickal <jayamohan.kallickal@emulex.com>
---
drivers/scsi/be2iscsi/be_cmds.c | 4 ++++
drivers/scsi/be2iscsi/be_main.c | 23 ++++++++++++++++++++---
drivers/scsi/be2iscsi/be_main.h | 4 ++++
3 files changed, 28 insertions(+), 3 deletions(-)
diff --git a/drivers/scsi/be2iscsi/be_cmds.c b/drivers/scsi/be2iscsi/be_cmds.c
index 80d97f3..ee90611 100644
--- a/drivers/scsi/be2iscsi/be_cmds.c
+++ b/drivers/scsi/be2iscsi/be_cmds.c
@@ -452,6 +452,7 @@ void beiscsi_async_link_state_process(struct beiscsi_hba *phba,
((evt->port_link_status & ASYNC_EVENT_LOGICAL) &&
(evt->port_fault == BEISCSI_PHY_LINK_FAULT_NONE))) {
phba->state = BE_ADAPTER_LINK_UP | BE_ADAPTER_CHECK_BOOT;
+ phba->get_boot = GET_BOOT_RETRIES;
beiscsi_log(phba, KERN_ERR,
BEISCSI_LOG_CONFIG | BEISCSI_LOG_INIT,
@@ -480,6 +481,7 @@ int beiscsi_process_mcc(struct beiscsi_hba *phba)
case ASYNC_EVENT_NEW_ISCSI_CONN:
case ASYNC_EVENT_NEW_TCP_CONN:
phba->state |= BE_ADAPTER_CHECK_BOOT;
+ phba->get_boot = GET_BOOT_RETRIES;
beiscsi_log(phba, KERN_ERR,
BEISCSI_LOG_CONFIG |
BEISCSI_LOG_MBOX,
@@ -488,6 +490,8 @@ int beiscsi_process_mcc(struct beiscsi_hba *phba)
compl->flags);
break;
default:
+ phba->state |= BE_ADAPTER_CHECK_BOOT;
+ phba->get_boot = GET_BOOT_RETRIES;
beiscsi_log(phba, KERN_ERR,
BEISCSI_LOG_CONFIG |
BEISCSI_LOG_MBOX,
diff --git a/drivers/scsi/be2iscsi/be_main.c b/drivers/scsi/be2iscsi/be_main.c
index f319340..228bd7a 100644
--- a/drivers/scsi/be2iscsi/be_main.c
+++ b/drivers/scsi/be2iscsi/be_main.c
@@ -2039,11 +2039,16 @@ static void beiscsi_process_mcc_isr(struct beiscsi_hba *phba)
/* Interpret compl as a async link evt */
beiscsi_async_link_state_process(phba,
(struct be_async_event_link_state *) mcc_compl);
- else
+ else {
beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_MBOX,
"BM_%d : Unsupported Async Event, flags"
" = 0x%08x\n",
mcc_compl->flags);
+ if (phba->state & BE_ADAPTER_LINK_UP) {
+ phba->state |= BE_ADAPTER_CHECK_BOOT;
+ phba->get_boot = GET_BOOT_RETRIES;
+ }
+ }
} 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);
@@ -4330,8 +4335,14 @@ static int beiscsi_get_boot_info(struct beiscsi_hba *phba)
beiscsi_log(phba, KERN_ERR,
BEISCSI_LOG_INIT | BEISCSI_LOG_CONFIG,
"BM_%d : No boot session\n");
+
+ if (ret == -ENXIO)
+ phba->get_boot = 0;
+
+
return ret;
}
+ phba->get_boot = 0;
nonemb_cmd.va = pci_zalloc_consistent(phba->ctrl.pdev,
sizeof(*session_resp),
&nonemb_cmd.dma);
@@ -5376,8 +5387,14 @@ beiscsi_hw_health_check(struct work_struct *work)
be_eqd_update(phba);
if (phba->state & BE_ADAPTER_CHECK_BOOT) {
- phba->state &= ~BE_ADAPTER_CHECK_BOOT;
- be_check_boot_session(phba);
+ if ((phba->get_boot > 0) && (!phba->boot_kset)) {
+ phba->get_boot--;
+ if (!(phba->get_boot % GET_BOOT_TO))
+ be_check_boot_session(phba);
+ } else {
+ phba->state &= ~BE_ADAPTER_CHECK_BOOT;
+ phba->get_boot = 0;
+ }
}
beiscsi_ue_detect(phba);
diff --git a/drivers/scsi/be2iscsi/be_main.h b/drivers/scsi/be2iscsi/be_main.h
index 7ee0ffc..fbfdc42 100644
--- a/drivers/scsi/be2iscsi/be_main.h
+++ b/drivers/scsi/be2iscsi/be_main.h
@@ -109,6 +109,9 @@
#define BEISCSI_CLEAN_UNLOAD 0x01
#define BEISCSI_EEH_UNLOAD 0x02
+
+#define GET_BOOT_RETRIES 45
+#define GET_BOOT_TO 20
/**
* hardware needs the async PDU buffers to be posted in multiples of 8
* So have atleast 8 of them by default
@@ -413,6 +416,7 @@ struct beiscsi_hba {
} fw_config;
unsigned int state;
+ int get_boot;
bool fw_timeout;
bool ue_detected;
struct delayed_work beiscsi_hw_check_task;
--
1.7.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* RE: [PATCH 1/4] be2iscsi : Fix the retry count for boot targets
2014-12-16 16:53 ` Mike Christie
@ 2014-12-17 5:21 ` Minh Duc Tran
0 siblings, 0 replies; 3+ messages in thread
From: Minh Duc Tran @ 2014-12-17 5:21 UTC (permalink / raw)
To: Mike Christie, Sony John-N
Cc: linux-scsi@vger.kernel.org, Jayamohan Kallickal
>On 12/16/14, 8:33 PM, John Soni Jose wrote:
>> +#define GET_BOOT_RETRIES 45
>> +#define GET_BOOT_TO 20
>> /**
>Does beiscsi_get_boot_info() succeed when the fw is able to log into the target (go into iscsi full feature phase) or just able to reach it (ICMP ping the port or something like that)?
It should be in full feature phase.
> It was not clear why the above values were selected. Was it meant to detect when the target could be down for extended periods due to something like maintenance or a reboot,
>or is just handling some shorter settle period where the link is up but the fw could not reach the target port due to needing to do some other network setup.
This is the time it takes for fw to login to boot target starting at Linkup in certain environments. Special cases such as MPIO where one port has LinkDown before boot but eventually
became LinkUp while OS is running. The total time since LinkUp to successful target login by fw is calculated based on: port on switch became ready + DHCP address assignment + fw login.
>Also, I think you want to add some sort of BEISCSI or at least BE prefix to the names to avoid collisions since they are pretty generic.
Will do.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2014-12-17 5:21 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-12-17 2:33 [PATCH 1/4] be2iscsi : Fix the retry count for boot targets John Soni Jose
2014-12-16 16:53 ` Mike Christie
2014-12-17 5:21 ` Minh Duc Tran
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.