Commit Graph

483 Commits

Author SHA1 Message Date
sobomax
213eac1f2c Add new tunable 'net.link.ifqmaxlen' to set default send interface
queue length. The default value for this parameter is 50, which is
quite low for many of today's uses and the only way to modify this
parameter right now is to edit if_var.h file. Also add read-only
sysctl with the same name, so that it's possible to retrieve the
current value.

MFC after:	1 month
2010-05-03 07:32:50 +00:00
jhb
081b0ae5b0 Use a private callout timer to drive the transmit watchdog instead of using
if_watchdog and if_timer.  The driver already contained an optional stats
timer that individual attachments could use to provide a 'tick' event.  The
stats timer only ran if the tick function pointer was non-NULL and the
attachment's tick routine had to call callout_reset(), etc.  Now the driver
always schedules a stat timer and manages the callout_reset() internally.
This timer is used to drive the watchdog and will also call the attachment's
'tick' handler if one is provided.

Tested by:	WATANABE Kazuhiro
2009-11-17 14:23:09 +00:00
rwatson
be5740a255 Use if_maddr_rlock()/if_maddr_runlock() rather than IF_ADDR_LOCK()/
IF_ADDR_UNLOCK() across network device drivers when accessing the
per-interface multicast address list, if_multiaddrs.  This will
allow us to change the locking strategy without affecting our driver
programming interface or binary interface.

For two wireless drivers, remove unnecessary locking, since they
don't actually access the multicast address list.

Approved by:	re (kib)
MFC after:	6 weeks
2009-06-26 11:45:06 +00:00
imp
88921bda01 ifp->if_softc is managed entirely by the driver. We never set it to
NULL or change it.  We initialize it before we set if_ioctl.  It can
therefore never be NULL, and most other drivers don't bother with this
sanity check.
2009-05-13 14:43:26 +00:00
imp
bfd5362e96 Add Surecom EP-427X. 2009-04-24 17:28:12 +00:00
imp
d9f29f24a6 A couple of older Melco cards that missed the transition to newcard 2009-04-22 16:51:01 +00:00
imp
f5200d4262 Add Billionton LNT10TB 2009-04-22 15:57:22 +00:00
imp
f6a24b1488 Add a few more models of AMBICOM cards from data from linux driver and
pccard.conf.
2009-04-22 15:13:20 +00:00
imp
e39b5e087d These were a placeholder and don't belong here. Remove them. 2009-04-22 15:01:08 +00:00
imp
924e20c37b Kill stray bootverbose debug tool.
Submitted by:	juli@
2009-04-22 06:33:26 +00:00
imp
9f03ea6775 Turns out the code improvements I did for the TC5299J support were
anti-improvements and broke support for this part.  Revert the part of
the improvement at fault.
2009-04-22 06:30:24 +00:00
imp
dfdb087397 Sometimes we can call ed_detach() before the mtx has been initialized.
Avoid it if it hasn't been initialized.
2009-04-20 15:19:54 +00:00
imp
dce30a548c Cleanup resource allocation code a bit. Store the rids on the
resources rather than on the softc.  When we allocate resources for PC
Card, if we only get 16 ports, try again to get the others.
2009-04-20 01:19:59 +00:00
imp
1b4076a052 Make sure that the data in the ROM with a valid signature isn't all
0's.  At least one PC Card ASIC does this...
2009-04-18 04:45:02 +00:00
imp
f074d448cb Add GVP NIC 2000P and New Media Livewire. Also New Media LanSurfer
doesn't have a function type of network, so add a quirk for that...
2009-04-18 04:37:53 +00:00
imp
fa43940cbb Establish the interrupt handler AFTER we successfully attach. We need
to do this in case we have a shared interrupt that fires during the
attach process....
2009-04-18 03:10:28 +00:00
imp
f2f5ef69b6 Remove debug write accidentally left in. 2009-04-18 03:02:44 +00:00
imp
6dc80f8815 Don't specify a hint, since it isn't needed. 2009-04-10 18:46:46 +00:00
imp
96241b5a9b Fix comment
Submitted by:	danfe@
2009-04-10 17:34:30 +00:00
imp
0bbc614d94 Improvements for TC5299J MII support. 2009-04-10 16:12:00 +00:00
imp
36ea3abd82 The D-Link DE-650 isn't tagged as a network card, so allow it to
attach anyway.
Add a comment about a 'common' mfg/prod pair that's used in a very
large array of different cards.
2009-04-10 15:33:47 +00:00
imp
8fd508e987 Fix some comments. 2009-04-10 15:30:19 +00:00
imp
0ab5dccb30 No need to check for chip type here. 2009-04-10 15:18:03 +00:00
imp
c17f84e6b8 More chip types, and fix a comment. 2009-04-07 17:06:06 +00:00
imp
74bdada627 Fix a comment to match the code. 2009-04-07 16:15:59 +00:00
imp
22f869fd65 Remove DL10019 workaround, since the code it calls isn't quite ready. 2009-04-07 15:44:50 +00:00
imp
7fcd8ddb86 Move tick to end of file for better code references. 2009-04-07 15:43:34 +00:00
imp
fc993203a0 The DL100xx cards have 24k of packet memory, not 16k. Use it for them
and update comments about original patches doing this and it not
working.  It works for both the DL10019 and DL10022 based cards that I
have.  It really helps the DL10019 cards, since they were using 8k
instead of the normal 16k that regular NE-2000 cards help.

# Note to self: need to provide a common routine to setup memory
# parameters.
2009-04-07 15:40:38 +00:00
imp
71fd69d9e5 Apply generic media stuff to pccard case too, when we aren't using miibus
for this.
2009-04-07 15:36:02 +00:00
imp
baab46d5cc Minor fixes to comments about media autoselect. 2009-04-07 15:34:26 +00:00
imp
9d62ffa0f2 Provide a generic ifmedia set of routines as a fallback. The
DP8390-based cards have no generic way of reporting status of the link
or setting the media type.  Some specific versions of these cards do,
however, allow for this, and we already support some of them.  Make
the 'ed' experience more uniform by providing "autoselect" as the
meida and status "active" always.  This won't affect the chips that
provide more specific details.
2009-04-07 05:41:38 +00:00
imp
fda8fbfa9c Remove more debug... 2009-04-03 02:28:11 +00:00
imp
70d654efaf Retire two flags that haven't been used since OLDCARD was retired
(well, since before OLDCARD was retired, since I removed their use
somewhat before that).
2009-04-02 19:27:56 +00:00
imp
2742d967dd Kill debug that crept in. 2009-04-02 18:11:21 +00:00
imp
bc9d8e5730 Minor tweaks in the names to match the chips more closely. 2009-04-02 18:02:00 +00:00
imp
08539c697d Minor DLINK DL100xx support tweaks:
The DIROUT bit difference between the 19 and 22 is annoying.  We can
set both bits on both parts without ill effect.  Use this trick to
simplify the code.

The DELAYS in the MII bus bit-bang code for the DL100xx parts aren't
needed.  Eliminate them.
2009-04-02 17:15:49 +00:00
imp
f855ef0e53 The AX88190 has 64k of external SRAM, of which 62k can be used for
packet data.  However, the AX88190A moves this on-chip and reduces it
to the more traditional 16k from 16k-32k.  The AX88790 follows the
'190A.  Probe memory above 32k to see which flavor of the '190 we have
and use the extra memory if we have it.

Eliminate the kludgy read eeprom for the ID code.  It really is just a
memory read at location 0x400, so just use that instead.  Makes the
code easier to understand as well as eliminates some magic numbers.
2009-04-02 17:08:54 +00:00
imp
d14c3edf27 Force an autonegotiation at attach time for all the attached PHYs for
ed cards.  There's a number of minor nits in a lot of the PHYs on the
PC Cards that use the Axis AX88190 or DLink DL10019 and DL10022 chips.
Forcing the autonegotiation doesn't seem to cause problems on the
cards that have sane PHYs, but makes several cards I have work without
further workarounds.

I'm not 100% sure that kicking the PHY and resetting them is the right
thing to do on the media change callback.  Other NICs seem to need
this and do similar things.
2009-04-02 16:58:45 +00:00
imp
92eaedec81 Add additional data on the MIIBUS WTF that I committed earlier. 2009-03-31 19:23:59 +00:00
imp
d11d06afca It turns out that the initialization is required since it sets up the
readout of the MAC address.
The 10ms delay was really needed.  Ooops.
2009-03-31 19:20:03 +00:00
imp
57b7d21e6f o Minor tweaks to the AX88x90 probe routine, mostly related to comments.
o Don't run through the register initialization in the read mac routine
  for the AX88x90.  It duplicates other stuff that we do.
o Eliminate the 10ms delay after we reset the AX88x90.  We already wait for
  the appropriate bits to indicate reset is done.
2009-03-31 18:25:09 +00:00
imp
9b2b26a623 Go back to filtering all PHY addresses above 16 since at least two
cards still have issues with them.  Maybe this is a silicon rev?  In
any case, doing the filtering only for the AX88790 for the moment.
2009-03-31 02:50:41 +00:00
imp
1693b22055 Hmmmm... This can't be right... But it looks like the DL100xx chips
don't have one of the clock cycles (the turn cycle) that the AX88x90
chips have.  Make this conditional.  But this seems totally crazy and
can't possibly be right.  Commit the fix for the moment until I can
explore this mystery more deeply.

On the plus side, the DL10022-based cards I have (D-Link DEF-670TXD
and SMC8040TX) work after this fix.
2009-03-31 01:59:47 +00:00
imp
862e6ac6b8 Two fixes:
(1) Delete all children when detaching to keep from adding a phy each
    driver reload.
(2) All AX88x90 chips have the RST issue.
2009-03-30 17:25:56 +00:00
imp
e9400557a5 This is a major reworking of the AX88x90 support.
o Introduce new chip_type AX88790.  There's a few places we need to know the
  exact chip for workaronds.
o Explain the AX88190 workaround for the ISR bits being stuck, and don't
  apply them to the AX88790.  The datasheet says the bits are fixed, and
  experience confirms.
o Fix mii bit-bang read code to read and discard the 'floating' bit.
o Remove empty ed_pccard_ax88x90_mii_reset routine
o Report error from mii_phy_probe
o Don't use ed_probe_Novel_generic for ax88x90 chips.  It puts them into
  an odd state sometimes.  Instead, use a more stream-lined version that
  avoids the trouble spots.  This was copied and tweaked from the original.
o Move chip reset into its own routine.
o Minor code optimiation on getting MAC address
o Add code for coping with AX88790 cards that are in power down state and
  need to be kicked before the PHY registers for the internal phy read right.
o Remove ugly cap of PHYs at 17.
o For AX88790, we need to set a special bit for accessig phy 16 (the internal
  phy) and clear it for all others according to a chip erratum.
o streamline the bit-bang code for AX88x90: the delays aren't needed according
  to the datasheet timing diagrams and also the Linux driver
o Fix minor bit definition for direction bit.
o Generally: Some comments reformatted
o Only try the toshiba probe on cards labelled as toshiba

# From another Akihabara card (this one from a few years ago from a
# friend in Japan).  Fix the Corega FEther II PCC-TXD.  This one is
# still on sale new, as of a few weeks ago.  should fix all other AX88x90
# based cards, but I have some testing left to finish on my collection...
2009-03-30 16:15:06 +00:00
imp
364bd8e1bf When reading via memory, read in (amount + 1) / 2 (to properly round
up) rather than amount + 1 / 2, which is the same as amount, or 2x too
many words which leads to data corruption.

# This fixes the sbdrop panics I was seeing with the Toshiba LANCT00A.
2009-03-28 06:22:11 +00:00
imp
6485024301 It turns out that the Toshiba LANCT00A PC Card is really like the
Toshiba PCETC ISA card, and even has the same board type code in the
card ID (0x14).  So, for this card, call ed_probe_WD80x3_generic after
setting things up apropriately.  This makes the card attach and kinda
work (I'm seeing panics in sbdrop).  Since history has shown that the
WD80x3 probe routine is dangerous, only do it for this card.  Also,
disable the memory range check to make sure it is an valid ISA memory.
I think that it is bogus, but I'm not 100% sure, for these cards.

I removed probing for the WD80x3 in 2005 when I added support for the
AX88x90 and DL100xx cards since none of my cards had ever matched it
and PAO3 removed it and none of the cards in their database died.

It is possible there are other quirks about this card too, since no
other open source OS supports it, or even claims to support it.  But
it was a fun half hour hack...
2009-03-28 04:56:56 +00:00
imp
c45a05b263 Add bromax axnet based cards to the mix. This was harvested from the linux
driver.  Not sure who sold it/rebadged it.

Add stub entries for Mitsubishi B8895 and Toshiba LANCT00A to the
driver with a comment that they don't work /* NG */.[*] These are
DP83902A based cards, which should work, but don't seem to.  Likely
they are from the days before the ne2000 roamed the earth and use a
non-standard hookup (see if_ed_isa or if_ed_cbus for some examples).
Unless I happen to stumble into the right one, these may never work,
but I'm tired of omitting them from commits.

[*] The Japanese adopted OK from English, but also use NG for its
opposite.
2009-03-27 19:15:28 +00:00
imp
fbddcbbc7a Allow the attach routine to fail gracefully and not panic the system. 2009-03-26 17:36:19 +00:00
imp
43475c65b2 Tweak comments. 2009-03-25 22:21:53 +00:00