History log of /src/sys/net/lagg/
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base thorpej-i2c-spi-conf-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1
1.1 17-May-2021 yamaguchi

branches: 1.1.2; 1.1.6;
Add a new link-aggregation pseudo interface named lagg(4)

- FreeBSD's lagg(4) based implementation
- MP-safe and MP-scalable


Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base
1.4 31-Mar-2022 yamaguchi

Added a kernel option to run LACP on a half duplex interface


1.3 16-Nov-2021 yamaguchi

Added a kernel option to set SYNC bit of LACP
while the lagg interface is in STANDBY state


1.2 12-Oct-2021 yamaguchi

lagg: update capabilities of ifnet and ethercom

Commonly capabilities of all child interface are configured
to a lagg interface.


Revision tags: thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base thorpej-i2c-spi-conf-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1
1.1 17-May-2021 yamaguchi

branches: 1.1.2; 1.1.6;
Add a new link-aggregation pseudo interface named lagg(4)

- FreeBSD's lagg(4) based implementation
- MP-safe and MP-scalable


Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base
1.74 30-Jul-2025 ozaki-r

lagg: fix locking against myself in lagg_linkstate_changed

Since if.c v1.535 linkstate processing is done with IFNET_LOCK held, so
lagg doesn't need to take it by itself anymore.

Reported by mlelstv@
Acked by yamaguchi@


1.73 25-Apr-2025 andvar

s/cahanged/changed/ in comment.


1.72 05-Jul-2024 rin

sys: Drop redundant NULL check before m_freem(9)

m_freem(9) safely has accepted NULL argument at least since 4.2BSD:
https://www.tuhs.org/cgi-bin/utree.pl?file=4.2BSD/usr/src/sys/sys/uipc_mbuf.c

Compile-tested on amd64/ALL.

Suggested by knakahara@


Revision tags: perseant-exfatfs-base-20240630 perseant-exfatfs-base
1.71 29-Jun-2024 riastradh

branches: 1.71.2;
if_stats(9): Add ifp argument to if_stat..._ref.

This will enable us to pass the ifp through to a dtrace probe inside.

No functional change intended in this change, but this is an API
change visible to modules so it shouldn't be pulled up.

PR kern/58377


1.70 05-Apr-2024 yamaguchi

lagg(4): Added vlan check


1.69 05-Apr-2024 yamaguchi

lagg(4): release lock before pserialize_perform() if possible


1.68 05-Apr-2024 yamaguchi

lagg(4): added __predict_true


1.67 04-Apr-2024 yamaguchi

Added comments to lagg(4)


1.66 04-Apr-2024 yamaguchi

lagg(4): replace NULL check with KASSERT because lp_softc is always non-NULL


1.65 04-Apr-2024 yamaguchi

lagg(4): increase output packets and bytes only if no error occurred

pointed out by ozaki-r@, thanks.


1.64 04-Apr-2024 yamaguchi

lagg(4): change errno

suggested by ozaki-r@, thanks.


1.63 04-Apr-2024 yamaguchi

lagg(4): added NULL check for pfil_run_hooks

pointed out by ozaki-r@, thanks.


1.62 04-Apr-2024 yamaguchi

lagg(4): move comment about IFF_PROMISC

pointed out by ozaki-r@, thanks.


1.61 04-Apr-2024 yamaguchi

lagg(4): added size check to SIOCSLAGG

pointed out by ozaki-r@, thanks.


1.60 04-Apr-2024 yamaguchi

added missing LAGG_UNLOCK()


1.59 04-Apr-2024 yamaguchi

lagg(4): Remove unnecessary LAGG_LOCK holding while lagg_proto_detach()
to avoid deadlock in workqueue_wait due to LAGG_LOCK holding

lagg_proto_detach dose not need to hold LAGG_LOCK because only one
context can access to a detaching protocol after sc->sc_var is updated.
But it was held without any reason. And it had caused a deadlock by
holding LAGG_LOCK in caller of workqueue_wait
and waiting for the lock in worker.


1.58 04-Apr-2024 yamaguchi

lagg(4): use flexible array member


1.57 01-Dec-2023 yamaguchi

lagg(4): eliminate unnecessary reset by the change of if_flags


1.56 01-Dec-2023 yamaguchi

lagg(4): use sadl for lagg(4) configured by a user


1.55 28-Nov-2023 yamaguchi

lagg(4): Fix missing IFNET_LOCK acquirement


1.54 22-Nov-2023 yamaguchi

Set the fastest linkspeed in each physical interface to lagg(4)


1.53 22-Nov-2023 yamaguchi

Set ETHERCAP_VLAN_HWTAGGING on lagg(4)
that doesn't has physical interfaces


1.52 22-Nov-2023 yamaguchi

lagg(4): Fix missing pfil_run_hooks() and bpf_mtap()


Revision tags: thorpej-ifq-base thorpej-altq-separation-base
1.51 18-Oct-2023 yamaguchi

copy MTU of lagg to a interface added to lagg
even if the interface is the first member of the lagg

This change breaks ATF test case for lagg MTU


1.50 16-Oct-2023 yamaguchi

Fix missing IFNET_LOCK holding while destroy the lagg interface


1.49 16-Oct-2023 yamaguchi

lagg(4): release LAGG_LOCK before mtu changing

PR kern/57650


Revision tags: netbsd-10-base bouyer-sunxi-drm-base
1.48 26-Jun-2022 riastradh

branches: 1.48.4;
lagg(4): Safely handle misaligned mbufs.

Optimizing for non-strict-alignment architectures -- without falling
afoul of alignment sanitizers or overeager compilers -- is left as an
exercise for the reader.

PR kern/56894


1.47 04-Apr-2022 martin

Avoid signed/unsigned comparision by casting the sizeof expression.


1.46 04-Apr-2022 yamaguchi

Move input processing of lagg(4) before ether_input
to get rid of dependence.

This implementation is similar with that of bridge(4).


1.45 01-Apr-2022 yamaguchi

lagg(4): reimplement add and delete port

The IFNET_LOCK for the adding or deleting port became to
be held the whole time while the ifnet of the port is changed.


1.44 31-Mar-2022 yamaguchi

rename lagg_enqueue to lagg_output

NFC


1.43 31-Mar-2022 yamaguchi

Use ether_ioctl to change mtu of lagg(4)


1.42 31-Mar-2022 yamaguchi

Use addlog(4) for putting 2 messages to one line


1.41 31-Mar-2022 yamaguchi

Make lagg interface specified "laggproto none" able to up


1.40 31-Mar-2022 yamaguchi

added log when ifpromisc is failed


1.39 31-Mar-2022 yamaguchi

Set flags related to MTU on adding l2tp(4) to lagg(4)


1.38 31-Mar-2022 yamaguchi

fix coding style


1.37 31-Mar-2022 yamaguchi

lagg(4): remove duplicated bpf_mtap


1.36 31-Mar-2022 yamaguchi

Change error code to ENOBUFS on lack of buffer memory

pointed out by k-goda@IIJ


1.35 31-Mar-2022 yamaguchi

Fix missing freeing resource related to protocol

pointed out by k-goda@IIJ


1.34 31-Mar-2022 yamaguchi

Switch ifp->if_output along with configuring ifp->if_lagg

lagg_port_output stored to ifp->if_output uses ifp->if_lagg.
Therefore, ifp->if_output switches to lagg_port_output after
ifp->if_lagg is configured, and restores in reverse order.

This missing order is pointed out by k-goda@IIJ


1.33 31-Mar-2022 yamaguchi

Added missing NULL check

pointed out by k-goda@IIJ


1.32 31-Mar-2022 yamaguchi

lagg(4): commonize the error handling


1.31 31-Mar-2022 yamaguchi

lagg(4): fix typo

pointed out by k-goda@IIJ


1.30 12-Jan-2022 yamaguchi

Fix to call lacp_linkstate with IFNET_LOCK held

Network stack calls lacp_linkstate through lagg_port_ioctl when
doing "ifconfig up" or "ifconfig down" to an interface that is
a member of lagg(4). And IFNET_LOCK in the member interface
is held while the ioctl.
Therefore, lacp_linkstate is renamed to
lacp_linkstate_ifnet_locked, and always called with IFNET_LOCK
held. It avoids locking agains myself.


1.29 12-Jan-2022 riastradh

lagg(4): Need to take IFNET_LOCK around if_init.

This should really just avoid dropping IFNET_LOCK before it's done
changing the port interface's configuration, but this stop-gap change
will serve provisionally to reduce crashes until we can confirm that
there's no deadlock lurking in the time this logic drops IFNET_LOCK.


1.28 31-Dec-2021 riastradh

sys: Use if_init wrapper function.

Exception: Not in kern_pmf.c, for the kind of silly reason that it
avoids having kern_pmf.c refer to symbols defined only in net; this
avoids a pain in the rump.


1.27 31-Dec-2021 riastradh

sys: Use if_stop wrapper function.

Exception: Not in kern_pmf.c, for the kind of silly reason that it
avoids having kern_pmf.c refer to symbols defined only in net; this
avoids a pain in the rump.


1.26 15-Nov-2021 yamaguchi

introduced APIs to configure VLAN TAG to ethernet devices


1.25 12-Nov-2021 yamaguchi

Configure vlan to an added interface after setting ifnet::if_lagg

The configuration uses ioctl of the interface, and the ioctl
for port (lagg_port_ioctl) needs ifnet:::if_lagg setting.


1.24 12-Nov-2021 yamaguchi

lagg: Add vid to vlanid_list in ethercom


1.23 12-Nov-2021 yamaguchi

Fix the wrong check of interface type

- lp->lp_iftype: original ifnet::if_type
- lp->lp_ifp->if_type: current ifnet::if_type
- always IFT_IEEE8023ADLAG


1.22 12-Nov-2021 yamaguchi

lagg: Notify the changes of capenables of interface
to child interfaces


1.21 11-Nov-2021 yamaguchi

lagg: Use promiscuous mode instead of if_init() to avoid panic
when the interface has no if_init()


1.20 08-Nov-2021 yamaguchi

remove unused ioctl command named SIOCGLAGGPORT
to get status of l2tp(4) added to lagg

NOTE:
SIOCGLAGGPORT is based on FreeBSD implementation.
And, currently, it is not used in NetBSD kernel/userland.


1.19 08-Nov-2021 yamaguchi

lagg: renew MAC addresses to change the value of interface type

The interface type(ifnet::if_type) is changed on adding to lagg(4)
and deleting from it.


1.18 08-Nov-2021 yamaguchi

Update the MAC address of all child interface
when that of lagg is changed.


1.17 22-Oct-2021 yamaguchi

lagg: change hash logic to generate the same value
when pairs of source and destination are the same


1.16 19-Oct-2021 yamaguchi

lagg: reject a vlan interface that is not configured

The vlan I/F has no MAC address used in LACP.


1.15 19-Oct-2021 yamaguchi

lagg: support l2tp(4) aggregation

- Accept "ifconfig lagg* laggport l2tp*"
- Set promiscuous mode when the added interface is l2tp*
- check IFF_UP in addition to IFF_RUNNING on
SIOCSIFFLAGS to a child interface.


1.14 19-Oct-2021 yamaguchi

lagg: clear I/G bitg and set G/L bit in a generated MAC address


1.13 12-Oct-2021 yamaguchi

Set a port interface of lagg(4) in promiscuous mode
when the lagg(4) is in promiscuous mode.


1.12 12-Oct-2021 yamaguchi

lagg: update capabilities of ifnet and ethercom

Commonly capabilities of all child interface are configured
to a lagg interface.


1.11 05-Oct-2021 yamaguchi

Drop unicast packets that are not for us
when lagg(4) is not in promisc


1.10 30-Sep-2021 yamaguchi

lagg: Register lagg_ifdetach to ether_ifdetach hook


1.9 30-Sep-2021 yamaguchi

Make a link-layer address of lagg(4) configurable by ifconfig(8)

lagg(4) uses a configured link-layer (MAC) address instead
of a random MAC address generated on creating.
The configured MAC address is copied to all child interface
and used for a system id of LACP.


1.8 30-Sep-2021 yamaguchi

Fix to acquire LAGG_LOCK without psref
to remove possibility of deadlock

the deadlock maybe happened between lagg_ifdetach()
and lagg_delport()

1. lagg_ifdetach calls psref_target_acquire()
2. lagg_delport calls LAGG_LOCK()
3. lagg_ifdetach calls LAGG_LOCK()
- wait for lagg_delport
4. lagg_delport calls psref_target_destroy()
- wait for lagg_ifdetach


1.7 30-Sep-2021 yamaguchi

lagg: Register lagg_linkstate_changed to link-state change hook


Revision tags: thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base thorpej-i2c-spi-conf-base
1.6 13-Jul-2021 ozaki-r

lagg: fix typo for ALTQ


1.5 16-Jun-2021 riastradh

branches: 1.5.2;
if_attach and if_initialize cannot fail, don't test return value

These were originally made failable back in 2017 when if_initialize
allocated a softint in every interface for link state changes, so
that it could fail gracefully instead of panicking:

https://mail-index.NetBSD.org/source-changes/2017/10/23/msg089053.html

However, this spawned many seldom- or never-tested error branches,
which are risky to have around. And that softint in every interface
has since been replaced by a single global workqueue, because link
state changes require thread context but not low latency or high
throughput:

https://mail-index.NetBSD.org/source-changes/2020/02/06/msg113759.html

So there is no longer any reason for if_initialize to fail. (The
subroutine if_stats_init can't fail because percpu_alloc can't fail
either.)

There is a snag: the softint_establish in if_percpuq_create could
fail, potentially leading to bad consequences later on trying to use
the softint. This change doesn't introduce any new bugs because of
the snag -- if_percpuq_attach was already broken. However, the snag
can be better addressed without spawning error branches, either by
using a single softint or making softints less scarce.

(Separate commit will change the signatures of if_attach and
if_initialize to return void, scheduled to ride whatever is the next
convenient kernel bump.)

Patch and testing on amd64 and evbmips64-eb by maya@; commit message
soliloquy, and compile-testing on evbppc/i386/earmv7hf, by me.


Revision tags: cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1
1.4 24-May-2021 thorpej

branches: 1.4.2;
Move __KERNEL_RCSID() to the traditional location.


1.3 24-May-2021 yamaguchi

Added missing copyright and license notice

pointed out by thorpej@n.o., Thanks.


1.2 19-May-2021 rillig

if_lagg: fix format string incompatibility

In struct ifnet, the member if_mtu has type uint64_t, which differs from
struct ifreq, where the member ifru_mtu has type int.


1.1 17-May-2021 yamaguchi

Add a new link-aggregation pseudo interface named lagg(4)

- FreeBSD's lagg(4) based implementation
- MP-safe and MP-scalable


Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base perseant-exfatfs-base-20240630 perseant-exfatfs-base
1.4 04-Apr-2024 yamaguchi

lagg(4): use flexible array member


Revision tags: netbsd-10-1-RELEASE netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base
1.3 08-Nov-2021 yamaguchi

remove unused ioctl command named SIOCGLAGGPORT
to get status of l2tp(4) added to lagg

NOTE:
SIOCGLAGGPORT is based on FreeBSD implementation.
And, currently, it is not used in NetBSD kernel/userland.


Revision tags: thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base thorpej-i2c-spi-conf-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1
1.2 24-May-2021 yamaguchi

branches: 1.2.2; 1.2.6;
Added missing copyright and license notice

pointed out by thorpej@n.o., Thanks.


1.1 17-May-2021 yamaguchi

Add a new link-aggregation pseudo interface named lagg(4)

- FreeBSD's lagg(4) based implementation
- MP-safe and MP-scalable


Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base perseant-exfatfs-base-20240630 perseant-exfatfs-base
1.43 05-Apr-2024 yamaguchi

lagg(4): move reply limitation to recive processing


1.42 05-Apr-2024 yamaguchi

lagg(4): set suppress at the same time with distribution state


1.41 05-Apr-2024 yamaguchi

added missing workq_wait for lacp_tick_work()


1.40 05-Apr-2024 yamaguchi

lagg(4): added check of LACP running state for safety

When LACP stops, the handler of callout do nothing
because all port is already detached from lacp.
Therefore, the added checks are just for safety.


1.39 05-Apr-2024 yamaguchi

fix missing LACP_LOCK


1.38 05-Apr-2024 yamaguchi

lagg(4): added missing pserialize_read_enter


1.37 04-Apr-2024 yamaguchi

Added comments to lagg(4)


1.36 04-Apr-2024 yamaguchi

lagg(4): move allocate memory before ioctl


1.35 04-Apr-2024 yamaguchi

Added KASSERT for LACP_LOCK


1.34 04-Apr-2024 yamaguchi

lagg(4): Use CTASSERT


1.33 04-Apr-2024 yamaguchi

lagg(4): change errno

suggested by ozaki-r@, thanks.


1.32 04-Apr-2024 yamaguchi

lagg(4): Remove unnecessary LAGG_LOCK holding while lagg_proto_detach()
to avoid deadlock in workqueue_wait due to LAGG_LOCK holding

lagg_proto_detach dose not need to hold LAGG_LOCK because only one
context can access to a detaching protocol after sc->sc_var is updated.
But it was held without any reason. And it had caused a deadlock by
holding LAGG_LOCK in caller of workqueue_wait
and waiting for the lock in worker.


1.31 04-Apr-2024 yamaguchi

lagg(4): added log on detaching a port from SELECTED state to STANDBY


1.30 04-Apr-2024 yamaguchi

lagg(4): Added LACP_READY state for logging
when a port turns SELECTED or UNSELECTED


1.29 22-Nov-2023 yamaguchi

lagg(4): Added logs about LACP processing


1.28 22-Nov-2023 yamaguchi

Set the fastest linkspeed in each physical interface to lagg(4)


1.27 22-Nov-2023 yamaguchi

Update sending interval when the partner's state is changed


1.26 22-Nov-2023 yamaguchi

Change LACPDU sending interval by TIMEOUT bit in partner's state


Revision tags: thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base
1.25 10-Apr-2022 andvar

branches: 1.25.4;
fix various typos in comments and output/log messages.


1.24 04-Apr-2022 yamaguchi

Fix missing m_reset_rcvif for allocated mbuf


1.23 04-Apr-2022 yamaguchi

Move input processing of lagg(4) before ether_input
to get rid of dependence.

This implementation is similar with that of bridge(4).


1.22 01-Apr-2022 yamaguchi

lagg(4): reimplement add and delete port

The IFNET_LOCK for the adding or deleting port became to
be held the whole time while the ifnet of the port is changed.


1.21 31-Mar-2022 yamaguchi

rename lagg_enqueue to lagg_output

NFC


1.20 31-Mar-2022 yamaguchi

Use addlog(4) for putting 2 messages to one line


1.19 31-Mar-2022 yamaguchi

update state of aggregator on multi-speed changing


1.18 31-Mar-2022 yamaguchi

handle LACPDU and MarkerDU in thread context

Those handler move from softint to thread context to
improve throughput in high load, because they hold LACP_LOCK.

pointed out by k-goda@IIJ


1.17 31-Mar-2022 yamaguchi

fix coding style


1.16 31-Mar-2022 yamaguchi

Added length check for safety

pointed out by k-goda@IIJ


1.15 31-Mar-2022 yamaguchi

Added missing kmem_free

pointed out by k-goda@IIJ


1.14 31-Mar-2022 yamaguchi

Added a kernel option to run LACP on a half duplex interface


1.13 16-Jan-2022 rillig

lagg: remove stray semicolon

No binary change.


1.12 12-Jan-2022 yamaguchi

Fix to call lacp_linkstate with IFNET_LOCK held

Network stack calls lacp_linkstate through lagg_port_ioctl when
doing "ifconfig up" or "ifconfig down" to an interface that is
a member of lagg(4). And IFNET_LOCK in the member interface
is held while the ioctl.
Therefore, lacp_linkstate is renamed to
lacp_linkstate_ifnet_locked, and always called with IFNET_LOCK
held. It avoids locking agains myself.


1.11 06-Jan-2022 riastradh

lagg(4): Take lock as required around if ioctl.

Note: There are some calls to SIOCADDMULTI/SIOCDELMULTI that take the
lock when they don't need it, but it's not clear it's harmful either
unless they come via a caller that holds softnet_lock.

candidate fix for
https://mail-index.netbsd.org/current-users/2021/12/31/msg041876.html

ok yamaguchi


1.10 31-Dec-2021 riastradh

sys: Use if_ioctl wrapper function.


1.9 30-Nov-2021 yamaguchi

Move net/agr/ieee8023_slowprotocols.h to net/ether_slowprotocols.h

Definitions related to slowprotocols are duplicated between
agr/ieee8023ad_slowprotocols.h and lagg/if_lagg_lacp.h
Therefore, the contents are moved to added file.

Note: currently, there are just LACP and Marker protocol,
however slowprotocols is independent of them.


1.8 16-Nov-2021 yamaguchi

Added a kernel option to set SYNC bit of LACP
while the lagg interface is in STANDBY state


1.7 16-Nov-2021 yamaguchi

Set SYNC bit of LACPDU when the interface is on STANDBY state


1.6 19-Oct-2021 yamaguchi

lagg: support l2tp(4) aggregation

- Accept "ifconfig lagg* laggport l2tp*"
- Set promiscuous mode when the added interface is l2tp*
- check IFF_UP in addition to IFF_RUNNING on
SIOCSIFFLAGS to a child interface.


1.5 02-Oct-2021 mrg

avoid set-but-unused-variable warnings.


1.4 30-Sep-2021 yamaguchi

Make a link-layer address of lagg(4) configurable by ifconfig(8)

lagg(4) uses a configured link-layer (MAC) address instead
of a random MAC address generated on creating.
The configured MAC address is copied to all child interface
and used for a system id of LACP.


Revision tags: thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base thorpej-i2c-spi-conf-base
1.3 30-Jun-2021 yamaguchi

lagg: fix an uninitialize variable

pointed out by tnn@n.o., thanks.


Revision tags: cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1
1.2 18-May-2021 hannken

branches: 1.2.2; 1.2.6;
Make this compile without DIAGNOSTIC.


1.1 17-May-2021 yamaguchi

Add a new link-aggregation pseudo interface named lagg(4)

- FreeBSD's lagg(4) based implementation
- MP-safe and MP-scalable


Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base perseant-exfatfs-base-20240630 perseant-exfatfs-base
1.5 22-Nov-2023 yamaguchi

Set the fastest linkspeed in each physical interface to lagg(4)


Revision tags: netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base
1.4 31-Mar-2022 yamaguchi

branches: 1.4.4;
handle LACPDU and MarkerDU in thread context

Those handler move from softint to thread context to
improve throughput in high load, because they hold LACP_LOCK.

pointed out by k-goda@IIJ


1.3 30-Nov-2021 yamaguchi

Move net/agr/ieee8023_slowprotocols.h to net/ether_slowprotocols.h

Definitions related to slowprotocols are duplicated between
agr/ieee8023ad_slowprotocols.h and lagg/if_lagg_lacp.h
Therefore, the contents are moved to added file.

Note: currently, there are just LACP and Marker protocol,
however slowprotocols is independent of them.


Revision tags: thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base thorpej-i2c-spi-conf-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1
1.2 24-May-2021 yamaguchi

branches: 1.2.2; 1.2.6;
Added missing copyright and license notice

pointed out by thorpej@n.o., Thanks.


1.1 17-May-2021 yamaguchi

Add a new link-aggregation pseudo interface named lagg(4)

- FreeBSD's lagg(4) based implementation
- MP-safe and MP-scalable


Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base
1.16 26-Sep-2024 rin

lagg: fill name of workqueue correctly

Found by KASSERT failure for DIAGNOSTIC kernel.

Authored by ozaki-r@.


Revision tags: perseant-exfatfs-base-20240630 perseant-exfatfs-base
1.15 05-Apr-2024 yamaguchi

branches: 1.15.2;
lagg(4): Fix missing destroy for list and entry


1.14 05-Apr-2024 yamaguchi

lagg(4): release lock before pserialize_perform() if possible


1.13 05-Apr-2024 yamaguchi

lagg(4): remove unnecessary masking

pointed out by ozaki-r@, thanks.


1.12 04-Apr-2024 yamaguchi

acquire LAGG_PROTO_LOCK instead of pserialize read section


1.11 04-Apr-2024 yamaguchi

lagg(4): Added 0 length check


1.10 04-Apr-2024 yamaguchi

lagg(4): fix missing update of the number of active ports


1.9 04-Apr-2024 yamaguchi

lagg(4): update link speed when a physical interface is removed


1.8 28-Nov-2023 yamaguchi

lagg(4): Fix missing IFNET_LOCK acquirement


1.7 22-Nov-2023 yamaguchi

Set the fastest linkspeed in each physical interface to lagg(4)


Revision tags: netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base
1.6 31-Mar-2022 yamaguchi

branches: 1.6.4;
rename lagg_enqueue to lagg_output

NFC


1.5 31-Mar-2022 yamaguchi

Make lagg interface specified "laggproto none" able to up


1.4 31-Mar-2022 yamaguchi

set active when the port is distributing


1.3 31-Mar-2022 yamaguchi

lagg(4): use KASSERT


Revision tags: thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base thorpej-i2c-spi-conf-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1
1.2 24-May-2021 thorpej

branches: 1.2.2; 1.2.6;
Remove leading blank line.


1.1 17-May-2021 yamaguchi

Add a new link-aggregation pseudo interface named lagg(4)

- FreeBSD's lagg(4) based implementation
- MP-safe and MP-scalable


Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base perseant-exfatfs-base-20240630 perseant-exfatfs-base
1.20 28-Nov-2023 yamaguchi

lagg(4): Fix missing IFNET_LOCK acquirement


1.19 22-Nov-2023 yamaguchi

Set the fastest linkspeed in each physical interface to lagg(4)


Revision tags: netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base
1.18 26-Jun-2022 riastradh

branches: 1.18.4; 1.18.8;
lagg(4): Safely handle misaligned mbufs.

Optimizing for non-strict-alignment architectures -- without falling
afoul of alignment sanitizers or overeager compilers -- is left as an
exercise for the reader.

PR kern/56894


1.17 24-May-2022 andvar

fix various typos in comment, documentation and log messages.


1.16 04-Apr-2022 yamaguchi

Move input processing of lagg(4) before ether_input
to get rid of dependence.

This implementation is similar with that of bridge(4).


1.15 31-Mar-2022 yamaguchi

rename lagg_enqueue to lagg_output

NFC


1.14 31-Mar-2022 yamaguchi

Use addlog(4) for putting 2 messages to one line


1.13 31-Mar-2022 yamaguchi

Make lagg interface specified "laggproto none" able to up


1.12 31-Mar-2022 yamaguchi

added log when ifpromisc is failed


1.11 31-Mar-2022 yamaguchi

fix coding style


1.10 12-Jan-2022 yamaguchi

Fix to call lacp_linkstate with IFNET_LOCK held

Network stack calls lacp_linkstate through lagg_port_ioctl when
doing "ifconfig up" or "ifconfig down" to an interface that is
a member of lagg(4). And IFNET_LOCK in the member interface
is held while the ioctl.
Therefore, lacp_linkstate is renamed to
lacp_linkstate_ifnet_locked, and always called with IFNET_LOCK
held. It avoids locking agains myself.


1.9 19-Oct-2021 yamaguchi

lagg: support l2tp(4) aggregation

- Accept "ifconfig lagg* laggport l2tp*"
- Set promiscuous mode when the added interface is l2tp*
- check IFF_UP in addition to IFF_RUNNING on
SIOCSIFFLAGS to a child interface.


1.8 12-Oct-2021 yamaguchi

Set a port interface of lagg(4) in promiscuous mode
when the lagg(4) is in promiscuous mode.


1.7 12-Oct-2021 yamaguchi

lagg: update capabilities of ifnet and ethercom

Commonly capabilities of all child interface are configured
to a lagg interface.


1.6 30-Sep-2021 yamaguchi

lagg: Register lagg_ifdetach to ether_ifdetach hook


1.5 30-Sep-2021 yamaguchi

Make a link-layer address of lagg(4) configurable by ifconfig(8)

lagg(4) uses a configured link-layer (MAC) address instead
of a random MAC address generated on creating.
The configured MAC address is copied to all child interface
and used for a system id of LACP.


1.4 30-Sep-2021 yamaguchi

lagg: Register lagg_linkstate_changed to link-state change hook


Revision tags: thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base thorpej-i2c-spi-conf-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1
1.3 24-May-2021 yamaguchi

branches: 1.3.2; 1.3.6;
Added missing copyright and license notice

pointed out by thorpej@n.o., Thanks.


1.2 19-May-2021 rillig

if_lagg: fix Clang build

Clang is stricter than GCC when it comes to nonliteral format strings.

sys/net/lagg/if_lagg.c:2372:12: error:
format string is not a string literal [-Werror,-Wformat-nonliteral]


1.1 17-May-2021 yamaguchi

Add a new link-aggregation pseudo interface named lagg(4)

- FreeBSD's lagg(4) based implementation
- MP-safe and MP-scalable


Revision tags: perseant-exfatfs-base-20250801 perseant-exfatfs-base-20240630 perseant-exfatfs-base bouyer-sunxi-drm-base
1.6 04-Apr-2022 yamaguchi

Move input processing of lagg(4) before ether_input
to get rid of dependence.

This implementation is similar with that of bridge(4).


1.5 31-Mar-2022 yamaguchi

fix coding style


1.4 30-Sep-2021 yamaguchi

lagg: Register lagg_ifdetach to ether_ifdetach hook


1.3 30-Sep-2021 yamaguchi

lagg: Register lagg_linkstate_changed to link-state change hook


Revision tags: thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base thorpej-i2c-spi-conf-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1
1.2 24-May-2021 yamaguchi

branches: 1.2.2; 1.2.6;
Added missing copyright and license notice

pointed out by thorpej@n.o., Thanks.


1.1 17-May-2021 yamaguchi

Add a new link-aggregation pseudo interface named lagg(4)

- FreeBSD's lagg(4) based implementation
- MP-safe and MP-scalable