Skip to main content

Source code Changes To

on-src / usr / src / uts / common / io / fibre-channel / fca / emlxs / emlxs_clock.c

From revision 13148 to 13149:

diff -r 7f829eb09eb7 -r b23a4dab3d50 usr/src/uts/common/io/fibre-channel/fca/emlxs/emlxs_clock.c
--- a/usr/src/uts/common/io/fibre-channel/fca/emlxs/emlxs_clock.c	Wed Aug 18 15:57:57 2010 -0600
+++ b/usr/src/uts/common/io/fibre-channel/fca/emlxs/emlxs_clock.c	Wed Aug 18 15:52:48 2010 -0600
@@ -42,6 +42,7 @@
 #endif /* DHCHAP_SUPPORT */
 
 static void	emlxs_timer(void *arg);
+static void	emlxs_timer_check_fw_update(emlxs_hba_t *hba);
 static void	emlxs_timer_check_heartbeat(emlxs_hba_t *hba);
 static uint32_t	emlxs_timer_check_pkts(emlxs_hba_t *hba, uint8_t *flag);
 static void	emlxs_timer_check_nodes(emlxs_port_t *port, uint8_t *flag);
@@ -157,6 +158,9 @@
 	/* Check heartbeat timer */
 	emlxs_timer_check_heartbeat(hba);
 
+	/* Check fw update timer */
+	emlxs_timer_check_fw_update(hba);
+
 #ifdef IDLE_TIMER
 	emlxs_pm_idle_timer(hba);
 #endif /* IDLE_TIMER */
@@ -811,6 +815,32 @@
 
 
 static void
+emlxs_timer_check_fw_update(emlxs_hba_t *hba)
+{
+	emlxs_port_t *port = &PPORT;
+
+	if (!(hba->fw_flag & FW_UPDATE_NEEDED)) {
+		hba->fw_timer = 0;
+		return;
+	}
+
+	if (hba->timer_tics < hba->fw_timer) {
+		return;
+	}
+
+	EMLXS_MSGF(EMLXS_CONTEXT, &emlxs_fw_update_msg,
+	"A manual HBA reset or link reset (using luxadm or fcadm) "
+	"is required.");
+
+	/* Set timer for 24 hours */
+	hba->fw_timer = hba->timer_tics + (60 * 60 * 24);
+
+	return;
+
+} /* emlxs_timer_check_fw_update() */
+
+
+static void
 emlxs_timer_check_discovery(emlxs_port_t *port)
 {
 	emlxs_hba_t *hba = HBA;

 
 
Close
loading
Please Confirm
Close