some random coverage testing found that when changing mtu
under heavy traffic load, NAPI would use the rx_buffer_len variable
after it had been changed by change_mtu.
Similar to e1000 bugs found long ago.
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
                return -EINVAL;
        }
 
+       if (old_max_frame == max_frame)
+               return 0;
+
+       if (netif_running(netdev))
+               ixgb_down(adapter, true);
+
        adapter->rx_buffer_len = max_frame + 8; /* + 8 for errata */
 
        netdev->mtu = new_mtu;
 
-       if ((old_max_frame != max_frame) && netif_running(netdev)) {
-               ixgb_down(adapter, true);
+       if (netif_running(netdev))
                ixgb_up(adapter);
-       }
 
        return 0;
 }