]> git.baikalelectronics.ru Git - kernel.git/commit
net: Add lag.h, net_lag_port_dev_txable()
authorPetr Machata <petrm@mellanox.com>
Tue, 10 Jul 2018 07:02:58 +0000 (10:02 +0300)
committerDavid S. Miller <davem@davemloft.net>
Thu, 12 Jul 2018 06:10:19 +0000 (23:10 -0700)
commitb4692ba18aba6b0073abacbe05015dc857bd7838
treecd15376f33ef53ee0bea438a986dc2e6fa630a7e
parentd2859153e8d6690df8a87cb916c4abeb16adb211
net: Add lag.h, net_lag_port_dev_txable()

LAG devices (team or bond) recognize for each one of their slave devices
whether LAG traffic is going to be sent through that device. Bond calls
such devices "active", team calls them "txable". When this state
changes, a NETDEV_CHANGELOWERSTATE notification is distributed, together
with a netdev_notifier_changelowerstate_info structure that for LAG
devices includes a tx_enabled flag that refers to the new state. The
notification thus makes it possible to react to the changes in txability
in drivers.

However there's no way to query txability from the outside on demand.
That is problematic namely for mlxsw, which when resolving ERSPAN packet
path, may encounter a LAG device, and needs to determine which of the
slaves it should choose.

To that end, introduce a new function, net_lag_port_dev_txable(), which
determines whether a given slave device is "active" or
"txable" (depending on the flavor of the LAG device). That function then
dispatches to per-LAG-flavor helpers, bond_is_active_slave_dev() resp.
team_port_dev_txable().

Because there currently is no good place where net_lag_port_dev_txable()
should be added, introduce a new header file, lag.h, which should from
now on hold any logic common to both team and bond. (But keep
netif_is_lag_master() together with the rest of netif_is_*_master()
functions).

Signed-off-by: Petr Machata <petrm@mellanox.com>
Reviewed-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: Ido Schimmel <idosch@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/if_team.h
include/net/bonding.h
include/net/lag.h [new file with mode: 0644]