Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp350066pxk; Thu, 1 Oct 2020 04:10:58 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxfzTcRccxqgFfykdVSJ75iT0mfGI/6Y36vU5069GKXC2zwTKxSjQhGBI/iVnoOHgAVqK3/ X-Received: by 2002:a17:907:2078:: with SMTP id qp24mr8018931ejb.500.1601550658524; Thu, 01 Oct 2020 04:10:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1601550658; cv=none; d=google.com; s=arc-20160816; b=ODDTuoRo0IXBbd5XoE9YPUvNNXjunGFPJ+8RQWXIcux3uIk3b0/FmsOP5HynZPL35z 2A13lF/xDf6r+/z2eAvcSRN0sXYWbxwY5+O+FVodSiefZZQ8IiYT+QLspcbhoiWY3qt4 OVr9DeIhrsDDToExc2B4MzC1klstR/0W7lyiQvVM/GD9oTmyZJ5WD7eD/QM/8u8r1af6 VExEhxIai82T8W0fjymLKltmtVBDj+xN2MvJ/fkPnIyNVb1pnbMm+O7vC+Q+0PqDMzuJ sZbYzsr7KI3OygWY/GaQoCkl7ojhyochGJtLNXQE3V8/3Ylh9lezpKwyrJFINY+1386C /1LQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:from:references :cc:to:subject:dkim-signature; bh=c7VtTMHN+fLkd5l+o+GivpKjyV0twYrb7Z/MtzLKgmQ=; b=ah7G8dyjsj0mBbrO1ZJLcPon2MLuV/O2091cdNoqvr81iD9S67i95yM017crcclKE+ gNpmX1t4VQUGRt847z0f8ieHcx+Xz8QppPJrACmzpYPaUjC8vIO/jRPjD0iJiqGLSkRZ dCOhb7rssnu5AxFM8l9bI7kbzPycC/kc25yQatpRBf7FeTwbKbG1sYjRgv6mn2VdCDJw TX0j6yxPidyH31PbRp9Ufm3u5ZRgdrh58MpmPYofnuHVoVwo2Gu5Z2ePTU+mKQzshXWe utdhKAH5WLivm0hK/btavEEMJakzhPlvdx5waL69VrS+fIktjKZWfjak7QKk5Cm6m3Kw ur8Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@hartkopp.net header.s=strato-dkim-0002 header.b=s0XcBXxj; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id b19si3141296ejd.451.2020.10.01.04.10.33; Thu, 01 Oct 2020 04:10:58 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@hartkopp.net header.s=strato-dkim-0002 header.b=s0XcBXxj; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731785AbgJALJ2 (ORCPT + 99 others); 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; >