Hi, On Thu, Nov 24, 2022 at 7:34 AM Marc Kleine-Budde wrote: > > Let's take the original driver author into the loop. > > On 24.11.2022 04:44:06, Yasushi SHOJI wrote: > > Microchip USB Analyzer can be set with termination setting ON or OFF. > > As I've observed, both with my oscilloscope and USB packet capture > > below, you must send "0" to turn it ON, and "1" to turn it OFF. > > > > Reverse the argument value to fix this. > > > > These are the two commands sequence, ON then OFF. > > > > > No. Time Source Destination Protocol Length Info > > > 1 0.000000 host 1.3.1 USB 46 URB_BULK out > > > > > > Frame 1: 46 bytes on wire (368 bits), 46 bytes captured (368 bits) > > > USB URB > > > Leftover Capture Data: a80000000000000000000000000000000000a8 > > > > > > No. Time Source Destination Protocol Length Info > > > 2 4.372547 host 1.3.1 USB 46 URB_BULK out > > > > > > Frame 2: 46 bytes on wire (368 bits), 46 bytes captured (368 bits) > > > USB URB > > > Leftover Capture Data: a80100000000000000000000000000000000a9 > > Is this the USB data after applying the patch? That's not from Linux. > Can you measure the resistance between CAN-H and CAN-L to verify that > your patch fixes the problem? Sure. The command I'm using on my Linux is: sudo ip link set can0 up type can bitrate 100000 termination X where X is either 0 or 120. With Debian Sid stock kernel: linux-image-6.0.0-4-amd64 - termination 0: 135.4 Ohms - termination 120: 17.82 Ohms With my patch on v6.1-rc6 - termination 0: 22.20 Ohms - termination 120: 134.2 Ohms > > Signed-off-by: Yasushi SHOJI > > --- > > drivers/net/can/usb/mcba_usb.c | 4 ++-- > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/net/can/usb/mcba_usb.c b/drivers/net/can/usb/mcba_usb.c > > index 218b098b261d..67beff1a3876 100644 > > --- a/drivers/net/can/usb/mcba_usb.c > > +++ b/drivers/net/can/usb/mcba_usb.c > > @@ -785,9 +785,9 @@ static int mcba_set_termination(struct net_device *netdev, u16 term) > > }; > > > > if (term == MCBA_TERMINATION_ENABLED) > > - usb_msg.termination = 1; > > - else > > usb_msg.termination = 0; > > + else > > + usb_msg.termination = 1; > > > > mcba_usb_xmit_cmd(priv, (struct mcba_usb_msg *)&usb_msg); > > What about the static void mcba_usb_process_ka_usb() function? Do you > need to convert this, too? Ah, yes. Thanks. Attaching a compressed patch. Let me know if I need to resend it as an email. Best, -- yashi