Details
-
Type: Bug
-
Status: Closed
-
Priority: Minor
-
Resolution: Fixed
-
Affects Version/s: V1.6.1.0
-
Fix Version/s: V1.6.2.0
-
Component/s: None
-
Labels:None
-
Account:SPC Driver Ethernet (SPCDRIVERE)
Description
HAL Adapters call DrvEth_EventInd(ETH_EVENT_LINK_CHANGED) for each link change event from the HAL. In this function, we defer into a (lower priority) worker context as follows:
PS_JOB_T *ptJob = &(ptPhy->tLinkChangeJob);
ptJob->pfnFunc = DrvEth_Event_LinkChanged_job;
if (!DrvEth_QueueJob(ptDrvEth, ptJob))
{
ptJob->pfnFunc(ptJob);
}
The last block is thought as a fallback if no worker was passed to DrvEth during component startup. Unfortunately, if two or more link change events are indicated in rapid succession, or if the lower priority worker is busy, this can cause a wrong ordering of the job invocations.
Please rewrite this logic (no worker available -> synchronous call, worker available -> asynchronous call)
Attachments
Issue Links
- relates to
-
PSDRVETH-122 Unexpected context when calling Linkstatus callbacks
- Closed