From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oliver Hartkopp Subject: Re: [PATCH RESEND] net: can: Introduce MEN 16Z192-00 CAN controller driver Date: Thu, 11 Aug 2016 10:45:00 +0200 Message-ID: <1d81436b-4ad2-a34f-e2e1-accde0b16a47@hartkopp.net> References: <20160726091555.GA26227@awelinux> <9487fe77-dbd0-3a64-b648-cf76b897feda@grandegger.com> <20160808113938.GA17459@awelinux> <456c4f82-6a53-e821-3396-63d413db9eb7@grandegger.com> <20160808140546.GA1733@awelinux> <808e919b-8643-2113-9fde-001861883abe@grandegger.com> <20160809061038.GC1733@awelinux> <20160811071458.GA25813@awelinux> Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Cc: Wolfgang Grandegger , mkl@pengutronix.de, linux-can@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, davem@davemloft.net, jthumshirn@suse.de, andy@wernerandy.de, michael.miehling@men.de To: Andreas Werner Return-path: In-Reply-To: <20160811071458.GA25813@awelinux> Sender: linux-kernel-owner@vger.kernel.org List-Id: netdev.vger.kernel.org On 08/11/2016 09:14 AM, Andreas Werner wrote: > On Wed, Aug 10, 2016 at 10:28:45PM +0200, Oliver Hartkopp wrote: >> 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. Great :-) >> 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 still have the possibility to change the IP core I would suggest to create some kind of 16/32 bit value which you can pass to the CAN controller along with the CAN frame to be sent. And when this frame comes back due to the loopback you can use this non-zero 16/32 bit value to match into a list of tx skb pointers for IFF_ECHO. E.g. when this 16/32 bit value is zero this CAN frame obviously was received from another CAN node. Just an idea. Regards, Oliver