diff options
Diffstat (limited to 'drivers/net/ethernet/intel/e1000/e1000_main.c')
| -rw-r--r-- | drivers/net/ethernet/intel/e1000/e1000_main.c | 16 | 
1 files changed, 7 insertions, 9 deletions
diff --git a/drivers/net/ethernet/intel/e1000/e1000_main.c b/drivers/net/ethernet/intel/e1000/e1000_main.c index f42129d09e2c..93fc6c67306b 100644 --- a/drivers/net/ethernet/intel/e1000/e1000_main.c +++ b/drivers/net/ethernet/intel/e1000/e1000_main.c @@ -1085,6 +1085,10 @@ static int e1000_probe(struct pci_dev *pdev, const struct pci_device_id *ent)  	    hw->subsystem_vendor_id != PCI_VENDOR_ID_VMWARE)  		netdev->priv_flags |= IFF_UNICAST_FLT; +	/* MTU range: 46 - 16110 */ +	netdev->min_mtu = ETH_ZLEN - ETH_HLEN; +	netdev->max_mtu = MAX_JUMBO_FRAME_SIZE - (ETH_HLEN + ETH_FCS_LEN); +  	adapter->en_mng_pt = e1000_enable_mng_pass_thru(hw);  	/* initialize eeprom parameters */ @@ -3549,13 +3553,7 @@ static int e1000_change_mtu(struct net_device *netdev, int new_mtu)  {  	struct e1000_adapter *adapter = netdev_priv(netdev);  	struct e1000_hw *hw = &adapter->hw; -	int max_frame = new_mtu + ENET_HEADER_SIZE + ETHERNET_FCS_SIZE; - -	if ((max_frame < MINIMUM_ETHERNET_FRAME_SIZE) || -	    (max_frame > MAX_JUMBO_FRAME_SIZE)) { -		e_err(probe, "Invalid MTU setting\n"); -		return -EINVAL; -	} +	int max_frame = new_mtu + ETH_HLEN + ETH_FCS_LEN;  	/* Adapter-specific max frame size limits. */  	switch (hw->mac_type) { @@ -5257,8 +5255,8 @@ static void e1000_netpoll(struct net_device *netdev)  {  	struct e1000_adapter *adapter = netdev_priv(netdev); -	disable_irq(adapter->pdev->irq); -	e1000_intr(adapter->pdev->irq, netdev); +	if (disable_hardirq(adapter->pdev->irq)) +		e1000_intr(adapter->pdev->irq, netdev);  	enable_irq(adapter->pdev->irq);  }  #endif  |