Hello, AFAIK I have no news about that patch... Best regards, - Stéphane > -----Original Message----- > From: Stephane Grosjean <s.grosjean@xxxxxxxxxxxxxxx> > Sent: mardi 4 février 2020 16:34 > To: linux-can Mailing List <linux-can@xxxxxxxxxxxxxxx> > Cc: Stéphane Grosjean <s.grosjean@xxxxxxxxxxxxxxx> > Subject: [PATCH] can/peak_canfd: fix echo management when loopback is > on > > Echo management is driven by PUCAN_MSG_LOOPED_BACK bit, while > loopback frames are identified with PUCAN_MSG_SELF_RECEIVE bit. Those > bits are set for each outgoing frame written to the IP core so that a copy of > each one will be placed into the rx path. Thus, > > - when PUCAN_MSG_LOOPED_BACK is set then the rx frame is an echo of a > previously sent frame, > - when PUCAN_MSG_LOOPED_BACK+PUCAN_MSG_SELF_RECEIVE are set, > then the rx > frame is an echo AND a loopback frame. Therefore, this frame must be > put into the socket rx path too. > > This patch fixes how CAN frames are handled when these are sent while the > CAN interface is configured in "loopback on" mode. > > Signed-off-by: Stephane Grosjean <s.grosjean@xxxxxxxxxxxxxxx> > --- > drivers/net/can/peak_canfd/peak_canfd.c | 11 ++++++++--- > 1 file changed, 8 insertions(+), 3 deletions(-) > > diff --git a/drivers/net/can/peak_canfd/peak_canfd.c > b/drivers/net/can/peak_canfd/peak_canfd.c > index 10aa3e457c33..40c33b8a5fda 100644 > --- a/drivers/net/can/peak_canfd/peak_canfd.c > +++ b/drivers/net/can/peak_canfd/peak_canfd.c > @@ -262,8 +262,7 @@ static int pucan_handle_can_rx(struct > peak_canfd_priv *priv, > cf_len = get_can_dlc(pucan_msg_get_dlc(msg)); > > /* if this frame is an echo, */ > - if ((rx_msg_flags & PUCAN_MSG_LOOPED_BACK) && > - !(rx_msg_flags & PUCAN_MSG_SELF_RECEIVE)) { > + if (rx_msg_flags & PUCAN_MSG_LOOPED_BACK) { > unsigned long flags; > > spin_lock_irqsave(&priv->echo_lock, flags); @@ -277,7 +276,13 @@ > static int pucan_handle_can_rx(struct peak_canfd_priv *priv, > netif_wake_queue(priv->ndev); > > spin_unlock_irqrestore(&priv->echo_lock, flags); > - return 0; > + > + /* if this frame is only an echo, stop here. Otherwise, > + * continue to push this application self-received frame into > + * its own rx queue. > + */ > + if (!(rx_msg_flags & PUCAN_MSG_SELF_RECEIVE)) > + return 0; > } > > /* otherwise, it should be pushed into rx fifo */ > -- > 2.20.1 > > > -- > PEAK-System Technik GmbH > Sitz der Gesellschaft Darmstadt - HRB 9183 > Geschaeftsfuehrung: Alexander Gach / Uwe Wilhelm Unsere > Datenschutzerklaerung mit wichtigen Hinweisen zur Behandlung > personenbezogener Daten finden Sie unter www.peak- > system.com/Datenschutz.483.0.html -- PEAK-System Technik GmbH Sitz der Gesellschaft Darmstadt - HRB 9183 Geschaeftsfuehrung: Alexander Gach / Uwe Wilhelm Unsere Datenschutzerklaerung mit wichtigen Hinweisen zur Behandlung personenbezogener Daten finden Sie unter www.peak-system.com/Datenschutz.483.0.html