• Vitaly Kuznetsov's avatar
    hv_netvsc: rework link status change handling · 27a70af3
    Vitaly Kuznetsov authored
    There are several issues in hv_netvsc driver with regards to link status
    change handling:
    - RNDIS_STATUS_NETWORK_CHANGE results in calling userspace helper doing
      '/etc/init.d/network restart' and this is inappropriate and broken for
      many reasons.
    - link_watch infrastructure only sends one notification per second and
      in case of e.g. paired disconnect/connect events we get only one
      notification with last status. This makes it impossible to handle such
      situations in userspace.
    
    Redo link status changes handling in the following way:
    - Create a list of reconfig events in network device context.
    - On a reconfig event add it to the list of events and schedule
      netvsc_link_change().
    - In netvsc_link_change() ensure 2-second delay between link status
      changes.
    - Handle RNDIS_STATUS_NETWORK_CHANGE as a paired disconnect/connect event.
    Signed-off-by: default avatarVitaly Kuznetsov <vkuznets@redhat.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    27a70af3
netvsc_drv.c 31.9 KB