diff options
Diffstat (limited to 'drivers/net/ethernet/intel/e1000e/netdev.c')
| -rw-r--r-- | drivers/net/ethernet/intel/e1000e/netdev.c | 22 | 
1 files changed, 10 insertions, 12 deletions
diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c index 7017281ba2dc..ffcf35af4881 100644 --- a/drivers/net/ethernet/intel/e1000e/netdev.c +++ b/drivers/net/ethernet/intel/e1000e/netdev.c @@ -5974,19 +5974,12 @@ static int e1000_change_mtu(struct net_device *netdev, int new_mtu)  	int max_frame = new_mtu + VLAN_ETH_HLEN + ETH_FCS_LEN;  	/* Jumbo frame support */ -	if ((max_frame > (VLAN_ETH_FRAME_LEN + ETH_FCS_LEN)) && +	if ((new_mtu > ETH_DATA_LEN) &&  	    !(adapter->flags & FLAG_HAS_JUMBO_FRAMES)) {  		e_err("Jumbo Frames not supported.\n");  		return -EINVAL;  	} -	/* Supported frame sizes */ -	if ((new_mtu < (VLAN_ETH_ZLEN + ETH_FCS_LEN)) || -	    (max_frame > adapter->max_hw_frame_size)) { -		e_err("Unsupported MTU setting\n"); -		return -EINVAL; -	} -  	/* Jumbo frame workaround on 82579 and newer requires CRC be stripped */  	if ((adapter->hw.mac.type >= e1000_pch2lan) &&  	    !(adapter->flags2 & FLAG2_CRC_STRIPPING) && @@ -6762,13 +6755,13 @@ static void e1000_netpoll(struct net_device *netdev)  		e1000_intr_msix(adapter->pdev->irq, netdev);  		break;  	case E1000E_INT_MODE_MSI: -		disable_irq(adapter->pdev->irq); -		e1000_intr_msi(adapter->pdev->irq, netdev); +		if (disable_hardirq(adapter->pdev->irq)) +			e1000_intr_msi(adapter->pdev->irq, netdev);  		enable_irq(adapter->pdev->irq);  		break;  	default:		/* E1000E_INT_MODE_LEGACY */ -		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);  		break;  	} @@ -7187,6 +7180,11 @@ static int e1000_probe(struct pci_dev *pdev, const struct pci_device_id *ent)  		netdev->vlan_features |= NETIF_F_HIGHDMA;  	} +	/* MTU range: 68 - max_hw_frame_size */ +	netdev->min_mtu = ETH_MIN_MTU; +	netdev->max_mtu = adapter->max_hw_frame_size - +			  (VLAN_ETH_HLEN + ETH_FCS_LEN); +  	if (e1000e_enable_mng_pass_thru(&adapter->hw))  		adapter->flags |= FLAG_MNG_PT_ENABLED;  |