net/x25: handle additional netdev events
authorMartin Schiller <ms@dev.tdt.de>
Thu, 26 Nov 2020 06:35:53 +0000 (07:35 +0100)
committerJakub Kicinski <kuba@kernel.org>
Sat, 28 Nov 2020 01:22:51 +0000 (17:22 -0800)
commit7eed751b3b2a6949932a6a59fa2792c584641618
treef0ea97a4eaa78cd2d06210b8aff8239b795a0791
parentf5d709ffde6b826133ccf9e8a104ce00fe31dbfb
net/x25: handle additional netdev events

1. Add / remove x25_link_device by NETDEV_REGISTER/UNREGISTER and also
   by NETDEV_POST_TYPE_CHANGE/NETDEV_PRE_TYPE_CHANGE.

   This change is needed so that the x25_neigh struct for an interface
   is already created when it shows up and is kept independently if the
   interface goes UP or DOWN.

   This is used in an upcomming commit, where x25 params of an neighbour
   will get configurable through ioctls.

2. NETDEV_CHANGE event makes it possible to handle carrier loss and
   detection. If carrier is lost, clean up everything related to this
   neighbour by calling x25_link_terminated().

3. Also call x25_link_terminated() for NETDEV_DOWN events and remove the
   call to x25_clear_forward_by_dev() in x25_route_device_down(), as
   this is already called by x25_kill_by_neigh() which gets called by
   x25_link_terminated().

4. Do nothing for NETDEV_UP and NETDEV_GOING_DOWN events, as these will
   be handled in layer 2 (LAPB) and layer3 (X.25) will be informed by
   layer2 when layer2 link is established and layer3 link should be
   initiated.

Signed-off-by: Martin Schiller <ms@dev.tdt.de>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/x25/af_x25.c
net/x25/x25_link.c
net/x25/x25_route.c