AW: AW: AW: [PATCH] can: isotp: omit unintended hrtimer restart on socket release

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello Oliver,

> >>> bring up a vcan0 interface with:
> >>> sudo modprobe vcan
> >>> sudo ip link add dev vcan0 type vcan
> >>> sudo ifconfig vcan0 up
> >>>
> >>> here are the scripts:
> >>> --- isotp_server.sh ---
> >>> #!/bin/bash
> >>> iface=vcan0
> >>> echo "Wait for Messages on $iface"
> >>> while true; do
> >>>       exec 3< <(isotprecv -s 77E -d 714 -b F -p AA:AA $iface)
> >>>       rxpid=$!
> >>>       wait $rxpid
> >>>       output=$(cat <&3)
> >>>       echo "7F 01 11" | isotpsend -s 77E -d 714 -p AA:AA -L 16:8:0 $iface
> >>> done
> >>
> >> IMO the issue arises with the use of isotpsend and isotprecv.
> >> These tools are intended to get a hands-on impression how the isotp
> >> stack works.
> >>
> >> This kind of use in a script leads to the creation and (now delayed)
> >> *removal* of isotp sockets for *each* single PDU transfer.
> >
> > Maybe I am wrong but I see something different.
> > e.g. without this patch:
> >   (000.000240)  canfd0  714   [8]  2B 01 01 01 01 01 01 01
> >   (000.000261)  canfd0  77E   [8]  30 0F 00 AA AA AA AA AA
> >   (000.000496)  canfd0  714   [8]  2C 01 01 01 01 01 01 01
> >
> > and with this patch:
> >   (000.000414)  canfd0  714   [8]  2B 01 01 01 01 01 01 01
> >   (000.000262)  canfd0  77E   [8]  30 0F 00 AA AA AA AA AA
> >   (000.001536)  canfd0  714   [8]  2C 01 01 01 01 01 01 01
> >
> 
> I'm running a 5.14.0-rc7-00011-g6e764bcd1cf7 kernel here and see this:
> 
>   (000.000001)  vcan0  714   [8]  2B 01 01 01 01 01 01 01
>   (000.000015)  vcan0  77E   [8]  30 0F 00 AA AA AA AA AA
>   (000.000005)  vcan0  714   [8]  2C 01 01 01 01 01 01 01
> 
> Test iso-tp with 1000 byte frames on vcan0 (data:01)
>      1 / curr:   40 / min:   40 / max:   40 / avg:   40.0
>      2 / curr:   30 / min:   30 / max:   40 / avg:   35.0
>      3 / curr:   35 / min:   30 / max:   40 / avg:   35.0
>      4 / curr:   52 / min:   30 / max:   52 / avg:   39.2
>      5 / curr:   40 / min:   30 / max:   52 / avg:   39.4
> (..)
> 
> when running your scripts from the initial post.
> 
> Is you canfd0 interface a real hardware?
> 
Yes, the canfd0 interface is a real hardware (a MCP2518FD connected
to a RaspberryPi-4-Compute-Module).

I am running a 5.10.60 kernel. 
With using the testscripts I provided I can see this:
with the patch:

    1 / curr:  147 / min:  147 / max:  147 / avg:  147.0
    2 / curr:  107 / min:  107 / max:  147 / avg:  127.0
    3 / curr:  118 / min:  107 / max:  147 / avg:  124.0
    4 / curr:  138 / min:  107 / max:  147 / avg:  127.5
    5 / curr:  115 / min:  107 / max:  147 / avg:  125.0
    6 / curr:  158 / min:  107 / max:  158 / avg:  130.5
    7 / curr:  140 / min:  107 / max:  158 / avg:  131.9

and without the patch:

   39 / curr:   42 / min:   28 / max:   45 / avg:   30.9
   40 / curr:   41 / min:   28 / max:   45 / avg:   31.2
   41 / curr:   28 / min:   28 / max:   45 / avg:   31.1
   42 / curr:   29 / min:   28 / max:   45 / avg:   31.0
   43 / curr:   31 / min:   28 / max:   45 / avg:   31.0
   44 / curr:   28 / min:   28 / max:   45 / avg:   31.0

but if I compare the candumps I can see:
with the patch:

 (000.000008)  vcan0  714   [8]  2F 01 01 01 01 01 01 01
 (000.000209)  vcan0  77E   [8]  30 0F 00 AA AA AA AA AA
 (000.000061)  vcan0  714   [8]  20 01 01 01 01 01 01 01

and without:

 (000.000004)  vcan0  714   [8]  2F 01 01 01 01 01 01 01
 (000.000069)  vcan0  77E   [8]  30 0F 00 AA AA AA AA AA
 (000.000017)  vcan0  714   [8]  20 01 01 01 01 01 01 01

sorry, I missed that: Over here the delay seems to be in
the FC and not in the CF after the FC. This is what is
different compared to the real hardware.

So to me it seems that the rcu implementation
has changed on the way from 5.10 to 5.14?

Sven








[Index of Archives]     [Automotive Discussions]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]     [CAN Bus]

  Powered by Linux