* [PATCH] can: Unify MTU settings for CAN interfaces
@ 2014-03-07 8:23 Oliver Hartkopp
2014-03-07 11:40 ` Marc Kleine-Budde
0 siblings, 1 reply; 6+ messages in thread
From: Oliver Hartkopp @ 2014-03-07 8:23 UTC (permalink / raw)
To: Marc Kleine-Budde; +Cc: linux-can@vger.kernel.org
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>
---
In sja1000.c and mscan.c the spaces at the beginning of the line have been
replaced by tabs as checkpatch.pl complained about it.
diff --git a/drivers/net/can/at91_can.c b/drivers/net/can/at91_can.c
index 1d00b95..f07fa89 100644
--- a/drivers/net/can/at91_can.c
+++ b/drivers/net/can/at91_can.c
@@ -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,
diff --git a/drivers/net/can/bfin_can.c b/drivers/net/can/bfin_can.c
index 8d2b89a..543ecce 100644
--- a/drivers/net/can/bfin_can.c
+++ b/drivers/net/can/bfin_can.c
@@ -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)
diff --git a/drivers/net/can/c_can/c_can.c b/drivers/net/can/c_can/c_can.c
index 951bfed..9c32e9e 100644
--- a/drivers/net/can/c_can/c_can.c
+++ b/drivers/net/can/c_can/c_can.c
@@ -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)
diff --git a/drivers/net/can/cc770/cc770.c b/drivers/net/can/cc770/cc770.c
index 0f12abf..d837927 100644
--- a/drivers/net/can/cc770/cc770.c
+++ b/drivers/net/can/cc770/cc770.c
@@ -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)
diff --git a/drivers/net/can/flexcan.c b/drivers/net/can/flexcan.c
index 61376ab..5380e58 100644
--- a/drivers/net/can/flexcan.c
+++ b/drivers/net/can/flexcan.c
@@ -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)
diff --git a/drivers/net/can/grcan.c b/drivers/net/can/grcan.c
index ab506d6..3fd9fd9 100644
--- a/drivers/net/can/grcan.c
+++ b/drivers/net/can/grcan.c
@@ -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,
diff --git a/drivers/net/can/janz-ican3.c b/drivers/net/can/janz-ican3.c
index 71594e5..31092c4 100644
--- a/drivers/net/can/janz-ican3.c
+++ b/drivers/net/can/janz-ican3.c
@@ -1597,6 +1597,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,
};
/*
diff --git a/drivers/net/can/mcp251x.c b/drivers/net/can/mcp251x.c
index cdb9808..92dc132 100644
--- a/drivers/net/can/mcp251x.c
+++ b/drivers/net/can/mcp251x.c
@@ -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[] = {
diff --git a/drivers/net/can/mscan/mscan.c b/drivers/net/can/mscan/mscan.c
index b9f3faa..e0c9be5 100644
--- a/drivers/net/can/mscan/mscan.c
+++ b/drivers/net/can/mscan/mscan.c
@@ -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)
diff --git a/drivers/net/can/pch_can.c b/drivers/net/can/pch_can.c
index 6c077eb..6472562 100644
--- a/drivers/net/can/pch_can.c
+++ b/drivers/net/can/pch_can.c
@@ -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)
diff --git a/drivers/net/can/sja1000/sja1000.c b/drivers/net/can/sja1000/sja1000.c
index 55cce47..f31499a 100644
--- a/drivers/net/can/sja1000/sja1000.c
+++ b/drivers/net/can/sja1000/sja1000.c
@@ -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)
diff --git a/drivers/net/can/slcan.c b/drivers/net/can/slcan.c
index 3fcdae2..f5b16e0 100644
--- a/drivers/net/can/slcan.c
+++ b/drivers/net/can/slcan.c
@@ -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)
diff --git a/drivers/net/can/softing/softing_main.c b/drivers/net/can/softing/softing_main.c
index 9ea0dcd..3766bd9 100644
--- a/drivers/net/can/softing/softing_main.c
+++ b/drivers/net/can/softing/softing_main.c
@@ -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 = {
diff --git a/drivers/net/can/ti_hecc.c b/drivers/net/can/ti_hecc.c
index 2c62fe6..258b9c4 100644
--- a/drivers/net/can/ti_hecc.c
+++ b/drivers/net/can/ti_hecc.c
@@ -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)
diff --git a/drivers/net/can/usb/ems_usb.c b/drivers/net/can/usb/ems_usb.c
index 52c42fd..00f2534 100644
--- a/drivers/net/can/usb/ems_usb.c
+++ b/drivers/net/can/usb/ems_usb.c
@@ -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 = {
diff --git a/drivers/net/can/usb/esd_usb2.c b/drivers/net/can/usb/esd_usb2.c
index 7fbe859..1f8ce91 100644
--- a/drivers/net/can/usb/esd_usb2.c
+++ b/drivers/net/can/usb/esd_usb2.c
@@ -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 = {
diff --git a/drivers/net/can/usb/kvaser_usb.c b/drivers/net/can/usb/kvaser_usb.c
index e77d110..ea596b5 100644
--- a/drivers/net/can/usb/kvaser_usb.c
+++ b/drivers/net/can/usb/kvaser_usb.c
@@ -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 = {
diff --git a/drivers/net/can/usb/peak_usb/pcan_usb_core.c b/drivers/net/can/usb/peak_usb/pcan_usb_core.c
index 0b7a4c3..93e4a55 100644
--- a/drivers/net/can/usb/peak_usb/pcan_usb_core.c
+++ b/drivers/net/can/usb/peak_usb/pcan_usb_core.c
@@ -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,
};
/*
diff --git a/drivers/net/can/usb/usb_8dev.c b/drivers/net/can/usb/usb_8dev.c
index a0fa1fd..cde2634 100644
--- a/drivers/net/can/usb/usb_8dev.c
+++ b/drivers/net/can/usb/usb_8dev.c
@@ -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 = {
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] can: Unify MTU settings for CAN interfaces
2014-03-07 8:23 [PATCH] can: Unify MTU settings for CAN interfaces Oliver Hartkopp
@ 2014-03-07 11:40 ` Marc Kleine-Budde
2014-03-07 12:53 ` Oliver Hartkopp
0 siblings, 1 reply; 6+ messages in thread
From: Marc Kleine-Budde @ 2014-03-07 11:40 UTC (permalink / raw)
To: Oliver Hartkopp; +Cc: linux-can@vger.kernel.org
[-- Attachment #1: Type: text/plain, Size: 1528 bytes --]
On 03/07/2014 09:23 AM, Oliver Hartkopp wrote:
> 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>
> diff --git a/drivers/net/can/slcan.c b/drivers/net/can/slcan.c
> index 3fcdae2..f5b16e0 100644
> --- a/drivers/net/can/slcan.c
> +++ b/drivers/net/can/slcan.c
> @@ -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;
> +}
> +
Why is the slcan special?
> 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)
Marc
--
Pengutronix e.K. | Marc Kleine-Budde |
Industrial Linux Solutions | Phone: +49-231-2826-924 |
Vertretung West/Dortmund | Fax: +49-5121-206917-5555 |
Amtsgericht Hildesheim, HRA 2686 | http://www.pengutronix.de |
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 242 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] can: Unify MTU settings for CAN interfaces
2014-03-07 11:40 ` Marc Kleine-Budde
@ 2014-03-07 12:53 ` Oliver Hartkopp
2014-03-07 12:56 ` Marc Kleine-Budde
0 siblings, 1 reply; 6+ messages in thread
From: Oliver Hartkopp @ 2014-03-07 12:53 UTC (permalink / raw)
To: Marc Kleine-Budde; +Cc: linux-can@vger.kernel.org
On 07.03.2014 12:40, Marc Kleine-Budde wrote:
> On 03/07/2014 09:23 AM, Oliver Hartkopp wrote:
>> 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>
>
>> diff --git a/drivers/net/can/slcan.c b/drivers/net/can/slcan.c
>> index 3fcdae2..f5b16e0 100644
>> --- a/drivers/net/can/slcan.c
>> +++ b/drivers/net/can/slcan.c
>> @@ -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;
>> +}
>> +
>
> Why is the slcan special?
slcan as well as vcan are no users of the CAN driver infrastructure.
No include of dev.h, no bitrate settings, etc.
The only drivers that do not depend from 'config CAN_DEV' in Kconfig.
The -EINVAL error is only thrown when someone tries to move the slcan MTU away
from the only valid CAN_MTU, see:
http://lxr.free-electrons.com/source/net/core/dev.c#L5324
Regards,
Oliver
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] can: Unify MTU settings for CAN interfaces
2014-03-07 12:53 ` Oliver Hartkopp
@ 2014-03-07 12:56 ` Marc Kleine-Budde
2014-03-07 12:58 ` Oliver Hartkopp
0 siblings, 1 reply; 6+ messages in thread
From: Marc Kleine-Budde @ 2014-03-07 12:56 UTC (permalink / raw)
To: Oliver Hartkopp; +Cc: linux-can@vger.kernel.org
[-- Attachment #1: Type: text/plain, Size: 1833 bytes --]
On 03/07/2014 01:53 PM, Oliver Hartkopp wrote:
>
>
> On 07.03.2014 12:40, Marc Kleine-Budde wrote:
>> On 03/07/2014 09:23 AM, Oliver Hartkopp wrote:
>>> 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>
>>
>>> diff --git a/drivers/net/can/slcan.c b/drivers/net/can/slcan.c
>>> index 3fcdae2..f5b16e0 100644
>>> --- a/drivers/net/can/slcan.c
>>> +++ b/drivers/net/can/slcan.c
>>> @@ -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;
>>> +}
>>> +
>>
>> Why is the slcan special?
>
> slcan as well as vcan are no users of the CAN driver infrastructure.
> No include of dev.h, no bitrate settings, etc.
> The only drivers that do not depend from 'config CAN_DEV' in Kconfig.
>
> The -EINVAL error is only thrown when someone tries to move the slcan MTU away
> from the only valid CAN_MTU, see:
>
> http://lxr.free-electrons.com/source/net/core/dev.c#L5324
Thanks for the clarification.
Added yo can-next.
Marc
--
Pengutronix e.K. | Marc Kleine-Budde |
Industrial Linux Solutions | Phone: +49-231-2826-924 |
Vertretung West/Dortmund | Fax: +49-5121-206917-5555 |
Amtsgericht Hildesheim, HRA 2686 | http://www.pengutronix.de |
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 242 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] can: Unify MTU settings for CAN interfaces
2014-03-07 12:56 ` Marc Kleine-Budde
@ 2014-03-07 12:58 ` Oliver Hartkopp
2014-03-07 13:04 ` Marc Kleine-Budde
0 siblings, 1 reply; 6+ messages in thread
From: Oliver Hartkopp @ 2014-03-07 12:58 UTC (permalink / raw)
To: Marc Kleine-Budde; +Cc: linux-can@vger.kernel.org
On 07.03.2014 13:56, Marc Kleine-Budde wrote:
>
> Added yo can-next.
^
Ah, you run a US keyboard :-)
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] can: Unify MTU settings for CAN interfaces
2014-03-07 12:58 ` Oliver Hartkopp
@ 2014-03-07 13:04 ` Marc Kleine-Budde
0 siblings, 0 replies; 6+ messages in thread
From: Marc Kleine-Budde @ 2014-03-07 13:04 UTC (permalink / raw)
To: Oliver Hartkopp; +Cc: linux-can@vger.kernel.org
[-- Attachment #1: Type: text/plain, Size: 461 bytes --]
On 03/07/2014 01:58 PM, Oliver Hartkopp wrote:
> On 07.03.2014 13:56, Marc Kleine-Budde wrote:
>
>>
>> Added yo can-next.
> ^
> Ah, you run a US keyboard :-)
ACK :)
--
Pengutronix e.K. | Marc Kleine-Budde |
Industrial Linux Solutions | Phone: +49-231-2826-924 |
Vertretung West/Dortmund | Fax: +49-5121-206917-5555 |
Amtsgericht Hildesheim, HRA 2686 | http://www.pengutronix.de |
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 242 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2014-03-07 13:04 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-03-07 8:23 [PATCH] can: Unify MTU settings for CAN interfaces Oliver Hartkopp
2014-03-07 11:40 ` Marc Kleine-Budde
2014-03-07 12:53 ` Oliver Hartkopp
2014-03-07 12:56 ` Marc Kleine-Budde
2014-03-07 12:58 ` Oliver Hartkopp
2014-03-07 13:04 ` Marc Kleine-Budde
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).