diff --git a/dev/ep_pfilter.c b/dev/ep_pfilter.c
index 1d6c39905842f3ab5b6c80a3b5624f7a4d6eb253..0e8478667755e1ec5f0dcf8ac7639374a3b94c28 100644
--- a/dev/ep_pfilter.c
+++ b/dev/ep_pfilter.c
@@ -237,6 +237,7 @@ void pfilter_init_default()
 	pfilter_cmp(11, 0x0001, 0x00ff, MOV, 7);	/* r7 = 1 when IP type = ICMP */
 	pfilter_cmp(11, 0x0011, 0x00ff, MOV, 8);	/* r8 = 1 when IP type = UDP */
 
+#ifdef CONFIG_ETHERBONE
 	pfilter_logic3(10, 3, OR, 0, AND, 4);	/* r10 = IP(unicast) */
 	pfilter_logic3(11, 1, OR, 3, AND, 4);	/* r11 = IP(unicast+broadcast) */
 
@@ -256,6 +257,19 @@ void pfilter_init_default()
 	pfilter_logic2(R_CLASS(6), 1, AND, 9);	/* class 6: streamer broadcasts => external fabric */
 	pfilter_logic2(R_CLASS(0), 15, MOV, 0);	/* class 0: ICMP/IP(unicast) or ARP(broadcast) or PTPv2 => PTP LM32 core */
 
+#else
+	pfilter_logic3(10, 3, OR, 2, AND, 5);	/* r10 = PTP (multicast or unicast) */
+	pfilter_logic2(11, 1, AND, 9);		/* r11 = streamer broadcast */
+	pfilter_logic3(12, 10, OR, 11, NOT, 0); /* r12 = all non-PTP and non-streamer traffic */
+
+	pfilter_logic2(R_CLASS(7), 12, MOV, 0);	/* class 7: all non PTP and non-streamer
+						   traffic => external fabric */
+	pfilter_logic2(R_CLASS(6), 11, MOV, 0); /* class 6: streamer broadcasts =>
+						   external fabric */
+	pfilter_logic2(R_CLASS(0), 10, MOV, 0); /* class 0: PTP frames => LM32 */
+	
+#endif
+
 	pfilter_load();
 
 }