aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/sf
Commit message (Collapse)AuthorAgeFilesLines
* MFC r232019,232021,232025,232027,232029,232040:Pyun YongHyeon2012-03-262-42/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | r232019: Give hardware chance to drain active DMA cycles. r232021: If there are not enough RX buffers, release partially allocated RX buffers. r232025: Introduce sf_ifmedia_upd_locked() and have driver reset PHY before switching to selected media. While here, set if_drv_flags before switching to selected media. r232027: No need to reprogram hardware RX filter when driver is not running. r232029: Remove taskqueue based MII stat change handler. Driver does not need deferred link state change processing. While I'm here, do not report current link status if interface is not UP. r232040: Add check for IFF_DRV_RUNNING flag after serving an interrupt and don't give RX path more priority than TX path. Also remove infinite loop in interrupt handler and limit number of iteration to 32. This change addresses system load fluctuations under high network load. Notes: svn path=/stable/7/; revision=233488
* MFC: r221407 (partial)Marius Strobl2011-09-111-5/+3
| | | | | | | | | | | | | | | | | | | | | | | | - Let mii_phy_add_media() also announce the support of IFM_NONE. - Add a PHY-specific reset routine is for lxtphy(4) which disables MII interrupts. - Remove redundant checks in NIC drivers for mii->mii_instance not being zero before calling the reset routines because as soon as one PHY driver attaches mii->mii_instance is incremented and we hardly can end up in their media change callbacks etc if no PHY driver has attached as mii_attach() would have failed in that case and not attach a miibus(4) instance. - Convert the mebers of the MII data structure to unsigned where appropriate. This is partly inspired by NetBSD/OpenBSD. - Add MIIF_NOMANPAUSE and mii_phy_flowstatus() calls to drivers that weren't explicitly converted to support flow control before. It's unclear whether flow control actually works with these but typically it should and their net behavior should be more correct with these changes in place than without if the MAC driver sets MIIF_DOPAUSE. Obtained from: NetBSD (partially) Notes: svn path=/stable/7/; revision=225490
* MFC: r213894, r213896, r214913Marius Strobl2010-11-071-4/+4
| | | | | | | | | | Converted the remainder of the NIC drivers to use the mii_attach() introduced in r213878 (MFC'ed to stable/7 in r214685) instead of mii_phy_probe(). Unlike r213893 (MFC'ed to stable/7 in r214910) these are mostly straight forward conversions though. Notes: svn path=/stable/7/; revision=214925
* Fix build breakage introducted in r213604.Pyun YongHyeon2010-10-091-1/+1
| | | | Notes: svn path=/stable/7/; revision=213663
* MFC r212971:Pyun YongHyeon2010-10-081-1/+9
| | | | | | | | | | | | Remove unnecessary controller reinitialization. StarFire controller does not require controller reinitialization to program perfect filters. While here, make driver immediately exit from interrupt/polling handler if driver reinitialized controller. PR: kern/87506 Notes: svn path=/stable/7/; revision=213604
* This commit was manufactured by cvs2svn to create branch 'RELENG_7'.cvs2svn2008-01-234-0/+4056
| | | | Notes: svn path=/stable/7/; revision=175590
* This commit was manufactured by cvs2svn to create branch 'RELENG_7'.cvs2svn2007-10-102-2661/+0
| | | | Notes: svn path=/stable/7/; revision=172506
* o break newbus api: add a new argument of type driver_filter_t toPaolo Pisati2007-02-231-1/+1
| | | | | | | | | | | | | | | | bus_setup_intr() o add an int return code to all fast handlers o retire INTR_FAST/IH_FAST For more info: http://docs.freebsd.org/cgi/getmsg.cgi?fetch=465712+0+current/freebsd-current Reviewed by: many Approved by: re@ Notes: svn path=/head/; revision=166901
* Whitespace nits.Ruslan Ermilov2006-09-151-1/+1
| | | | Notes: svn path=/head/; revision=162317
* Consistently use if_printf() only in interface methods: if_start,Gleb Smirnoff2006-09-152-3/+5
| | | | | | | | | | | | | if_ioctl, if_watchdog, etc, or in functions that are used by these methods only. In all other cases use device_printf(). This also fixes several panics, when if_printf() is called before softc->ifp was initialized. Submitted by: Alex Lyashkov <umka sevcity.net> Notes: svn path=/head/; revision=162315
* Remove various bits of conditional Alpha code and fixup a few comments.John Baldwin2006-05-121-5/+0
| | | | Notes: svn path=/head/; revision=158471
* Do not touch ifp->if_baudrate in miibus aware drivers.Gleb Smirnoff2006-02-141-1/+0
| | | | Notes: svn path=/head/; revision=155671
* - Store pointer to the link-level address right in "struct ifnet"Ruslan Ermilov2005-11-111-3/+3
| | | | | | | | | | | | | rather than in ifindex_table[]; all (except one) accesses are through ifp anyway. IF_LLADDR() works faster, and all (except one) ifaddr_byindex() users were converted to use ifp->if_addr. - Stop storing a (pointer to) Ethernet address in "struct arpcom", and drop the IFP2ENADDR() macro; all users have been converted to use IF_LLADDR() instead. Notes: svn path=/head/; revision=152315
* Replace FreeBSD 3.x syntax (controller miibus0) with 4.x syntaxWarner Losh2005-10-221-1/+1
| | | | | | | (device miibus) in time for 7.0 :-) Notes: svn path=/head/; revision=151545
* In detach method, move if_free() after bus_teardown_intr().Ruslan Ermilov2005-10-131-2/+3
| | | | Notes: svn path=/head/; revision=151297
* - Don't pollute opt_global.h with DEVICE_POLLING and introduceGleb Smirnoff2005-10-051-0/+4
| | | | | | | | | | | | opt_device_polling.h - Include opt_device_polling.h into appropriate files. - Embrace with HAVE_KERNEL_OPTION_HEADERS the include in the files that can be compiled as loadable modules. Reviewed by: bde Notes: svn path=/head/; revision=150968
* Big polling(4) cleanup.Gleb Smirnoff2005-10-011-44/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o Axe poll in trap. o Axe IFF_POLLING flag from if_flags. o Rework revision 1.21 (Giant removal), in such a way that poll_mtx is not dropped during call to polling handler. This fixes problem with idle polling. o Make registration and deregistration from polling in a functional way, insted of next tick/interrupt. o Obsolete kern.polling.enable. Polling is turned on/off with ifconfig. Detailed kern_poll.c changes: - Remove polling handler flags, introduced in 1.21. The are not needed now. - Forget and do not check if_flags, if_capenable and if_drv_flags. - Call all registered polling handlers unconditionally. - Do not drop poll_mtx, when entering polling handlers. - In ether_poll() NET_LOCK_GIANT prior to locking poll_mtx. - In netisr_poll() axe the block, where polling code asks drivers to unregister. - In netisr_poll() and ether_poll() do polling always, if any handlers are present. - In ether_poll_[de]register() remove a lot of error hiding code. Assert that arguments are correct, instead. - In ether_poll_[de]register() use standard return values in case of error or success. - Introduce poll_switch() that is a sysctl handler for kern.polling.enable. poll_switch() goes through interface list and enabled/disables polling. A message that kern.polling.enable is deprecated is printed. Detailed driver changes: - On attach driver announces IFCAP_POLLING in if_capabilities, but not in if_capenable. - On detach driver calls ether_poll_deregister() if polling is enabled. - In polling handler driver obtains its lock and checks IFF_DRV_RUNNING flag. If there is no, then unlocks and returns. - In ioctl handler driver checks for IFCAP_POLLING flag requested to be set or cleared. Driver first calls ether_poll_[de]register(), then obtains driver lock and [dis/en]ables interrupts. - In interrupt handler driver checks IFCAP_POLLING flag in if_capenable. If present, then returns.This is important to protect from spurious interrupts. Reviewed by: ru, sam, jhb Notes: svn path=/head/; revision=150789
* Fix "struct ifnet" leaks when attach() fails in the middle, e.g.Ruslan Ermilov2005-09-161-2/+2
| | | | | | | | | when mii_phy_probe() or bus_setup_intr() fails. For drivers that call their detach() in this case, call if_free() there to cover this case too. Notes: svn path=/head/; revision=150213
* Fixup locking for sf(4) and mark MPSAFE:John Baldwin2005-08-182-53/+83
| | | | | | | | | | | | | | | - Add locked variants of start, init, and ifmedia_upd. - Use callout_* instead of timeout/untimeout. - Don't recurse on the driver lock. - Fixup locking in ioctl. - Lock the driver lock in the ifmedia handlers rather than across ifmedia_ioctl(). Tested by: brueffer MFC after: 3 days Notes: svn path=/head/; revision=149240
* Use if_printf() and device_printf() and axe sf_unit from the softc as aJohn Baldwin2005-08-102-21/+16
| | | | | | | result. Notes: svn path=/head/; revision=148947
* Propagate rename of IFF_OACTIVE and IFF_RUNNING to IFF_DRV_OACTIVE andRobert Watson2005-08-091-11/+11
| | | | | | | | | | | | | | | | | IFF_DRV_RUNNING, as well as the move from ifnet.if_flags to ifnet.if_drv_flags. Device drivers are now responsible for synchronizing access to these flags, as they are in if_drv_flags. This helps prevent races between the network stack and device driver in maintaining the interface flags field. Many __FreeBSD__ and __FreeBSD_version checks maintained and continued; some less so. Reviewed by: pjd, bz MFC after: 7 days Notes: svn path=/head/; revision=148887
* Modify device drivers supporting multicast addresses to lock if_addr_mtxRobert Watson2005-08-031-0/+2
| | | | | | | | | | | over iteration of their multicast address lists when synchronizing the hardware address filter with the network stack-maintained list. Problem reported by: Ed Maste (emaste at phaedrus dot sandvine dot ca> MFC after: 1 week Notes: svn path=/head/; revision=148654
* Move if_alloc() up so it's before mii_phy_probe().Brooks Davis2005-06-111-6/+7
| | | | Notes: svn path=/head/; revision=147291
* Stop embedding struct ifnet at the top of driver softcs. Instead theBrooks Davis2005-06-102-15/+24
| | | | | | | | | | | | | | | | | | | | | | | struct ifnet or the layer 2 common structure it was embedded in have been replaced with a struct ifnet pointer to be filled by a call to the new function, if_alloc(). The layer 2 common structure is also allocated via if_alloc() based on the interface type. It is hung off the new struct ifnet member, if_l2com. This change removes the size of these structures from the kernel ABI and will allow us to better manage them as interfaces come and go. Other changes of note: - Struct arpcom is no longer referenced in normal interface code. Instead the Ethernet address is accessed via the IFP2ENADDR() macro. To enforce this ac_enaddr has been renamed to _ac_enaddr. - The second argument to ether_ifattach is now always the mac address from driver private storage rather than sometimes being ac_enaddr. Reviewed by: sobomax, sam Notes: svn path=/head/; revision=147256
* Remove bus_{mem,p}io.h and related code for a micro-optimization on i386Yoshihiro Takahashi2005-05-291-2/+0
| | | | | | | | | and amd64. The optimization is a trivial on recent machines. Reviewed by: -arch (imp, marcel, dfr) Notes: svn path=/head/; revision=146734
* Fix style(9) issues with __P removal.Warner Losh2005-02-241-37/+35
| | | | | | | Noticed by: bde Notes: svn path=/head/; revision=142407
* Return BUS_PROBE_DEFAULT instead of 0.Warner Losh2005-02-241-6/+6
| | | | Notes: svn path=/head/; revision=142398
* /* -> /*- for license, minor formatting changesWarner Losh2005-01-072-2/+2
| | | | Notes: svn path=/head/; revision=139825
* Correct URL of the programming manual.Christian Brueffer2004-11-171-1/+1
| | | | Notes: svn path=/head/; revision=137835
* Add missing /* DEVICE_POLLING */Christian Brueffer2004-11-171-1/+1
| | | | Notes: svn path=/head/; revision=137834
* Add altq support.Christian Brueffer2004-11-121-7/+9
| | | | | | | | | | Patch by mlaier. Approved by: mlaier MFC after: 2 weeks Notes: svn path=/head/; revision=137620
* Add device polling supportChristian Brueffer2004-11-102-0/+109
| | | | | | | | | | | Original patch by me, improvements by ru Happy birthday to: BSDforen.de! Approved by: ru MFC after: 2 weeks Notes: svn path=/head/; revision=137557
* Tag a last set of PCI network interfaces as IFF_NEEDSGIANT until theyRobert Watson2004-08-281-1/+2
| | | | | | | are either locked down or demonstrated MPSAFE. Notes: svn path=/head/; revision=134442
* Whitespace nitBruce M Simpson2004-07-051-1/+1
| | | | Notes: svn path=/head/; revision=131657
* Eliminate redundant return keywords.Bruce M Simpson2004-07-051-29/+0
| | | | Notes: svn path=/head/; revision=131656
* Remove burn bridges code that saved/restored the pci config registersWarner Losh2004-06-281-24/+0
| | | | | | | | that are now handled in the pci bus layer. They are no longer necessary. Notes: svn path=/head/; revision=131253
* Replace handrolled CRC calculation with ether_crc32_[lb]e().Christian Weisgerber2004-06-091-27/+2
| | | | Notes: svn path=/head/; revision=130270
* Add missing <sys/module.h> includesPoul-Henning Kamp2004-05-301-0/+1
| | | | Notes: svn path=/head/; revision=129878
* Convert callers to the new bus_alloc_resource_any(9) API.Nate Lawson2004-03-171-3/+2
| | | | | | | | Submitted by: Mark Santcroos <marks@ripe.net> Reviewed by: imp, dfr, bde Notes: svn path=/head/; revision=127135
* Announce ethernet MAC addresss in ether_ifattach().Matthew N. Dodd2004-03-141-6/+0
| | | | Notes: svn path=/head/; revision=126966
* Stop setting ifp->if_output to ether_output() since ether_ifattach()Maxime Henrion2004-03-111-1/+0
| | | | | | | does it for us already. Notes: svn path=/head/; revision=126847
* Don't use caddr_t in mchash(). Also use C99 spellings over BSD ones.David E. O'Brien2003-12-081-5/+5
| | | | | | | Requested by: bde,imp Notes: svn path=/head/; revision=123289
* Drop the driver lock around calls to if_input to avoid a LOR whenSam Leffler2003-11-142-0/+5
| | | | | | | | | | | the packets are immediately returned for sending (e.g. when bridging or packet forwarding). There are more efficient ways to do this but for now use the least intrusive approach. Reviewed by: imp, rwatson Notes: svn path=/head/; revision=122689
* Remove duplicate FBSDID's, move others to their right place.David E. O'Brien2003-11-141-4/+3
| | | | Notes: svn path=/head/; revision=122678
* Try to create some sort of consistency in how the routings to find theDavid E. O'Brien2003-11-131-12/+10
| | | | | | | | | | multicast hash are written. There are still two distinct algorithms used, and there actually isn't any reason each driver should have its own copy of this function as they could all share one copy of it (if it grew an additional argument). Notes: svn path=/head/; revision=122625
* Replace the if_name and if_unit members of struct ifnet with new membersBrooks Davis2003-10-311-2/+1
| | | | | | | | | | | | | | | | if_xname, if_dname, and if_dunit. if_xname is the name of the interface and if_dname/unit are the driver name and instance. This change paves the way for interface renaming and enhanced pseudo device creation and configuration symantics. Approved By: re (in principle) Reviewed By: njl, imp Tested On: i386, amd64, sparc64 Obtained From: NetBSD (if_xname) Notes: svn path=/head/; revision=121816
* Prefer new location of pci include files (which have only been in theWarner Losh2003-08-221-2/+2
| | | | | | | | tree for two or more years now), except in a few places where there's code to be compatible with older versions of FreeBSD. Notes: svn path=/head/; revision=119288
* Due to extreme bogusness in the pci bus layer, these drivers wereWarner Losh2003-07-031-2/+2
| | | | | | | | | | | | forced to do slightly bogus power state manipulation. However, this is one of those features that is preventing further progress, so mark them as BURN_BIRDGES like I did for the drivers in sys/dev/... This, like the other change, are a no-op unless you have BURN_BRIDGES in your kernel. Notes: svn path=/head/; revision=117208
* Remove break after returnPoul-Henning Kamp2003-05-311-5/+0
| | | | | | | Found by: FlexeLint Notes: svn path=/head/; revision=115529
* Use newly minted device_is_attached rather than device_is_alive to seeWarner Losh2003-04-211-1/+1
| | | | | | | | | | | | if attach succeeded. device_is_alive just tells us that probe succeeded. Since we were using it to do things like detach net interfaces, this caused problems when there were errors in the attach routine. Symptoms of problem reported by: martin blapp Notes: svn path=/head/; revision=113812