From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-11.6 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id BCD65C4727C for ; Thu, 1 Oct 2020 11:09:29 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 3941A2087D for ; Thu, 1 Oct 2020 11:09:29 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=hartkopp.net header.i=@hartkopp.net header.b="s0XcBXxj" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731819AbgJALJ2 (ORCPT ); Thu, 1 Oct 2020 07:09:28 -0400 Received: from mo4-p01-ob.smtp.rzone.de ([85.215.255.52]:24199 "EHLO mo4-p01-ob.smtp.rzone.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731628AbgJALJ2 (ORCPT ); Thu, 1 Oct 2020 07:09:28 -0400 X-Greylist: delayed 352 seconds by postgrey-1.27 at vger.kernel.org; Thu, 01 Oct 2020 07:09:26 EDT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1601550566; s=strato-dkim-0002; d=hartkopp.net; h=In-Reply-To:Date:Message-ID:From:References:Cc:To:Subject: X-RZG-CLASS-ID:X-RZG-AUTH:From:Subject:Sender; bh=c7VtTMHN+fLkd5l+o+GivpKjyV0twYrb7Z/MtzLKgmQ=; b=s0XcBXxjOoO4IpnFdaFqZ8NzliaK6I08ZzFiZDGCvcdo238BbuAl6b3FuX0/J74F3C FV36JicfC0r7X30FMvq+ANYMR8WMFqD/lZESUAJaKfOoOwtf6vZvWZxrliFJ8SQNySej ZXiYW+t+nF9Z6aOqcPIWV+Ix7XyQArwPHJJ4/hrSHeynzZ/wgc/7Z6jqzjsF4WuNdEjY 81TiMZI5+n/0lPwseY0BZGDIePOFAbh7eivbPdhay5LW8id/W1bdSOfapXb3Oo6f0wXz 5aveTCzeLkmz1074K/uT7AeDgi21D2Jhqc4JSHtH4aMGn6avsp+Fo9iQD7eqCX313lhE YCNw== X-RZG-AUTH: ":P2MHfkW8eP4Mre39l357AZT/I7AY/7nT2yrDxb8mjG14FZxedJy6qgO1o3TMaFqTEVR/J89pzV0=" X-RZG-CLASS-ID: mo00 Received: from [192.168.10.177] by smtp.strato.de (RZmta 47.1.9 DYNA|AUTH) with ESMTPSA id R06c13w91B3M2wM (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate); Thu, 1 Oct 2020 13:03:22 +0200 (CEST) Subject: Re: [PATCH] can: raw: add missing error queue support To: Vincent Mailhol , linux-can@vger.kernel.org Cc: Marc Kleine-Budde , "David S. Miller" , Jakub Kicinski , linux-kernel@vger.kernel.org, netdev@vger.kernel.org References: <20200926162527.270030-1-mailhol.vincent@wanadoo.fr> From: Oliver Hartkopp Message-ID: <12294bf5-c791-8dea-617c-20f2b812c1b0@hartkopp.net> Date: Thu, 1 Oct 2020 13:03:21 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.12.0 MIME-Version: 1.0 In-Reply-To: <20200926162527.270030-1-mailhol.vincent@wanadoo.fr> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 26.09.20 18:24, Vincent Mailhol wrote: > Error queue are not yet implemented in CAN-raw sockets. > > The problem: a userland call to recvmsg(soc, msg, MSG_ERRQUEUE) on a > CAN-raw socket would unqueue messages from the normal queue without > any kind of error or warning. As such, it prevented CAN drivers from > using the functionalities that relies on the error queue such as > skb_tx_timestamp(). > > SCM_CAN_RAW_ERRQUEUE is defined as the type for the CAN raw error > queue. SCM stands for "Socket control messages". The name is inspired > from SCM_J1939_ERRQUEUE of include/uapi/linux/can/j1939.h. > > Signed-off-by: Vincent Mailhol Acked-by: Oliver Hartkopp Thanks Vincent! > --- > include/uapi/linux/can/raw.h | 3 +++ > net/can/raw.c | 4 ++++ > 2 files changed, 7 insertions(+) > > diff --git a/include/uapi/linux/can/raw.h b/include/uapi/linux/can/raw.h > index 6a11d308eb5c..3386aa81fdf2 100644 > --- a/include/uapi/linux/can/raw.h > +++ b/include/uapi/linux/can/raw.h > @@ -49,6 +49,9 @@ > #include > > #define SOL_CAN_RAW (SOL_CAN_BASE + CAN_RAW) > +enum { > + SCM_CAN_RAW_ERRQUEUE = 1, > +}; > > /* for socket options affecting the socket (not the global system) */ > > diff --git a/net/can/raw.c b/net/can/raw.c > index 94a9405658dc..98abab119136 100644 > --- a/net/can/raw.c > +++ b/net/can/raw.c > @@ -804,6 +804,10 @@ static int raw_recvmsg(struct socket *sock, struct msghdr *msg, size_t size, > noblock = flags & MSG_DONTWAIT; > flags &= ~MSG_DONTWAIT; > > + if (flags & MSG_ERRQUEUE) > + return sock_recv_errqueue(sk, msg, size, > + SOL_CAN_RAW, SCM_CAN_RAW_ERRQUEUE); > + > skb = skb_recv_datagram(sk, flags, noblock, &err); > if (!skb) > return err; >