diff options
| author | Rafal Jaworowski <raj@semihalf.com> | 2007-12-27 18:19:02 +0100 | 
|---|---|---|
| committer | Ben Warren <biggerbadderben@gmail.com> | 2008-01-03 21:36:50 -0500 | 
| commit | f85b60710571b37293d2233933b76e2aa3db5635 (patch) | |
| tree | ab517f6280b1d126b0f9dfe53a5496623d63a26f /net/net.c | |
| parent | 5c740711f0ea5b51414b341b71597c4a0751be74 (diff) | |
| download | olio-uboot-2014.01-f85b60710571b37293d2233933b76e2aa3db5635.tar.xz olio-uboot-2014.01-f85b60710571b37293d2233933b76e2aa3db5635.zip | |
Introduce new eth_receive routine
The purpose of this routine is receiving a single network frame, outside of
U-Boot's NetLoop(). Exporting it to standalone programs that run on top of
U-Boot will let them utilise networking facilities. For sending a raw frame
the already existing eth_send() can be used.
The direct consumer of this routine is the newly introduced API layer for
external applications (enabled with CONFIG_API).
Signed-off-by: Rafal Jaworowski <raj@semihalf.com>
Signed-off-by: Piotr Kruszynski <ppk@semihalf.com>
Signed-off-by: Ben Warren <biggerbadderben@gmail.com>
Diffstat (limited to 'net/net.c')
| -rw-r--r-- | net/net.c | 10 | 
1 files changed, 10 insertions, 0 deletions
| @@ -137,6 +137,9 @@ uchar		NetBcastAddr[6] =	/* Ethernet bcast address		*/  			{ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };  uchar		NetEtherNullAddr[6] =  			{ 0, 0, 0, 0, 0, 0 }; +#ifdef CONFIG_API +void		(*push_packet)(volatile void *, int len) = 0; +#endif  #if defined(CONFIG_CMD_CDP)  uchar		NetCDPAddr[6] =		/* Ethernet bcast address		*/  			{ 0x01, 0x00, 0x0c, 0xcc, 0xcc, 0xcc }; @@ -1161,6 +1164,13 @@ NetReceive(volatile uchar * inpkt, int len)  	if (len < ETHER_HDR_SIZE)  		return; +#ifdef CONFIG_API +	if (push_packet) { +		(*push_packet)(inpkt, len); +		return; +	} +#endif +  #if defined(CONFIG_CMD_CDP)  	/* keep track if packet is CDP */  	iscdp = memcmp(et->et_dest, NetCDPAddr, 6) == 0; |