Uploaded image for project: 'rcX - Operating System'
  1. rcX - Operating System
  2. RCX-382

[Drv_Edd/2PortSwitch Hal] Freeing an unsend ethernet frame may lead to frame buffer loss

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: V2.0.8.0
    • Component/s: Drivers
    • Labels:
      None
    • Account:
      SDO rcX (SDORCX)

      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.

        Attachments

          Expenses

            Activity

              Status Description

                People

                • Reporter:
                  AMesser Andreas Messer
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  0 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved: