History log of /openbsd-current/sys/net/trunklacp.h
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 1.14 12-Aug-2018 ccardenas

Add administrative options to LACP trunk implementation.

The trunk driver now has a new ioctl (SIOCxTRUNKOPTS), which for now only
has options for LACP:
* Mode - Active or Passive (default Active)
* Timeout - Fast or Slow (default Slow)
* System Priority - 1(high) to 65535(low) (default 32768/0x8000)
* Port Priority - 1(high) to 65535(low) (default 32768/0x8000)
* IFQ Priority - 0 to NUM_QUEUES (default 6)

At the moment, ifconfig only has options for lacpmode and lacptimeout
plumbed as those are the immediate need.

The approach taken for the options was to make them on a "trunk" vs a
"port" as what's typically seen on various NOSes (JunOS, NXOS, etc...)
as it's uncommon for a host to have one link "Passive" and the other
"Active" in a given trunk.

Just like on a NOS, when applying lacpmode or lacptimeout, the settings
are immediately applied to all existing ports in the trunk and to all
future ports brought into the trunk.

Tested by many on a plethora of NIC drivers and switches.

Ok remi@


# 1.13 12-May-2018 ccardenas

Make LACP_STATE_BITS accessible to userland

Update ifconfig to display LACP State (Actor and Partner) on
each trunk port

Ok benno@, phessler@, and tb@


Revision tags: OPENBSD_6_3_BASE
# 1.12 29-Oct-2017 mpi

Kill unused members using forward declaration only types.

Found with ctfconv(1). ok jsg@, guenther@


Revision tags: OPENBSD_5_9_BASE OPENBSD_6_0_BASE OPENBSD_6_1_BASE OPENBSD_6_2_BASE
# 1.11 05-Oct-2015 mikeb

Factor LACP frame processing out to a separate task

This is slightly refactored version of the diff by jmatthew@
that makes use of a single per-trunk task but retains per-port
mbuf queues.

Running LACP frame processing in a task context allows a simple
way to synchronize changes to the trunk ports and trunk itself
performed from the ioctl, timeout and task contexts with a kernel
lock.

OK mpi


# 1.10 23-Sep-2015 mikeb

Removes locking macros that we've inherited from NetBSD/FreeBSD.

ok dlg, mpi


Revision tags: OPENBSD_5_8_BASE
# 1.9 11-May-2015 mpi

Take trunk(4) out of ether_input().

Each physical interface of a trunk now gets a specific ifih (interface
input handler) that runs before ether_input().

Tested by sthen@, dlg@, Theo Buehler and <mxb AT alumni.chalmers DOT se>

ok sthen@, dlg@


Revision tags: OPENBSD_5_7_BASE
# 1.8 04-Dec-2014 tedu

use siphash for trunk loadbalancing. ok deraadt


Revision tags: OPENBSD_5_5_BASE OPENBSD_5_6_BASE
# 1.7 24-Oct-2013 deraadt

Move more stuff under _KERNEL
ok claudio


# 1.6 24-Oct-2013 deraadt

Move obvious kernel prototypes (and structure's with kernel pointers,
obviously only used in the kernel) behind #ifdef _KERNEL


Revision tags: OPENBSD_4_7_BASE OPENBSD_4_8_BASE OPENBSD_4_9_BASE OPENBSD_5_0_BASE OPENBSD_5_1_BASE OPENBSD_5_2_BASE OPENBSD_5_3_BASE OPENBSD_5_4_BASE
# 1.5 09-Sep-2009 reyk

remove inline functions and move some code from the trunk_lacp_input()
API function directly to lacp_input() to simplify the code path.

ok mpf@


Revision tags: OPENBSD_4_5_BASE OPENBSD_4_6_BASE
# 1.4 08-Nov-2008 mpf

Take into account that our ether_input() already strips the
ethernet header. This lets us actually process the incoming
LACP-Packets. It should now work with a lot more switches.
At least a Catalyst 3500 seems happy.
OK brad@


# 1.3 12-Oct-2008 mpf

Some more cleanup. No binary change.
OK reyk@


Revision tags: OPENBSD_4_4_BASE
# 1.2 15-Jun-2008 mpf

A bit of cleanup:
- we prefer u_int*_t over uint_*t.
- static is bad for debugging.
- header files should not contain functions.


# 1.1 15-Jun-2008 mpf

Add 802.3ad LACP support for trunk(4).
Implementation from NetBSD. Ported via FreeBSD's version in trunk^Wlagg(4).
This is still work in progress. Tested with a HP ProCurve 3500.
OK reyk@


# 1.13 12-May-2018 ccardenas

Make LACP_STATE_BITS accessible to userland

Update ifconfig to display LACP State (Actor and Partner) on
each trunk port

Ok benno@, phessler@, and tb@


Revision tags: OPENBSD_6_3_BASE
# 1.12 29-Oct-2017 mpi

Kill unused members using forward declaration only types.

Found with ctfconv(1). ok jsg@, guenther@


Revision tags: OPENBSD_5_9_BASE OPENBSD_6_0_BASE OPENBSD_6_1_BASE OPENBSD_6_2_BASE
# 1.11 05-Oct-2015 mikeb

Factor LACP frame processing out to a separate task

This is slightly refactored version of the diff by jmatthew@
that makes use of a single per-trunk task but retains per-port
mbuf queues.

Running LACP frame processing in a task context allows a simple
way to synchronize changes to the trunk ports and trunk itself
performed from the ioctl, timeout and task contexts with a kernel
lock.

OK mpi


# 1.10 23-Sep-2015 mikeb

Removes locking macros that we've inherited from NetBSD/FreeBSD.

ok dlg, mpi


Revision tags: OPENBSD_5_8_BASE
# 1.9 11-May-2015 mpi

Take trunk(4) out of ether_input().

Each physical interface of a trunk now gets a specific ifih (interface
input handler) that runs before ether_input().

Tested by sthen@, dlg@, Theo Buehler and <mxb AT alumni.chalmers DOT se>

ok sthen@, dlg@


Revision tags: OPENBSD_5_7_BASE
# 1.8 04-Dec-2014 tedu

use siphash for trunk loadbalancing. ok deraadt


Revision tags: OPENBSD_5_5_BASE OPENBSD_5_6_BASE
# 1.7 24-Oct-2013 deraadt

Move more stuff under _KERNEL
ok claudio


# 1.6 24-Oct-2013 deraadt

Move obvious kernel prototypes (and structure's with kernel pointers,
obviously only used in the kernel) behind #ifdef _KERNEL


Revision tags: OPENBSD_4_7_BASE OPENBSD_4_8_BASE OPENBSD_4_9_BASE OPENBSD_5_0_BASE OPENBSD_5_1_BASE OPENBSD_5_2_BASE OPENBSD_5_3_BASE OPENBSD_5_4_BASE
# 1.5 09-Sep-2009 reyk

remove inline functions and move some code from the trunk_lacp_input()
API function directly to lacp_input() to simplify the code path.

ok mpf@


Revision tags: OPENBSD_4_5_BASE OPENBSD_4_6_BASE
# 1.4 08-Nov-2008 mpf

Take into account that our ether_input() already strips the
ethernet header. This lets us actually process the incoming
LACP-Packets. It should now work with a lot more switches.
At least a Catalyst 3500 seems happy.
OK brad@


# 1.3 12-Oct-2008 mpf

Some more cleanup. No binary change.
OK reyk@


Revision tags: OPENBSD_4_4_BASE
# 1.2 15-Jun-2008 mpf

A bit of cleanup:
- we prefer u_int*_t over uint_*t.
- static is bad for debugging.
- header files should not contain functions.


# 1.1 15-Jun-2008 mpf

Add 802.3ad LACP support for trunk(4).
Implementation from NetBSD. Ported via FreeBSD's version in trunk^Wlagg(4).
This is still work in progress. Tested with a HP ProCurve 3500.
OK reyk@


# 1.12 29-Oct-2017 mpi

Kill unused members using forward declaration only types.

Found with ctfconv(1). ok jsg@, guenther@


Revision tags: OPENBSD_5_9_BASE OPENBSD_6_0_BASE OPENBSD_6_1_BASE OPENBSD_6_2_BASE
# 1.11 05-Oct-2015 mikeb

Factor LACP frame processing out to a separate task

This is slightly refactored version of the diff by jmatthew@
that makes use of a single per-trunk task but retains per-port
mbuf queues.

Running LACP frame processing in a task context allows a simple
way to synchronize changes to the trunk ports and trunk itself
performed from the ioctl, timeout and task contexts with a kernel
lock.

OK mpi


# 1.10 23-Sep-2015 mikeb

Removes locking macros that we've inherited from NetBSD/FreeBSD.

ok dlg, mpi


Revision tags: OPENBSD_5_8_BASE
# 1.9 11-May-2015 mpi

Take trunk(4) out of ether_input().

Each physical interface of a trunk now gets a specific ifih (interface
input handler) that runs before ether_input().

Tested by sthen@, dlg@, Theo Buehler and <mxb AT alumni.chalmers DOT se>

ok sthen@, dlg@


Revision tags: OPENBSD_5_7_BASE
# 1.8 04-Dec-2014 tedu

use siphash for trunk loadbalancing. ok deraadt


Revision tags: OPENBSD_5_5_BASE OPENBSD_5_6_BASE
# 1.7 24-Oct-2013 deraadt

Move more stuff under _KERNEL
ok claudio


# 1.6 24-Oct-2013 deraadt

Move obvious kernel prototypes (and structure's with kernel pointers,
obviously only used in the kernel) behind #ifdef _KERNEL


Revision tags: OPENBSD_4_7_BASE OPENBSD_4_8_BASE OPENBSD_4_9_BASE OPENBSD_5_0_BASE OPENBSD_5_1_BASE OPENBSD_5_2_BASE OPENBSD_5_3_BASE OPENBSD_5_4_BASE
# 1.5 09-Sep-2009 reyk

remove inline functions and move some code from the trunk_lacp_input()
API function directly to lacp_input() to simplify the code path.

ok mpf@


Revision tags: OPENBSD_4_5_BASE OPENBSD_4_6_BASE
# 1.4 08-Nov-2008 mpf

Take into account that our ether_input() already strips the
ethernet header. This lets us actually process the incoming
LACP-Packets. It should now work with a lot more switches.
At least a Catalyst 3500 seems happy.
OK brad@


# 1.3 12-Oct-2008 mpf

Some more cleanup. No binary change.
OK reyk@


Revision tags: OPENBSD_4_4_BASE
# 1.2 15-Jun-2008 mpf

A bit of cleanup:
- we prefer u_int*_t over uint_*t.
- static is bad for debugging.
- header files should not contain functions.


# 1.1 15-Jun-2008 mpf

Add 802.3ad LACP support for trunk(4).
Implementation from NetBSD. Ported via FreeBSD's version in trunk^Wlagg(4).
This is still work in progress. Tested with a HP ProCurve 3500.
OK reyk@