diff mbox series

[v5,1/7] can: netlink: allow user to turn off unsupported features

Message ID 20210815033248.98111-2-mailhol.vincent@wanadoo.fr
State New
Headers show
Series [v5,1/7] can: netlink: allow user to turn off unsupported features | expand

Commit Message

Vincent MAILHOL Aug. 15, 2021, 3:32 a.m. UTC
The sanity checks on the control modes will reject any request related
to an unsupported features, even turning it off.

Example on an interface which does not support CAN-FD:

$ ip link set can0 type can bitrate 500000 fd off
RTNETLINK answers: Operation not supported

This patch lets such command go through (but requests to turn on an
unsupported feature are, of course, still denied).

Signed-off-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
---
 drivers/net/can/dev/netlink.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Marc Kleine-Budde Aug. 19, 2021, 7:45 a.m. UTC | #1
On 15.08.2021 12:32:42, Vincent Mailhol wrote:
> The sanity checks on the control modes will reject any request related

> to an unsupported features, even turning it off.

> 

> Example on an interface which does not support CAN-FD:

> 

> $ ip link set can0 type can bitrate 500000 fd off

> RTNETLINK answers: Operation not supported

> 

> This patch lets such command go through (but requests to turn on an

> unsupported feature are, of course, still denied).

> 

> Signed-off-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr>


I'm planing to send a pull request to net-next today. I want to do some
more tests with this series, but this patch is more or less unrelated,
so I can take it in this PR, should I?

regards,
Marc

-- 
Pengutronix e.K.                 | Marc Kleine-Budde           |
Embedded Linux                   | https://www.pengutronix.de  |
Vertretung West/Dortmund         | Phone: +49-231-2826-924     |
Amtsgericht Hildesheim, HRA 2686 | Fax:   +49-5121-206917-5555 |
Vincent MAILHOL Aug. 19, 2021, 9:24 a.m. UTC | #2
On Thu. 19 Aug 2021 at 16:45, Marc Kleine-Budde <mkl@pengutronix.de> wrote:
> On 15.08.2021 12:32:42, Vincent Mailhol wrote:

> > The sanity checks on the control modes will reject any request related

> > to an unsupported features, even turning it off.

> >

> > Example on an interface which does not support CAN-FD:

> >

> > $ ip link set can0 type can bitrate 500000 fd off

> > RTNETLINK answers: Operation not supported

> >

> > This patch lets such command go through (but requests to turn on an

> > unsupported feature are, of course, still denied).

> >

> > Signed-off-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr>

>

> I'm planing to send a pull request to net-next today. I want to do some

> more tests with this series


Ack, I am also preparing a new version. But first, I am just
waiting for your reply on the tdc-mode {auto, manual, off}. :)

> but this patch is more or less unrelated,

> so I can take it in this PR, should I?


FYI, the reason to add it to the series is that when setting TDC to
off, the ip tool sets both CAN_CTRLMODE_TDC_AUTO and
CAN_CTRLMODE_TDC_MANUAL to zero (which the corresponding bits in
can_ctrlmode::mask set to 1).  Without this patch, netlink would
return -ENOTSUPP if the driver only supported one of
CAN_CTRLMODE_TDC_{AUTO,MANUAL}.

Regardless, this patch makes sense as a standalone, I am fine if
you include it in your PR.


Also, if you want, you can include the latest patch of the series as well:
https://lore.kernel.org/linux-can/20210815033248.98111-8-mailhol.vincent@wanadoo.fr/

It's a comment fix, it should be pretty harmless.


Yours sincerely,
Vincent
Marc Kleine-Budde Aug. 19, 2021, 10:07 a.m. UTC | #3
On 19.08.2021 18:24:27, Vincent MAILHOL wrote:
> On Thu. 19 Aug 2021 at 16:45, Marc Kleine-Budde <mkl@pengutronix.de> wrote:

> > On 15.08.2021 12:32:42, Vincent Mailhol wrote:

> > > The sanity checks on the control modes will reject any request related

> > > to an unsupported features, even turning it off.

> > >

> > > Example on an interface which does not support CAN-FD:

> > >

> > > $ ip link set can0 type can bitrate 500000 fd off

> > > RTNETLINK answers: Operation not supported

> > >

> > > This patch lets such command go through (but requests to turn on an

> > > unsupported feature are, of course, still denied).

> > >

> > > Signed-off-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr>

> >

> > I'm planing to send a pull request to net-next today. I want to do some

> > more tests with this series

> 

> Ack, I am also preparing a new version. But first, I am just

> waiting for your reply on the tdc-mode {auto, manual, off}. :)


I want to do some proper testing, if it's now working as I'm expecting,
before continuing the discussion. :D

> > but this patch is more or less unrelated,

> > so I can take it in this PR, should I?

> 

> FYI, the reason to add it to the series is that when setting TDC to

> off, the ip tool sets both CAN_CTRLMODE_TDC_AUTO and

> CAN_CTRLMODE_TDC_MANUAL to zero (which the corresponding bits in

> can_ctrlmode::mask set to 1).  Without this patch, netlink would

> return -ENOTSUPP if the driver only supported one of

> CAN_CTRLMODE_TDC_{AUTO,MANUAL}.


Oh, I see.

> Regardless, this patch makes sense as a standalone, I am fine if

> you include it in your PR.


Why not, reduces the patch amount on your side :)

> Also, if you want, you can include the latest patch of the series as well:

> https://lore.kernel.org/linux-can/20210815033248.98111-8-mailhol.vincent@wanadoo.fr/

> 

> It's a comment fix, it should be pretty harmless.


Ok, makes sense.

regards,
Marc

-- 
Pengutronix e.K.                 | Marc Kleine-Budde           |
Embedded Linux                   | https://www.pengutronix.de  |
Vertretung West/Dortmund         | Phone: +49-231-2826-924     |
Amtsgericht Hildesheim, HRA 2686 | Fax:   +49-5121-206917-5555 |
diff mbox series

Patch

diff --git a/drivers/net/can/dev/netlink.c b/drivers/net/can/dev/netlink.c
index 147c23d7dab7..80425636049d 100644
--- a/drivers/net/can/dev/netlink.c
+++ b/drivers/net/can/dev/netlink.c
@@ -116,7 +116,7 @@  static int can_changelink(struct net_device *dev, struct nlattr *tb[],
 		maskedflags = cm->flags & cm->mask;
 
 		/* check whether provided bits are allowed to be passed */
-		if (cm->mask & ~(priv->ctrlmode_supported | ctrlstatic))
+		if (maskedflags & ~(priv->ctrlmode_supported | ctrlstatic))
 			return -EOPNOTSUPP;
 
 		/* do not check for static fd-non-iso if 'fd' is disabled */