From ae39d3385839a31c73836fad4732e9915fc07035 Mon Sep 17 00:00:00 2001
From: Alessandro Rubini <rubini@gnudd.com>
Date: Thu, 19 Mar 2015 12:18:24 +0100
Subject: [PATCH] pfilter: trivial: change comparison order

If we compare for the local MAC first, it's easier to patch
the mac address at run time.

Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
---
 dev/ep_pfilter.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/dev/ep_pfilter.c b/dev/ep_pfilter.c
index 1835648..355dde1 100644
--- a/dev/ep_pfilter.c
+++ b/dev/ep_pfilter.c
@@ -293,6 +293,10 @@ void pfilter_init_default()
 	 * Make three sets of comparisons over the destination address.
 	 * After these 9 instructions, the whole Eth header is available.
 	 */
+	pfilter_cmp(0, EP->MACH & 0xffff, 0xffff, MOV, FRAME_OUR_MAC);
+	pfilter_cmp(1, EP->MACL >> 16, 0xffff, AND, FRAME_OUR_MAC);
+	pfilter_cmp(2, EP->MACL & 0xffff, 0xffff, AND, FRAME_OUR_MAC);	/* set when our MAC */
+
 	pfilter_cmp(0, 0xffff, 0xffff, MOV, FRAME_BROADCAST);
 	pfilter_cmp(1, 0xffff, 0xffff, AND, FRAME_BROADCAST);
 	pfilter_cmp(2, 0xffff, 0xffff, AND, FRAME_BROADCAST);	/* set when dst mac is broadcast */
@@ -301,10 +305,6 @@ void pfilter_init_default()
 	pfilter_cmp(1, 0x1900, 0xffff, AND, FRAME_PTP_MCAST);
 	pfilter_cmp(2, 0x0000, 0xffff, AND, FRAME_PTP_MCAST);	/* set when dst mac is PTP multicast (01:1b:19:00:00:00) */
 
-	pfilter_cmp(0, EP->MACH & 0xffff, 0xffff, MOV, FRAME_OUR_MAC);
-	pfilter_cmp(1, EP->MACL >> 16, 0xffff, AND, FRAME_OUR_MAC);
-	pfilter_cmp(2, EP->MACL & 0xffff, 0xffff, AND, FRAME_OUR_MAC);	/* set when our MAC */
-
 	/* Identify some Ethertypes used later */
 	pfilter_cmp(6, 0x0800, 0xffff, MOV, FRAME_TYPE_IPV4);
 	pfilter_cmp(6, 0x88f7, 0xffff, MOV, FRAME_TYPE_PTP2);
-- 
GitLab