[ethernet] Use standard 1500 byte MTU unless explicitly overridden

Devices that support jumbo frames will currently default to the
largest possible MTU.  This assumption is valid for virtual adapters
such as virtio-net, where the MTU must have been configured by a
system administrator, but is unsafe in the general case of a physical
adapter.

Default to the standard Ethernet MTU, unless explicitly overridden
either by the driver or via the ${netX/mtu} setting.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
pull/76/head
Michael Brown 2018-07-17 12:01:30 +01:00
parent 05b979146d
commit b9d68b9de0
3 changed files with 3 additions and 0 deletions

View File

@ -565,6 +565,7 @@ static int ena_get_device_attributes ( struct net_device *netdev ) {
feature = &rsp->get_feature.feature;
memcpy ( netdev->hw_addr, feature->device.mac, ETH_ALEN );
netdev->max_pkt_len = le32_to_cpu ( feature->device.mtu );
netdev->mtu = ( netdev->max_pkt_len - ETH_HLEN );
DBGC ( ena, "ENA %p MAC %s MTU %zd\n",
ena, eth_ntoa ( netdev->hw_addr ), netdev->max_pkt_len );

View File

@ -493,6 +493,7 @@ static int virtnet_probe_legacy ( struct pci_device *pci ) {
&mtu, sizeof ( mtu ) );
DBGC ( virtnet, "VIRTIO-NET %p mtu=%d\n", virtnet, mtu );
netdev->max_pkt_len = ( mtu + ETH_HLEN );
netdev->mtu = mtu;
}
/* Register network device */

View File

@ -269,6 +269,7 @@ struct net_device * alloc_etherdev ( size_t priv_size ) {
netdev->ll_protocol = &ethernet_protocol;
netdev->ll_broadcast = eth_broadcast;
netdev->max_pkt_len = ETH_FRAME_LEN;
netdev->mtu = ETH_MAX_MTU;
}
return netdev;
}