]> git.sur5r.net Git - u-boot/blobdiff - include/net.h
MIPS: board.c: move extern declarations to u-boot-mips.h
[u-boot] / include / net.h
index 128c5ea465d62e4d29964c3ea6bcb3a8ec4db187..a092f291bbcd643b8eda122b10b0509d1fd4b719 100644 (file)
 #include <asm/cache.h>
 #include <asm/byteorder.h>     /* for nton* / ntoh* stuff */
 
+#define DEBUG_LL_STATE 0       /* Link local state machine changes */
+#define DEBUG_DEV_PKT 0                /* Packets or info directed to the device */
+#define DEBUG_NET_PKT 0                /* Packets on info on the network at large */
+#define DEBUG_INT_STATE 0      /* Internal network state changes */
 
 /*
  *     The number of receive packet buffers, and the required packet buffer
@@ -391,17 +395,11 @@ extern uchar              NetEtherNullAddr[6];
 extern ushort          NetOurVLAN;             /* Our VLAN */
 extern ushort          NetOurNativeVLAN;       /* Our Native VLAN */
 
-extern int             NetState;               /* Network loop state */
-#define NETLOOP_CONTINUE       1
-#define NETLOOP_RESTART                2
-#define NETLOOP_SUCCESS                3
-#define NETLOOP_FAIL           4
-
 extern int             NetRestartWrap;         /* Tried all network devices */
 
 enum proto_t {
        BOOTP, RARP, ARP, TFTPGET, DHCP, PING, DNS, NFS, CDP, NETCONS, SNTP,
-       TFTPSRV, TFTPPUT
+       TFTPSRV, TFTPPUT, LINKLOCAL
 };
 
 /* from net/net.c */
@@ -442,6 +440,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 */
@@ -455,6 +454,7 @@ extern int  NetEthHdrSize(void);
 
 /* Set ethernet header; returns the size of the header */
 extern int NetSetEther(uchar *, uchar *, uint);
+extern int net_update_ether(struct ethernet_hdr *et, uchar *addr, uint prot);
 
 /* Set IP header */
 extern void net_set_ip_header(uchar *pkt, IPaddr_t dest, IPaddr_t source);
@@ -466,16 +466,37 @@ extern int        NetCksumOk(uchar *, int);       /* Return true if cksum OK */
 extern uint    NetCksum(uchar *, int);         /* Calculate the checksum */
 
 /* Callbacks */
-extern rxhand_f *NetGetHandler(void);          /* Get RX packet handler */
-extern void    NetSetHandler(rxhand_f *);      /* Set RX packet handler */
+extern rxhand_f *net_get_udp_handler(void);    /* Get UDP RX packet handler */
+extern void net_set_udp_handler(rxhand_f *);   /* Set UDP RX packet handler */
+extern rxhand_f *net_get_arp_handler(void);    /* Get ARP RX packet handler */
+extern void net_set_arp_handler(rxhand_f *);   /* Set ARP RX packet handler */
 extern void net_set_icmp_handler(rxhand_icmp_f *f); /* Set ICMP RX handler */
 extern void    NetSetTimeout(ulong, thand_f *);/* Set timeout handler */
 
-/* Transmit "NetTxPacket" */
-extern void NetSendPacket(uchar *, int);
+/* Network loop state */
+enum net_loop_state {
+       NETLOOP_CONTINUE,
+       NETLOOP_RESTART,
+       NETLOOP_SUCCESS,
+       NETLOOP_FAIL
+};
+static inline void net_set_state(enum net_loop_state state)
+{
+       extern enum net_loop_state net_state;
+
+       debug_cond(DEBUG_INT_STATE, "--- NetState set to %d\n", state);
+       net_state = state;
+}
+
+/* Transmit a packet */
+static inline void NetSendPacket(uchar *pkt, int len)
+{
+       (void) eth_send(pkt, len);
+}
 
 /*
- * Transmit UDP packet, performing ARP request if needed
+ * Transmit "NetTxPacket" as UDP packet, performing ARP request if needed
+ *  (ether will be populated)
  *
  * @param ether Raw packet buffer
  * @param dest IP address to send the datagram to
@@ -483,7 +504,7 @@ extern void NetSendPacket(uchar *, int);
  * @param sport Source UDP port
  * @param payload_len Length of data after the UDP header
  */
-extern int     NetSendUDPPacket(uchar *ether, IPaddr_t dest, int dport,
+extern int NetSendUDPPacket(uchar *ether, IPaddr_t dest, int dport,
                        int sport, int payload_len);
 
 /* Processes a received packet */