• Thomas Jarosch's avatar
    vmxnet3: Fix inconsistent LRO state after initialization · ebde6f8a
    Thomas Jarosch authored
    During initialization of vmxnet3, the state of LRO
    gets out of sync with netdev->features.
    
    This leads to very poor TCP performance in a IP forwarding
    setup and is hitting many VMware users.
    
    Simplified call sequence:
    1. vmxnet3_declare_features() initializes "adapter->lro" to true.
    
    2. The kernel automatically disables LRO if IP forwarding is enabled,
    so vmxnet3_set_flags() gets called. This also updates netdev->features.
    
    3. Now vmxnet3_setup_driver_shared() is called. "adapter->lro" is still
    set to true and LRO gets enabled again, even though
    netdev->features shows it's disabled.
    
    Fix it by updating "adapter->lro", too.
    
    The private vmxnet3 adapter flags are scheduled for removal
    in net-next, see commit a0d2730c
    "net: vmxnet3: convert to hw_features".
    
    Patch applies to 2.6.37 / 2.6.38 and 2.6.39-rc6.
    
    Please CC: comments.
    Signed-off-by: default avatarThomas Jarosch <thomas.jarosch@intra2net.com>
    Acked-by: default avatarStephen Hemminger <shemminger@vyatta.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    ebde6f8a
vmxnet3_ethtool.c 20 KB