diff options
author | Bruce Allan <bruce.w.allan@intel.com> | 2009-11-19 12:35:45 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-11-20 13:53:27 -0800 |
commit | 610c992884c80566de31d71ec361a5a7b2a0ed5e (patch) | |
tree | 7d8340575b3a7b60930027063a0ec0c48441d267 | |
parent | 4c86e0b9455c8fa8122fc2d10935e892838c8568 (diff) | |
download | kernel-common-610c992884c80566de31d71ec361a5a7b2a0ed5e.tar.gz kernel-common-610c992884c80566de31d71ec361a5a7b2a0ed5e.tar.bz2 kernel-common-610c992884c80566de31d71ec361a5a7b2a0ed5e.zip |
e1000e: flow control thresholds not correct when changing mtu
When changing MTU, save it off prior to resetting otherwise the flow control
thresholds may be miscalculated.
Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/e1000e/netdev.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/drivers/net/e1000e/netdev.c b/drivers/net/e1000e/netdev.c index 63458270ce1b..fad8f9ea0043 100644 --- a/drivers/net/e1000e/netdev.c +++ b/drivers/net/e1000e/netdev.c @@ -4305,8 +4305,10 @@ static int e1000_change_mtu(struct net_device *netdev, int new_mtu) while (test_and_set_bit(__E1000_RESETTING, &adapter->state)) msleep(1); - /* e1000e_down has a dependency on max_frame_size */ + /* e1000e_down -> e1000e_reset dependent on max_frame_size & mtu */ adapter->max_frame_size = max_frame; + e_info("changing MTU from %d to %d\n", netdev->mtu, new_mtu); + netdev->mtu = new_mtu; if (netif_running(netdev)) e1000e_down(adapter); @@ -4336,9 +4338,6 @@ static int e1000_change_mtu(struct net_device *netdev, int new_mtu) adapter->rx_buffer_len = ETH_FRAME_LEN + VLAN_HLEN + ETH_FCS_LEN; - e_info("changing MTU from %d to %d\n", netdev->mtu, new_mtu); - netdev->mtu = new_mtu; - if (netif_running(netdev)) e1000e_up(adapter); else |