diff options
| -rw-r--r-- | arch/powerpc/cpu/mpc8xx/fec.c | 2 | ||||
| -rw-r--r-- | include/net.h | 12 | ||||
| -rw-r--r-- | 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 984539dbd..b348a98c5 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 8a5b09f25..453231bfb 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) @@ -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); |