<div dir="ltr"><div dir="ltr"><br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Wed, 05 Aug 2020 11:34:52 -0700, Vasu M said:<br>
<br>
> it on a high level, when a packet is received in a NIC, DMA  moves the<br>
> packets from the NIC frame buffer into the RX ring buffer in the driver. A<br>
> hardware interrupt is then raised and the top half moves the packet to the<br>
> RX ring buffer.<br>
<br>
Umm... I would expect the packet to be moved to the RX ring buffer exactly once,<br>
not twice...<br></blockquote><div><br></div><div>I am sorry, yes, thats a mistake and it makes sense. If the DMA moves the packet to the RX ring, the top half just acknowledges the interrupt and schedules the softirq to drain the packets from RX. Subsequently, after the packets go through sk_buff, they get queued in the socket recv buffer and get to user space memory finally? I suppose I am only scratching the surface leaving so many details. </div><div><br></div><div> </div></div></div>