-
Type:
Bug
-
Resolution: Fixed
-
Priority:
Medium
-
MCAL
-
MCAL-27030
-
MCAL_SitaraMPU_10.01.00
-
MCAL_SitaraMPU_10.01.00
-
(a) Add memory fence for RING QUEUE operation
- J7 platform use Message mode -> no QUEUE operation happens -> no need FENCE
- SMPU SDK does not support FENCE -> this is the code in SMPU SDK
static inline void CSL_archMemoryFence(void) { #if defined (__aarch64__) Armv8_dsbSy(); #endif #if (__ARM_ARCH == 7) && (__ARM_ARCH_PROFILE == 'R') /* R5F */ //CSL_armR5Dsb(); //TODO #endif }
(b) Remove cache invalidate for DMA desc in Eth_receiveProcess function
After DMA filled descriptor Eth_receiveProcess always need to invalidate that descriptor to read latest content
(c) Invalidate Rx user data right before submit to queue: Eth_receiveProcess
Scenario need to address:
- Receive packet N, packet buffer is in cache
- Packet N is recycled -> submitted back to FQ
- Packet M is received, which reutilizes same packet buffer
- Buffer in DDR has new content of packet M, but cache has content of packet N
- Packet buffer in cache gets flushed to DDR automatically
- Packet M content is corrupted