From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joe Hershberger Date: Wed, 23 May 2012 12:58:00 -0500 Subject: [U-Boot] [PATCH v3 04/21] net: Encapsulate CDP packet identification In-Reply-To: <1332891772-17279-1-git-send-email-joe.hershberger@ni.com> References: <1332891772-17279-1-git-send-email-joe.hershberger@ni.com> Message-ID: <1337795897-19231-5-git-send-email-joe.hershberger@ni.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Checking for CDP packets should be encapsulated, not copied code. Signed-off-by: Joe Hershberger Cc: Joe Hershberger --- Changes for v2: - Split from patch "Move CDP out of net.c" - Changed to static inline Changes for v3: - Added a function comment - Added a blank line arch/powerpc/cpu/mpc8xx/fec.c | 2 +- include/net.h | 12 ++++++++++-- net/net.c | 2 +- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/arch/powerpc/cpu/mpc8xx/fec.c b/arch/powerpc/cpu/mpc8xx/fec.c index f2a2c3a..0bc1e5d 100644 --- a/arch/powerpc/cpu/mpc8xx/fec.c +++ b/arch/powerpc/cpu/mpc8xx/fec.c @@ -274,7 +274,7 @@ static int fec_recv (struct eth_device *dev) #if defined(CONFIG_CMD_CDP) if ((rx[0] & 1) != 0 && memcmp ((uchar *) rx, NetBcastAddr, 6) != 0 - && memcmp ((uchar *) rx, NetCDPAddr, 6) != 0) + && !is_cdp_packet((uchar *)rx)) rx = NULL; #endif /* diff --git a/include/net.h b/include/net.h index 8a5b09f..453231b 100644 --- a/include/net.h +++ b/include/net.h @@ -356,8 +356,6 @@ extern uchar NetEtherNullAddr[6]; extern ushort NetOurVLAN; /* Our VLAN */ extern ushort NetOurNativeVLAN; /* Our Native VLAN */ -extern const uchar NetCDPAddr[6]; /* Ethernet CDP address */ - extern int NetState; /* Network loop state */ #define NETLOOP_CONTINUE 1 #define NETLOOP_RESTART 2 @@ -387,6 +385,16 @@ extern IPaddr_t NetPingIP; /* the ip address to ping */ /* when CDP completes these hold the return values */ extern ushort CDPNativeVLAN; /* CDP returned native VLAN */ extern ushort CDPApplianceVLAN; /* CDP returned appliance VLAN */ + +/* + * Check for a CDP packet by examining the received MAC address field + */ +static inline int is_cdp_packet(const uchar *et_addr) +{ + extern const uchar NetCDPAddr[6]; + + return memcmp(et_addr, NetCDPAddr, 6) == 0; +} #endif #if defined(CONFIG_CMD_SNTP) diff --git a/net/net.c b/net/net.c index 4cd5a0a..8624db0 100644 --- a/net/net.c +++ b/net/net.c @@ -1099,7 +1099,7 @@ NetReceive(uchar *inpkt, int len) #if defined(CONFIG_CMD_CDP) /* keep track if packet is CDP */ - iscdp = memcmp(et->et_dest, NetCDPAddr, 6) == 0; + iscdp = is_cdp_packet(et->et_dest); #endif myvlanid = ntohs(NetOurVLAN); -- 1.6.0.2