Signed-off-by: Jouke Witteveen <j.wittev...@gmail.com> --- Documentation/networking/operstates.txt | 13 ++++++++----- net/sched/sch_generic.c | 2 +- 2 files changed, 9 insertions(+), 6 deletions(-)
diff --git a/Documentation/networking/operstates.txt b/Documentation/networking/operstates.txt index 355c6d8ef..8f1c4ff79 100644 --- a/Documentation/networking/operstates.txt +++ b/Documentation/networking/operstates.txt @@ -22,8 +22,11 @@ and changeable from userspace under certain rules. 2. Querying from userspace Both admin and operational state can be queried via the netlink -operation RTM_GETLINK. It is also possible to subscribe to RTMGRP_LINK -to be notified of updates. This is important for setting from userspace. +operation RTM_GETLINK. This is important for setting from userspace. +It is also possible to be notified of updates to the operational state +as long as the interface is admin up. For this, either subscribe to +the netlink multicast group RTNLGRP_LINK, or listen for "change" +uevents on the device. These values contain interface state: @@ -102,7 +105,7 @@ complete. Corresponding functions are netif_dormant_on() to set the flag, netif_dormant_off() to clear it and netif_dormant() to query. On device allocation, networking core sets the flags equivalent to -netif_carrier_ok() and !netif_dormant(). +!netif_carrier_ok() and netif_dormant(). Whenever the driver CHANGES one of these flags, a workqueue event is @@ -133,11 +136,11 @@ netif_carrier_ok() && !netif_dormant() is set by the driver. Afterwards, the userspace application can set IFLA_OPERSTATE to IF_OPER_DORMANT or IF_OPER_UP as long as the driver does not set netif_carrier_off() or netif_dormant_on(). Changes made by userspace -are multicasted on the netlink group RTMGRP_LINK. +are multicasted on the netlink group RTNLGRP_LINK. So basically a 802.1X supplicant interacts with the kernel like this: --subscribe to RTMGRP_LINK +-subscribe to RTNLGRP_LINK -set IFLA_LINKMODE to 1 via RTM_SETLINK -query RTM_GETLINK once to get initial state -if initial flags are not (IFF_LOWER_UP && !IFF_DORMANT), wait until diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c index de1663f7d..3a59e440f 100644 --- a/net/sched/sch_generic.c +++ b/net/sched/sch_generic.c @@ -500,7 +500,7 @@ static void dev_watchdog_down(struct net_device *dev) * netif_carrier_on - set carrier * @dev: network device * - * Device has detected that carrier. + * Device has detected acquisition of carrier. */ void netif_carrier_on(struct net_device *dev) { -- 2.19.2