opnsense-src/sys
Bill Paul b078a935b6 Overhaul the ThunderLAN driver. This update includes the following
changes:

- Cleaned up register access macros so that they work like the XL
  driver macros (you can switch from PIO to memory-mapped mode
  using a single #define -- default is still memory mapped mode).
  The old 'struct overlayed onto the memory mapped register space'
  cruft has been removed.

- Improved multicast filter code. The ThunderLAN has four entry
  perfect filter table in addition to the 64-bit hash table: we need
  one of the perfect filter entries for the station address, but we
  can use the other three for multicast filtering. We arrange to put
  the first three multicast group addresses in the perfect filter
  slots so that commonly joined groups like the all hosts group and
  the all routers group can be filtered without using up bits in the
  hash table.

  Note: in FreeBSD 3.0, multicast groups are stored in a doubly
  linked list, however new entries are added at the head of the list
  (thereby pushing existing entries down towards the tail). We want
  to update the filter starting from the oldest entry to the newest
  since the all hosts group is always joined first. This means we
  really want to start from the tail of the list, not the head, but
  to find the tail we first have to traverse the list all the way to
  the end and then add entries working backwards. This is a bit of a
  kludge and could be inefficient if the list is long.

- Cleaned up autonegotiation code: tl_autoneg() wasn't always setting
  modes correctly.

- Cleaned up ifmedia update and status routines as well.

- Added tl_hardreset() routine to initialize the internal PHY according
  to the ThunderLAN manual.

- Did away with the kludge where PHYs were treated as separate logical
  interfaces. This didn't really work, especially in the case of the
  newer Olicom 2326 adapters which use a Micro Linear ML6692 PHY which
  provides only 100Mbps support, relying on the internal PHY for 10Mbps
  support (both PHYs share the RJ45 port, with the 6692 doing all the
  autonegotiation work). This kludge resulted from my misunderstanding
  of the operation of the Compaq Netelligent Dual Port card (the tlan
  manual mentions multiple channels, but in a different context; this
  got me a little confused). The driver has been reported to work
  correctly with the dual port card.

- Added dio_getbit/dio_setbit/dio_read/dio_write functions which carefully
  set the ThunderLAN's indirectly accessed internal registers. This makes
  the EEPROM reading code more reliable.

Hopefully I won't have to touch this again before 3.0 goes out the door.
I plan to import the 2.2.x version sometime this week.

Approved-by: jkh
1998-09-23 05:08:54 +00:00
..
alpha Add splsoftvm(). 1998-09-19 09:29:40 +00:00
amd64 Attempt to work around a bug in the previous commit related to 1998-09-20 19:56:28 +00:00
boot Make the alpha bootstrap build again, fix some warning and change sdboot to daboot. 1998-09-20 21:46:19 +00:00
cam Treat not ready errors (asc 0x04) as non-fatal errors for attach. We 1998-09-23 03:17:08 +00:00
coda Finish conversion of cfs -> coda 1998-09-13 13:57:59 +00:00
compat Argh! *Now* the correct 3.0 fix is committed. 1998-08-31 10:53:33 +00:00
compile
conf Sync with sys/i386/conf/Makefile.i386 revision 1.124. 1998-09-22 16:11:08 +00:00
contrib/softupdates Handle the case of moving a directory onto the top of a sibling's 1998-08-12 20:46:47 +00:00
ddb Update to work with the new elf headers. 1998-08-17 08:06:31 +00:00
dev dpt.h: 1998-09-22 04:55:07 +00:00
fs Remove the SLICE code. 1998-09-14 19:56:42 +00:00
geom Update system to new device statistics code. 1998-09-15 08:15:30 +00:00
gnu Fixed the usual missing permissions checks in mount(). As for cd9660, 1998-09-09 20:21:18 +00:00
i386 Post C-day sync with GENERIC. 1998-09-22 11:13:14 +00:00
isa Attempt to work around a bug in the previous commit related to 1998-09-20 19:56:28 +00:00
isofs/cd9660 Remove the SLICE code. 1998-09-14 19:56:42 +00:00
kern Fix precedence bug, so that kernel dump works. 1998-09-20 16:50:31 +00:00
libkern Converted rcsid to $Id$ again. There shouldn't be any rcsids in the kernel. 1998-08-17 19:26:37 +00:00
miscfs various nits that didn't make it through the brucefilter. 1998-09-12 20:21:54 +00:00
modules Add support for glibc consumers using the new ld-linux.so.2 linker. 1998-09-17 22:08:34 +00:00
msdosfs Remove unused variable. 1998-09-13 15:40:31 +00:00
net fix an mbuf leak when using ipfw to filger bridged packets 1998-09-18 20:55:50 +00:00
netatalk Fixed printf format errors. 1998-08-17 01:05:25 +00:00
netatm Two patches from the HARP people: 1998-09-17 09:35:02 +00:00
netinet Fix the bind security fix introduced in rev 1.38 to work with multicast: 1998-09-17 18:42:16 +00:00
netipx Yow! Completely change the way socket options are handled, eliminating 1998-08-23 03:07:17 +00:00
netkey Fixed printf format errors. 1998-08-17 01:05:25 +00:00
netnatm This commit fixes various 64bit portability problems required for 1998-06-07 17:13:14 +00:00
netns Make INET a proper option. 1998-01-08 23:42:31 +00:00
nfs Removed statically configured mount type numbers (MOUNT_*) and all 1998-09-07 13:17:06 +00:00
nfsclient Removed statically configured mount type numbers (MOUNT_*) and all 1998-09-07 13:17:06 +00:00
nfsserver Made unloading of the nfs LKM sort of work. This is mainly to test 1998-09-07 05:42:15 +00:00
pc98 Sync with sys/i386/isa/clock.c revision 1.127. 1998-09-22 16:12:00 +00:00
pccard Make PCIC_RESUME_RESET an proper option. 1998-09-08 18:09:51 +00:00
pci Overhaul the ThunderLAN driver. This update includes the following 1998-09-23 05:08:54 +00:00
posix4 Set PAGE_SIZE for _SC_PAGESIZE sysconf(). 1998-06-01 21:54:43 +00:00
powerpc Add new functions fill_fpregs() and set_fpregs(), like fill_regs() 1998-09-14 22:43:40 +00:00
rpc
sys Null-terminate the message for a warning symbol in the __warn_references() 1998-09-20 03:24:55 +00:00
tools VOP_STRATEGY grows an (struct vnode *) argument 1998-07-04 20:45:42 +00:00
ufs Restore pre-v1.44 behavior: always copy modified in-core inode to disk 1998-09-15 14:45:28 +00:00
vm Removed unused file. 1998-09-20 06:28:10 +00:00
Makefile Add support for MACHINE=pc98. This leaves a single legacy entry for 1998-09-05 08:27:56 +00:00