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=-12.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED autolearn=ham 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 62D5CC43381 for ; Wed, 27 Mar 2019 19:28:04 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 28D102075C for ; Wed, 27 Mar 2019 19:28:04 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2387802AbfC0T2D (ORCPT ); Wed, 27 Mar 2019 15:28:03 -0400 Received: from metis.ext.pengutronix.de ([85.220.165.71]:37437 "EHLO metis.ext.pengutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2387534AbfC0T2B (ORCPT ); Wed, 27 Mar 2019 15:28:01 -0400 Received: from gallifrey.ext.pengutronix.de ([2001:67c:670:201:5054:ff:fe8d:eefb] helo=bjornoya.blackshift.org) by metis.ext.pengutronix.de with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1h9EDO-0000Xj-5S; Wed, 27 Mar 2019 20:27:58 +0100 Received: from [IPv6:2a03:f580:87bc:d400:845f:6e2c:f24d:6770] (unknown [IPv6:2a03:f580:87bc:d400:845f:6e2c:f24d:6770]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits)) (Client CN "mkl@blackshift.org", Issuer "StartCom Class 1 Client CA" (not verified)) (Authenticated sender: mkl@blackshift.org) by smtp.blackshift.org (Postfix) with ESMTPSA id 298513EF2FF; Wed, 27 Mar 2019 19:27:56 +0000 (UTC) Subject: Re: [PATCH 1/2] net: sch_generic: add flag IFF_FIFO_QUEUE to use pfifo_fast as default scheduler To: =?UTF-8?Q?Uwe_Kleine-K=c3=b6nig?= Cc: netdev@vger.kernel.org, Jiri Pirko , Dave Taht , Jamal Hadi Salim , kernel@pengutronix.de, Cong Wang , linux-can@vger.kernel.org, davem@davemloft.net References: <20190327165632.10711-1-mkl@pengutronix.de> <20190327165632.10711-2-mkl@pengutronix.de> <20190327185332.s3cq6ttscyk7234v@pengutronix.de> From: Marc Kleine-Budde Openpgp: preference=signencrypt Autocrypt: addr=mkl@pengutronix.de; prefer-encrypt=mutual; keydata= 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 Message-ID: Date: Wed, 27 Mar 2019 20:27:51 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.5.1 MIME-Version: 1.0 In-Reply-To: <20190327185332.s3cq6ttscyk7234v@pengutronix.de> Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="2w8mUSPIHG1MHRq714Bgq4jmpYYNj8uvE" X-SA-Exim-Connect-IP: 2001:67c:670:201:5054:ff:fe8d:eefb X-SA-Exim-Mail-From: mkl@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: netdev@vger.kernel.org Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --2w8mUSPIHG1MHRq714Bgq4jmpYYNj8uvE Content-Type: multipart/mixed; boundary="rSQWSJ8Rfmi2EJ3IM04ej2BiTmPuc87Cc"; protected-headers="v1" From: Marc Kleine-Budde To: =?UTF-8?Q?Uwe_Kleine-K=c3=b6nig?= Cc: netdev@vger.kernel.org, Jiri Pirko , Dave Taht , Jamal Hadi Salim , kernel@pengutronix.de, Cong Wang , linux-can@vger.kernel.org, davem@davemloft.net Message-ID: Subject: Re: [PATCH 1/2] net: sch_generic: add flag IFF_FIFO_QUEUE to use pfifo_fast as default scheduler References: <20190327165632.10711-1-mkl@pengutronix.de> <20190327165632.10711-2-mkl@pengutronix.de> <20190327185332.s3cq6ttscyk7234v@pengutronix.de> In-Reply-To: <20190327185332.s3cq6ttscyk7234v@pengutronix.de> --rSQWSJ8Rfmi2EJ3IM04ej2BiTmPuc87Cc Content-Type: text/plain; charset=utf-8 Content-Language: de-DE Content-Transfer-Encoding: quoted-printable On 3/27/19 7:53 PM, Uwe Kleine-K=C3=B6nig wrote: > On Wed, Mar 27, 2019 at 05:56:31PM +0100, Marc Kleine-Budde wrote: >> There is networking hardware that isn't based on Ethernet for layers 1= and 2. >> >> For example CAN. >> >> CAN is a multi-master serial bus standard for connecting Electronic Co= ntrol >> Units [ECUs] also known as nodes. A frame on the CAN bus carries up to= 8 bytes >> of payload. Frame corruption is detected by a CRC. However frame loss = due to >> corruption is possible, but a quite unusual phenomenon. >> >> While fq_codel works great for TCP/IP, it doesn't for CAN. There are a= lot of >> legacy protocols on top of CAN, which are not build with flow control = or high >> CAN frame drop rates in mind. >> >> When using fq_codel, as soon as the queue reaches a certain delay base= d length, >> skbs from the head of the queue are silently dropped. Silently meaning= that the >> user space using a send() or similar syscall doesn't get an error. How= ever >> TCP's flow control algorithm will detect dropped packages and adjust t= he >=20 > s/package/packet/ here and in a few more locations in this commit log. Thanks, fixed. >> bandwidth accordingly. >> >> When using fq_codel and sending raw frames over CAN, which is the comm= on use >> case, the user space thinks the package has been sent without problems= , because >> send() returned without an error. pfifo_fast will drop skbs, if the qu= eue >> length exceeds the maximum. But with this scheduler the skbs at the ta= il are >> dropped, an error (-ENOBUFS) is propagated to user space. So that the = user >> space can slow down the package generation. >> >> On distributions, where fq_codel is made default via CONFIG_DEFAULT_NE= T_SCH >> during compile time, or set default during runtime with sysctl >> net.core.default_qdisc (see [1]), we get a bad user experience. In my = test case >> with pfifo_fast, I can transfer thousands of million CAN frames withou= t a frame >> drop. On the other hand with fq_codel there is more then one lost CAN = frame per >> thousand frames. >> >> As pointed out fq_codel is not suited for CAN hardware, so this patch >> introduces a new netdev_priv_flag called "IFF_FIFO_QUEUE" (in contrast= to the >> existing "IFF_NO_QUEUE"). >> >> During transition of a netdev from down to up state the default queuin= g >> discipline is attached by attach_default_qdiscs() with the help of >> attach_one_default_qdisc(). This patch modifies attach_one_default_qdi= sc() to >> attach the pfifo_fast (pfifo_fast_ops) if the "IFF_FIFO_QUEUE" flag is= set. >> >> [1] https://github.com/systemd/systemd/issues/9194 >> >> Cc: Dave Taht >> Cc: Jamal Hadi Salim >> Cc: Cong Wang >> Cc: Jiri Pirko >> Signed-off-by: Marc Kleine-Budde >> --- >> include/linux/netdevice.h | 3 +++ >> net/sched/sch_generic.c | 3 +++ >> 2 files changed, 6 insertions(+) >> >> diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h >> index 166fdc0a78b4..1867e27e3369 100644 >> --- a/include/linux/netdevice.h >> +++ b/include/linux/netdevice.h >> @@ -1498,6 +1498,7 @@ struct net_device_ops { >> * @IFF_FAILOVER: device is a failover master device >> * @IFF_FAILOVER_SLAVE: device is lower dev of a failover master devi= ce >> * @IFF_L3MDEV_RX_HANDLER: only invoke the rx handler of L3 master de= vice >> + * @IFF_FIFO_QUEUE: device must run with FIFO qdisc attached. skb dro= p without NET_XMIT_DROP is fatal >=20 > Do you need the FIFO property or only that the qdisc doesn't silently > drop packets? I don't know which other qdiscs are around, but depending= > on the answer to this question other than pfifo_fast might be suitable?= No silent dropping is mandatory. No reordering of outgoing packets (if not configured to do so) is mandatory. Maybe there are other qdiscs that work on CAN, but pfifo_fast is a sane default. Marc --=20 Pengutronix e.K. | Marc Kleine-Budde | Industrial Linux Solutions | Phone: +49-231-2826-924 | Vertretung West/Dortmund | Fax: +49-5121-206917-5555 | Amtsgericht Hildesheim, HRA 2686 | http://www.pengutronix.de | --rSQWSJ8Rfmi2EJ3IM04ej2BiTmPuc87Cc-- --2w8mUSPIHG1MHRq714Bgq4jmpYYNj8uvE Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- iQEzBAEBCgAdFiEEmvEkXzgOfc881GuFWsYho5HknSAFAlybzrcACgkQWsYho5Hk nSDBcgf/YFGrVj1sbkkBHg9BRRsrwtXpULbxPfyIKnowudDefwjSpoIUaVuSuHAZ z1F+ZVapUor2ODsjmVWvUJ5hLpHw6hhojDxlHOwZl9l6jfIdnTdpfQykUpKixZQM lCLBekR3MYUeSLq65yxcyyflyF47UO//+501GQw9Dd2vIpSKtFzDTy8tK1D3sVaJ /Un2ta36y+ltR/F0iwCWIl69ZV+BgrkHcSpA1KVZ1DVf4XDxfNlXqWNgwKjStEHs RA1I4HbaHcXZbkCQ/yQutnK/PpFM1GVPCELPoh/7VbRNqg5yf5Y87odovkEX6eVQ BmNHQM5mHUTw9qXrq+xy+iNb8fpkyA== =YPiT -----END PGP SIGNATURE----- --2w8mUSPIHG1MHRq714Bgq4jmpYYNj8uvE--