embeddedsw icon indicating copy to clipboard operation
embeddedsw copied to clipboard

XEmacPs_BdGetBufAddr doesn't mask with XEMACPS_RXBUF_ADD_MASK

Open mazhenke opened this issue 11 months ago • 1 comments

See file https://github.com/Xilinx/embeddedsw/blob/master/XilinxProcessorIPLib/drivers/emacps/src/xemacps_bd.h line 242

/**

  • Get the address (bits 0..31) of the BD's buffer address (word 0)
  • @param BdPtr is the BD pointer to operate on
  • @note
  • C-style signature:
  • UINTPTR XEmacPs_BdGetBufAddr(XEmacPs_Bd* BdPtr)

*****************************************************************************/ #if defined(aarch64) || defined(arch64) #define XEmacPs_BdGetBufAddr(BdPtr)
(XEmacPs_BdRead((BdPtr), XEMACPS_BD_ADDR_OFFSET) |
(XEmacPs_BdRead((BdPtr), XEMACPS_BD_ADDR_HI_OFFSET)) << 32U) #else #define XEmacPs_BdGetBufAddr(BdPtr)
(XEmacPs_BdRead((BdPtr), XEMACPS_BD_ADDR_OFFSET)) #endif

The XEmacPs_BdGetBufAddr shall mask with XEMACPS_RXBUF_ADD_MASK to get the correct address, like this:

#if defined(aarch64) || defined(arch64) #define XEmacPs_BdGetBufAddr(BdPtr)
((XEmacPs_BdRead((BdPtr), XEMACPS_BD_ADDR_OFFSET) & XEMACPS_RXBUF_ADD_MASK) |
(XEmacPs_BdRead((BdPtr), XEMACPS_BD_ADDR_HI_OFFSET)) << 32U) #else #define XEmacPs_BdGetBufAddr(BdPtr)
(XEmacPs_BdRead((BdPtr), XEMACPS_BD_ADDR_OFFSET) & XEMACPS_RXBUF_ADD_MASK ) #endif

mazhenke avatar Mar 18 '24 08:03 mazhenke

Thanks for reporting @mazhenke This will be fixed in the next release.

HariniKatakamX avatar Mar 18 '24 11:03 HariniKatakamX