summaryrefslogtreecommitdiffstats
path: root/sys/pci
Commit message (Collapse)AuthorAgeFilesLines
* Increase the number of descriptors (and, as a consequence, the numberwpaul1998-08-211-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | of associated mbuf clusters) in the RX ring from 4 to 16. On my really fast PI 400Mhz test machines, 4 descriptors (and associated mbuf clusters) is enough to achieve decent performance without any RX overruns. However, one person reported problems with the following scenario: - P90 system running FreeBSD with a 3c905B-TX adapter, slow IDE hard disk (Quantum Bigfoot?) - PII 266 with SCSI disks running LoseNT and also with a 3c905B-TX - Both machines connected together via crossover cable at 100Mbps full-duplex - LoseNT machine writing largs amounts of data (2.5 GB work of files each in the neighborhood of 1 to 2 MB in size) via samba to the FreeBSD machine In this case, the LoseNT machine is sending data very fast. Apparently there weren't any problems initially because the user was writing to one particular disk which was relatively fast, however after this disk filled up and the user started writing to the second slower disk, RX overruns would occur and sometimes the RX DMA engine would stall after a 100 to 500MB had been transfered. The xl_rxeof() handler is supposed to detect this condition and restart the upload engine; I'm not sure why it doesn't, unless interrupts are being lost and the rx handler isn't getting called. This is still an improvement over the Linux driver, which uses 32 descriptors in its receive ring. :) Problem reported by: Heiko Schaefer <hschaefer@fto.de>
* Fix small printf() bogon (forgot newline, and the message was longer thatwpaul1998-08-201-4/+4
| | | | 80 cols).
* Make two changes:wpaul1998-08-191-28/+48
| | | | | | | | | | | | | | | | | | If I'm reading the manual correctly, the 3c905B actually loses its PCI configuration during the transition from D3(hot) back to D0, not during the transition from D0 to D3(hot). This means it should be possible to save the existing PCI settings, restet the power state, then restore the PCI settings afterwards. Changed xl_attach() to attempt this first thing before the normal PCI setup. I'm not certain this will work correctly, but it shouldn't hurt. If xl_init() is called while an autoneg session is in progress, the autoneg timeout and chip state will get clobbered. Try to avoid this by checking sc->xl_autoneg at the start of xl_init() and defer the initialization until later if it's set. (xl_init() is always called at the end of an autoneg session by xl_autoneg_mii().) Problem pointed out by: Larry Baird <lab@gta.com>
* Fixed printf format errors.bde1998-08-183-9/+11
|
* Fixed printf format errors (none detected in GENERIC again).bde1998-08-171-3/+3
|
* Import the (Fast) Etherlink XL driver. I'm reasonally confident in itswpaul1998-08-163-0/+3427
| | | | | | | | | | stability now. ALso modify /sys/conf/files, /sys/i386/conf/GENERIC and /sys/i386/conf/LINT to add entries for the XL driver. Deactivate support for the XL adapters in the vortex driver. LAstly, add a man page. (Also added an MLINKS entry for the ThunderLAN man page which I forgot previously.)
* Use [u]intptr_t instead of [u_]long for casts between pointers andbde1998-08-161-3/+3
| | | | integers. Don't forget to cast to (void *) as well.
* Use "baseclass" instead of "class" for storing the contents of PCI registergibbs1998-08-132-6/+7
| | | | 0xB so that C++ programs can use the PCI conf interface.
* Use [u]intptr_t instead of [unsigned] long to convert and/or representbde1998-08-102-4/+4
| | | | | | | pointers. This finishes fixing conversions between pointers and integers of possibly different sizes in GENERIC.
* Fixed the formatting of some tables (mainly the one produced by psbde1998-08-101-3/+3
| | | | | | | | | | in ddb) which I broke by changing %8[l]x to %8p. Hacked the central printf routine to not add an "0x" prefix for %p formats if the field width is nonzero. The tables are still horribly misformatted on 64-bit machines. Use %p instead of %8p to print pointers when the field width isn't important.
* Support the PAL version of the BT878 based Haupauge WinTV/PCI.sos1998-08-101-0/+1
| | | | Submitted by: Matthias Scheler <tron@netbsd.org>
* A few misc changes to get the spigot and meteor board working in 3.0.jkh1998-08-081-0/+1
| | | | Submitted by: Jim Lowe <james@miller.cs.uwm.edu>
* Updated Hauppauge detection code for Tuner ID 0x0a for newer NTSCsos1998-08-081-5/+13
| | | | | | WinCastTV 404 with Bt878 chipset. Tidied up PAL default in video_open() Submitted by: Roger Hardiman <roger@cs.strath.ac.uk>
* Remove a stupid hack of mine which prevented PCI io memory access on the alpha.dfr1998-08-071-5/+2
|
* Update DPT driver from 1.4.3 to 1.4.5eivind1998-08-051-24/+9
| | | | Submitted by: Simon Shapiro <shimon@simon-shapiro.org>
* Implemented a more sophisticated mechanism for handling transmitterdg1998-08-041-45/+103
| | | | | | | | interrupts which now defers them until the transmit queue if filled up with completed buffers. This has two advantages: first, it reduces the number of transmitter interrupts to just 1/120th of the rate that they occured previously, and two, running down many buffers at once has much improved cache effects.
* Fix this thing to work properly with multiple tlan adapters; incrementwpaul1998-08-041-1/+3
| | | | | | unit count correctly. Problem reported by Larry Baird <lab@gta.com>.
* Updates for the ThunderLAN driver:wpaul1998-08-032-32/+136
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - probe for PHYs by checking the BMSR (phy status) register instead of the vendor ID register. - fix the autonegotiation routine so that it figures out the autonegotiated modes correctly. - add tweaks to support the Olicom OC-2326 now that I've actually had a chance to test one o Olicom appears to encode the ethernet address in the EEPROM in 16-bit chunks in network byte order. If we detect an Olicom card (based on the PCI vendor ID), byte-swap the station address accordingly. XXX The Linux driver does not do this. I find this odd since the README from the Linux driver indicates that patches to support the Olicom cards came from somebody at Olicom; you'd think if anyone would get that right, it'd be them. Regardless, I accepted the word of the disgnoatic program that came bundled with the card as gospel and fixed the attach routine to make the station address match what it says. o The version of the 2326 card that I got for testing is a strange beast: the card does not look like the picture on the box in which it was packed. For one thing, the picture shows what looks like an external NS 83840A PHY, but the actual card doesn't have one. The card has a TNETE100APCM chip, which appears to have not only the usual internal tlan 10Mbps PHY at MII address 32, but also a 10/100 PHY at MII address 0. Curiously, this PHY's vendor and device ID registers always return 0x0000. I suspect that this is a mutant version of the ThunderLAN chip with 100Mbps support. This combination behaves a little strangely and required the following changes: - The internal PHY has to be enabled in tl_softreset(). - The internal PHY doesn't seem to come to life after detecting the 100Mbps PHY unless it's reset twice. - If you want to use 100Mbps modes, you have to isolate the internal PHY. - If you want to use 10Mbps modes, you have to un-isolate the internal PHY. The latter two changes are handled at the end of tl_init(): if the PHY vendor ID is 0x0000 (which should not be possible if we have a real external PHY), then tl_init() forces the internal PHY's BMCR register to the proper values.
* Added 82555B support for media status.dg1998-08-021-1/+2
|
* Reordered fxp_softc for optimal cacheline behavior.dg1998-08-021-8/+10
|
* Killed unused variable/assignment.dg1998-08-021-2/+1
|
* Add a call to a platform-specific irq remapping function for alpha platformsdfr1998-07-221-1/+4
| | | | | | which don't record the correct irqs in PCI config space. Submitted by: Andrew Gallatin <gallatin@cs.duke.edu>
* On the alpha, ports may be allocated above 64k.dfr1998-07-222-5/+18
| | | | | | | | Change the port address argument to pci_map_port to pci_port_t* which is defined as u_int on the alpha, u_short on i386. This is a stopgap with a hopefully limited lifetime. Discussed with: Stefan Esser <se@freebsd.org>
* Add support for PCNet PCI chips that only work when we talk to them as ISAmsmith1998-07-201-2/+5
| | | | | | | devices. Specifically fix the case for the Hitachi version as used in their VisionBook models. Submitted by: Ted Faber <faber@isi.edu>
* Correct SEEPROM checksum calculation when multiple checksum attemps are made.gibbs1998-07-161-4/+8
| | | | Pointed out by: "Jose M. Alcaide" <jose@we.lc.ehu.es>
* Cast pointers to uintptr_t/intptr_t instead of to u_long/long,bde1998-07-152-4/+4
| | | | | | | respectively. Most of the longs should probably have been u_longs, but this changes is just to prevent warnings about casts between pointers and integers of different sizes, not to fix poorly chosen types.
* Add support for the AVer Media range of cards.sos1998-07-141-9/+13
|
* Avoid some casts of pointers to integers (of possibly different sizes).bde1998-07-141-7/+7
|
* I checked in the wrong version yesterday . The correct version is 1.38ahasty1998-07-141-12/+32
| | | | Amancio
* Declare pointers to CSR register space to be volatile. This seems towpaul1998-07-132-161/+274
| | | | | | | | | | | | | | | | | | | | | | | | cure the problems I was having with interrupts not being acknowledged on time. This fixes a problem I observed where starting two ping -f processes at 10Mbps would cause an adapter check due to TX GO commands being issued before TXEOC interrupts were being acked. Also fix a small problem with tl_start(): the mechanism I was using to queue new packets onto the TX chain was bogus. Change adapter check handler so that it resets card state after tl_softreset() is stored. Moved all EEPROM-related macro definitions into if_tlreg.h. Don't allow an autoneg session to start until after the TX queue has been drained, and don't transmit anything until after the autoneg session is complete. Also add support for two more Compaq ThunderLAN-based cards, and three cards from Olicom which also use the ThunderLAN chip. The only thing different about the Olicom cards is that they store the station address at a different location within the EEPROM.
* Fixed printf format errors (only 1 left in GENERIC now).bde1998-07-133-13/+14
|
* Improved Hauppauge's tuner detection and bt878 supportahasty1998-07-132-37/+146
| | | | Amancio
* Remove unused member reselet from struct tstamp.se1998-07-121-3/+2
|
* Fix size of time stamps (had been time_t before the variable "time" wasse1998-07-121-26/+29
| | | | | | | | | | | | hidden). Now "ticks" are used, which are 4 byte, not 8 byte in size. The size mismatch did not matter due to sufficient padding at the end of the structure that holds time stamps (there is an unused member). The fix suggested by Bruce Evans used "sizeof (ticks_t)", but I prefer to use "sizeof ticks", and didn't seem to object in his last mail on this topic. Submitted by: bde
* Fixed printf format errors.bde1998-07-112-21/+25
|
* Merge changes from vendor branch.peter1998-07-081-2/+11
|
* Changed `#if defined(i386)' to `#ifdef __i386__'.bde1998-07-071-2/+2
| | | | | | | | | | `#if defined(ONE_THING)' is a style bug, and i386 instead of __i386__ is a bug, since i386 is never defined when the kernel is compiled by with the default flags (`gcc -ansi ...'). Here the bug disabled the call to pmap_setvidram(), so ISA video memory was not mapped WC on 686's. The bug may have been masked by bugs in the committer's version of gcc - `gcc -ansi' incorrectly defines i386 for gcc = the version of egcs on the 2.2.6 cdrom.
* Attempt to load serial eeprom contents in both 93c46 and 93c56/66 mode beforegibbs1998-07-061-22/+42
| | | | | | giving up. PR: 6966
* Fix some strange errors of shutting transmitter up when startsemenu1998-07-042-604/+592
| | | | | | | transmition after software reset with no link estabilished yet. Fix TX DMA stop method (queue last packet to stop). PR: i386/6578
* document PCI_QUIET that prevents pci from compiling in so many stringsjmg1998-06-301-1/+3
|
* Removed unused includes.bde1998-06-211-1/+0
|
* Removed unused includes.bde1998-06-211-25/+2
|
* Don't declare isa device structs or isa interrupt handlers in <sys/conf>,bde1998-06-171-2/+1
| | | | | | | and don't depend on them being declared there. This will cause lots of warnings for a few minutes until config is updated. Interrupt handlers should never have been configured by config, and the machine generated declarations get in the way of changing the arg type from int to void *.
* Fixed a misdeclaration. This unhides type mismatches which will bebde1998-06-171-2/+2
| | | | fixed soon.
* Merge changes from vendor branch;peter1998-06-133-26/+49
| | | | | | | | - connector selection values (should fix aui/bnc), - non-shifting version of crc calculation using a table, - interrupt mask adjustments, - add some brackets where a #ifdef could break an if(), - don't reset the card unless it's up.
* Add initial support for the FreeBSD/alpha kernel. This is very much adfr1998-06-102-0/+386
| | | | | | | | | | work in progress and has never booted a real machine. Initial development and testing was done using SimOS (see http://simos.stanford.edu for details). On the SimOS simulator, this port successfully reaches single-user mode and has been tested with loads as high as one copy of /bin/ls :-). Obtained from: partly from NetBSD/alpha
* Fixed pedantic semantics errors (bitfields not of type int, signed intbde1998-06-082-24/+24
| | | | | | | or unsigned int (this doesn't change the struct layout, size or alignment in any of the files changed in this commit, at least for gcc on i386's. Using bitfields of type u_char may affect size and alignment but not packing)).
* Fix spelling in printf().jkoshy1998-06-081-2/+2
|
* Disable attempted write combining support. This probablydyson1998-06-081-1/+3
| | | | causes more trouble than help (for now.)
* This commit fixes various 64bit portability problems required fordfr1998-06-079-19/+25
| | | | | | | | | | FreeBSD/alpha. The most significant item is to change the command argument to ioctl functions from int to u_long. This change brings us inline with various other BSD versions. Driver writers may like to use (__FreeBSD_version == 300003) to detect this change. The prototype FreeBSD/alpha machdep will follow in a couple of days time.
OpenPOWER on IntegriCloud