Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Oliver Hartkopp and committed by
Marc Kleine-Budde
c971fa2a e7ef085d

+30 -6
+1
drivers/net/can/at91_can.c
··· 1194 1194 .ndo_open = at91_open, 1195 1195 .ndo_stop = at91_close, 1196 1196 .ndo_start_xmit = at91_start_xmit, 1197 + .ndo_change_mtu = can_change_mtu, 1197 1198 }; 1198 1199 1199 1200 static ssize_t at91_sysfs_show_mb0_id(struct device *dev,
+1
drivers/net/can/bfin_can.c
··· 528 528 .ndo_open = bfin_can_open, 529 529 .ndo_stop = bfin_can_close, 530 530 .ndo_start_xmit = bfin_can_start_xmit, 531 + .ndo_change_mtu = can_change_mtu, 531 532 }; 532 533 533 534 static int bfin_can_probe(struct platform_device *pdev)
+1
drivers/net/can/c_can/c_can.c
··· 1277 1277 .ndo_open = c_can_open, 1278 1278 .ndo_stop = c_can_close, 1279 1279 .ndo_start_xmit = c_can_start_xmit, 1280 + .ndo_change_mtu = can_change_mtu, 1280 1281 }; 1281 1282 1282 1283 int register_c_can_dev(struct net_device *dev)
+1
drivers/net/can/cc770/cc770.c
··· 823 823 .ndo_open = cc770_open, 824 824 .ndo_stop = cc770_close, 825 825 .ndo_start_xmit = cc770_start_xmit, 826 + .ndo_change_mtu = can_change_mtu, 826 827 }; 827 828 828 829 int register_cc770dev(struct net_device *dev)
+1
drivers/net/can/flexcan.c
··· 1011 1011 .ndo_open = flexcan_open, 1012 1012 .ndo_stop = flexcan_close, 1013 1013 .ndo_start_xmit = flexcan_start_xmit, 1014 + .ndo_change_mtu = can_change_mtu, 1014 1015 }; 1015 1016 1016 1017 static int register_flexcandev(struct net_device *dev)
+1
drivers/net/can/grcan.c
··· 1578 1578 .ndo_open = grcan_open, 1579 1579 .ndo_stop = grcan_close, 1580 1580 .ndo_start_xmit = grcan_start_xmit, 1581 + .ndo_change_mtu = can_change_mtu, 1581 1582 }; 1582 1583 1583 1584 static int grcan_setup_netdev(struct platform_device *ofdev,
+1
drivers/net/can/janz-ican3.c
··· 1594 1594 .ndo_open = ican3_open, 1595 1595 .ndo_stop = ican3_stop, 1596 1596 .ndo_start_xmit = ican3_xmit, 1597 + .ndo_change_mtu = can_change_mtu, 1597 1598 }; 1598 1599 1599 1600 /*
+1
drivers/net/can/mcp251x.c
··· 996 996 .ndo_open = mcp251x_open, 997 997 .ndo_stop = mcp251x_stop, 998 998 .ndo_start_xmit = mcp251x_hard_start_xmit, 999 + .ndo_change_mtu = can_change_mtu, 999 1000 }; 1000 1001 1001 1002 static const struct of_device_id mcp251x_of_match[] = {
+4 -3
drivers/net/can/mscan/mscan.c
··· 647 647 } 648 648 649 649 static const struct net_device_ops mscan_netdev_ops = { 650 - .ndo_open = mscan_open, 651 - .ndo_stop = mscan_close, 652 - .ndo_start_xmit = mscan_start_xmit, 650 + .ndo_open = mscan_open, 651 + .ndo_stop = mscan_close, 652 + .ndo_start_xmit = mscan_start_xmit, 653 + .ndo_change_mtu = can_change_mtu, 653 654 }; 654 655 655 656 int register_mscandev(struct net_device *dev, int mscan_clksrc)
+1
drivers/net/can/pch_can.c
··· 950 950 .ndo_open = pch_can_open, 951 951 .ndo_stop = pch_close, 952 952 .ndo_start_xmit = pch_xmit, 953 + .ndo_change_mtu = can_change_mtu, 953 954 }; 954 955 955 956 static void pch_can_remove(struct pci_dev *pdev)
+4 -3
drivers/net/can/sja1000/sja1000.c
··· 642 642 EXPORT_SYMBOL_GPL(free_sja1000dev); 643 643 644 644 static const struct net_device_ops sja1000_netdev_ops = { 645 - .ndo_open = sja1000_open, 646 - .ndo_stop = sja1000_close, 647 - .ndo_start_xmit = sja1000_start_xmit, 645 + .ndo_open = sja1000_open, 646 + .ndo_stop = sja1000_close, 647 + .ndo_start_xmit = sja1000_start_xmit, 648 + .ndo_change_mtu = can_change_mtu, 648 649 }; 649 650 650 651 int register_sja1000dev(struct net_device *dev)
+6
drivers/net/can/slcan.c
··· 411 411 slcan_devs[i] = NULL; 412 412 } 413 413 414 + static int slcan_change_mtu(struct net_device *dev, int new_mtu) 415 + { 416 + return -EINVAL; 417 + } 418 + 414 419 static const struct net_device_ops slc_netdev_ops = { 415 420 .ndo_open = slc_open, 416 421 .ndo_stop = slc_close, 417 422 .ndo_start_xmit = slc_xmit, 423 + .ndo_change_mtu = slcan_change_mtu, 418 424 }; 419 425 420 426 static void slc_setup(struct net_device *dev)
+1
drivers/net/can/softing/softing_main.c
··· 628 628 .ndo_open = softing_netdev_open, 629 629 .ndo_stop = softing_netdev_stop, 630 630 .ndo_start_xmit = softing_netdev_start_xmit, 631 + .ndo_change_mtu = can_change_mtu, 631 632 }; 632 633 633 634 static const struct can_bittiming_const softing_btr_const = {
+1
drivers/net/can/ti_hecc.c
··· 871 871 .ndo_open = ti_hecc_open, 872 872 .ndo_stop = ti_hecc_close, 873 873 .ndo_start_xmit = ti_hecc_xmit, 874 + .ndo_change_mtu = can_change_mtu, 874 875 }; 875 876 876 877 static int ti_hecc_probe(struct platform_device *pdev)
+1
drivers/net/can/usb/ems_usb.c
··· 883 883 .ndo_open = ems_usb_open, 884 884 .ndo_stop = ems_usb_close, 885 885 .ndo_start_xmit = ems_usb_start_xmit, 886 + .ndo_change_mtu = can_change_mtu, 886 887 }; 887 888 888 889 static const struct can_bittiming_const ems_usb_bittiming_const = {
+1
drivers/net/can/usb/esd_usb2.c
··· 888 888 .ndo_open = esd_usb2_open, 889 889 .ndo_stop = esd_usb2_close, 890 890 .ndo_start_xmit = esd_usb2_start_xmit, 891 + .ndo_change_mtu = can_change_mtu, 891 892 }; 892 893 893 894 static const struct can_bittiming_const esd_usb2_bittiming_const = {
+1
drivers/net/can/usb/kvaser_usb.c
··· 1388 1388 .ndo_open = kvaser_usb_open, 1389 1389 .ndo_stop = kvaser_usb_close, 1390 1390 .ndo_start_xmit = kvaser_usb_start_xmit, 1391 + .ndo_change_mtu = can_change_mtu, 1391 1392 }; 1392 1393 1393 1394 static const struct can_bittiming_const kvaser_usb_bittiming_const = {
+1
drivers/net/can/usb/peak_usb/pcan_usb_core.c
··· 702 702 .ndo_open = peak_usb_ndo_open, 703 703 .ndo_stop = peak_usb_ndo_stop, 704 704 .ndo_start_xmit = peak_usb_ndo_start_xmit, 705 + .ndo_change_mtu = can_change_mtu, 705 706 }; 706 707 707 708 /*
+1
drivers/net/can/usb/usb_8dev.c
··· 887 887 .ndo_open = usb_8dev_open, 888 888 .ndo_stop = usb_8dev_close, 889 889 .ndo_start_xmit = usb_8dev_start_xmit, 890 + .ndo_change_mtu = can_change_mtu, 890 891 }; 891 892 892 893 static const struct can_bittiming_const usb_8dev_bittiming_const = {