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>
EFI_EVENT TimerEvent;\r
UINT32 StallCounter;\r
EFI_TPL OldTpl;\r
+ UINT32 TimerPeriod;\r
\r
RttTimerTick = 0;\r
StallCounter = 0;\r
+ TimerPeriod = 0;\r
\r
Status = gBS->CreateEvent (\r
EVT_TIMER | EVT_NOTIFY_SIGNAL,\r
gBS->SetTimer (TimerEvent, TimerCancel, 0);\r
gBS->CloseEvent (TimerEvent);\r
\r
- return StallCounter / RttTimerTick;\r
+ TimerPeriod = StallCounter / RttTimerTick;\r
+ if (TimerPeriod != 0) {\r
+ return TimerPeriod;\r
+ } else {\r
+ return 1;\r
+ }\r
}\r
\r
/**\r