From: Neil Horman <nhor...@redhat.com> Date: Wed, 3 Jan 2018 10:13:33 -0500
> Thats exactly what this patch does, instead of creating a second loop to > traverse all the emptied ring buffers, now I: > > 1) Pre-allocate a new skb when I know I'm going to receive the in-place skb > 2) Map the skb into the appropriate dma device domain > 3) If (1) and (2) succede, then I swap the newly allocate skb and dma address > with the old one and recieve the old into the network stack > 4) If (1) or (2) fail, then I goto clear_complete, which leaves the old skb > and > dma address in place, sets the buffer status back to 0 (indicating > completion), > and write the new ring status back to the hardware > > This is what you wanted, a pre-allocate and swap-if-successful, recycle-if-not > approach, rather than the leave-a-hole-in-the-ring approach that is there > currently, no? Or did I miss something else? I misread the code sorry, you're absolutely right. I'll apply this patch, thanks Neil. :)