ShellPkg: Fix Ping GetTimerPeriod API failure
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3819 Ping GetTimerPeriod API returns sometime zero value when StallCounter has smaller value than RttTimerTick (divide by zero) which results some failure at ping UEFI shell command Signed-off-by: MohammedX Rehan <mohammedx.rehan@intel.com> Reviewed-by: Zhichao Gao <zhichao.gao@intel.com> Reviewed-by: Ray Ni <ray.ni@intel.com>
This commit is contained in:
parent
c28e376edc
commit
8a57673316
|
@ -259,9 +259,11 @@ GetTimerPeriod (
|
||||||
EFI_EVENT TimerEvent;
|
EFI_EVENT TimerEvent;
|
||||||
UINT32 StallCounter;
|
UINT32 StallCounter;
|
||||||
EFI_TPL OldTpl;
|
EFI_TPL OldTpl;
|
||||||
|
UINT32 TimerPeriod;
|
||||||
|
|
||||||
RttTimerTick = 0;
|
RttTimerTick = 0;
|
||||||
StallCounter = 0;
|
StallCounter = 0;
|
||||||
|
TimerPeriod = 0;
|
||||||
|
|
||||||
Status = gBS->CreateEvent (
|
Status = gBS->CreateEvent (
|
||||||
EVT_TIMER | EVT_NOTIFY_SIGNAL,
|
EVT_TIMER | EVT_NOTIFY_SIGNAL,
|
||||||
|
@ -295,7 +297,12 @@ GetTimerPeriod (
|
||||||
gBS->SetTimer (TimerEvent, TimerCancel, 0);
|
gBS->SetTimer (TimerEvent, TimerCancel, 0);
|
||||||
gBS->CloseEvent (TimerEvent);
|
gBS->CloseEvent (TimerEvent);
|
||||||
|
|
||||||
return StallCounter / RttTimerTick;
|
TimerPeriod = StallCounter / RttTimerTick;
|
||||||
|
if (TimerPeriod != 0) {
|
||||||
|
return TimerPeriod;
|
||||||
|
} else {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue