summaryrefslogtreecommitdiffstats
path: root/sys/net/if_lagg.c
Commit message (Collapse)AuthorAgeFilesLines
* - Protect against sc->sc_primary being nullthompsa2008-12-171-3/+4
| | | | - Initialise speed where its used
* Update the interface baudrate taking into account the max speed for thethompsa2008-12-171-0/+19
| | | | different aggregation protocols.
* Also propagate the if_hwassist value to the parent so that cksum offload works.thompsa2008-12-161-1/+6
| | | | Submitted by: Tom Hicks (thicks_averesys.com)
* convert calls to IFQ_HANDOFF to if_transmitkmacy2008-11-221-3/+1
|
* Do not mangle if_oerrors of the underlying interface. This counterglebius2008-09-301-2/+0
| | | | | | | | belongs solely to the driver. We don't lose any statistics with this change, because in a error case the drop counter on the interface output queue is always incremented. Reviewed by: thompsa
* Move the protocol and port count checks to outside the loop, these conditionsthompsa2008-09-181-8/+8
| | | | can not change while we have the lock so no point retesting.
* Make sure there is at least one port to avoid divide by zero when choosing thethompsa2008-09-181-1/+2
| | | | | | | tx port. PR: kern/122794 MFC after: 3 days
* port % count will never be greater than LAGG_MAX_PORTS so nuke the test.thompsa2008-07-041-6/+2
|
* Switch the LACP state machine over to its own mutex to protect the internals,thompsa2008-03-161-3/+6
| | | | | | | 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.
* Pass any unmatched slowprotocols frames up the stack instead of dropping them,thompsa2007-12-311-2/+3
| | | | there are more subtypes than just LACP.
* - Use the macro to check the port status has it will also test if itsthompsa2007-12-181-2/+2
| | | | | | | | | administratively down (!IFF_UP) - Use the same parameters to lagg_link_active() to get the backup port as in the output path, this didnt actually matter in practice as sc_primary is always the first on the port list. MFC after: 3 days
* Add myself to the copyright.thompsa2007-12-171-0/+1
|
* Support monitor mode where the frame is discarded after bpf and stats ↵thompsa2007-12-051-0/+5
| | | | processing.
* Have the lagg interface generate link up/down events, the interface is markedthompsa2007-11-251-0/+20
| | | | | | | | as up if at least one of its ports also has a link up. This fixes using carp+lagg together and any other system that relies on linkstate events. PR: kern/113956 MFC after: 3 days
* Use ETHER_BPF_MTAP so that the vlan tags are visible to bpf(4) when stackedthompsa2007-10-201-2/+2
| | | | | | under a vlan. MFC after: 3 days
* Fix two panics in lagg.thompsa2007-10-121-36/+33
| | | | | | | | | | | | | 1. The locking was changed to shared but roundrobin mode still updated a pointer in the softc with the next tx interface to use. This will panic under high load. Change this to an atomically incremented sequence number in order to choose the tx port in round robin. 2. IFQ_HANDOFF will free the mbuf if the queue is full, this will then be freed again by lagg_start() and panic. Reorganised the error handling and freeing to fix this. MFC after: 3 days
* Show the ACTIVE flag in ifconfig for the single interface that is actaullythompsa2007-08-301-1/+5
| | | | | | | | active in failover mode rather than all interfaces with a link. This makes it clear if the master interface is in use or one of the backup links. Found by: Writing the Handbook section Approved by: re (kensmith)
* - Propagate the largest set of interface capabilities supported by all laggthompsa2007-07-301-15/+57
| | | | | | | | | | | ports to the lagg interface. - Use the MTU from the first interface as the lagg MTU, all extra interfaces must be the same. This fixes using a lagg interface for a vlan or enabling jumbo frames, etc. Approved by: re (kensmith) MFC After: 3 days
* Avoid holding the softc lock when using copyout().thompsa2007-07-261-28/+52
| | | | | Reported by: dfr Approved by: re (rwatson)
* Allow the LACP state to be queried from userland which at the moment is thethompsa2007-07-051-0/+8
| | | | | | | actor and partner peer info. Print out the active aggregator and per port data in verbose mode from ifconfig. Approved by: re (mux)
* non-functional cleanupthompsa2007-06-121-29/+29
| | | | | | | - remove dead code - use consistent variable names - gc unused defines - whitespace cleanup
* - packets on the input interface were counted twicethompsa2007-05-201-13/+1
| | | | - Use IFQ_HANDOFF instead of rolling our own
* Fix a mbuf leak where sc_start fails or the protocol is none.thompsa2007-05-191-2/+4
|
* Fix locking assert where we should hold the reader lock.thompsa2007-05-181-1/+1
|
* Fix unused variable error with !INET6thompsa2007-05-151-1/+2
| | | | Reported by: Artem Naluzhny, Frank Terhaar-Yonkers
* Feed ipv6 flowlabel to hash calculation.thompsa2007-05-151-1/+3
| | | | Obtained from: NetBSD
* Change from a mutex to a read/write lock. This allows the tx port to bethompsa2007-05-151-58/+40
| | | | | selected simultaneously by multiple senders and transmit/receive is not serialised between aggregated interfaces.
* - Correctly check if lp_ioctl is nullthompsa2007-05-071-20/+9
| | | | | - Remove lagg_ether_purgemulti as its no longer needed - Mark the interface as up if any ports are active rather than just the primary
* The purgemulti call is not needed since all the ports have already been ↵thompsa2007-05-071-3/+0
| | | | detached.
* Call if_setlladdr() on the aggregation port from a taskqueue so the softc lockthompsa2007-05-071-5/+78
| | | | | is not held. The short delay between aggregating the port and setting the MAC address is fine.
* Avoid touching various unsafe parts if the interface is disappearing.thompsa2007-05-071-7/+12
|
* Change from using if_delmulti() to if_delmulti_ifma() as it simplifies the codethompsa2007-05-071-58/+29
| | | | | | and is safe to use if the ifp has disappeared. Suggested by: bms
* - Add a disabled state for ports that can not be aggregatedthompsa2007-05-031-0/+1
| | | | - Refine check for lacp links, set to disabled if not suitable
* Set the master flag on the right variable.thompsa2007-05-021-1/+1
|
* Rename the trunk(4) driver to lagg(4) as it is too similar to vlan trunking.thompsa2007-04-171-0/+1607
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@
OpenPOWER on IntegriCloud