lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <54afa5e8-fb5e-4d90-8897-8f3c5a684418@hartkopp.net>
Date: Wed, 21 Feb 2024 15:14:02 +0100
From: Oliver Hartkopp <socketcan@...tkopp.net>
To: Vincent MAILHOL <mailhol.vincent@...adoo.fr>,
 Maxime Jayat <maxime.jayat@...ile-devices.fr>
Cc: Wolfgang Grandegger <wg@...ndegger.com>,
 Marc Kleine-Budde <mkl@...gutronix.de>, linux-can@...r.kernel.org,
 netdev@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH] can: netlink: Fix TDCO calculation using the old data
 bittiming

Hi all,

I have an old PCAN USB adapter (Classical CAN) which uses the pcan_usb 
driver and wanted to set a 50kbit/s bitrate:

ip link set can0 up txqueuelen 500 type can bitrate 50000 sjw 4

First it complained about the SJW having a higher value than some 
phase-seg value which was 2.

Error: sjw: 4 greater than phase-seg2: 2.

I always thought the driver automatically adapts the SJW value to the 
highest possible and SJW=4 could always be set. Did this change at a 
certain point?

Anyway, then I reduced the given SJW value and the ip command did not 
give any error message.

But finally there was not CAN traffic possible with my "always working 
setup".

I'm running 6.8.0-rc4-00433-g92a355464776 from Linus' tree.

Reverting this patch fixed my issue.

Best regards,
Oliver


On 07.11.23 03:26, Vincent MAILHOL wrote:
> On Tue. 7 Nov. 2023 at 03:02, Maxime Jayat
> <maxime.jayat@...ile-devices.fr> wrote:
>> The TDCO calculation was done using the currently applied data bittiming,
>> instead of the newly computed data bittiming, which means that the TDCO
>> had an invalid value unless setting the same data bittiming twice.
> 
> Nice catch!
> 
> Moving the can_calc_tdco() before the memcpy(&priv->data_bittiming,
> &dbt, sizeof(dbt)) was one of the last changes I made. And the last
> batch of tests did not catch that. Thanks for the patch!
> 
>> Fixes: d99755f71a80 ("can: netlink: add interface for CAN-FD Transmitter Delay Compensation (TDC)")
>> Signed-off-by: Maxime Jayat <maxime.jayat@...ile-devices.fr>
> 
> Reviewed-by: Vincent Mailhol <mailhol.vincent@...adoo.fr>
> 
>> ---
>>   drivers/net/can/dev/netlink.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/net/can/dev/netlink.c b/drivers/net/can/dev/netlink.c
>> index 036d85ef07f5..dfdc039d92a6 100644
>> --- a/drivers/net/can/dev/netlink.c
>> +++ b/drivers/net/can/dev/netlink.c
>> @@ -346,7 +346,7 @@ static int can_changelink(struct net_device *dev, struct nlattr *tb[],
>>                          /* Neither of TDC parameters nor TDC flags are
>>                           * provided: do calculation
>>                           */
>> -                       can_calc_tdco(&priv->tdc, priv->tdc_const, &priv->data_bittiming,
>> +                       can_calc_tdco(&priv->tdc, priv->tdc_const, &dbt,
>>                                        &priv->ctrlmode, priv->ctrlmode_supported);
>>                  } /* else: both CAN_CTRLMODE_TDC_{AUTO,MANUAL} are explicitly
>>                     * turned off. TDC is disabled: do nothing
>> --
>> 2.34.1
>>
> 

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ