summaryrefslogtreecommitdiffstats
path: root/sys/dev/smc
Commit message (Collapse)AuthorAgeFilesLines
* Disable interrupts in filter in order to avoid interrupt storm andgonzo2012-12-131-7/+4
| | | | CPU starvation
* Mechanically substitute flags from historic mbuf allocator withglebius2012-12-041-2/+2
| | | | malloc(9) flags in sys/dev.
* - Do not reinitialize the card if it is already running.stas2012-04-071-2/+3
| | | | | | | This fixes bootp on if_smc, as bootp code perform SIOCSIFADDR ioctl call immediately after sending the request (which causes if_init being called) which causes the adapter to drop all the packets received in the meantime.
* - Import the common MII bitbang'ing code from NetBSD and convert drivers tomarius2011-11-011-88/+57
| | | | | | | | | | | | | | | | | | | | | | | | take advantage of it instead of duplicating it. This reduces the size of the i386 GENERIC kernel by about 4k. The only potential in-tree user left unconverted is xe(4), which generally should be changed to use miibus(4) instead of implementing PHY handling on its own, as otherwise it makes not much sense to add a dependency on miibus(4)/mii_bitbang(4) to xe(4) just for the MII bitbang'ing code. The common MII bitbang'ing code also is useful in the embedded space for using GPIO pins to implement MII access. - Based on lessons learnt with dc(4) (see r185750), add bus barriers to the MII bitbang read and write functions of the other drivers converted in order to ensure the intended ordering. Given that register access via an index register as well as register bank/window switching is subject to the same problem, also add bus barriers to the respective functions of smc(4), tl(4) and xl(4). - Sprinkle some const. Thanks to the following testers: Andrew Bliznak (nge(4)), nwhitehorn@ (bm(4)), yongari@ (sis(4) and ste(4)) Thanks to Hans-Joerg Sirtl for supplying hardware to test stge(4). Reviewed by: yongari (subset of drivers) Obtained from: NetBSD (partially)
* - Fix NULL pointer dereference when a packet of uneven size is beingstas2011-09-021-1/+4
| | | | | | | transmitted. Approved by: re (kib) MFC after: 3 days
* Converted the remainder of the NIC drivers to use the mii_attach()marius2010-10-151-2/+3
| | | | | | | introduced in r213878 instead of mii_phy_probe(). Unlike r213893 these are only straight forward conversions though. Reviewed by: yongari
* Add new tunable 'net.link.ifqmaxlen' to set default send interfacesobomax2010-05-031-1/+1
| | | | | | | | | | 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
* strict kobj signatures: fix assortment of miibus_writereg implsavg2009-06-112-2/+3
| | | | | | | return type should be int, not void Reviewed by: imp, current@ Approved by: jhb (mentor)
* When user_frac in the polling subsystem is low it is going to busy theattilio2009-05-301-0/+2
| | | | | | | | | | | | | | | | | | | | | CPU for too long period than necessary. Additively, interfaces are kept polled (in the tick) even if no more packets are available. In order to avoid such situations a new generic mechanism can be implemented in proactive way, keeping track of the time spent on any packet and fragmenting the time for any tick, stopping the processing as soon as possible. In order to implement such mechanism, the polling handler needs to change, returning the number of packets processed. While the intended logic is not part of this patch, the polling KPI is broken by this commit, adding an int return value and the new flag IFCAP_POLLING_NOCOUNT (which will signal that the return value is meaningless for the installed handler and checking should be skipped). Bump __FreeBSD_version in order to signal such situation. Reviewed by: emaste Sponsored by: Sandvine Incorporated
* - Move ether_ifdetach earlier.benno2008-06-171-2/+7
| | | | | | - Drain callouts after ether_ifdetach. Suggested by: jhb
* Use callout_init_mtx to simplify locking somewhat. While we're here, rearrangebenno2008-06-132-35/+18
| | | | | | some operations in smc_detach to remove the need for the smc_shutdown variable. Suggested by: jhb
* Make sure we drain our taskqueues and stop our callouts in detach.benno2008-06-122-7/+37
|
* Switch to using a normal mutex instead of a spin mutex.benno2008-06-112-22/+30
| | | | | | | | | | | We still use the interrupt filter due to performance problems that show up if we don't. The main problem seen is that, due to the interrupt being edge triggered, we occasionally miss interrupts which leads us to not notice that we can transmit more packets. Using the new approach, which just schedules a task on a taskqueue, we are guaranteed to have the task run even if the interrupt arrived while we were already executing. If we were to use an ithread the system would mask the interrupt while the handler is run and we'd miss interrupts.
* Convert bus_space_{read,write}_* calls to bus_{read,write}_* calls.benno2008-06-112-30/+18
| | | | Suggested by: jhb
* This is a rewritten driver for the SMSC LAN91C111. It's based in part on thebenno2008-06-063-0/+1660
sn(4) driver and also looking at newer drivers. The reason for the rewrite is to support MII and to try and resolve some performance issues found when trying to use the sn(4) driver on the Gumstix network boards. For reference, the SMSC LAN91C111 is a non-PCI ethernet part whose lineage dates back to Ye Olde Days of ISA. It seems to get some use in the embedded space these days on parts lacking on-board MACs or on-board PCI controllers, such as the XScale PXA line of ARM CPUs. This also includes a driver for the SMSC LAN83C183 10/100 PHY. Man page to follow.
OpenPOWER on IntegriCloud