net/lapb: support netdev events
authorMartin Schiller <ms@dev.tdt.de>
Thu, 26 Nov 2020 06:35:54 +0000 (07:35 +0100)
committerJakub Kicinski <kuba@kernel.org>
Sat, 28 Nov 2020 01:22:51 +0000 (17:22 -0800)
commita4989fa91110508b64eea7ccde63d062113988ff
treeaef98c93311451142769cf2fa851a424a77b7503
parent7eed751b3b2a6949932a6a59fa2792c584641618
net/lapb: support netdev events

This patch allows layer2 (LAPB) to react to netdev events itself and
avoids the detour via layer3 (X.25).

1. Establish layer2 on NETDEV_UP events, if the carrier is already up.

2. Call lapb_disconnect_request() on NETDEV_GOING_DOWN events to signal
   the peer that the connection will go down.
   (Only when the carrier is up.)

3. When a NETDEV_DOWN event occur, clear all queues, enter state
   LAPB_STATE_0 and stop all timers.

4. The NETDEV_CHANGE event makes it possible to handle carrier loss and
   detection.

   In case of Carrier Loss, clear all queues, enter state LAPB_STATE_0
   and stop all timers.

   In case of Carrier Detection, we start timer t1 on a DCE interface,
   and on a DTE interface we change to state LAPB_STATE_1 and start
   sending SABM(E).

Signed-off-by: Martin Schiller <ms@dev.tdt.de>
Acked-by: Xie He <xie.he.0141@gmail.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/lapb/lapb_iface.c