Details
Description
The function netX_2PS_HalEddGetFrame does not initialize the field ptHalPriv->ptCallbackData[ulTableIdx].ulFifoPtr with the new fifo value. If the device is receiving multicast frames, the following lines of code will lead to frame loss:
while(1)
{
RX_EDD_ETHERNET_FRAME_T* ptFrame;
Drv_EddGetFrame(hEdd,hEddApp,&ptFrame);
Drv_EddFreeFrame(hEdd,hEddApp,ptFrame);
}
The problem is, that the old value of 'ulFifoPtr' may have the 'multi request' bit set due to receiving multicast frames. Therefore, if the frame is freed immediately after getting it, the old value may cause the frame to be appended to collect fifo instead of empty pointer fifo.