• Haiyang Zhang's avatar
    hv_netvsc: Fix unwanted wakeup in netvsc_attach() · f6f13c12
    Haiyang Zhang authored
    When netvsc_attach() is called by operations like changing MTU, etc.,
    an extra wakeup may happen while netvsc_attach() calling
    rndis_filter_device_add() which sends rndis messages when queue is
    stopped in netvsc_detach(). The completion message will wake up queue 0.
    
    We can reproduce the issue by changing MTU etc., then the wake_queue
    counter from "ethtool -S" will increase beyond stop_queue counter:
         stop_queue: 0
         wake_queue: 1
    The issue causes queue wake up, and counter increment, no other ill
    effects in current code. So we didn't see any network problem for now.
    
    To fix this, initialize tx_disable to true, and set it to false when
    the NIC is ready to be attached or registered.
    
    Fixes: 7b2ee50c ("hv_netvsc: common detach logic")
    Signed-off-by: default avatarHaiyang Zhang <haiyangz@microsoft.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    f6f13c12
netvsc.c 40.2 KB