Commit Graph

49 Commits

Author SHA1 Message Date
is
6963fa721e use the right endian ether_crc32 function in the multicast hash table computation 2002-03-24 11:00:17 +00:00
thorpej
8c51a03d7e If the upper layer says Write/Invalidate is okay, then make sure
it's enabled in the PCI CSR.
2002-02-28 23:52:37 +00:00
thorpej
2ba5de1eb1 Change the default Rx FIFO drain threshold to 128 bytes; this
reduces the likelihood of Rx FIFO overruns on machines with wimpy
PCI busses, while still allowing the interface to burst with a
reasonable size.
2002-02-28 20:08:11 +00:00
thorpej
07e108c7dc * On the DP83820, make sure to make the Tx DMA map large enough for
jumbo frames.
* Work around broken PXE firmware on some boards, which leave the ROM
  BAR enabled even after the PXE stack has been unloaded.
* Set up the initial values for sc_tx_fill_thresh, sc_tx_drain_thresh, and
  sc_rx_drain_thresh in sip_attach(), rather than in sip_init().
2002-02-28 19:10:16 +00:00
thorpej
8edba68a05 Fix problems associated with the SiS 635/735 on-board Ethernet,
from Stephen Degler <sdegler@degler.net>, port-i386/15261.
2002-02-09 21:04:02 +00:00
thorpej
16c96355a8 Fetch the MAC address from the NVRAM on the SiS 630 built-in Ethernet.
Based on PR 14665, Stephen Borrill <netbsd@precedence.co.uk>.
2001-12-20 03:32:31 +00:00
lukem
9048aaae21 add RCSID 2001-11-13 07:48:40 +00:00
thorpej
bd35a1b7ed Make sure to initialize the all Rx descriptors properly in *_init()
even if mbufs for them are already allocated.
2001-07-23 17:26:50 +00:00
thorpej
44e529fecc Use BUS_DMA_READ and BUS_DMA_WRITE in some obvious places. 2001-07-19 16:36:14 +00:00
thorpej
bc5d06ea08 Some cosmetic shuffling. 2001-07-08 17:15:45 +00:00
thorpej
9de94b45cc Fix a very, very dumb mistake that broke multicast on the dp83815
and dp83820.
2001-07-08 16:56:50 +00:00
thorpej
62794086ea Change the structure of dp83815_set_filter ever so slightly. 2001-07-07 17:37:39 +00:00
thorpej
7e92a47db9 bcmp -> memcmp 2001-07-07 16:47:43 +00:00
thorpej
9ec2341af3 Add support for jumbo Ethernet frames on the DP83820. 2001-07-07 02:32:38 +00:00
thorpej
4f9dcdfb8a Split the receive interrupt handler into two versions, one for the
SiS900/DP83815, one for the DP83820.  In preparation for changes
to the DP83820 version for handling jumbo Ethernet frames.
2001-06-30 22:35:05 +00:00
simonb
1506d21315 Make error checking/reporting a little more correct. 2001-06-18 01:58:08 +00:00
thorpej
9988acd41e Don't need INET or NS includes here. 2001-06-12 22:28:15 +00:00
thorpej
cc3002d53b Clarify a historical comment. 2001-06-03 03:55:10 +00:00
thorpej
ca4d373730 Implement support for IP/TCP/UDP checksum offloading provided by
network interfaces.  This works by pre-computing the pseudo-header
checksum and caching it, delaying the actual checksum to ip_output()
if the hardware cannot perform the sum for us.  In-bound checksums
can either be fully-checked by hardware, or summed up for final
verification by software.  This method was modeled after how this
is done in FreeBSD, although the code is significantly different in
most places.

We don't delay checksums for IPv6/TCP, but we do take advantage of the
cached pseudo-header checksum.

Note: hardware-assisted checksumming defaults to "off".  It is
enabled with ifconfig(8).  See the manual page for details.

Implement hardware-assisted checksumming on the DP83820 Gigabit Ethernet,
3c90xB/3c90xC 10/100 Ethernet, and Alteon Tigon/Tigon2 Gigabit Ethernet.
2001-06-02 16:17:06 +00:00
thorpej
f1f78293df - Add some instrumentation which can be enabled by defining
SIP_EVENT_COUNTERS.
- Decrease SIP_NTXSEGS to 8 and increase SIP_TXQUEUELEN to 256.
  This gives us 256 transmit jobs with only twice the descriptor
  memory footprint.  This prevents stalling transmissions due to
  lack of transmit jobs under heavy load.
- Increase SIP_NRXDESC to 128 so we don't run out of receive descriptors
  under extreme load.
- As recommended by the manual, leave one descriptor in the transmit ring
  with OWN clear to prevent wrap-around.
- Even though the manual claims that driver software must initialize
  TXDP if there are no pending transmissions when a new transmission
  is to be initialized, doing so causes serious performance degredation
  on the DP83820 under heavy load.  Not initializing TXDP also increases
  performance on the DP83815.

All of this gets us up to ~90Mb/s on both the DP83820 and DP83815 when
connected to a 100base network.
2001-05-18 04:38:30 +00:00
thorpej
dbdf3820d8 Add a driver for the National Semiconductor DP83820 Gigabit Ethernet
chip.  This is found on the NetGear GA-622 and Asante FriendlyNet
GigaNIX.
2001-05-18 02:03:53 +00:00
thorpej
38c798fe9f Encapsulate name declarations in macros in preparation for adding
conditionally-compiled code for the DP83820.
2001-05-15 03:06:21 +00:00
briggs
2dbd96c75c There is no need to accept all ARP packets (regardless of destination
address) on the DP83815.  Noted by Shiva Shenoy <shiva@riverstonenet.com>
in private correspondence.
2001-03-24 19:40:51 +00:00
briggs
75a60f539a More fixes for the DP83815...
- Set the destination address register properly for "perfect match" mode
  in the receive filter setup.
- Do not enable multicast receipt unless we are configured for some multicast.
- Use the "recommended settings" (which set undocumented registers and
  documented-as-reserved fields) for the silicon revision 302h (not 203h,
  as documented in one of the two places in the manual) because the
  documentation is unclear and because those settings fix the card's
  behavior in "perfect match" mode.  Without those settings, the card
  was generating random CRC/invalid symbol errors and generally not
  working unless it was set to be promiscuous.

With these changes, this week's version of the Netgear FA311 works for me.
2001-03-09 16:07:20 +00:00
briggs
77a57bede4 Add a variant hook to read the ethernet MAC address from EEPROM differently
for the SiS 900 and the DP83815.  Also add some configuration suggested by
the DP83815 documentation for one model of the DP83815.
2001-03-09 07:42:24 +00:00
thorpej
d1a5dabcc9 Gack, fix a stupid bug in the DP83815 multicast setup code. 2001-02-06 02:49:12 +00:00
sommerfeld
851de295eb Change pci_intr_map to get interrupt source information from a "struct
pci_attach_args *" instead of from four separate parameters which in
all cases were extracted from the same "struct pci_attach_args".

This both simplifies the driver api, and allows for alternate PCI
interrupt mapping schemes, such as one using the tables described in
the Intel Multiprocessor Spec which describe interrupt wirings for
devices behind pci-pci bridges based on the device's location rather
the bridge's location.

Tested on alpha and i386; welcome to 1.5Q
2000-12-28 22:59:06 +00:00
thorpej
ba4b6847df Fix a problem with the ALTQ changes that can cause bogus memory
refernces.  Problem reported by Luke Mewburn.
2000-12-19 00:06:01 +00:00
thorpej
1646284c95 ALTQ'ify. 2000-12-14 06:42:57 +00:00
thorpej
b84f740be0 Move bpfattach()/bpfdetach() calls into ether_ifattach()/ether_ifdetach(). 2000-11-15 01:02:11 +00:00
tsutsui
d214b09b47 Increase initial Tx drain threshold to 512 bytes.
My macppc complains about transmit FIFO underrun every time.
2000-10-28 08:36:57 +00:00
thorpej
4318834442 Don't trim off the FCS, pass it up. 2000-10-15 19:56:31 +00:00
thorpej
2198741306 Use ether_ioctl(). 2000-10-11 16:57:45 +00:00
thorpej
7ca3fb9ef0 Move the check for "promisc + unicast + not for us" into ether_input(),
and change Ethernet drivers to always pass all received frames to
ether_input() (with a few exceptions, which are documented in the
code).
2000-10-01 23:32:39 +00:00
thorpej
e925979f9b Preliminary support for the National Semiconductor DP83815 10/100
Ethernet chip, which is based on the SiS 900 core, but with differences
in the PHY and filter programming interface, and different WoL and
802.3x flow control programming.

This chip appears on new NetGear FA-312TX cards.  Thank goodness
they're finally ditching the LiteOn chips.
2000-09-20 05:44:48 +00:00
tsutsui
23830f1e6c - Check CR_RST rather than ISR_TXRCMP and ISR_RXRCMP in sip_reset()
- Add more delay after reset
- "Big endian mode" on SiS 900 seems broken so don't enable it;
  use htole32()/le32toh() instead
- Don't cast u_int16_t array to u_int8_t pointer
- Add some delay() to FILTER_EMIT macro in sip_set_filter()

Now SiS 900 works on my macppc.
2000-08-12 07:38:40 +00:00
tsutsui
ef86d29308 Add one more delay() to sip_read_eeprom(). 2000-08-04 09:30:56 +00:00
mrg
7c15053eed remove include of <vm/vm.h>. <vm/vm.h> -> <uvm/uvm_extern.h> 2000-06-28 16:08:42 +00:00
thorpej
6474f16852 Use ether_crc32_le(). 2000-05-12 16:41:59 +00:00
mycroft
d07e505604 Rather than guessing at the location of the PMCSR, use the pointer returned by
pci_get_capability().  (This is, after all, a standardized interface...)
2000-03-23 22:23:03 +00:00
thorpej
fc96443d15 New callout mechanism with two major improvements over the old
timeout()/untimeout() API:
- Clients supply callout handle storage, thus eliminating problems of
  resource allocation.
- Insertion and removal of callouts is constant time, important as
  this facility is used quite a lot in the kernel.

The old timeout()/untimeout() API has been removed from the kernel.
2000-03-23 07:01:25 +00:00
thorpej
a6f861574a No longer necessary to futz with ifp->if_baudrate here. 2000-03-06 21:02:00 +00:00
thorpej
eed75dbc26 Don't dry to diving MIIF_NOISOLATE in the PHY drivers. Instead, pass
flags down from the parent to child vi mii_attach().
2000-02-02 17:09:38 +00:00
thorpej
84dc99fdea Bring some order to the chaos which was the MII code function naming
"conventions".
2000-02-02 08:05:26 +00:00
thorpej
547bd53f89 Add support for the SiS 7016. 2000-01-31 18:36:12 +00:00
thorpej
4bdf6bd731 Call mii_down() as appropriate. 1999-11-12 18:14:17 +00:00
thorpej
ca9b9a3b2e Adapt to mii_phy_probe() change. 1999-11-04 00:24:00 +00:00
thorpej
4bd8f1566c Be a little nicer about memory usage:
* Don't allocate receive buffers until the interface is actually brought
  up, and release all of them if the interface is taken down.
* Add a knob (defaults to off) which will copy an incoming packet to
  a single header mbuf if it is small enough to fit in one, rather than
  burning an entire cluster on it.  Note that this change will be mostly
  moot if/when sbcompress() it changed to handle compressing clusters.
1999-08-03 17:25:51 +00:00
thorpej
ba43886d7e Device driver for the Silicon Integrated Systems SiS900 10/100 Ethernet
chip, found on the IBM Netstation.
1999-06-01 18:19:13 +00:00