Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F177435903
D60602.1794382927.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Authored By
Unknown
Size
1 KB
Referenced Files
None
Subscribers
None
D60602.1794382927.diff
View Options
diff --git a/FreeBSD/sys/net/iflib.c b/FreeBSD/sys/net/iflib.c
--- a/FreeBSD/sys/net/iflib.c
+++ b/FreeBSD/sys/net/iflib.c
@@ -916,6 +916,21 @@
return (scctx->isc_ntxd[first_txq]);
}
+static __inline void
+prefetch(void *x)
+{
+ __builtin_prefetch(x);
+}
+
+static __inline void
+prefetch2cachelines(void *x)
+{
+ prefetch(x);
+#if (CACHE_LINE_SIZE < 128)
+ prefetch((char *)x + CACHE_LINE_SIZE);
+#endif
+}
+
#ifdef DEV_NETMAP
#include <sys/selinfo.h>
#include <net/netmap.h>
@@ -1198,9 +1213,9 @@
pi.ipi_qsidx = kring->ring_id;
nic_i = netmap_idx_k2n(kring, nm_i);
- __builtin_prefetch(&ring->slot[nm_i]);
- __builtin_prefetch(&txq->ift_sds.ifsd_m[nic_i]);
- __builtin_prefetch(&txq->ift_sds.ifsd_map[nic_i]);
+ prefetch(&ring->slot[nm_i]);
+ prefetch(&txq->ift_sds.ifsd_m[nic_i]);
+ prefetch(&txq->ift_sds.ifsd_map[nic_i]);
while (nm_i != head) {
struct netmap_slot *slot = &ring->slot[nm_i];
@@ -1248,9 +1263,9 @@
}
/* prefetch for next round */
- __builtin_prefetch(&ring->slot[nm_i + 1]);
- __builtin_prefetch(&txq->ift_sds.ifsd_m[nic_i + 1]);
- __builtin_prefetch(&txq->ift_sds.ifsd_map[nic_i + 1]);
+ prefetch(&ring->slot[nm_i + 1]);
+ prefetch(&txq->ift_sds.ifsd_m[nic_i + 1]);
+ prefetch(&txq->ift_sds.ifsd_map[nic_i + 1]);
NM_CHECK_ADDR_LEN_OFF(na, len, offset);
@@ -1552,33 +1567,6 @@
#define netmap_rx_irq(ifp, qid, budget) (0)
#endif
-#if defined(__i386__) || defined(__amd64__)
-static __inline void
-prefetch(void *x)
-{
- __asm volatile("prefetcht0 %0" :: "m" (*(unsigned long *)x));
-}
-
-static __inline void
-prefetch2cachelines(void *x)
-{
- __asm volatile("prefetcht0 %0" :: "m" (*(unsigned long *)x));
-#if (CACHE_LINE_SIZE < 128)
- __asm volatile("prefetcht0 %0" :: "m" (*(((unsigned long *)x) + CACHE_LINE_SIZE / (sizeof(unsigned long)))));
-#endif
-}
-#else
-static __inline void
-prefetch(void *x)
-{
-}
-
-static __inline void
-prefetch2cachelines(void *x)
-{
-}
-#endif
-
static void
iru_init(if_rxd_update_t iru, iflib_rxq_t rxq, uint8_t flid)
{
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Wed, Nov 11, 7:42 AM (3 h, 31 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
40631940
Default Alt Text
D60602.1794382927.diff (1 KB)
Attached To
Mode
D60602: iflib: unify prefetching & enable for non-x86
Attached
Detach File
Event Timeline