
Hi Joe,
On Tue, Mar 27, 2012 at 4:43 PM, Joe Hershberger joe.hershberger@ni.com wrote:
A new non-static function net_init() will initialize buffers and read from the environment. Only update from the env on each entry to NetLoop().
Signed-off-by: Joe Hershberger joe.hershberger@ni.com Cc: Joe Hershberger joe.hershberger@gmail.com Cc: Simon Glass sjg@chromium.org Cc: Mike Frysinger vapier@gentoo.org
Some nits, but:
Acked-by: Simon Glass sjg@chromium.org
Changes for v2: - Unadded explicit parameter name in net.h for NetLoop - Eliminate CamelCase from new functions - Changed null pointer print to an assert
include/net.h | 1 + net/net.c | 44 ++++++++++++++++++++++++++++++-------------- 2 files changed, 31 insertions(+), 14 deletions(-)
diff --git a/include/net.h b/include/net.h index 33570c7..2c47604 100644 --- a/include/net.h +++ b/include/net.h @@ -430,6 +430,7 @@ extern IPaddr_t Mcast_addr; #endif
/* Initialize the network adapter */ +extern void net_init(void); extern int NetLoop(enum proto_t);
/* Shutdown adapters and cleanup */ diff --git a/net/net.c b/net/net.c index 2cfb115..01e7b29 100644 --- a/net/net.c +++ b/net/net.c @@ -267,6 +267,30 @@ static void net_cleanup_loop(void) net_clear_handlers(); }
+void net_init(void) +{
- static int first_call = 1;
- if (first_call) {
- /*
- * Setup packet buffers, aligned correctly.
- */
- int i;
blank line after
- NetTxPacket = &PktBuf[0] + (PKTALIGN - 1);
- NetTxPacket -= (ulong)NetTxPacket % PKTALIGN;
- for (i = 0; i < PKTBUFSRX; i++)
- NetRxPackets[i] = NetTxPacket + (i+1)*PKTSIZE_ALIGN;
Spaces around operators
- ArpInit();
- net_clear_handlers();
- /* Only need to setup buffer pointers once. */
- first_call = 0;
- }
- NetInitLoop();
+}
/**********************************************************************/ /* * Main network processing loop. @@ -274,28 +298,15 @@ static void net_cleanup_loop(void)
int NetLoop(enum proto_t protocol) {
- int i;
bd_t *bd = gd->bd; int ret = -1;
NetRestarted = 0; NetDevExists = 0;
- NetTxPacket = NULL;
NetTryCount = 1;
- ArpInit();
- net_clear_handlers();
- /*
- * Setup packet buffers, aligned correctly.
- */
- NetTxPacket = &PktBuf[0] + (PKTALIGN - 1);
- NetTxPacket -= (ulong)NetTxPacket % PKTALIGN;
- for (i = 0; i < PKTBUFSRX; i++)
- NetRxPackets[i] = NetTxPacket + (i+1)*PKTSIZE_ALIGN;
bootstage_mark_name(BOOTSTAGE_ID_ETH_START, "eth_start");
- net_init();
eth_halt(); eth_set_current(); if (eth_init(bd) < 0) { @@ -627,6 +638,11 @@ NetSendUDPPacket(uchar *ether, IPaddr_t dest, int dport, int sport, int eth_hdr_size; int pkt_hdr_size;
- /* make sure the NetTxPacket is initialized (NetInit() was called) */
- assert(NetTxPacket != NULL);
- if (NetTxPacket == NULL)
- return -1;
/* convert to new style broadcast */ if (dest == 0) dest = 0xFFFFFFFF; -- 1.6.0.2