History log of /dragonfly/sys/net/bridge/bridgestp.c (Results 1 – 25 of 25)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
Revision tags: v6.2.1, v6.2.0, v6.3.0, v6.0.1, v6.0.0, v6.0.0rc1, v6.1.0, v5.8.3, v5.8.2, v5.8.1, v5.8.0, v5.9.0, v5.8.0rc1, v5.6.3
# c443c74f 22-Oct-2019 zrj <rimvydas.jasinskas@gmail.com>

<net/if_var.h>: Remove last explicit dependency on <sys/malloc.h>.

These kernel sources pass M_NOWAIT flag to m_copym() and friends.
Mark that it was for M_NOWAIT visibility.


Revision tags: v5.6.2, v5.6.1, v5.6.0, v5.6.0rc1, v5.7.0, v5.4.3, v5.4.2, v5.4.1, v5.4.0, v5.5.0, v5.4.0rc1, v5.2.2, v5.2.1, v5.2.0, v5.3.0, v5.2.0rc, v5.0.2, v5.0.1, v5.0.0, v5.0.0rc2, v5.1.0, v5.0.0rc1, v4.8.1, v4.8.0, v4.6.2, v4.9.0, v4.8.0rc, v4.6.1, v4.6.0, v4.6.0rc2, v4.6.0rc, v4.7.0, v4.4.3, v4.4.2, v4.4.1, v4.4.0, v4.5.0, v4.4.0rc, v4.2.4, v4.3.1, v4.2.3, v4.2.1, v4.2.0, v4.0.6, v4.3.0, v4.2.0rc, v4.0.5, v4.0.4
# b5523eac 19-Feb-2015 Sascha Wildner <saw@online.de>

kernel: Move us to using M_NOWAIT and M_WAITOK for mbuf functions.

The main reason is that our having to use the MB_WAIT and MB_DONTWAIT
flags was a recurring issue when porting drivers from FreeBSD

kernel: Move us to using M_NOWAIT and M_WAITOK for mbuf functions.

The main reason is that our having to use the MB_WAIT and MB_DONTWAIT
flags was a recurring issue when porting drivers from FreeBSD because
it tended to get forgotten and the code would compile anyway with the
wrong constants. And since MB_WAIT and MB_DONTWAIT ended up as ocflags
for an objcache_get() or objcache_reclaimlist call (which use M_WAITOK
and M_NOWAIT), it was just one big converting back and forth with some
sanitization in between.

This commit allows M_* again for the mbuf functions and keeps the
sanitizing as it was before: when M_WAITOK is among the passed flags,
objcache functions will be called with M_WAITOK and when it is absent,
they will be called with M_NOWAIT. All other flags are scrubbed by the
MB_OCFLAG() macro which does the same as the former MBTOM().

Approved-by: dillon

show more ...


Revision tags: v4.0.3, v4.0.2, v4.0.1, v4.0.0, v4.0.0rc3, v4.0.0rc2, v4.0.0rc, v4.1.0, v3.8.2, v3.8.1, v3.6.3, v3.8.0, v3.8.0rc2, v3.9.0, v3.8.0rc, v3.6.2, v3.6.1, v3.6.0
# 3a51da79 15-Nov-2013 Sepherosa Ziehau <sephe@dragonflybsd.org>

bridge: Utilize lwkt_sendmsg_oncpu


Revision tags: v3.7.1, v3.6.0rc, v3.7.0, v3.4.3, v3.4.2, v3.4.0, v3.4.1, v3.4.0rc, v3.5.0
# 6999cd81 26-Feb-2013 Matthew Dillon <dillon@apollo.backplane.com>

kernel - Beef up lwkt_dropmsg() API and fix deadlock in so_async_rcvd*()

* Beef up the lwkt_dropmsg() API. The API now conditionally returns
success (0) or an error (ENOENT).

* so_pru_rcvd_async

kernel - Beef up lwkt_dropmsg() API and fix deadlock in so_async_rcvd*()

* Beef up the lwkt_dropmsg() API. The API now conditionally returns
success (0) or an error (ENOENT).

* so_pru_rcvd_async() improperly calls lwkt_sendmsg() with a spinlock
held. This is not legal. Hack up lwkt_sendmsg() a bit to resolve.

show more ...


Revision tags: v3.2.2, v3.2.1, v3.2.0, v3.3.0, v3.0.3, v3.0.2, v3.0.1, v3.1.0, v3.0.0
# 86d7f5d3 26-Nov-2011 John Marino <draco@marino.st>

Initial import of binutils 2.22 on the new vendor branch

Future versions of binutils will also reside on this branch rather
than continuing to create new binutils branches for each new version.


Revision tags: v2.12.0, v2.13.0, v2.10.1, v2.11.0, v2.10.0, v2.9.1, v2.8.2, v2.8.1, v2.8.0, v2.9.0, v2.6.3, v2.7.3, v2.6.2, v2.7.2, v2.7.1, v2.6.1, v2.7.0, v2.6.0, v2.5.1, v2.4.1, v2.5.0, v2.4.0, v2.3.2, v2.3.1, v2.2.1
# a3dd34d2 05-Apr-2009 Sepherosa Ziehau <sephe@dragonflybsd.org>

Split ifnet serialize step 1/many: Add if_{serialize,deserialize,tryserialize}()
function pointers to ifnet.

These three function pointers accept ifnet struct and ifnet_serialize
enumeration.

The i

Split ifnet serialize step 1/many: Add if_{serialize,deserialize,tryserialize}()
function pointers to ifnet.

These three function pointers accept ifnet struct and ifnet_serialize
enumeration.

The ifnet_serialize enumeration indicates the serialization type:
IFNET_SERIALIZE_ALL:
All of the serializers should be held. Except for if_start and if_input,
this enumeration must be used when call ifnet function pointers.
IFNET_SERIALIZE_TX:
Only transmit serializer should be held. This enumeration could be used
when calling ifnet.if_start.
IFNET_SERIALIZE_RX:
Only receive serializer should be held. This enumeration could be used
when calling ifnet.if_input.

If the NIC driver does not set these three function pointer, then if_attach()
will set them to the default ones: only one serializer (if_serializer) is used
and ifnet_serialize parameter is ignored.

Following several inline functions are added which are sheer wrappers of the
three ifnet serialize function pointers:
ifnet_serialize_{all,tx,rx}()
ifnet_deserialize_{all,tx,rx}()
ifnet_tryserialize_{all,tx,rx}()

All of the protocol layers and most of the pseudo drivers are converted.

Discussed-with: dillon@

show more ...


Revision tags: v2.2.0, v2.3.0, v2.1.1
# 30ced003 26-Nov-2008 Sepherosa Ziehau <sephe@dragonflybsd.org>

- Proper handle flags passed to bridge_rtflush() and bridge_rtdelete(),
instead of handle it as a boolean.
- Add IFBF_FLUSHSYNC flag so bridge_rtflush() and bridge_rtdelete() could
perform async

- Proper handle flags passed to bridge_rtflush() and bridge_rtdelete(),
instead of handle it as a boolean.
- Add IFBF_FLUSHSYNC flag so bridge_rtflush() and bridge_rtdelete() could
perform async operation (used by STP code).

show more ...


# b2417333 22-Nov-2008 Sepherosa Ziehau <sephe@dragonflybsd.org>

bstp_input() always returns NULL, so nuke its return value and let caller
set m to NULL.


# 8f7b13ef 21-Nov-2008 Sepherosa Ziehau <sephe@dragonflybsd.org>

Parallelize bridge_input step 1.8/2:
Parallelize bridge member interfaces list --
o Split bridge_iflist into percpu part and shared part (bridge_ifinfo).
The shared part contains STP related info

Parallelize bridge_input step 1.8/2:
Parallelize bridge member interfaces list --
o Split bridge_iflist into percpu part and shared part (bridge_ifinfo).
The shared part contains STP related information.
o Put create bridge_iflist on each CPU and put it onto percpu member
interface list.
o All of the STP operation is still serialized by bridge's serializer,
except testing member interface's STP state.
o Span interfaces no longer have unused STP information.

show more ...


# 4394693c 15-Nov-2008 Sepherosa Ziehau <sephe@dragonflybsd.org>

Parallelize bridge_input step 1/2:
Parallelize bridge route information. See the commet at the head of
net/if_bridge.c for the detailed information.


# e9d22060 14-Nov-2008 Sepherosa Ziehau <sephe@dragonflybsd.org>

- Defer bridge callouts to BRIDGE_CFGPORT using dropable priority message.
- Remove unnecessary callout_stop(); bridge_stop() has already done those.


Revision tags: v2.0.1
# 89ea766d 14-Jun-2008 Sepherosa Ziehau <sephe@dragonflybsd.org>

- Check cached ifnet.if_bridge again in bridge_{input,output}()
- Pass cached ifnet.if_bridge to bstp_input()
- Pass the located bif to bstp_input(), so we won't need to locate bif again

These chang

- Check cached ifnet.if_bridge again in bridge_{input,output}()
- Pass cached ifnet.if_bridge to bstp_input()
- Pass the located bif to bstp_input(), so we won't need to locate bif again

These changes make it possible to use following sequence
ifp->if_bridge = NULL;
netmsg_service_sync();
to protect ifnet.if_bridge

show more ...


# 708a3bfa 06-Jun-2007 Sepherosa Ziehau <sephe@dragonflybsd.org>

bridge_enqueue() does not use bridge(4)'s softc, so don't pretend that the
parameter is needed.


# d217f5e5 30-Jun-2006 Scott Ullrich <geekgod@dragonflybsd.org>

Bring if_bridge up to date with FreeBSD.

New features / improvements:

* better handling of fragmented packets
* newer spanning tree support
* txcsum fixes
* monitor mode (multiplex bpf)
* span

Bring if_bridge up to date with FreeBSD.

New features / improvements:

* better handling of fragmented packets
* newer spanning tree support
* txcsum fixes
* monitor mode (multiplex bpf)
* spanports
* Use bit operations to get a locally administered address
* GIF interfaces can now be used as span port members

Patch originally adapted from a version done by Andrew Thompson
With-help-from: @corecode, @sephe, thompsa@freebsd.org

show more ...


# 7b9cfeef 22-Dec-2005 Simon Schubert <corecode@dragonflybsd.org>

Aquire serializer before calling ioctl

Submitted-by: Chris Csanady <cc@137.org>


# ac93838f 21-Dec-2005 Simon Schubert <corecode@dragonflybsd.org>

Bring in if_bridge from Open-/Net-/FreeBSD

Based-on-patch-by: Andrew Atrens
Reviewed-and-locking-corrected-by: dillon and sephe


# 1885d414 30-Mar-2011 Matthew Dillon <dillon@apollo.backplane.com>

kernel - Major bridging functionality added (bug fixes 6)

* Flapping on one of the member interfaces can cause the entire bridge
to go down due to all member interfaces entering a transient state.

kernel - Major bridging functionality added (bug fixes 6)

* Flapping on one of the member interfaces can cause the entire bridge
to go down due to all member interfaces entering a transient state.
For example, if openvpn is flapping the related tap interfaces will
go up and down without any actual packet traffic making it across.

With these changes openvpn flapping no longer makes the bridge
effectively non-operational.

* When a port is disabled or enabled either manually or due to a TAP
process going away / attaching, only issue a configuration update
when transitioning out of an active state.

Thus disabled<->l1blocking flip-flopping does not cause the other
member interfaces to change state.

* Also change the initial state setup when LINK1 is flagged.
Go into the L1BLOCKING state instead of the BLOCKING state.

show more ...


# 3110e56a 26-Mar-2011 Matthew Dillon <dillon@apollo.backplane.com>

kernel - Major bridging functionality added (bug fixes 4)

* Fix an issue where we were assuming that a root bridge receiving a
configuration packet from a remote bridge would get a path cost
tha

kernel - Major bridging functionality added (bug fixes 4)

* Fix an issue where we were assuming that a root bridge receiving a
configuration packet from a remote bridge would get a path cost
that already include the root bridge's path cost for that port.
In fact the target bridge only includes an aggregate path cost to
root (typically the lowest path cost of all the target bridge's
ports), which is a fixed value.

* The root bridge must add the local path cost back in.

show more ...


# 9b42fdc9 05-Mar-2011 Matthew Dillon <dillon@apollo.backplane.com>

kernel - Major bridging functionality added (bug fixes 2)

* Recalculate the port configuration after enabling a member interface,
fixing an issue where openvpn brings up a TAP interface after
au

kernel - Major bridging functionality added (bug fixes 2)

* Recalculate the port configuration after enabling a member interface,
fixing an issue where openvpn brings up a TAP interface after
authenticating the link but whos weights then go unrecognized by the
bridge.

The port configuration was already being recalculated after a member
interface becomes disabled.

* Reinitialize the bridge when the link0, link1, and/or link2 interface
flag changes state, so the sysop doesn't have to bring the interface
down and up manually to recognize the new settings.

show more ...


# 0e66e711 28-Feb-2011 Matthew Dillon <dillon@apollo.backplane.com>

kernel - Major bridging functionality added (bug fixes)

* The root bridge was not taking into account the peer's weightings when
calculating path costs.

In order to do this the root bridge must

kernel - Major bridging functionality added (bug fixes)

* The root bridge was not taking into account the peer's weightings when
calculating path costs.

In order to do this the root bridge must use available peer info. The
peer info should already include both the local and remote's path costs
since 'we' are the root, so our path cost will already be directly
incorporated in the path cost the peer reports to us.

* Fixes issue where not-weighted path costs on root bridge were not
synchronized with the weighted path costs of one or more of its peers.

show more ...


# 1e858374 24-Feb-2011 Matthew Dillon <dillon@apollo.backplane.com>

kernel - Major bridging functionality added (bonding)

* Add channel bonding support to if_bridge. This utilizes the link2 flag
on the bridge interface. Participating member interfaces must be

kernel - Major bridging functionality added (bonding)

* Add channel bonding support to if_bridge. This utilizes the link2 flag
on the bridge interface. Participating member interfaces must be
programmed to the same MAC address. Multiple bonding groups can be
created.

Note that both sides of participating member interfaces must implement
the link2 feature. If the other side does not it will likely be blocking
(due to the spanning tree protocol) some of the member interfaces and
you will get packet loss.

* Document all the link flags and new features.

show more ...


# 70d9a675 24-Feb-2011 Matthew Dillon <dillon@apollo.backplane.com>

kernel - Major bridging functionality completed

* Rewrite the spanning tree algorithm. Not well tested but both sides
properly calculate the blocking pairs for the ports whereas before
they did

kernel - Major bridging functionality completed

* Rewrite the spanning tree algorithm. Not well tested but both sides
properly calculate the blocking pairs for the ports whereas before
they did not.

Document the code as needed. The poor documentation created a lot of
unnecessary headaches.

Separate out the peer state from the aggregated state.

* Greatly enhance the 'ifconfig [-v] bridgeN' status output so one
can see exactly what the state of the sub-interfaces is.

* The bridge interface's ether address can now be modified. It is also
possible to add IP addresses to the bridge interface but this has
not been tested well and might not work.

* Nearly all traffic sourced from interfaces attached to the bridge
now use the bridge's MAC address. This includes ARP. Theoretically
this means that ganged links between bridges (bonding is NOT yet
supported! Strictly master/backup)... should be able to failover
without destroying the ARP tables on various systems.

* Add an experimental LINK2 option to the bridge. This will eventually
be channel bonding but doesn't work so hot right now. At the moment
it just round-robins output on sub-interfaces with the same MAC (usually
TAP interfaces). Ill gets aggregated using the bridge's MAC but the
comparison is used to create bonding groups.

This one needs considerably more work on properly adjusting its state
to DESIGNATED instead of hacking packets over members in the BLOCKING
state.

* Clean up some of the state transitions used by the LINK1 failover
feature.

* Change the bridge interface to IFT_ETHER to allow IP and MAC assignments
and for it to be properly handled in the rest of the stack.

* Aggregate input from all member interfaces into the bridge proper and
re-output/forward/route as appropriate using the stateful information
available in the bif lists to handle failover and other features.

* ARP handles MAC snafus due to bridging a little better.

* Changeover to TAILQs from LISTs for bifs.

* Move bif_flags to the bif_info structure so we can use it to hold
active state.

* Implement SIOCGIFMEDIA in IF_TAP (still needs some work). This
is required by the bridge code to properly be able to use TAP
interfaces as members.

show more ...


# 3677aae9 23-Feb-2011 Matthew Dillon <dillon@apollo.backplane.com>

kernel - Greatly enhance if_bridge

* Document the link0 feature, which enables transparent bridging.

* Implement the link1 feature, automatic failover using a slight mangling
of the 802.11d proto

kernel - Greatly enhance if_bridge

* Document the link0 feature, which enables transparent bridging.

* Implement the link1 feature, automatic failover using a slight mangling
of the 802.11d protocol. Both ends must implement the feature for this
to work. Essentially this causes CFG 802.11d messages to be generated
on the hello interval even if a bridge is not the root bridge.

The bridge also monitors for this traffic and places the link in a special
L1BLOCKING state if it fails to receive any frames in (10 x hello) (around
20 seconds usually). This will automatically cause the bridge to failover
to other links.

This only operates on links participating in the STP protocol (see man
ifconfig), when link1 is set on the bridge interface. For ethernet
bridging the link interfaces are typically multiple TAP interfaces.

* Allow all link interfaces participating in a bridge to have the same
MAC address (used with TAP interfaces typically). This is mandatory
if you also intend to use the link1 feature and want your failover to
be reasonably smooth. The feature can be useful regardless.

* The ifconfig bridge output now shows additional information about
link state and who it thinks the root node is.

show more ...


# 002c1265 14-Sep-2010 Matthew Dillon <dillon@apollo.backplane.com>

network - Major netmsg retooling, part 1

* Remove all the netmsg shims and make all pr_usrreqs and some proto->pr_*
requests directly netmsg'd.

* Fix issues with tcp implied connects and tcp6->tc

network - Major netmsg retooling, part 1

* Remove all the netmsg shims and make all pr_usrreqs and some proto->pr_*
requests directly netmsg'd.

* Fix issues with tcp implied connects and tcp6->tcp4 fallbacks with
implied connects.

* Fix an issue with a stack-based udp netmsg (allocate it)

* Consolidate struct ip6protosw and struct protosw into a single
structure and normalize the API functions which differed between
the two (primarily proto->pr_input()).

* Remove protosw->pr_soport()

* Replace varargs protocol *_input() functions (ongoing) with fixed
arguments.

show more ...


# 32af04f7 12-Dec-2009 Sascha Wildner <saw@online.de>

Remove inclusion of <sys/cdefs.h> from kernel .c files.

They are not needed and mostly leftovers from former __FBSDID and the
likes.

Also add some missing CVS ids to the comments.