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