can: Unify MTU settings for CAN interfaces
CAN interfaces only support MTU values of 16 (CAN 2.0) and 72 (CAN FD). Setting the MTU to other values is pointless but it does not really hurt. With the introduction of the CAN FD support in drivers/net/can a new function to switch the MTU for CAN FD has been introduced. This patch makes use of this can_change_mtu() function to check for correct MTU settings also in legacy CAN (2.0) devices. Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net> Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
This commit is contained in:
Родитель
e7ef085d0a
Коммит
c971fa2ae4
|
@ -1194,6 +1194,7 @@ static const struct net_device_ops at91_netdev_ops = {
|
|||
.ndo_open = at91_open,
|
||||
.ndo_stop = at91_close,
|
||||
.ndo_start_xmit = at91_start_xmit,
|
||||
.ndo_change_mtu = can_change_mtu,
|
||||
};
|
||||
|
||||
static ssize_t at91_sysfs_show_mb0_id(struct device *dev,
|
||||
|
|
|
@ -528,6 +528,7 @@ static const struct net_device_ops bfin_can_netdev_ops = {
|
|||
.ndo_open = bfin_can_open,
|
||||
.ndo_stop = bfin_can_close,
|
||||
.ndo_start_xmit = bfin_can_start_xmit,
|
||||
.ndo_change_mtu = can_change_mtu,
|
||||
};
|
||||
|
||||
static int bfin_can_probe(struct platform_device *pdev)
|
||||
|
|
|
@ -1277,6 +1277,7 @@ static const struct net_device_ops c_can_netdev_ops = {
|
|||
.ndo_open = c_can_open,
|
||||
.ndo_stop = c_can_close,
|
||||
.ndo_start_xmit = c_can_start_xmit,
|
||||
.ndo_change_mtu = can_change_mtu,
|
||||
};
|
||||
|
||||
int register_c_can_dev(struct net_device *dev)
|
||||
|
|
|
@ -823,6 +823,7 @@ static const struct net_device_ops cc770_netdev_ops = {
|
|||
.ndo_open = cc770_open,
|
||||
.ndo_stop = cc770_close,
|
||||
.ndo_start_xmit = cc770_start_xmit,
|
||||
.ndo_change_mtu = can_change_mtu,
|
||||
};
|
||||
|
||||
int register_cc770dev(struct net_device *dev)
|
||||
|
|
|
@ -1011,6 +1011,7 @@ static const struct net_device_ops flexcan_netdev_ops = {
|
|||
.ndo_open = flexcan_open,
|
||||
.ndo_stop = flexcan_close,
|
||||
.ndo_start_xmit = flexcan_start_xmit,
|
||||
.ndo_change_mtu = can_change_mtu,
|
||||
};
|
||||
|
||||
static int register_flexcandev(struct net_device *dev)
|
||||
|
|
|
@ -1578,6 +1578,7 @@ static const struct net_device_ops grcan_netdev_ops = {
|
|||
.ndo_open = grcan_open,
|
||||
.ndo_stop = grcan_close,
|
||||
.ndo_start_xmit = grcan_start_xmit,
|
||||
.ndo_change_mtu = can_change_mtu,
|
||||
};
|
||||
|
||||
static int grcan_setup_netdev(struct platform_device *ofdev,
|
||||
|
|
|
@ -1594,6 +1594,7 @@ static const struct net_device_ops ican3_netdev_ops = {
|
|||
.ndo_open = ican3_open,
|
||||
.ndo_stop = ican3_stop,
|
||||
.ndo_start_xmit = ican3_xmit,
|
||||
.ndo_change_mtu = can_change_mtu,
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
|
@ -996,6 +996,7 @@ static const struct net_device_ops mcp251x_netdev_ops = {
|
|||
.ndo_open = mcp251x_open,
|
||||
.ndo_stop = mcp251x_stop,
|
||||
.ndo_start_xmit = mcp251x_hard_start_xmit,
|
||||
.ndo_change_mtu = can_change_mtu,
|
||||
};
|
||||
|
||||
static const struct of_device_id mcp251x_of_match[] = {
|
||||
|
|
|
@ -647,9 +647,10 @@ static int mscan_close(struct net_device *dev)
|
|||
}
|
||||
|
||||
static const struct net_device_ops mscan_netdev_ops = {
|
||||
.ndo_open = mscan_open,
|
||||
.ndo_stop = mscan_close,
|
||||
.ndo_start_xmit = mscan_start_xmit,
|
||||
.ndo_open = mscan_open,
|
||||
.ndo_stop = mscan_close,
|
||||
.ndo_start_xmit = mscan_start_xmit,
|
||||
.ndo_change_mtu = can_change_mtu,
|
||||
};
|
||||
|
||||
int register_mscandev(struct net_device *dev, int mscan_clksrc)
|
||||
|
|
|
@ -950,6 +950,7 @@ static const struct net_device_ops pch_can_netdev_ops = {
|
|||
.ndo_open = pch_can_open,
|
||||
.ndo_stop = pch_close,
|
||||
.ndo_start_xmit = pch_xmit,
|
||||
.ndo_change_mtu = can_change_mtu,
|
||||
};
|
||||
|
||||
static void pch_can_remove(struct pci_dev *pdev)
|
||||
|
|
|
@ -642,9 +642,10 @@ void free_sja1000dev(struct net_device *dev)
|
|||
EXPORT_SYMBOL_GPL(free_sja1000dev);
|
||||
|
||||
static const struct net_device_ops sja1000_netdev_ops = {
|
||||
.ndo_open = sja1000_open,
|
||||
.ndo_stop = sja1000_close,
|
||||
.ndo_start_xmit = sja1000_start_xmit,
|
||||
.ndo_open = sja1000_open,
|
||||
.ndo_stop = sja1000_close,
|
||||
.ndo_start_xmit = sja1000_start_xmit,
|
||||
.ndo_change_mtu = can_change_mtu,
|
||||
};
|
||||
|
||||
int register_sja1000dev(struct net_device *dev)
|
||||
|
|
|
@ -411,10 +411,16 @@ static void slc_free_netdev(struct net_device *dev)
|
|||
slcan_devs[i] = NULL;
|
||||
}
|
||||
|
||||
static int slcan_change_mtu(struct net_device *dev, int new_mtu)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static const struct net_device_ops slc_netdev_ops = {
|
||||
.ndo_open = slc_open,
|
||||
.ndo_stop = slc_close,
|
||||
.ndo_start_xmit = slc_xmit,
|
||||
.ndo_change_mtu = slcan_change_mtu,
|
||||
};
|
||||
|
||||
static void slc_setup(struct net_device *dev)
|
||||
|
|
|
@ -628,6 +628,7 @@ static const struct net_device_ops softing_netdev_ops = {
|
|||
.ndo_open = softing_netdev_open,
|
||||
.ndo_stop = softing_netdev_stop,
|
||||
.ndo_start_xmit = softing_netdev_start_xmit,
|
||||
.ndo_change_mtu = can_change_mtu,
|
||||
};
|
||||
|
||||
static const struct can_bittiming_const softing_btr_const = {
|
||||
|
|
|
@ -871,6 +871,7 @@ static const struct net_device_ops ti_hecc_netdev_ops = {
|
|||
.ndo_open = ti_hecc_open,
|
||||
.ndo_stop = ti_hecc_close,
|
||||
.ndo_start_xmit = ti_hecc_xmit,
|
||||
.ndo_change_mtu = can_change_mtu,
|
||||
};
|
||||
|
||||
static int ti_hecc_probe(struct platform_device *pdev)
|
||||
|
|
|
@ -883,6 +883,7 @@ static const struct net_device_ops ems_usb_netdev_ops = {
|
|||
.ndo_open = ems_usb_open,
|
||||
.ndo_stop = ems_usb_close,
|
||||
.ndo_start_xmit = ems_usb_start_xmit,
|
||||
.ndo_change_mtu = can_change_mtu,
|
||||
};
|
||||
|
||||
static const struct can_bittiming_const ems_usb_bittiming_const = {
|
||||
|
|
|
@ -888,6 +888,7 @@ static const struct net_device_ops esd_usb2_netdev_ops = {
|
|||
.ndo_open = esd_usb2_open,
|
||||
.ndo_stop = esd_usb2_close,
|
||||
.ndo_start_xmit = esd_usb2_start_xmit,
|
||||
.ndo_change_mtu = can_change_mtu,
|
||||
};
|
||||
|
||||
static const struct can_bittiming_const esd_usb2_bittiming_const = {
|
||||
|
|
|
@ -1388,6 +1388,7 @@ static const struct net_device_ops kvaser_usb_netdev_ops = {
|
|||
.ndo_open = kvaser_usb_open,
|
||||
.ndo_stop = kvaser_usb_close,
|
||||
.ndo_start_xmit = kvaser_usb_start_xmit,
|
||||
.ndo_change_mtu = can_change_mtu,
|
||||
};
|
||||
|
||||
static const struct can_bittiming_const kvaser_usb_bittiming_const = {
|
||||
|
|
|
@ -702,6 +702,7 @@ static const struct net_device_ops peak_usb_netdev_ops = {
|
|||
.ndo_open = peak_usb_ndo_open,
|
||||
.ndo_stop = peak_usb_ndo_stop,
|
||||
.ndo_start_xmit = peak_usb_ndo_start_xmit,
|
||||
.ndo_change_mtu = can_change_mtu,
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
|
@ -887,6 +887,7 @@ static const struct net_device_ops usb_8dev_netdev_ops = {
|
|||
.ndo_open = usb_8dev_open,
|
||||
.ndo_stop = usb_8dev_close,
|
||||
.ndo_start_xmit = usb_8dev_start_xmit,
|
||||
.ndo_change_mtu = can_change_mtu,
|
||||
};
|
||||
|
||||
static const struct can_bittiming_const usb_8dev_bittiming_const = {
|
||||
|
|
Загрузка…
Ссылка в новой задаче