source: libbsdport/networkconfig-qemu.h @ 28a6f92

Last change on this file since 28a6f92 was 6fa49bd, checked in by Joel Sherrill <joel.sherrill@…>, on Feb 19, 2009 at 7:58:41 PM

2009-02-19 Joel Sherrill <joel.sherrill@…>

  • .cvsignore, networkconfig-qemu.h, bsd_eth_drivers/.cvsignore, bsd_eth_drivers/if_em/.cvsignore, bsd_eth_drivers/if_le/.cvsignore, bsd_eth_drivers/if_pcn/.cvsignore, bsd_eth_drivers/libbsdport/.cvsignore, bsd_eth_drivers/re/.cvsignore: New files.
  • Property mode set to 100644
File size: 8.9 KB
Line 
1/*
2 * Network configuration -- QEMU NOT using DHCP
3 *
4 ************************************************************
5 * EDIT THIS FILE TO REFLECT YOUR NETWORK CONFIGURATION     *
6 * BEFORE RUNNING ANY RTEMS PROGRAMS WHICH USE THE NETWORK! *
7 ************************************************************
8 *
9 *  The dynamic probing is based upon the EPICS network
10 *  configuration file written by:
11 *      W. Eric Norum
12 *      eric.norum@usask.ca
13 *      (306) 966-5394
14 *
15 *  networkconfig.h,v 1.8 2001/08/31 18:11:43 joel Exp
16 */
17
18#ifndef _RTEMS_NETWORKCONFIG_H_
19#define _RTEMS_NETWORKCONFIG_H_
20
21#define USE_LIBBSDPORT
22
23#if defined(USE_LIBBSDPORT)
24  #include <bsp/libbsdport_api.h>
25  #define CONFIGURE_MAXIMUM_TIMERS 10
26#endif
27/*
28 * For TFTP test application
29 */
30#if (defined (RTEMS_USE_BOOTP))
31#define RTEMS_TFTP_TEST_HOST_NAME "BOOTP_HOST"
32#define RTEMS_TFTP_TEST_FILE_NAME "BOOTP_FILE"
33#else
34#define RTEMS_TFTP_TEST_HOST_NAME "XXX.YYY.ZZZ.XYZ"
35#define RTEMS_TFTP_TEST_FILE_NAME "tftptest"
36#endif
37
38/*
39 * For NFS test application
40 *
41 * NFS mount and a directory to ls once mounted
42 */
43#define RTEMS_NFS_SERVER      "192.168.1.210"
44#define RTEMS_NFS_SERVER_PATH "/home"
45#define RTEMS_NFS_LS_PATH     "/mnt/nfstest"
46
47
48
49/*
50 * This file can be copied to an application source dirctory
51 * and modified to override the values shown below.
52 *
53 * The following CPP symbols may be passed from the Makefile:
54 *
55 *   symbol                   default       description
56 *
57 *   NETWORK_TASK_PRIORITY    150           can be read by app from public
58 *                                          var 'gesysNetworkTaskPriority'
59 *   FIXED_IP_ADDR            <undefined>   hardcoded IP address (e.g.,
60 *                                          "192.168.0.10"); disables BOOTP;
61 *                                          must also define FIXED_NETMASK
62 *   FIXED_NETMASK            <undefined>   IP netmask string
63 *                                          (e.g. "255.255.255.0")
64 *   LO_IF_ONLY               <undefined>   If defined, do NOT configure
65 *                                          any ethernet driver but only the
66 *                                          loopback interface.
67 *   MULTI_NETDRIVER          <undefined>   ugly hack; if defined try to probe
68 *                                          a variety of PCI and ISA drivers
69 *                                          (i386 ONLY) use is discouraged!
70 *   NIC_NAME                 <undefined>   Ethernet driver name (e.g. "pcn1");
71 *                                          must also define NIC_ATTACH
72 *   NIC_ATTACH               <undefined>   Ethernet driver attach function
73 *                                          (e.g., rtems_fxp_attach).
74 *                                          If these are undefined then
75 *                                            a) MULTI_NETDRIVER is used
76 *                                               (if defined)
77 *                                            b) RTEMS_BSP_NETWORK_DRIVER_NAME/
78 *                                               RTEMS_BSP_NETWORK_DRIVER_ATTACH
79 *                                               are tried
80 *   MEMORY_CUSTOM            <undefined>   Allocate the defined amount of
81 *                                          memory for mbufs and mbuf clusters,
82 *                                          respectively. Define to a comma ','
83 *                                          separated pair of two numerical
84 *                                          values, e.g: 100*1024,200*1024
85 *   MEMORY_SCARCE            <undefined>   Allocate few memory for mbufs
86 *                                          (hint for how much memory the
87 *                                          board has)
88 *   MEMORY_HUGE              <undefined>   Allocate a lot of memory for mbufs
89 *                                          (hint for how much memory the
90 *                                          board has)
91 *                                          If none of MEMORY_CUSTOM/
92 *                                          MEMORY_SCARCE/MEMORY_HUGE are
93 *                                          defined then a medium amount of
94 *                                          memory is allocated for mbufs.
95 */
96
97#include <rtems/bspIo.h>
98#include <bsp.h>
99#include <rtems/rtems_bsdnet.h>
100
101#if 0
102#ifdef HAVE_CONFIG_H
103#include <config.h>
104#else
105#include "verscheck.h"
106#endif
107#endif
108
109#define MULTI_NETDRIVER
110#define FIXED_IP_ADDR "10.0.2.5"
111#define FIXED_NETMASK "255.255.255.0"
112
113#ifndef NETWORK_TASK_PRIORITY
114#define NETWORK_TASK_PRIORITY   150  /* within EPICS' range */
115#endif
116
117/* make publicily available for startup scripts... */
118const int gesysNetworkTaskPriority = NETWORK_TASK_PRIORITY;
119
120#ifdef  FIXED_IP_ADDR
121#define RTEMS_DO_BOOTP 0
122#else
123#define RTEMS_DO_BOOTP rtems_bsdnet_do_bootp
124#define FIXED_IP_ADDR  0
125#undef  FIXED_NETMASK
126#define FIXED_NETMASK  0
127#endif
128
129#ifdef LO_IF_ONLY
130#undef NIC_NAME
131#elif !defined(NIC_NAME)
132
133#ifdef MULTI_NETDRIVER
134
135#if 0
136  #if RTEMS_VERSION_ATLEAST(4,6,99)
137  #define pcib_init pci_initialize
138  #endif
139#endif
140
141extern int rtems_3c509_driver_attach (struct rtems_bsdnet_ifconfig *, int);
142extern int rtems_fxp_attach (struct rtems_bsdnet_ifconfig *, int);
143extern int rtems_elnk_driver_attach (struct rtems_bsdnet_ifconfig *, int);
144extern int rtems_dec21140_driver_attach (struct rtems_bsdnet_ifconfig *, int);
145
146/* these don't probe and will be used even if there's no device :-( */
147extern int rtems_ne_driver_attach (struct rtems_bsdnet_ifconfig *, int);
148extern int rtems_wd_driver_attach (struct rtems_bsdnet_ifconfig *, int);
149
150static struct rtems_bsdnet_ifconfig isa_netdriver_config[] = {
151  {
152        "ep0", rtems_3c509_driver_attach, isa_netdriver_config + 1,
153  },
154  {
155        "ne1", rtems_ne_driver_attach, 0, irno: 9 /* qemu cannot configure irq-no :-(; has it hardwired to 9 */
156  },
157};
158
159static struct rtems_bsdnet_ifconfig pci_netdriver_config[]={
160  {
161  "fxp1", rtems_fxp_attach, pci_netdriver_config+1,
162  },
163  {
164  "dc1", rtems_dec21140_driver_attach, pci_netdriver_config+2,
165  },
166  #if defined(USE_LIBBSDPORT)
167    {
168      "", libbsdport_netdriver_attach, pci_netdriver_config+3,
169    },
170  #endif
171  {
172  "elnk1", rtems_elnk_driver_attach, isa_netdriver_config,
173  },
174};
175
176static int pci_check(struct rtems_bsdnet_ifconfig *ocfg, int attaching)
177{
178struct rtems_bsdnet_ifconfig *cfg;
179int if_index_pre;
180extern int if_index;
181  if ( attaching ) {
182        cfg = pci_initialize() ?
183                      isa_netdriver_config : pci_netdriver_config;
184  }
185  while ( cfg ) {
186        printk("Probing '%s'", cfg->name); fflush(stdout);
187        /* unfortunately, the return value is unreliable - some drivers report
188         * success even if they fail.
189         * Check if they chained an interface (ifnet) structure instead
190         */
191        if_index_pre = if_index;
192        cfg->attach(cfg, attaching);
193        if ( if_index > if_index_pre ) {
194                /* assume success */
195                printk(" .. seemed to work\n");
196                ocfg->name   = cfg->name;
197                ocfg->attach = cfg->attach;
198                return 0;
199        }
200        printk(" .. failed\n");
201        cfg = cfg->next;
202  }
203  return -1;
204}
205
206#define NIC_NAME   "dummy"
207#define NIC_ATTACH pci_check
208
209#else
210
211#if defined(RTEMS_BSP_NETWORK_DRIVER_NAME)  /* Use NIC provided by BSP */
212# define NIC_NAME   RTEMS_BSP_NETWORK_DRIVER_NAME
213# define NIC_ATTACH RTEMS_BSP_NETWORK_DRIVER_ATTACH
214#endif
215
216#endif /* ifdef MULTI_NETDRIVER */
217
218#endif /* ifdef LO_IF_ONLY */
219
220#ifdef NIC_NAME
221
222extern int NIC_ATTACH();
223
224
225static struct rtems_bsdnet_ifconfig netdriver_config[1] = {{
226  NIC_NAME,  /* name */
227  (int (*)(struct rtems_bsdnet_ifconfig*,int))NIC_ATTACH,  /* attach function */
228  0,            /* link to next interface */
229  FIXED_IP_ADDR,
230  FIXED_NETMASK
231}};
232#else
233#ifndef LO_IF_ONLY
234#warning "NO KNOWN NETWORK DRIVER FOR THIS BSP -- YOU MAY HAVE TO EDIT rtems_netconfig.c"
235#endif
236#endif
237
238extern void rtems_bsdnet_loopattach();
239static struct rtems_bsdnet_ifconfig loopback_config = {
240    "lo0",                          /* name */
241    (int (*)(struct rtems_bsdnet_ifconfig *, int))rtems_bsdnet_loopattach, /* attach function */
242#ifdef NIC_NAME
243    netdriver_config,               /* link to next interface */
244#else
245    0,                              /* link to next interface */
246#endif
247    "127.0.0.1",                    /* IP address */
248    "255.0.0.0",                    /* IP net mask */
249};
250
251struct rtems_bsdnet_config rtems_bsdnet_config = {
252    &loopback_config,         /* Network interface */
253#ifdef NIC_NAME
254    RTEMS_DO_BOOTP,           /* Use BOOTP to get network configuration */
255#else
256    0,                        /* Use BOOTP to get network configuration */
257#endif
258    NETWORK_TASK_PRIORITY,    /* Network task priority */
259#if   defined(MEMORY_CUSTOM)
260    MEMORY_CUSTOM,
261#elif defined(MEMORY_SCARCE)
262    100*1024,                 /* MBUF space */
263    200*1024,                 /* MBUF cluster space */
264#elif defined(MEMORY_HUGE)
265    2*1024*1024,              /* MBUF space */
266    5*1024*1024,              /* MBUF cluster space */
267#else
268    180*1024,                 /* MBUF space */
269    350*1024,                 /* MBUF cluster space */
270#endif
271};
272#endif /* _RTEMS_NETWORKCONFIG_H_ */
Note: See TracBrowser for help on using the repository browser.