aboutsummaryrefslogtreecommitdiff
path: root/sys/net/ieee8023ad_lacp.c
Commit message (Collapse)AuthorAgeFilesLines
* Use the flowid if its available for selecting the tx port.Andrew Thompson2009-04-301-1/+4
| | | | Notes: svn path=/head/; revision=191692
* Update the interface baudrate taking into account the max speed for theAndrew Thompson2008-12-171-0/+2
| | | | | | | different aggregation protocols. Notes: svn path=/head/; revision=186254
* Switch the LACP state machine over to its own mutex to protect the internals,Andrew Thompson2008-03-161-124/+103
| | | | | | | | | | this means that it no longer grabs the lagg rwlock. Use two port table arrays which list the active ports for Tx and switch between them with an atomic op. Now the lagg rwlock is only exclusively locked for management (ioctls) and queuing of lacp control frames isnt needed. Notes: svn path=/head/; revision=177274
* Pass any unmatched slowprotocols frames up the stack instead of dropping them,Andrew Thompson2007-12-311-5/+5
| | | | | | | there are more subtypes than just LACP. Notes: svn path=/head/; revision=175005
* Use the safer callout_init_rw() to allow the softclock to grab theAndrew Thompson2007-11-211-5/+2
| | | | | | | rwlock for us. Notes: svn path=/head/; revision=173804
* Allow the LACP state to be queried from userland which at the moment is theAndrew Thompson2007-07-051-0/+50
| | | | | | | | | | actor and partner peer info. Print out the active aggregator and per port data in verbose mode from ifconfig. Approved by: re (mux) Notes: svn path=/head/; revision=171247
* non-functional cleanupAndrew Thompson2007-06-121-56/+36
| | | | | | | | | | - remove dead code - use consistent variable names - gc unused defines - whitespace cleanup Notes: svn path=/head/; revision=170599
* Compare the partner system priority when choosing the aggregator.Andrew Thompson2007-05-191-1/+9
| | | | Notes: svn path=/head/; revision=169741
* Implement the Marker Protocol. A marker frame is placed on the interface queueAndrew Thompson2007-05-191-8/+103
| | | | | | | | | | | | | | | | of each port and any further packets are blocked, when the all the marker frames have been returned to us from the remote network device then we can be sure that all interface queues are empty. This is needed when a port is added or removed from the aggregation since it will affect the hash based distribution, if the queues are not empty then a packet from an existing connection may be placed on a different interface and arrive out of order. This was previously achieved by suppressing transmission for 1 second, now that there is an active feedback this timeout as been increased to 3 seconds and used as a fallback. Notes: svn path=/head/; revision=169739
* Fix locking assert where we should hold the reader lock.Andrew Thompson2007-05-181-1/+1
| | | | Notes: svn path=/head/; revision=169688
* Change from a mutex to a read/write lock. This allows the tx port to beAndrew Thompson2007-05-151-15/+80
| | | | | | | | selected simultaneously by multiple senders and transmit/receive is not serialised between aggregated interfaces. Notes: svn path=/head/; revision=169569
* Avoid touching various unsafe parts if the interface is disappearing.Andrew Thompson2007-05-071-1/+3
| | | | Notes: svn path=/head/; revision=169328
* Change from using if_delmulti() to if_delmulti_ifma() as it simplifies the codeAndrew Thompson2007-05-071-15/+3
| | | | | | | | | and is safe to use if the ifp has disappeared. Suggested by: bms Notes: svn path=/head/; revision=169327
* - Add a disabled state for ports that can not be aggregatedAndrew Thompson2007-05-031-5/+18
| | | | | | | - Refine check for lacp links, set to disabled if not suitable Notes: svn path=/head/; revision=169227
* Test for IFM_FDX rather than IFM_HDX as the half-duplex bit may not be set evenAndrew Thompson2007-05-021-1/+1
| | | | | | | if the link is not full-duplex. Notes: svn path=/head/; revision=169203
* Rename the trunk(4) driver to lagg(4) as it is too similar to vlan trunking.Andrew Thompson2007-04-171-73/+73
| | | | | | | | | | | | | | The name trunk is misused as the networking term trunk means carrying multiple VLANs over a single connection. The IEEE standard for link aggregation (802.3 section 3) does not talk about 'trunk' at all while it is used throughout IEEE 802.1Q in describing vlans. The lagg(4) driver provides link aggregation, failover and fault tolerance. Discussed on: current@ Notes: svn path=/head/; revision=168793
* Add the trunk(4) driver for providing link aggregation, failover and faultAndrew Thompson2007-04-101-0/+1763
tolerance. This driver allows aggregation of multiple network interfaces as one virtual interface using a number of different protocols/algorithms. failover - Sends traffic through the secondary port if the master becomes inactive. fec - Supports Cisco Fast EtherChannel. lacp - Supports the IEEE 802.3ad Link Aggregation Control Protocol (LACP) and the Marker Protocol. loadbalance - Static loadbalancing using an outgoing hash. roundrobin - Distributes outgoing traffic using a round-robin scheduler through all active ports. This code was obtained from OpenBSD and this also includes 802.3ad LACP support from agr(4) in NetBSD. Notes: svn path=/head/; revision=168561