net: use core MTU range checking in misc drivers
firewire-net: - set min/max_mtu - remove fwnet_change_mtu nes: - set max_mtu - clean up nes_netdev_change_mtu xpnet: - set min/max_mtu - remove xpnet_dev_change_mtu hippi: - set min/max_mtu - remove hippi_change_mtu batman-adv: - set max_mtu - remove batadv_interface_change_mtu - initialization is a little async, not 100% certain that max_mtu is set in the optimal place, don't have hardware to test with rionet: - set min/max_mtu - remove rionet_change_mtu slip: - set min/max_mtu - streamline sl_change_mtu um/net_kern: - remove pointless ndo_change_mtu hsi/clients/ssi_protocol: - use core MTU range checking - remove now redundant ssip_pn_set_mtu ipoib: - set a default max MTU value - Note: ipoib's actual max MTU can vary, depending on if the device is in connected mode or not, so we'll just set the max_mtu value to the max possible, and let the ndo_change_mtu function continue to validate any new MTU change requests with checks for CM or not. Note that ipoib has no min_mtu set, and thus, the network core's mtu > 0 check is the only lower bounds here. mptlan: - use net core MTU range checking - remove now redundant mpt_lan_change_mtu fddi: - min_mtu = 21, max_mtu = 4470 - remove now redundant fddi_change_mtu (including export) fjes: - min_mtu = 8192, max_mtu = 65536 - The max_mtu value is actually one over IP_MAX_MTU here, but the idea is to get past the core net MTU range checks so fjes_change_mtu can validate a new MTU against what it supports (see fjes_support_mtu in fjes_hw.c) hsr: - min_mtu = 0 (calls ether_setup, max_mtu is 1500) f_phonet: - min_mtu = 6, max_mtu = 65541 u_ether: - min_mtu = 14, max_mtu = 15412 phonet/pep-gprs: - min_mtu = 576, max_mtu = 65530 - remove redundant gprs_set_mtu CC: netdev@vger.kernel.org CC: linux-rdma@vger.kernel.org CC: Stefan Richter <stefanr@s5r6.in-berlin.de> CC: Faisal Latif <faisal.latif@intel.com> CC: linux-rdma@vger.kernel.org CC: Cliff Whickman <cpw@sgi.com> CC: Robin Holt <robinmholt@gmail.com> CC: Jes Sorensen <jes@trained-monkey.org> CC: Marek Lindner <mareklindner@neomailbox.ch> CC: Simon Wunderlich <sw@simonwunderlich.de> CC: Antonio Quartulli <a@unstable.cc> CC: Sathya Prakash <sathya.prakash@broadcom.com> CC: Chaitra P B <chaitra.basappa@broadcom.com> CC: Suganath Prabu Subramani <suganath-prabu.subramani@broadcom.com> CC: MPT-FusionLinux.pdl@broadcom.com CC: Sebastian Reichel <sre@kernel.org> CC: Felipe Balbi <balbi@kernel.org> CC: Arvid Brodin <arvid.brodin@alten.se> CC: Remi Denis-Courmont <courmisch@gmail.com> Signed-off-by: Jarod Wilson <jarod@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
d0c2c9973e
commit
b3e3893e12
@@ -141,15 +141,6 @@ __be16 fddi_type_trans(struct sk_buff *skb, struct net_device *dev)
|
||||
|
||||
EXPORT_SYMBOL(fddi_type_trans);
|
||||
|
||||
int fddi_change_mtu(struct net_device *dev, int new_mtu)
|
||||
{
|
||||
if ((new_mtu < FDDI_K_SNAP_HLEN) || (new_mtu > FDDI_K_SNAP_DLEN))
|
||||
return -EINVAL;
|
||||
dev->mtu = new_mtu;
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(fddi_change_mtu);
|
||||
|
||||
static const struct header_ops fddi_header_ops = {
|
||||
.create = fddi_header,
|
||||
};
|
||||
@@ -161,6 +152,8 @@ static void fddi_setup(struct net_device *dev)
|
||||
dev->type = ARPHRD_FDDI;
|
||||
dev->hard_header_len = FDDI_K_SNAP_HLEN+3; /* Assume 802.2 SNAP hdr len + 3 pad bytes */
|
||||
dev->mtu = FDDI_K_SNAP_DLEN; /* Assume max payload of 802.2 SNAP frame */
|
||||
dev->min_mtu = FDDI_K_SNAP_HLEN;
|
||||
dev->max_mtu = FDDI_K_SNAP_DLEN;
|
||||
dev->addr_len = FDDI_K_ALEN;
|
||||
dev->tx_queue_len = 100; /* Long queues on FDDI */
|
||||
dev->flags = IFF_BROADCAST | IFF_MULTICAST;
|
||||
|
@@ -116,18 +116,6 @@ __be16 hippi_type_trans(struct sk_buff *skb, struct net_device *dev)
|
||||
|
||||
EXPORT_SYMBOL(hippi_type_trans);
|
||||
|
||||
int hippi_change_mtu(struct net_device *dev, int new_mtu)
|
||||
{
|
||||
/*
|
||||
* HIPPI's got these nice large MTUs.
|
||||
*/
|
||||
if ((new_mtu < 68) || (new_mtu > 65280))
|
||||
return -EINVAL;
|
||||
dev->mtu = new_mtu;
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(hippi_change_mtu);
|
||||
|
||||
/*
|
||||
* For HIPPI we will actually use the lower 4 bytes of the hardware
|
||||
* address as the I-FIELD rather than the actual hardware address.
|
||||
@@ -174,6 +162,8 @@ static void hippi_setup(struct net_device *dev)
|
||||
dev->type = ARPHRD_HIPPI;
|
||||
dev->hard_header_len = HIPPI_HLEN;
|
||||
dev->mtu = 65280;
|
||||
dev->min_mtu = 68;
|
||||
dev->max_mtu = 65280;
|
||||
dev->addr_len = HIPPI_ALEN;
|
||||
dev->tx_queue_len = 25 /* 5 */;
|
||||
memset(dev->broadcast, 0xFF, HIPPI_ALEN);
|
||||
|
@@ -158,17 +158,6 @@ static int batadv_interface_set_mac_addr(struct net_device *dev, void *p)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int batadv_interface_change_mtu(struct net_device *dev, int new_mtu)
|
||||
{
|
||||
/* check ranges */
|
||||
if ((new_mtu < 68) || (new_mtu > batadv_hardif_min_mtu(dev)))
|
||||
return -EINVAL;
|
||||
|
||||
dev->mtu = new_mtu;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* batadv_interface_set_rx_mode - set the rx mode of a device
|
||||
* @dev: registered network device to modify
|
||||
@@ -920,7 +909,6 @@ static const struct net_device_ops batadv_netdev_ops = {
|
||||
.ndo_vlan_rx_add_vid = batadv_interface_add_vid,
|
||||
.ndo_vlan_rx_kill_vid = batadv_interface_kill_vid,
|
||||
.ndo_set_mac_address = batadv_interface_set_mac_addr,
|
||||
.ndo_change_mtu = batadv_interface_change_mtu,
|
||||
.ndo_set_rx_mode = batadv_interface_set_rx_mode,
|
||||
.ndo_start_xmit = batadv_interface_tx,
|
||||
.ndo_validate_addr = eth_validate_addr,
|
||||
@@ -987,6 +975,7 @@ struct net_device *batadv_softif_create(struct net *net, const char *name)
|
||||
dev_net_set(soft_iface, net);
|
||||
|
||||
soft_iface->rtnl_link_ops = &batadv_link_ops;
|
||||
soft_iface->max_mtu = batadv_hardif_min_mtu(soft_iface);
|
||||
|
||||
ret = register_netdevice(soft_iface);
|
||||
if (ret < 0) {
|
||||
|
@@ -398,6 +398,7 @@ void hsr_dev_setup(struct net_device *dev)
|
||||
random_ether_addr(dev->dev_addr);
|
||||
|
||||
ether_setup(dev);
|
||||
dev->min_mtu = 0;
|
||||
dev->header_ops = &hsr_header_ops;
|
||||
dev->netdev_ops = &hsr_device_ops;
|
||||
SET_NETDEV_DEVTYPE(dev, &hsr_type);
|
||||
|
@@ -217,20 +217,10 @@ static netdev_tx_t gprs_xmit(struct sk_buff *skb, struct net_device *dev)
|
||||
return NETDEV_TX_OK;
|
||||
}
|
||||
|
||||
static int gprs_set_mtu(struct net_device *dev, int new_mtu)
|
||||
{
|
||||
if ((new_mtu < 576) || (new_mtu > (PHONET_MAX_MTU - 11)))
|
||||
return -EINVAL;
|
||||
|
||||
dev->mtu = new_mtu;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct net_device_ops gprs_netdev_ops = {
|
||||
.ndo_open = gprs_open,
|
||||
.ndo_stop = gprs_close,
|
||||
.ndo_start_xmit = gprs_xmit,
|
||||
.ndo_change_mtu = gprs_set_mtu,
|
||||
};
|
||||
|
||||
static void gprs_setup(struct net_device *dev)
|
||||
@@ -239,6 +229,8 @@ static void gprs_setup(struct net_device *dev)
|
||||
dev->type = ARPHRD_PHONET_PIPE;
|
||||
dev->flags = IFF_POINTOPOINT | IFF_NOARP;
|
||||
dev->mtu = GPRS_DEFAULT_MTU;
|
||||
dev->min_mtu = 576;
|
||||
dev->max_mtu = (PHONET_MAX_MTU - 11);
|
||||
dev->hard_header_len = 0;
|
||||
dev->addr_len = 0;
|
||||
dev->tx_queue_len = 10;
|
||||
|
Reference in New Issue
Block a user