| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- 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
|
| |
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
Notes:
svn path=/stable/7/; revision=213663
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
Notes:
svn path=/stable/7/; revision=175590
|
| |
|
|
| |
Notes:
svn path=/stable/7/; revision=172506
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
Notes:
svn path=/head/; revision=162317
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
Notes:
svn path=/head/; revision=158471
|
| |
|
|
| |
Notes:
svn path=/head/; revision=155671
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
| |
(device miibus) in time for 7.0 :-)
Notes:
svn path=/head/; revision=151545
|
| |
|
|
| |
Notes:
svn path=/head/; revision=151297
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- 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
|
| |
|
|
|
|
|
| |
result.
Notes:
svn path=/head/; revision=148947
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
Notes:
svn path=/head/; revision=147291
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
| |
and amd64. The optimization is a trivial on recent machines.
Reviewed by: -arch (imp, marcel, dfr)
Notes:
svn path=/head/; revision=146734
|
| |
|
|
|
|
|
| |
Noticed by: bde
Notes:
svn path=/head/; revision=142407
|
| |
|
|
| |
Notes:
svn path=/head/; revision=142398
|
| |
|
|
| |
Notes:
svn path=/head/; revision=139825
|
| |
|
|
| |
Notes:
svn path=/head/; revision=137835
|
| |
|
|
| |
Notes:
svn path=/head/; revision=137834
|
| |
|
|
|
|
|
|
|
|
| |
Patch by mlaier.
Approved by: mlaier
MFC after: 2 weeks
Notes:
svn path=/head/; revision=137620
|
| |
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
| |
are either locked down or demonstrated MPSAFE.
Notes:
svn path=/head/; revision=134442
|
| |
|
|
| |
Notes:
svn path=/head/; revision=131657
|
| |
|
|
| |
Notes:
svn path=/head/; revision=131656
|
| |
|
|
|
|
|
|
| |
that are now handled in the pci bus layer. They are no longer
necessary.
Notes:
svn path=/head/; revision=131253
|
| |
|
|
| |
Notes:
svn path=/head/; revision=130270
|
| |
|
|
| |
Notes:
svn path=/head/; revision=129878
|
| |
|
|
|
|
|
|
| |
Submitted by: Mark Santcroos <marks@ripe.net>
Reviewed by: imp, dfr, bde
Notes:
svn path=/head/; revision=127135
|
| |
|
|
| |
Notes:
svn path=/head/; revision=126966
|
| |
|
|
|
|
|
| |
does it for us already.
Notes:
svn path=/head/; revision=126847
|
| |
|
|
|
|
|
| |
Requested by: bde,imp
Notes:
svn path=/head/; revision=123289
|
| |
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
Notes:
svn path=/head/; revision=122678
|
| |
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
| |
Found by: FlexeLint
Notes:
svn path=/head/; revision=115529
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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
|