All of lore.kernel.org
 help / color / mirror / Atom feed
From: Krzysztof Kozlowski <krzk@kernel.org>
To: Lukasz Stelmach <l.stelmach@samsung.com>
Cc: "David S. Miller" <davem@davemloft.net>,
	Jakub Kicinski <kuba@kernel.org>, Kukjin Kim <kgene@kernel.org>,
	Rob Herring <robh+dt@kernel.org>,
	Russell King <linux@armlinux.org.uk>,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, linux-samsung-soc@vger.kernel.org,
	netdev@vger.kernel.org, devicetree@vger.kernel.org,
	m.szyprowski@samsung.com, b.zolnierkie@samsung.com
Subject: Re: [PATCH 1/3] net: ax88796c: ASIX AX88796C SPI Ethernet Adapter Driver
Date: Wed, 26 Aug 2020 18:52:46 +0200	[thread overview]
Message-ID: <20200826165246.GA29212@kozik-lap> (raw)
In-Reply-To: <20200826164533.GC31748@kozik-lap>

On Wed, Aug 26, 2020 at 06:45:33PM +0200, Krzysztof Kozlowski wrote:
> On Wed, Aug 26, 2020 at 04:59:09PM +0200, Lukasz Stelmach wrote:
 > >> +#include <linux/of.h>
> > >> +#endif
> > >> +#include <linux/crc32.h>
> > >> +#include <linux/etherdevice.h>
> > >> +#include <linux/ethtool.h>
> > >> +#include <linux/gpio/consumer.h>
> > >> +#include <linux/init.h>
> > >> +#include <linux/io.h>
> > >> +#include <linux/kmod.h>
> > >> +#include <linux/mii.h>
> > >> +#include <linux/module.h>
> > >> +#include <linux/netdevice.h>
> > >> +#include <linux/platform_device.h>
> > >> +#include <linux/sched.h>
> > >> +#include <linux/spi/spi.h>
> > >> +#include <linux/timer.h>
> > >> +#include <linux/uaccess.h>
> > >> +#include <linux/usb.h>
> > >> +#include <linux/version.h>
> > >> +#include <linux/workqueue.h>
> > >
> > > All of these should be removed except the headers used directly in this
> > > header.
> > >
> > 
> > This is "private" header file included in all ax88796c_*.c files and
> > these are headers required in them. It seems more conveninet to have
> > them all listed in one place. What is the reason to do otherwise?
> 
> Because:
> 1. The header is included in other files (more than one) so each other
> compilation unit will include all these headers, while not all of them
> need. This has a performance penalty during preprocessing.
> 
> 2. You will loose the track which headers are needed, which are not. We
> tend to keep it local, which means each compilation unit includes stuff
> it needs. This helps removing obsolete includes later.
> 
> 3. Otherwise you could make one header, including all headers of Linux,
> and then include this one header in each of C files. One to rule them
> all.

... and I got one more:

4. Drivers sometimes get reused, extended or they parts got reused. If
a header includes more stuff, it simply will pollute all other units
trying to reuse it... making the re-usage difficult. This is less likely
reason, I mean, quite imaginary for this particular driver.

I don't expect pieces of this driver to be reused... but who knows. Many
times in the past in the kernel there was a huge work rewriting headers
in many files, because something was including something else and we
wanted to decouple these things.  Therefore following the pattern -
include stuff you explicitly use - helps in every case.

Best regards,
Krzysztof


WARNING: multiple messages have this Message-ID (diff)
From: Krzysztof Kozlowski <krzk@kernel.org>
To: Lukasz Stelmach <l.stelmach@samsung.com>
Cc: devicetree@vger.kernel.org, linux-samsung-soc@vger.kernel.org,
	b.zolnierkie@samsung.com, netdev@vger.kernel.org,
	Russell King <linux@armlinux.org.uk>,
	Rob Herring <robh+dt@kernel.org>,
	linux-kernel@vger.kernel.org, Kukjin Kim <kgene@kernel.org>,
	Jakub Kicinski <kuba@kernel.org>,
	"David S. Miller" <davem@davemloft.net>,
	linux-arm-kernel@lists.infradead.org, m.szyprowski@samsung.com
Subject: Re: [PATCH 1/3] net: ax88796c: ASIX AX88796C SPI Ethernet Adapter Driver
Date: Wed, 26 Aug 2020 18:52:46 +0200	[thread overview]
Message-ID: <20200826165246.GA29212@kozik-lap> (raw)
In-Reply-To: <20200826164533.GC31748@kozik-lap>

On Wed, Aug 26, 2020 at 06:45:33PM +0200, Krzysztof Kozlowski wrote:
> On Wed, Aug 26, 2020 at 04:59:09PM +0200, Lukasz Stelmach wrote:
 > >> +#include <linux/of.h>
> > >> +#endif
> > >> +#include <linux/crc32.h>
> > >> +#include <linux/etherdevice.h>
> > >> +#include <linux/ethtool.h>
> > >> +#include <linux/gpio/consumer.h>
> > >> +#include <linux/init.h>
> > >> +#include <linux/io.h>
> > >> +#include <linux/kmod.h>
> > >> +#include <linux/mii.h>
> > >> +#include <linux/module.h>
> > >> +#include <linux/netdevice.h>
> > >> +#include <linux/platform_device.h>
> > >> +#include <linux/sched.h>
> > >> +#include <linux/spi/spi.h>
> > >> +#include <linux/timer.h>
> > >> +#include <linux/uaccess.h>
> > >> +#include <linux/usb.h>
> > >> +#include <linux/version.h>
> > >> +#include <linux/workqueue.h>
> > >
> > > All of these should be removed except the headers used directly in this
> > > header.
> > >
> > 
> > This is "private" header file included in all ax88796c_*.c files and
> > these are headers required in them. It seems more conveninet to have
> > them all listed in one place. What is the reason to do otherwise?
> 
> Because:
> 1. The header is included in other files (more than one) so each other
> compilation unit will include all these headers, while not all of them
> need. This has a performance penalty during preprocessing.
> 
> 2. You will loose the track which headers are needed, which are not. We
> tend to keep it local, which means each compilation unit includes stuff
> it needs. This helps removing obsolete includes later.
> 
> 3. Otherwise you could make one header, including all headers of Linux,
> and then include this one header in each of C files. One to rule them
> all.

... and I got one more:

4. Drivers sometimes get reused, extended or they parts got reused. If
a header includes more stuff, it simply will pollute all other units
trying to reuse it... making the re-usage difficult. This is less likely
reason, I mean, quite imaginary for this particular driver.

I don't expect pieces of this driver to be reused... but who knows. Many
times in the past in the kernel there was a huge work rewriting headers
in many files, because something was including something else and we
wanted to decouple these things.  Therefore following the pattern -
include stuff you explicitly use - helps in every case.

Best regards,
Krzysztof


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2020-08-26 16:52 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CGME20200825170322eucas1p2c6619aa3e02d2762e07da99640a2451c@eucas1p2.samsung.com>
2020-08-25 17:03 ` [PATCH 1/3] net: ax88796c: ASIX AX88796C SPI Ethernet Adapter Driver Łukasz Stelmach
2020-08-25 17:03   ` Łukasz Stelmach
2020-08-25 17:03   ` [PATCH 2/3] ARM: dts: Add ethernet Łukasz Stelmach
2020-08-25 17:03     ` Łukasz Stelmach
2020-08-25 18:03     ` Andrew Lunn
2020-08-25 18:03       ` Andrew Lunn
2020-08-25 18:49     ` Krzysztof Kozlowski
2020-08-25 18:49       ` Krzysztof Kozlowski
2020-08-25 17:03   ` [PATCH 3/3] ARM: defconfig: Enable ax88796c driver Łukasz Stelmach
2020-08-25 17:03     ` Łukasz Stelmach
2020-08-25 18:51     ` Krzysztof Kozlowski
2020-08-25 18:51       ` Krzysztof Kozlowski
2020-08-26  5:11       ` Lukasz Stelmach
2020-08-26  5:11         ` Lukasz Stelmach
2020-08-26  6:46         ` Krzysztof Kozlowski
2020-08-26  6:46           ` Krzysztof Kozlowski
2020-08-25 17:19   ` [PATCH 1/3] net: ax88796c: ASIX AX88796C SPI Ethernet Adapter Driver Randy Dunlap
2020-08-25 17:19     ` Randy Dunlap
2020-08-25 17:30     ` Lukasz Stelmach
2020-08-25 17:30       ` Lukasz Stelmach
2020-08-25 17:55       ` Randy Dunlap
2020-08-25 17:55         ` Randy Dunlap
2020-08-25 18:01   ` Andrew Lunn
2020-08-25 18:01     ` Andrew Lunn
2020-08-26  7:13     ` Geert Uytterhoeven
2020-08-26  7:13       ` Geert Uytterhoeven
2020-09-07 17:47       ` Lukasz Stelmach
2020-09-07 17:47         ` Lukasz Stelmach
2020-09-07 17:39     ` Lukasz Stelmach
2020-09-07 17:39       ` Lukasz Stelmach
2020-09-07 18:18       ` Andrew Lunn
2020-09-07 18:18         ` Andrew Lunn
2020-09-08 17:49         ` Lukasz Stelmach
2020-09-08 17:49           ` Lukasz Stelmach
2020-09-08 18:22           ` Andrew Lunn
2020-09-08 18:22             ` Andrew Lunn
2020-09-14 22:29       ` jim.cromie
2020-09-14 22:29         ` jim.cromie
2020-08-25 18:44   ` Krzysztof Kozlowski
2020-08-25 18:44     ` Krzysztof Kozlowski
2020-08-26 14:59     ` Lukasz Stelmach
2020-08-26 14:59       ` Lukasz Stelmach
2020-08-26 15:06       ` David Laight
2020-08-26 15:06         ` David Laight
2020-08-26 16:07         ` Andrew Lunn
2020-08-26 16:07           ` Andrew Lunn
2020-09-07 18:06         ` Lukasz Stelmach
2020-09-07 18:06           ` Lukasz Stelmach
2020-08-26 16:02       ` Andrew Lunn
2020-08-26 16:02         ` Andrew Lunn
2020-08-26 16:45       ` Krzysztof Kozlowski
2020-08-26 16:45         ` Krzysztof Kozlowski
2020-08-26 16:52         ` Krzysztof Kozlowski [this message]
2020-08-26 16:52           ` Krzysztof Kozlowski
2020-08-25 20:49   ` kernel test robot
2020-08-25 20:49     ` kernel test robot
2020-08-25 20:49     ` kernel test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200826165246.GA29212@kozik-lap \
    --to=krzk@kernel.org \
    --cc=b.zolnierkie@samsung.com \
    --cc=davem@davemloft.net \
    --cc=devicetree@vger.kernel.org \
    --cc=kgene@kernel.org \
    --cc=kuba@kernel.org \
    --cc=l.stelmach@samsung.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-samsung-soc@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=m.szyprowski@samsung.com \
    --cc=netdev@vger.kernel.org \
    --cc=robh+dt@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.