Commit Graph

371 Commits

Author SHA1 Message Date
Robert Watson
13b203d0d7 Modify device drivers supporting multicast addresses to lock if_addr_mtx
over iteration of their multicast address lists when synchronizing the
hardware address filter with the network stack-maintained list.

Problem reported by:	Ed Maste (emaste at phaedrus dot sandvine dot ca>
MFC after:		1 week
2005-08-03 00:18:35 +00:00
Warner Losh
33d6891bc8 Add support for the DLink DMF650TX Ethernet+56k modem PC Card. This
gets the ethernet part of the card working, while putting appropriate
hooks in place for the modem code.  Other ed based lan/modem combo
cards should be easy to add.  Please send me info on any you'd like to
see support added.

Note: The 650 isn't a strictly conforming multi-function card, so
special support is needed. :-(
2005-07-15 01:54:59 +00:00
Warner Losh
ba8f34770d Add a boatload of new device ids, gleaned from the pcmcia-cs-3.2.8
distribution.  Add the appropriate devices to the man pages.

Obtained from: pcmcia-cs
Approved by: re (scottl)
2005-07-10 02:00:35 +00:00
Warner Losh
ab581af779 Eliminate unused argument in PCMCIA_CARD macro.
Provide a backwards compatible way to have the extra macro by defining
PCCARD_API_LEVEL 5 before including pccarddevs for driver writers that
want/need to have the same driver on 5 and 6 with pccard attachments.

Approved by: re (dwhite)
2005-06-24 14:36:54 +00:00
Brooks Davis
c3f967ce8d Fix four casts of the softc to a struct ifnet.
Hopefully this fixes ed(4) under qemu.  I'm shocked that real hardware
is apparently working with these bugs.

Approved by:	re (ifnet blanket)
Pointy hat:	brooks
2005-06-15 20:23:40 +00:00
Brooks Davis
fc74a9f93a Stop embedding struct ifnet at the top of driver softcs. Instead the
struct ifnet or the layer 2 common structure it was embedded in have
been replaced with a struct ifnet pointer to be filled by a call to the
new function, if_alloc(). The layer 2 common structure is also allocated
via if_alloc() based on the interface type. It is hung off the new
struct ifnet member, if_l2com.

This change removes the size of these structures from the kernel ABI and
will allow us to better manage them as interfaces come and go.

Other changes of note:
 - Struct arpcom is no longer referenced in normal interface code.
   Instead the Ethernet address is accessed via the IFP2ENADDR() macro.
   To enforce this ac_enaddr has been renamed to _ac_enaddr.
 - The second argument to ether_ifattach is now always the mac address
   from driver private storage rather than sometimes being ac_enaddr.

Reviewed by:	sobomax, sam
2005-06-10 16:49:24 +00:00
Warner Losh
591223e66b Use tabs instead of spaces to indent, per style(9)
Noticed by: njl
2005-06-09 18:46:36 +00:00
Warner Losh
7999556019 My abstracting out the MAC reading code to fix pccard broke pci. Add
back the reading of the MAC address in the 'standard' way.

Reported by: Jeremie Le Hen ( jeremie at le-hen dot org )
2005-06-08 23:15:33 +00:00
Yoshihiro Takahashi
99a4a4cabc Remove ifdef PC98. 2005-04-13 13:02:58 +00:00
Warner Losh
538565c4a5 Use BUS_PROBE_DEFAULT for pci probe return value 2005-03-05 18:30:12 +00:00
Warner Losh
d118c9a5fb Belkin F5D5020 is an OEM'd card from RACORE based on the AX88190
chipset.  Add support for this card.  Office Max has them on sale and
I was surprised that we didn't have it in our supported list when I
plugged it in...
2005-02-22 22:07:18 +00:00
Warner Losh
f5e40295aa Add a stratigic newline 2005-02-22 22:03:52 +00:00
Warner Losh
eb01f10be1 Minor style nits missed in earlier passes 2005-02-22 18:58:34 +00:00
Warner Losh
b2948b72e9 MFp4: Optimize in/out macros. Cache the handle and tag in softc and
use them in the macros.  Since the rman_get_bus{tag,handle} transitioned
from macros to function calls, this unpessimizes that conversion.
2005-02-22 05:12:25 +00:00
Warner Losh
b093da40fb Minor optimization of calling enable_16bit. We always have to call it
and error is going to be right for both forks of the if, so just
return that.
2005-02-22 03:37:04 +00:00
Warner Losh
040cba413a Minor style(9)isms. 2005-02-21 07:22:50 +00:00
Warner Losh
57be6dcf4c Fix merging botch I made in last version. 2005-02-20 19:59:29 +00:00
Warner Losh
b38c5039bd Minor optimizations to compile out bits that aren't necessary when
certain options aren't enabled.

Submitted by: Chiharu Shibata-san (chi at bd mbn or jp)
2005-02-20 18:44:45 +00:00
Warner Losh
0bc7d522b1 Minor style(9) tweaks. 2005-02-20 18:39:54 +00:00
Warner Losh
89c8738b67 Correct typo in comment.
Submitted by: Chiharu Shibata-san (chi at bd mbn or jp)
2005-02-20 18:24:09 +00:00
Warner Losh
711c07db68 Fix the support for the ax88[17]90 to print the right type, rather
than the generic ne-2000 string.  This should have no effect on the
actual support of the parts, just reporting what the part was.

Also, rename a few functins and symbols to reflect a more generic
part support that grew out of the early specific support.
2005-02-17 18:15:13 +00:00
Warner Losh
206189067d Move the harvesting of the MAC address out of the generic novell probe
and into the bus front ends.  For ISA and C-BUS cards, we always need
to grab it.  For PC Card, already committed, we need to do some sanity
checking on the data that's in the ROMs before we decide that they are
OK to use.  The PC Card code has already been committed and is
independent of this code (which also has to work on NE-1000 cards,
assuming that those cards still work :-).
2005-02-14 23:00:41 +00:00
Warner Losh
16c52c1000 Move the #defines from edreg to edvar which don't have anything to do
with talking to the hardware.
2005-02-14 22:28:51 +00:00
Warner Losh
b658387fbd o It turns out that most of the ne-2000 cards that I have got real unhappy
with the latest changes.  They actually have valid ROM data at location
  0 of memory, just like a real NE-2000 ISA card.  Use this data, if
  the ROM passes a few basic tests, as an additional source for the MAC
  address.  Prefer the CIS over this source, but have it take precidence
  over falling back to reading the attribtue memory.
o Minor cleanup of a few devices that we match on based on CIS string.
2005-02-14 22:27:03 +00:00
Warner Losh
3302cab184 Rework DL10019/DL10022 support. This tries to reset things in a more
proper way, or at least the same way that NetBSD and Linux do things
(I've been unable to obtain datasheets for these parts to know for
sure).  This has some marginal improvement in the DL10022 and DL10019
cards that I have.  Also, report which type, exactly.

# There's one or two ed cards that I have which still don't work, but I think
# that's due to MII losage on the card that's not presently compensated
# for in the MII drivers.
2005-02-14 06:54:06 +00:00
Warner Losh
f3fe05f878 MFp4: Merge in AX88790 support from my p4 tree. I've had this in my
tree since 2003/02/20, and I recently cleaned it up.  I'd even closed
the PR that I obtained this from Fri Jul 18 23:25:08 MDT 2003 since
I looked at my p4 tree.

PR: 46889
Submitted by: HASEGAWA Tomoki
2005-02-14 06:47:22 +00:00
Warner Losh
f8d201b879 Add some comments in preparation for converting bcopy/bzero to busspace.
Minor style nits.
2005-02-14 06:27:23 +00:00
Warner Losh
1ab733644b MFP4: Optimize the layout of softc somewhat. This groups the u_chars
into larger sections.  I'd like to move to having a flags word, but I
need to make sure that there's no adverse locking problems.
2005-02-14 06:25:06 +00:00
Warner Losh
ec54f56441 Improve the mining of MAC address from the card:
o Add a fallback location for the MAC address.  Most of the early ne2000
  PC Cards were built from the same parts, so most of them have the same
  address in the CIS to grab the MAC from.  Use this address as our
  fallback if we don't find anything better.
o Add printf, in bootverbose, noting the MAC addresses that we find along
  the way.

# Better sanity checking of the MAC address is needed.  Will have to
# investigate using/creating a centralized function to do this as a number
# of other PC Card drivers each have their own ad-hoc tests.
2005-02-12 16:44:15 +00:00
Warner Losh
1d0fc8fda7 Add comment about MAC mining 2005-02-12 08:27:46 +00:00
Warner Losh
c5377c2c88 Really old PCMCIA cards stored the MAC address in the attribute memory
at some offset.  Unlike newer cards, the MAC address wasn't part of
the CIS as a specific FUNCE.  These older cards were having their MAC
address show up as 0:2:4:6:8:a because that's what's in the ROM
locations that would be there in a real ne2000.

This patch allows one to specify the offset for the MAC address for
these cards.  Specify one for the IBM Ethernet II card, as it is one
that has this problem.  One shouldn't specify this unless the MAC
address really isn't in the CIS at all.

Side note: The novell probe likely shouldn't read the MAC address, and
that should be moved to the bus specific attach routine(s), maybe as a
convenience function in if_ed_novell.c.

My IBM Ethernet II (aka Info Mover) now has a believable MAC address.
2005-02-12 00:45:22 +00:00
Warner Losh
d74c567254 Diff reduction with p4. 2005-02-11 07:50:03 +00:00
Warner Losh
bd019eb78c Eliminate the ED_VENDOR_{PCCARD,LINKSYS} types. These cards really
are NOVELL NE2000 with just a tiny quirk that's non vendor specific.
Instead, use the chip_type of DL100XX instead.  This is more inline
with how the AX88190 support was added, and seems a little cleaner.
2005-02-11 06:02:27 +00:00
Warner Losh
f7167d3e91 Move enable/disable 16bit access routines into if_ed. Slightly
pessmize the error recover path through edintr by calling these
functions, rather than expanding it inline.  This error path already
does a lot in it, so an extra function call will be lost in the noise.
It also happens rarely.
2005-02-10 23:48:13 +00:00
Warner Losh
0cfebadeb9 use
while (complicated-expr)
		continune;
in preference to
	while (complicated-expr);

since the code generated is identical, and the former is easier to read,
especially for complicated-expr that reach to the end of the line...
2005-02-10 23:31:27 +00:00
Warner Losh
f2566fc59b Extricate probing of the gwether card (Gateway AT) from the middle of
probing the novell ne[12]000 cards.  It should be its own thing, ala
how we do the dl100xx support doing its own thing at the right time.
For the moment, it is just a function, which makes the mainline of the
generic probe easier to follow.

Also, correct a couple of comments that looked wrong.

# there may be a bug in setting up gwether, in that we set
# sc->rec_page_stop based on memsize, rather than sc->mem_size, so if
# these two are different, then the rec_page_stop will be wrong.  I'm
# hesitant to fix it without real hardware to test with.  Since
# gwether isn't in the hardware list of the man page nor in the commit
# messages, it is hard to know for sure.
2005-02-10 06:09:03 +00:00
Warner Losh
1e379d3696 Remove an ifdef that's been here for a long time. So long, in fact,
that it references a function parameter that's not been passed in for
more than 4 years.

This has been if 0'd since 1994.
2005-02-10 05:34:25 +00:00
Warner Losh
969eaf2179 Break out obscure ISA cards into their own files, as well as ne2000
and wd80x3 support.  Make the obscure ISA cards optional, and add
those options to NOTES on i386 (note: the ifdef around the whole code
is for module building).  Tweak pc98 ed support to include wd80x3 too.
Add goo for alpha too.

The affected cards are the 3Com 3C503, HP LAN+ and SIC (whatever that
is).  I couldn't find any of these for sale on ebay, so they are
untested.  If you have one of these cards, and send it to me, I'll
ensure that you have no future problems with it...

Minor cleanups as well by using functions rather than cut and paste
code for some probing operations (where the function call overhead is
lost in the noise).

Remove use of kvtop, since they aren't required anymore.  This driver
needs to get its memory mapped act together, however, and use bus
space.  It doesn't right now.

This reduces the size of if_ed.ko from about 51k to 33k on my laptop.
2005-02-09 20:03:40 +00:00
Warner Losh
13bf0bf2a8 Since we no longer use kvtop, we no longer need machine/md_var.h 2005-02-09 17:37:53 +00:00
Warner Losh
b3f44d7907 If either ed_probe_Novell or ed_attach returns an error, release the
resources too.
2005-02-09 17:35:13 +00:00
Warner Losh
940e7b9e51 o Remove duplicate LINKSYS ETHERFAST entry.
o The COMBO_ECARD comes in many flavors, it seems, so probe both the DL10019
  and the AX88x90 on it.  Since this seems to work with no ill effects, maybe
  the probing should happen more generally rather than being table driven.
  Need to think more about this.
o Remove PCM100 because it is duplicative (the ETHERFAST is the pcm100 and
  apparently has the same IDs).  It was here for NetBSD because they match
  up an expected MAC address OID, but since we don't bother with that, we
  don't need to be so finely discriminating.
o Minor style nit.
2005-02-09 06:03:36 +00:00
Warner Losh
8a3b3c6288 Remove reference to softc from probe entirely... 2005-02-09 05:55:54 +00:00
Warner Losh
b7baa9d5a2 Minor style cleanup. Get rid of extra {}, extra blank lines and some
continued line indentation.  Should be no functional changes.
2005-02-09 00:50:59 +00:00
Warner Losh
374cde5568 o Remove ifdef PC98, since this file has diverged quite a bit from
if_ed_isa.c, and they seem to not be helpful anymore.
o Fix style issues from de-Pification.
o change from _isa_ to _cbus_ to the largest extent possible to reflect that
  this is really for cbus, not isa.
o Use ANSI function definitions.
o Use ed_clear_memory
o eliminate kvtop
2005-02-09 00:06:12 +00:00
Warner Losh
50f30261e7 No need to bzero softc. 2005-02-08 23:58:38 +00:00
Warner Losh
851a243f68 Convenience function to clear memory of the card, and then check to make
sure that it works by reading back as 0.
2005-02-08 23:57:43 +00:00
Warner Losh
ad6da8a0fc Use ANSI function definitions, tweak a couple of prototypes to match (since
K&R prototypes needed to mismatch in the way that they were mismatched),
rename ds_getmcaf to ed_ds_getmcaf.  Remove a few register keywords.
2005-02-08 06:12:44 +00:00
Warner Losh
c1ed2c9eb2 use fixed types for the calls to ed_pio_readmem, ed_pio_writemem.
Make the special hp versions match the general ones.  Also use fixed
types in the WD80x3_generic probe, and change callers' arrays to
match.  Fix a couple of minor style issues by using newstyle function
definitions in a couple places.
2005-02-08 05:59:43 +00:00
Warner Losh
9d512034e3 Make it possible to unload ed. Move the ed_pccard_detach routine to
if_ed and rename it to ed_detach().  Tell other busses to use this
routine for detach.

Since I don't actually have any non-pccard ed hardware I can test
with, I've only tested with my pccards.

More improvements in this area likely are possible.

Prodded by: rwatson
2005-02-08 05:45:35 +00:00
Warner Losh
442b6e9e8c Fix style bugs introduced in the de__Pification of this code.
Style bug generically noted by: bde
2005-02-08 05:41:54 +00:00