hv_netvsc: Fix the list processing for network change event
authorHaiyang Zhang <haiyangz@microsoft.com>
Thu, 21 Apr 2016 23:13:01 +0000 (16:13 -0700)
committerDavid S. Miller <davem@davemloft.net>
Mon, 25 Apr 2016 03:27:58 +0000 (23:27 -0400)
RNDIS_STATUS_NETWORK_CHANGE event is handled as two "half events" --
media disconnect & connect. The second half should be added to the list
head, not to the tail. So all events are processed in normal order.

Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
Reviewed-by: K. Y. Srinivasan <kys@microsoft.com>
Reviewed-by: Vitaly Kuznetsov <vkuznets@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/hyperv/netvsc_drv.c

index bfdb568ac6b88c59acdc0db028866820b529d482..ba3f3f3d48efcb27b34b1aa6be1786d6839751c3 100644 (file)
@@ -1125,7 +1125,7 @@ static void netvsc_link_change(struct work_struct *w)
                        netif_tx_stop_all_queues(net);
                        event->event = RNDIS_STATUS_MEDIA_CONNECT;
                        spin_lock_irqsave(&ndev_ctx->lock, flags);
-                       list_add_tail(&event->list, &ndev_ctx->reconfig_events);
+                       list_add(&event->list, &ndev_ctx->reconfig_events);
                        spin_unlock_irqrestore(&ndev_ctx->lock, flags);
                        reschedule = true;
                }