Thread (15 messages) 15 messages, 2 authors, 2011-08-23

Re: [net-next,v4 04/12] bna: TX Path and RX Path Changes

flat view

From: David Miller <davem@davemloft.net>
Date: 2011-08-23 23:25:39

From: David Miller <davem@davemloft.net>
Date: Tue, 23 Aug 2011 16:22:20 -0700 (PDT)
From: Rasesh Mody <redacted>
Date: Tue, 23 Aug 2011 10:56:00 -0700
quoted
+	BNA_QE_INDX_ADD(_index, 1, _depth); \
+	for (j = 0; j < (_frag); j++) { \
+		prefetch(&(_array)[(_index) + 1]); \
+		dma_unmap_page(_pdev, dma_unmap_addr(&(_array)[_index], \
This prefetch is excessive and a waste of cpu cycles.

You're going to prefetch a full 64-byte (or even 128-byte) cache line
for every 16-byte blob (at best) you iterate over.  This means you'll
prefetch the same cache line, needlessly, over and over again.
Also this whole idea to macroize this operation is bad.

Use a real seperate C function if you want to avoid code duplicaiton.
Don't mark it inline, let the compiler take care of that.

Otherwise you're sacrificing type safety and risking the usual problems
created by macros (multiple variable evaluation etc.).
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help