Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1460211
| From | Andreas Werner <andreas.werner@men.de> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | Re: [PATCH RESEND] net: can: Introduce MEN 16Z192-00 CAN controller driver |
| Date | 2016-08-11 09:20 +0200 |
| Message-ID | <s4Srv-5i-5@gated-at.bofh.it> (permalink) |
| References | (3 earlier) <s3RQR-1ls-13@gated-at.bofh.it> <s3TpD-2p3-19@gated-at.bofh.it> <s3TSF-2yD-25@gated-at.bofh.it> <s48yl-3Q0-11@gated-at.bofh.it> <s4Iiv-1wh-49@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
On Wed, Aug 10, 2016 at 10:28:45PM +0200, Oliver Hartkopp wrote: > Hi Andreas, > > On 08/09/2016 08:10 AM, Andreas Werner wrote: > >On Mon, Aug 08, 2016 at 04:35:34PM +0200, Wolfgang Grandegger wrote: > > >>>>>>You specify here one echo_skb but it's not used anywhere. Local loopback > >>>>>>seems not to be implemented. > >>>>>> > >>>>> > >>>>>Agree with you, will set it to "0". > >>>> > >>>>No, the local loopback is mandetory! > >>>> > >>> > >>>Hm ok, but if i check alloc_candev() in drivers/net/can/dev.c > >>>it is not mandatory. > > It is. > > Even those drivers that show up to use zero echo skbs in alloc_candev() > implement the echo functionality correct. > > Just check 'git grep IFF_ECHO'. Even grcan.c and janz-ican3.c have IFF_ECHO > set - but implement it in a different way without using the provided > machanism from dev.c . > Ok I am with you. > >>>In the Documentation/networking/can.txt > >>>there is also a "should" and a fallback mechnism if the driver > >>>does not support the local loopback. > > But this fallback mechanism is bad - really bad! > > E.g. the slcan.c driver sends a stream of CAN frames without knowing whether > the frames ever hit the wire. The slcan driver is more less for hobby users. > The CAN frame echo with IFF_ECHO gives a correct representation of the > traffic on the wire - including the correct timestamps. > > You really want to know whether a CAN frame was sent correctly on the bus > instead of getting some shortcut info from inside the network layer. > . Thanks for the explanation. I make it more clear why its mandatory. > >> > >>Well, s/driver/hardware/ ! Local loopback is the preferred mechanism. > >> > > > >Sure... > > > >>>I'm currently ok with this fallback mechanism. > > /me not. > > >>>Anyway I am not sure that the driver can handle the echo skb correctly. > >>>If i understand it correctly, the can_get_echo_skb() is normally called > >>>on a "TX done IRQ" to get the skb and loop it back. > > ack. > > >>>I do not have such a "TX done IRQ" and have not implemented implemented > >>>and added the local looback. > > I'm not really sure how grcan.c and janz-ican3.c implemented the echo > functionality but they must have faced a similar situation. > I will check those driver to get more information about the implementation. > A local loopback inside the CAN controller which is generated after > successful transmit is an excellent implementation with excellent > timestamps. The only problem for you is to detect the looped CAN frames and > match them to the skb pointer of the outgoing frame to 'receive' the correct > echo skb. > At the moment, i think there is no way to detect those looped frames. I will talk to our IC designer and discuss this issue with him. Maybe we have the possibility to get a local loopback inside the CAN controller. This seems to be the best way to do it. > When you send CAN frames to an unconnected CAN bus it can't be sent out due > to the missing acknowledge from other nodes. So when you send frames and you > get echo frames due to the fallback mode your cool CAN controller degrades > to slcan level. > I agree with you. This is what we do not want to have. > Regards, > Oliver > > ps. Do you have any URL where one can get the MEN 16Z192 spec? No sorry, its not available. Regards Andy
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH RESEND] net: can: Introduce MEN 16Z192-00 CAN controller driver Andreas Werner <andreas.werner@men.de> - 2016-07-26 11:20 +0200
Re: [PATCH RESEND] net: can: Introduce MEN 16Z192-00 CAN controller driver Benjamin Poirier <benjamin.poirier@gmail.com> - 2016-08-08 06:00 +0200
Re: [PATCH RESEND] net: can: Introduce MEN 16Z192-00 CAN controller driver Andreas Werner <andreas.werner@men.de> - 2016-08-08 09:40 +0200
Re: [PATCH RESEND] net: can: Introduce MEN 16Z192-00 CAN controller driver Benjamin Poirier <benjamin.poirier@gmail.com> - 2016-08-09 05:30 +0200
Re: [PATCH RESEND] net: can: Introduce MEN 16Z192-00 CAN controller driver Andreas Werner <andreas.werner@men.de> - 2016-08-09 08:20 +0200
Re: [PATCH RESEND] net: can: Introduce MEN 16Z192-00 CAN controller driver Wolfgang Grandegger <wg@grandegger.com> - 2016-08-08 11:40 +0200
Re: [PATCH RESEND] net: can: Introduce MEN 16Z192-00 CAN controller driver Andreas Werner <andreas.werner@men.de> - 2016-08-08 13:50 +0200
Re: [PATCH RESEND] net: can: Introduce MEN 16Z192-00 CAN controller driver Wolfgang Grandegger <wg@grandegger.com> - 2016-08-08 14:30 +0200
Re: [PATCH RESEND] net: can: Introduce MEN 16Z192-00 CAN controller driver Kurt Van Dijck <dev.kurt@vandijck-laurijssen.be> - 2016-08-08 15:30 +0200
Re: [PATCH RESEND] net: can: Introduce MEN 16Z192-00 CAN controller driver Andreas Werner <andreas.werner@men.de> - 2016-08-08 16:20 +0200
Re: [PATCH RESEND] net: can: Introduce MEN 16Z192-00 CAN controller driver Andreas Werner <andreas.werner@men.de> - 2016-08-08 16:10 +0200
Re: [PATCH RESEND] net: can: Introduce MEN 16Z192-00 CAN controller driver Wolfgang Grandegger <wg@grandegger.com> - 2016-08-08 16:40 +0200
Re: [PATCH RESEND] net: can: Introduce MEN 16Z192-00 CAN controller driver Andreas Werner <andreas.werner@men.de> - 2016-08-09 08:20 +0200
Re: [PATCH RESEND] net: can: Introduce MEN 16Z192-00 CAN controller driver Wolfgang Grandegger <wg@grandegger.com> - 2016-08-09 14:00 +0200
Re: [PATCH RESEND] net: can: Introduce MEN 16Z192-00 CAN controller driver Oliver Hartkopp <socketcan@hartkopp.net> - 2016-08-10 22:30 +0200
Re: [PATCH RESEND] net: can: Introduce MEN 16Z192-00 CAN controller driver Andreas Werner <andreas.werner@men.de> - 2016-08-11 09:20 +0200
Re: [PATCH RESEND] net: can: Introduce MEN 16Z192-00 CAN controller driver Oliver Hartkopp <socketcan@hartkopp.net> - 2016-08-11 10:50 +0200
Re: [PATCH RESEND] net: can: Introduce MEN 16Z192-00 CAN controller driver Andreas Werner <andreas.werner@men.de> - 2016-08-11 11:00 +0200
Re: [PATCH RESEND] net: can: Introduce MEN 16Z192-00 CAN controller driver Oliver Hartkopp <socketcan@hartkopp.net> - 2016-08-11 13:50 +0200
RE: [PATCH RESEND] net: can: Introduce MEN 16Z192-00 CAN controller driver Ramesh Shanmugasundaram <ramesh.shanmugasundaram@bp.renesas.com> - 2016-08-09 11:40 +0200
csiph-web