Dear Stephen, In r8169 pmd, mdelay and udelay are macros. #define mdelay rte_delay_ms #define udelay rte_delay_us
Best Regards, Howard Wang -----邮件原件----- 发件人: Stephen Hemminger <[email protected]> 发送时间: 2024年10月18日 0:34 收件人: 王颢 <[email protected]> 抄送: [email protected]; [email protected] 主题: Re: [PATCH v2 03/18] net/r8169: add hardware registers access routines External mail. On Thu, 17 Oct 2024 14:31:45 +0800 Howard Wang <[email protected]> wrote: > +u32 > +rtl_csi_read(struct rtl_hw *hw, u32 addr) { > + u32 cmd; > + int i; > + u32 value = 0; > + > + cmd = CSIAR_Read | CSIAR_ByteEn << CSIAR_ByteEn_shift | > + (addr & CSIAR_Addr_Mask); > + > + RTL_W32(hw, CSIAR, cmd); > + > + for (i = 0; i < 10; i++) { > + udelay(100); With DPDK drivers, it is preferred to use rte_delay instead of usleep. Usleep ends up being a system call (nanosleep) and that can take much longer than you want. rte_delay_us() is a spin loop.

