]> git.karo-electronics.de Git - karo-tx-uboot.git/blobdiff - include/net.h
* Allow crc32 to be used at address 0x000
[karo-tx-uboot.git] / include / net.h
index 396f36e6df7023affbbe9929dc79938e9393ba11..dd8d378045110c1f18e930f36bb42d9305fd8da3 100644 (file)
 #ifndef __NET_H__
 #define __NET_H__
 
-#if !defined(CONFIG_NET_MULTI) && defined(CONFIG_8xx)
+#if defined(CONFIG_8xx)
 #include <commproc.h>
-#if defined(FEC_ENET) || defined(SCC_ENET)
+# if !defined(CONFIG_NET_MULTI)
+#  if defined(FEC_ENET) || defined(SCC_ENET)
+#   define CONFIG_NET_MULTI
+#  endif
+# endif
+#endif /* CONFIG_8xx */
+
+#if defined(CONFIG_MPC5XXX)
+# if !defined(CONFIG_NET_MULTI)
+#  if defined(CONFIG_MPC5XXX_FEC)
+#   define CONFIG_NET_MULTI
+#  endif
+# endif
+#endif /* CONFIG_MPC5XXX */
+
+#if !defined(CONFIG_NET_MULTI) && defined(CONFIG_8260)
+#include <config.h>
+#if defined(CONFIG_ETHER_ON_FCC)
+#if defined(CONFIG_ETHER_ON_SCC)
+#error "Ethernet not correctly defined"
+#endif /* CONFIG_ETHER_ON_SCC */
 #define CONFIG_NET_MULTI
-#endif
-#endif
+#if (CONFIG_ETHER_INDEX == 1)
+#define        CONFIG_ETHER_ON_FCC1
+# define CFG_CMXFCR_MASK1      CFG_CMXFCR_MASK
+# define CFG_CMXFCR_VALUE1     CFG_CMXFCR_VALUE
+#elif (CONFIG_ETHER_INDEX == 2)
+#define        CONFIG_ETHER_ON_FCC2
+# define CFG_CMXFCR_MASK2      CFG_CMXFCR_MASK
+# define CFG_CMXFCR_VALUE2     CFG_CMXFCR_VALUE
+#elif (CONFIG_ETHER_INDEX == 3)
+#define        CONFIG_ETHER_ON_FCC3
+# define CFG_CMXFCR_MASK3      CFG_CMXFCR_MASK
+# define CFG_CMXFCR_VALUE3     CFG_CMXFCR_VALUE
+#endif /* CONFIG_ETHER_INDEX */
+#endif /* CONFIG_ETHER_ON_FCC */
+#endif /* !CONFIG_NET_MULTI && CONFIG_8260 */
+
 #include <asm/byteorder.h>     /* for nton* / ntoh* stuff */
 
 
  *
  */
 
-#ifndef        CONFIG_EEPRO100
-#define PKTBUFSRX      4
+#ifdef CFG_RX_ETH_BUFFER
+# define PKTBUFSRX     CFG_RX_ETH_BUFFER
 #else
-#define PKTBUFSRX      8
+# define PKTBUFSRX     4
 #endif
 
 #define PKTALIGN       32
@@ -38,7 +72,6 @@
 typedef ulong          IPaddr_t;
 
 
-
 /*
  * The current receive packet handler.  Called with a pointer to the
  * application packet, and a protocol type (PORT_BOOTPC or PORT_TFTP).
@@ -51,8 +84,6 @@ typedef void  rxhand_f(uchar *, unsigned, unsigned, unsigned);
  */
 typedef void   thand_f(void);
 
-#ifdef CONFIG_NET_MULTI
-
 #define NAMESIZE 16
 
 enum eth_state_t {
@@ -81,7 +112,6 @@ extern int eth_register(struct eth_device* dev);/* Register network device   */
 extern void eth_try_another(int first_restart);        /* Change the device            */
 extern struct eth_device *eth_get_dev(void);   /* get the current device MAC   */
 extern void eth_set_enetaddr(int num, char* a);        /* Set new MAC address          */
-#endif
 
 extern int eth_init(bd_t *bis);                        /* Initialize the device        */
 extern int eth_send(volatile void *packet, int length);           /* Send a packet     */
@@ -161,9 +191,9 @@ typedef struct
 #   define RARPOP_REPLY            4           /* Response to previous request */
 
        /*
-         * The remaining fields are variable in size, according to
-         * the sizes above, and are defined as appropriate for
-         * specific hardware/protocol combinations.
+        * The remaining fields are variable in size, according to
+        * the sizes above, and are defined as appropriate for
+        * specific hardware/protocol combinations.
         */
        uchar           ar_data[0];
 #if 0
@@ -179,7 +209,9 @@ typedef struct
 /*
  * ICMP stuff (just enough to handle (host) redirect messages)
  */
+#define ICMP_ECHO_REPLY                0       /* Echo reply                   */
 #define ICMP_REDIRECT          5       /* Redirect (change route)      */
+#define ICMP_ECHO_REQUEST      8       /* Echo request                 */
 
 /* Codes for REDIRECT. */
 #define ICMP_REDIR_NET         0       /* Redirect Net                 */
@@ -203,7 +235,6 @@ typedef struct icmphdr {
 } ICMP_t;
 
 
-
 /*
  * Maximum packet size; used to allocate packet storage.
  * TFTP packets can be 524 bytes + IP header + ethernet header.
@@ -271,11 +302,15 @@ extern int                NetState;               /* Network loop state           */
 extern int             NetRestartWrap;         /* Tried all network devices    */
 #endif
 
-typedef enum { BOOTP, RARP, ARP, TFTP, DHCP } proto_t;
+typedef enum { BOOTP, RARP, ARP, TFTP, DHCP, PING, DNS } proto_t;
 
 /* from net/net.c */
 extern char    BootFile[128];                  /* Boot File name               */
 
+#if (CONFIG_COMMANDS & CFG_CMD_PING)
+extern IPaddr_t        NetPingIP;                      /* the ip address to ping               */
+#endif
+
 /* Initialize the network adapter */
 extern int     NetLoop(proto_t);
 
@@ -302,6 +337,9 @@ extern void NetSetTimeout(int, thand_f *);  /* Set timeout handler          */
 /* Transmit "NetTxPacket" */
 extern void    NetSendPacket(volatile uchar *, int);
 
+/* Transmit UDP packet, performing ARP request if needed */
+extern int     NetSendUDPPacket(uchar *ether, IPaddr_t dest, int dport, int sport, int len);
+
 /* Processes a received packet */
 extern void    NetReceive(volatile uchar *, int);
 
@@ -352,6 +390,9 @@ static inline void NetCopyLong(ulong *to, ulong *from)
 /* Convert an IP address to a string */
 extern void    ip_to_string (IPaddr_t x, char *s);
 
+/* Convert a string to ip address */
+extern IPaddr_t string_to_ip(char *s);
+
 /* read an IP address from a environment variable */
 extern IPaddr_t getenv_IPaddr (char *);