summaryrefslogtreecommitdiffstats
path: root/bsd_eth_drivers/if_pcn/README.rtems
blob: ab8ba09606f071a0b025486775c07a29e14472c3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
RTEMS PORT OF THE 'pcn' ETHERNET DRIVER
=======================================

This is a port of the FreeBSD 'pcn' driver as of
2007/7/17 (checked out from FreeBSD/head on that date).

SUPPORTED BSPs:
- you need 'libbsdport' which in turn needs 'libbspExt'
  These work for i386/pc386 and powerpc/new-exception-processing
  BSPs, i.e., the BSP must implement <rtems/pci.h> and <rtems/irq.h>.

USAGE:
- to attach this driver:
  *	define a NULL terminated list with all libbsdport supported
	drivers you want to include with your application:

	extern driver_t libbsdport_pcn_driver;

	driver_t *libbsdport_netdriver_table[] = {
		&libbsdport_pcn_driver,
		/* other drivers here or upstream of 'pcn' if they support
		 * the same hardware but are preferred.
		 */
		0
	};

  * specify libbsdport_netdriver_attach for the 'attach' function
	pointer in struct rtems_bsdnet_ifconfig.

  * use the 'name' field in struct rtems_bsdnet_ifconfig to filter
    drivers and device instances:

         <driver_name><instance>

    either may be omitted which means that the next available
	driver/hardware device is to be used. Here are a few examples:

	     ""     /* use first device found supported by any driver in the
		         * libbsdport_driver_table[].
			     */

	     "pcn2" /* use second device supported by the 'pcn' driver */ 

	Notes: Counting instances begins with 1 (not 0).
	       Consult libbsdport/README for more information.

KNOWN ISSUES:
- 'ignore_broadcast' and 'mtu' settings from
  struct rtems_bsdnet_ifconfig are ignored. I haven't seen 
  many drivers that honour 'ignore_broadcast' and 'mtu' can be
  set using a ioctl(). I'm trying to keep changes to BSD sources
  minimal...
- ring sizes are restricted fixed to hardcoded size.
- Only the internal phy of the 973/975 chips are supported
  and will allow SIOCGIFMEDIA/SIOCSIFMEDIA to work. I don't know
  what happens with other chips or external phys.
  Probably, the factory-default setup should work with autonegotiation
  but the ioctls wont. YMMV.

OTHER NOTES:
- you can use the (more generic) 'le' driver for the 79C971
  and upwards chips, too, but 'pcn' supposedly uses more advanced
  features of these chips.

TESTED WITH:
  Technobox 10/100-TX Ethernet PMC (AMD Am79C973 chip)

TESTED ON:
  rtems-4.7
    powerpc/beatnik (motorola MVME5500 and MVME6100 VME boards)
	i386/pc686      (concurrent technologies PP410 compact PCI)

T.S, 200707