From fdf49777b9f292a1d8b384ccc7c41b424ebd339e Mon Sep 17 00:00:00 2001 From: Marie-Josee Blais Date: Tue, 10 Aug 2010 15:34:00 +0000 Subject: [PATCH] Increased variable size of timeouts. During manual rollback, code now gets target capabilities instead of using a default timeout of 60 seconds. --- ipmitool/lib/ipmi_hpmfwupg.c | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/ipmitool/lib/ipmi_hpmfwupg.c b/ipmitool/lib/ipmi_hpmfwupg.c index 48dd1e3..3df9916 100644 --- a/ipmitool/lib/ipmi_hpmfwupg.c +++ b/ipmitool/lib/ipmi_hpmfwupg.c @@ -3174,6 +3174,7 @@ int HpmfwupgManualFirmwareRollback(struct ipmi_intf *intf, struct HpmfwupgManual struct HpmfwupgQueryRollbackStatusCtx resCmd; printf("Waiting firmware rollback..."); fflush(stdout); + rc = HpmfwupgQueryRollbackStatus(intf, &resCmd, pFwupgCtx); } else if ( rsp->ccode != 0x00 ) @@ -3196,7 +3197,7 @@ int HpmfwupgQueryRollbackStatus(struct ipmi_intf *intf, struct HpmfwupgQueryRoll int rc = HPMFWUPG_SUCCESS; struct ipmi_rs * rsp; struct ipmi_rq req; - unsigned char rollbackTimeout = 0; + unsigned int rollbackTimeout = 0; unsigned int timeoutSec1, timeoutSec2; pCtx->req.picmgId = HPMFWUPG_PICMG_IDENTIFIER; @@ -3216,7 +3217,18 @@ int HpmfwupgQueryRollbackStatus(struct ipmi_intf *intf, struct HpmfwupgQueryRoll } else { - rollbackTimeout = HPMFWUPG_DEFAULT_UPGRADE_TIMEOUT; + struct HpmfwupgGetTargetUpgCapabilitiesCtx targetCapCmd; + verbose--; + rc = HpmfwupgGetTargetUpgCapabilities(intf, &targetCapCmd); + verbose++; + if ( rc == HPMFWUPG_SUCCESS ) + { + rollbackTimeout = targetCapCmd.resp.rollbackTimeout *5; + } + else + { + rollbackTimeout = HPMFWUPG_DEFAULT_UPGRADE_TIMEOUT; + } } /* Poll rollback status until completion or timeout */ @@ -3374,8 +3386,8 @@ struct ipmi_rs * HpmfwupgSendCmd(struct ipmi_intf *intf, struct ipmi_rq req, struct HpmfwupgUpgradeCtx* pFwupgCtx ) { struct ipmi_rs * rsp; - unsigned char inaccessTimeout = 0, inaccessTimeoutCounter = 0; - unsigned char upgradeTimeout = 0, upgradeTimeoutCounter = 0; + unsigned int inaccessTimeout = 0, inaccessTimeoutCounter = 0; + unsigned int upgradeTimeout = 0, upgradeTimeoutCounter = 0; unsigned int timeoutSec1, timeoutSec2; unsigned char retry = 0; @@ -3570,7 +3582,7 @@ struct ipmi_rs * HpmfwupgSendCmd(struct ipmi_intf *intf, struct ipmi_rq req, int HpmfwupgWaitLongDurationCmd(struct ipmi_intf *intf, struct HpmfwupgUpgradeCtx* pFwupgCtx) { int rc = HPMFWUPG_SUCCESS; - unsigned char upgradeTimeout = 0; + unsigned int upgradeTimeout = 0; unsigned int timeoutSec1, timeoutSec2; struct HpmfwupgGetUpgradeStatusCtx upgStatusCmd;