summaryrefslogtreecommitdiffstats
path: root/sys/pci/if_tl.c
Commit message (Collapse)AuthorAgeFilesLines
* Back out M_* changes, per decision of the TRB.imp2003-02-191-4/+4
| | | | Approved by: trb
* Remove M_TRYWAIT/M_WAITOK/M_WAIT. Callers should use 0.alfred2003-01-211-4/+4
| | | | Merge M_NOWAIT/M_DONTWAIT into a single flag M_NOWAIT.
* o track either_ifattach/ether_ifdetach API changessam2002-11-141-18/+9
| | | | | | | | | | | o use if_input for input packet processing o don't strip the Ethernet header for input packets o use BPF_* macros bpf tapping o call ether_ioctl to handle default ioctl case o track vlan changes Reviewed by: many Approved by: re
* Use if_printf(ifp, "blah") and device_printf(dev, "blah") instead ofbrooks2002-10-211-32/+32
| | | | | printf("%s%d: blah", ifp->if_name, ifp->if_xname). This eliminates the need to store the unit number in the softc.
* style: put return types on a line by themselves.alfred2002-08-241-39/+78
|
* Change callers of mtx_init() to pass in an appropriate lock type name. Injhb2002-04-041-1/+2
| | | | | | | most cases NULL is passed, but in some cases such as network driver locks (which use the MTX_NETWORK_LOCK macro) and UMA zone locks, a name is used. Tested on: i386, alpha, sparc64
* Remove __P.alfred2002-03-201-58/+56
|
* Remove printf's on mbuf/cluster allocation failures. There are nowluigi2001-12-141-6/+1
| | | | | | | equivalent and less dangerous (rate limited) messages in the mbuf allocation code. MFC after: 3 days
* Apply patch supplied by Jonathan Chen: use the correct arguments towpaul2001-07-091-2/+2
| | | | | pci_enable_io(). We need to use SYS_RES_IOPORT/SYS_RES_MEMORY instead of PCIM_CMD_PORTEN/PCIM_CMD_MEMEN.
* Big round of minor updates:wpaul2001-02-211-3/+3
| | | | | | | | | | | | | | - Use pci_get_powerstate()/pci_set_powerstate() in all the other drivers that need them so we don't have to fiddle with the PCI power management registers directly. - Use pci_enable_busmaster()/pci_enable_io() to turn on busmastering and PIO/memory mapped accesses. - Add support to the RealTek driver for the D-Link DFE-530TX+ which has a RealTek 8139 with its own PCI ID. (Submitted by Jason Wright) - Have the SiS 900/National DP83815 driver be sure to disable PME mode in sis_reset(). This apparently fixes a problem on some motherboards where the DP83815 chip fails to receive packets. (Submitted by Chuck McCrobie <mccrobie@cablespeed.com>)
* Convert if_multiaddrs from LIST to TAILQ so that it can be traversedphk2001-02-061-8/+1
| | | | | | backwards in the three drivers which want to do that. Reviewed by: mikeh
* Mechanical change to use <sys/queue.h> macro API instead ofphk2001-02-041-1/+1
| | | | | | | fondling implementation details. Created with: sed(1) Reviewed by: md5(1)
* Use LIST_FOREACH() to traverse ifp->if_multiaddrs list, instead ofphk2001-02-031-2/+1
| | | | | | | <sys/queue.h> implementation details. Created with: /usr/sbin/sed Reviewed with: /sbin/md5
* Implement MTX_RECURSE flag for mtx_init().bmilekic2001-01-191-1/+1
| | | | | | | | | | | | | | | | | | | All calls to mtx_init() for mutexes that recurse must now include the MTX_RECURSE bit in the flag argument variable. This change is in preparation for an upcoming (further) mutex API cleanup. The witness code will call panic() if a lock is found to recurse but the MTX_RECURSE bit was not set during the lock's initialization. The old MTX_RECURSE "state" bit (in mtx_lock) has been renamed to MTX_RECURSED, which is more appropriate given its meaning. The following locks have been made "recursive," thus far: eventhandler, Giant, callout, sched_lock, possibly some others declared in the architecture-specific code, all of the network card driver locks in pci/, as well as some other locks in dev/ stuff that I've found to be recursive. Reviewed by: jhb
* Initialize/grab the mutex earlier in the attach phase, so thatwpaul2000-12-041-3/+3
| | | | | bailing out to the fail: label where we release/destroy the mutex will work without exploding.
* Fix a couple of cases where I tried to release the I/O space resource twicewpaul2000-11-021-1/+1
| | | | | (once as as an I/O space resource and once as an IRQ resource). There was a problem with this in if_rl too, which is how I found it.
* Remove unneeded #include <machine/clock.h>phk2000-10-151-1/+0
|
* Use device_get_nameunit(dev) as the mutex string when callingwpaul2000-10-131-1/+1
| | | | | mtx_init() instead of hard-coded string constant. Also remember to do the mutex changes to the ste driver, which I forgot in the first commit.
* First round of converting network drivers from spls to mutexes. Thiswpaul2000-10-131-23/+36
| | | | | | | | takes care of all the 10/100 and gigE PCI drivers that I've done. Next will be the wireless drivers, then the USB ones. I may pick up some stragglers along the way. I'm sort of playing this by ear: if anyone spots any places where I've screwed up horribly, please let me know.
* Make all Ethernet drivers attach using ether_ifattach() and detach usingarchie2000-07-131-6/+3
| | | | | | | | | ether_ifdetach(). The former consolidates the operations of if_attach(), ng_ether_attach(), and bpfattach(). The latter consolidates the corresponding detach operations. Reviewed by: julian, freebsd-net
* Use the correct register name. s/PCI_COMMAND_STATUS_REG/PCIR_COMMAND/peter2000-05-281-3/+3
|
* Move code to handle BPF and bridging for incoming Ethernet packets outarchie2000-05-141-20/+0
| | | | | | | | | | | | | | | of the individual drivers and into the common routine ether_input(). Also, remove the (incomplete) hack for matching ethernet headers in the ip_fw code. The good news: net result of 1016 lines removed, and this should make bridging now work with *all* Ethernet drivers. The bad news: it's nearly impossible to test every driver, especially for bridging, and I was unable to get much testing help on the mailing lists. Reviewed by: freebsd-net
* Depend on miibus.peter2000-04-291-0/+2
| | | | | | | | Note that if_aue doesn't strictly depend on usb because it uses the method interface for calls rather than using internal symbols, and because it's a child driver of usb and therefore will not try and do anything unless the parent usb code is loaded at some point. if_aue does strictly depend on miibus as it will fail to link if it is missing.
* Fix the tl driver so it doesn't run off the end of the RX descriptor listwpaul2000-01-151-7/+14
| | | | and panic in out of mbufs condition.
* Change contigmalloc() lower memory bound from 1MB to 0 to improvewpaul1999-09-251-1/+1
| | | | | | | chances of allocations succeeding on systems with small amounts of RAM. Pointed out by: bde
* As suggested by phk, unconditionalize BPF support in these drivers. Sincewpaul1999-09-231-10/+1
| | | | | | | there are stubs compiled into the kernel if BPF support is not enabled, there aren't any problems with unresolved symbols. The modules in /modules are compiled with BPF support enabled anyway, so the most this will do is bloat GENERIC a little.
* Tweak these for what I hope is the last time: change the DRIVER_MODULE()wpaul1999-09-221-1/+1
| | | | | | | | | | declaration for the interface driver from "foo" to "if_foo" but leave the declaration for the miibus attached to the interface driver alone. This lets the internal module name be "if_foo" while still allowing the miibus instances to attach to "foo." This should allow ifconfig to autoload driver modules again without breaking the miibus attach.
* Un-do the changes to the DRIVER_MODULE() declarations in these drivers.wpaul1999-09-201-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This whole idea isn't going to work until somebody makes the bus/kld code smarter. The idea here is to change the module's internal name from "foo" to "if_foo" so that ifconfig can tell a network driver from a non-network one. However doing this doesn't work correctly no matter how you slice it. For everything to work, you have to change the name in both the driver_t struct and the DRIVER_MODULE() declaration. The problems are: - If you change the name in both places, then the kernel thinks that the device's name is now "if_foo", so you get things like: if_foo0: <FOO ethernet> irq foo at device foo on pcifoo if_foo0: Ethernet address: foo:foo:foo:foo:foo:foo This is bogus. Now the device name doesn't agree with the logical interface name. There's no reason for this, and it violates the principle of least astonishment. - If you leave the name in the driver_t struct as "foo" and only change the names in the DRIVER_MODULE() declaration to "if_foo" then attaching drivers to child devices doesn't work because the names don't agree. This breaks miibus: drivers that need to have miibuses and PHY drivers attached never get them. In other words: damned if you do, damned if you don't. This needs to be thought through some more. Since the drivers that use miibus are broken, I have to change these all back in order to make them work again. Yes this will stop ifconfig from being able to demand load driver modules. On the whole, I'd rather have that than having the drivers not work at all.
* Grrr. Okay, changing the devnames was a bad idea. Put them back the waywpaul1999-09-201-1/+1
| | | | they were.
* Fix the strings in the driver_t structs so that they match the new nameswpaul1999-09-201-1/+1
| | | | in the DRIVER_MODULES() declarations. *sigh*
* Goofed and didn't change the second DRIVER_MODULE() linking these withobrien1999-09-201-1/+1
| | | | | | the miibus. Noticed by: wpaul
* Change the name we register with DRIVER_MODULE() to include the leadingobrien1999-09-201-1/+1
| | | | | | "if_". Reviewed by: msmith, wpaul
* Make some small performance tweaks to the tl driver. This should hopefullywpaul1999-09-191-39/+30
| | | | | | | close PR #13757, however I'm waiting on user feedback before declaring the PR officially closed. Among other things, this improves UDP transmit performance, and tx underruns are now detected and the TX start threshold adjusted accordingly.
* Add a pointer to "controller miibus0" for people who will not read thepeter1999-09-081-0/+1
| | | | | commit messages or GENERIC and insist on running -CURRENT. It probably won't work, but it's worth a try.
* $Id$ -> $FreeBSD$peter1999-08-281-2/+2
|
* Make some cleanups related to miibus.wpaul1999-08-271-47/+21
|
* Convert the ThunderLAN driver to miibus. This took me a while because Iwpaul1999-08-271-624/+112
| | | | | | | | | | | | | | | | | | | | | | | | | | had to get the ML 6692 PHY driver working correctly, which is harder than it sounds. "Bitrate" ThunderLAN devices should still be supported (i.e the older 10Mbps Netflex 3/P, which use the TNETE110 chip that has no MII support). The ThunderLAN has an internal PHY which makes things a little complicated, but these are the basic rules: - For devices with just the ThunderLAN, the internal PHY is used to provide 10baseT, and 10base5/10baseT support. Autonegotiation will work, but only with 10baseT links. The only thing that really gets negotiated is whether the link is full or half duplex. - For devices with the ThunderLAN and an external 10/100 PHY (like the Compaq Netelligent 100Mbps cards, or the internal Netflex 3/P with 100Mbps upgrade daughter card), the external PHY is used for 10baseT and 100baseTX modes. The internal PHY is still used to support 10base5/10base2, though you have to select them manual with ifconfig. - For devices with the ThunderLAN and the ML6692 PHY, both the internal and external PHYs are used, though it will appear as though the 6692 PHY will be used to support 10baseT and 100baseTX modes. In reality, the internal PHY will be used for 10baseT, but this fact will be hidden from the user. The 10base5/10base2 modes can also be selected manually as with above.
* Some more small newbus cleanups. Remember to free all resources in casewpaul1999-07-231-29/+18
| | | | of failures in foo_attach(), simplify iospace/memspace things a little.
* Well, it seems that loading a PCI driver module after the system haswpaul1999-07-221-1/+4
| | | | | | | | | been booted works too -- very neat. However I don't want the system to stop for 5 seconds when the MII autoprobe is triggered in the xl and tl drivers since that's lame. Instead, only use the hard delay when we've been cold booted. If not, use the timeout mechanism instead. (The SysKonnect driver doesn't use the same autonegotiation scheme, so no change is required there.)
* Convert the ThunderLAN driver to newbus. Also add splimp() protection towpaul1999-07-221-81/+162
| | | | tl_stats_update().
* Rename bpfilter to bpf.des1999-07-061-7/+7
|
* Change the cast in pci_map_port() from u_short * to pci_port_t * so itpeter1999-07-021-5/+5
| | | | | | | compiles cleanly on the Alpha. (On the alpha, the port type is an int, not a short). Cast a couple of pointers to ints via 'uintptr_t' rather than 'unsigned int' since uintptr_t is long (64 bit) on Alpha, as are pointers.
* Simplify the COMPAT_PCI_DRIVER/DATA_SET hack. We can add:peter1999-05-091-6/+2
| | | | | | | | #define COMPAT_PCI_DRIVER(name,data) DATA_SET(pcidevice_set,data) .. to 2.2.x and 3.x if people think it's worth it. Driver writers can do this if it's not defined. (The reason for this is that I'm trying to progressively eliminate use of linker_sets where it hurts modularity and runtime load capability, and these DATA_SET's keep getting in the way.)
* Add sufficient braces to keep egcs happy about potentially ambiguouspeter1999-05-061-6/+6
| | | | if/else nesting.
* Tweak the Macronix driver to hopefully make it more reliable:wpaul1999-05-061-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | - Change to the same transmit scheme as the PNIC driver. - Dynamically set the cache alignment, and set burst size the same as the PNIC driver in mx_init(). - Enable 'store and forward' mode by default. This is the slowest option and it does reduce 100Mbps performance somewhat, but it's the most reliable setting I can find. I'm more interested in having the driver work reliably than trying to squeeze the best performance out of it. The reason I'm doing this is that on *some* systems you may see a lot of transmit underruns (which I can't explain: these are *fast* test systems) and these errors seem to cause unusual and decidedly non-tulip-like behavior. In normal 10Mbps mode, performance is fine (you can easily saturate a 10Mbps link). Also tweak some of the other drivers: - Increase the size of the TX ring for the Winbond, ASIX, VIA Rhine and PNIC drivers. - Set a larger value for ifq_maxlen in the ThunderLAN driver. The setting of TL_TX_LIST_CNT - 1 is too low (the ThunderLAN driver only allocates 20 transmit descriptors, and I don't want to fiddle with that now because the ThunderLAN's descriptor structure is an oddball size compared to the others).
* Use COMPAT_PCI_DRIVER() for registration if it exists. This shouldn'tpeter1999-04-241-2/+6
| | | | hurt the driver portability to 3.x too much for where drivers are shared.
* Insert ifmedia_set() that I forgot and put in the vtophys() hack forwpaul1999-03-311-2/+3
| | | | | | the alpha. Now the ThunderLAN driver works on the alpha (both my sample cards check out.) Update the alpha GENERIC config to include ThunderLAN driver now that I've tested it.
* Various updates for the ThunderLAN driver:wpaul1999-03-301-92/+86
| | | | | | | | | | | | | | | | | | | - When trying to map ports, if mapping TL_PCI_LOIO or TL_PCI_LOMEM fails, try mapping the other one. Apparently, some ThunderLAN parts swap these two registers while others don't. - Add support for bitrate (non-MII) PHYs. If no MII-based PHY is found, program the chip for bitrate mode. This is required for the TNETE110 part, which doesn't have MII support. (It's also obsolete, but there are still some people out there who have them.) With this change and the change above, the Compaq Netflex-3/P 10baseT/BNC board works correctly. (Thanks to Matthew Dodd for getting me one of these cards.) - Convert to bus_space_foo() for register accesses. - Add changes to support FreeBSD/Alpha. I still have to actually test this in my Alpha box so I'm not going to update /sys/alpha/conf/GENERIC yet.
* Remember to initialize ifp->if_snd.ifq_maxlen.wpaul1999-02-011-2/+3
|
* When selecting the correct EEPROM offset to use for probing the stationwpaul1999-01-261-3/+3
| | | | | | | | address, account for cards which report the Texas Instruments PCI vendor ID in addition to Compaq and Olicom. (I don't actually have a card that reports the TI vendor/device ID, but it appears that some Racore adapters work this way, and failing to account for it when we have the ID listed in the supported devices list is a bug.)
OpenPOWER on IntegriCloud