devicetree.vger.kernel.org archive mirror
 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:45:33 +0200	[thread overview]
Message-ID: <20200826164533.GC31748@kozik-lap> (raw)
In-Reply-To: <dleftja6yhv4g2.fsf%l.stelmach@samsung.com>

On Wed, Aug 26, 2020 at 04:59:09PM +0200, Lukasz Stelmach wrote:
> It was <2020-08-25 wto 20:44>, when Krzysztof Kozlowski wrote:
> > On Tue, Aug 25, 2020 at 07:03:09PM +0200, Łukasz Stelmach wrote:
> >> ASIX AX88796[1] is a versatile ethernet adapter chip, that can be
> >> connected to a CPU with a 8/16-bit bus or with an SPI. This driver
> >> supports SPI connection.
> >> 
> >> The driver has been ported from the vendor kernel for ARTIK5[2]
> >> boards. Several changes were made to adapt it to the current kernel
> >> which include:
> >> 
> >> + updated DT configuration,
> >> + clock configuration moved to DT,
> >> + new timer, ethtool and gpio APIs
> >> + dev_* instead of pr_* and custom printk() wrappers.
> >> 
> >> [1] https://protect2.fireeye.com/v1/url?k=074e9e9d-5a9dc212-074f15d2-0cc47a31ce52-0f896a3d08738907&q=1&e=bcaebfa2-4f00-46b6-a35d-096f39710f47&u=https%3A%2F%2Fwww.asix.com.tw%2Fproducts.php%3Fop%3DpItemdetail%26PItemID%3D104%3B65%3B86%26PLine%3D65
> >> [2] https://protect2.fireeye.com/v1/url?k=553869ec-08eb3563-5539e2a3-0cc47a31ce52-fc42424019c6fd8f&q=1&e=bcaebfa2-4f00-46b6-a35d-096f39710f47&u=https%3A%2F%2Fgit.tizen.org%2Fcgit%2Fprofile%2Fcommon%2Fplatform%2Fkernel%2Flinux-3.10-artik%2F
> >> 
> >> The other ax88796 driver is for NE2000 compatible AX88796L chip. These
> >> chips are not compatible. Hence, two separate drivers are required.
> >
> > Hi,
> >
> > Thanks for the driver, nice work. Few comments below.
> >
> 
> Thank you. I fixed most problems and asked some question where I didn't
> understand.
> 
> >> 
> >> Signed-off-by: Łukasz Stelmach <l.stelmach@samsung.com>
> >> ---
> >>  drivers/net/ethernet/Kconfig               |    1 +
> >>  drivers/net/ethernet/Makefile              |    1 +
> >>  drivers/net/ethernet/asix/Kconfig          |   20 +
> >>  drivers/net/ethernet/asix/Makefile         |    6 +
> >>  drivers/net/ethernet/asix/ax88796c_ioctl.c |  293 +++++
> >>  drivers/net/ethernet/asix/ax88796c_ioctl.h |   21 +
> >>  drivers/net/ethernet/asix/ax88796c_main.c  | 1373 ++++++++++++++++++++
> >>  drivers/net/ethernet/asix/ax88796c_main.h  |  596 +++++++++
> >>  drivers/net/ethernet/asix/ax88796c_spi.c   |  103 ++
> >>  drivers/net/ethernet/asix/ax88796c_spi.h   |   67 +
> >>  10 files changed, 2481 insertions(+)
> >>  create mode 100644 drivers/net/ethernet/asix/Kconfig
> >>  create mode 100644 drivers/net/ethernet/asix/Makefile
> >>  create mode 100644 drivers/net/ethernet/asix/ax88796c_ioctl.c
> >>  create mode 100644 drivers/net/ethernet/asix/ax88796c_ioctl.h
> >>  create mode 100644 drivers/net/ethernet/asix/ax88796c_main.c
> >>  create mode 100644 drivers/net/ethernet/asix/ax88796c_main.h
> >>  create mode 100644 drivers/net/ethernet/asix/ax88796c_spi.c
> >>  create mode 100644 drivers/net/ethernet/asix/ax88796c_spi.h
> >> 
> >> diff --git a/drivers/net/ethernet/Kconfig b/drivers/net/ethernet/Kconfig
> >> index de50e8b9e656..f3b218e45ea5 100644
> >> --- a/drivers/net/ethernet/Kconfig
> >> +++ b/drivers/net/ethernet/Kconfig
> >> @@ -32,6 +32,7 @@ source "drivers/net/ethernet/apm/Kconfig"
> >>  source "drivers/net/ethernet/apple/Kconfig"
> >>  source "drivers/net/ethernet/aquantia/Kconfig"
> >>  source "drivers/net/ethernet/arc/Kconfig"
> >> +source "drivers/net/ethernet/asix/Kconfig"
> >>  source "drivers/net/ethernet/atheros/Kconfig"
> >>  source "drivers/net/ethernet/aurora/Kconfig"
> >>  source "drivers/net/ethernet/broadcom/Kconfig"
> >> diff --git a/drivers/net/ethernet/Makefile b/drivers/net/ethernet/Makefile
> >> index f8f38dcb5f8a..9eb368d93607 100644
> >> --- a/drivers/net/ethernet/Makefile
> >> +++ b/drivers/net/ethernet/Makefile
> >> @@ -18,6 +18,7 @@ obj-$(CONFIG_NET_XGENE) += apm/
> >>  obj-$(CONFIG_NET_VENDOR_APPLE) += apple/
> >>  obj-$(CONFIG_NET_VENDOR_AQUANTIA) += aquantia/
> >>  obj-$(CONFIG_NET_VENDOR_ARC) += arc/
> >> +obj-$(CONFIG_NET_VENDOR_ASIX) += asix/
> >>  obj-$(CONFIG_NET_VENDOR_ATHEROS) += atheros/
> >>  obj-$(CONFIG_NET_VENDOR_AURORA) += aurora/
> >>  obj-$(CONFIG_NET_VENDOR_CADENCE) += cadence/
> >> diff --git a/drivers/net/ethernet/asix/Kconfig b/drivers/net/ethernet/asix/Kconfig
> >> new file mode 100644
> >> index 000000000000..4b127a4a659a
> >> --- /dev/null
> >> +++ b/drivers/net/ethernet/asix/Kconfig
> >> @@ -0,0 +1,20 @@
> >> +#
> >> +# Asix network device configuration
> >> +#
> >> +
> >> +config NET_VENDOR_ASIX
> >> +	bool "Asix devices"
> >> +	depends on SPI
> >> +	help
> >> +	  If you have a network (Ethernet) interface based on a chip from ASIX, say Y
> >
> > Looks like too long, did it pass checkpatch?
> 
> Yes? Let me try again. Yes, this one passed, but I missed a few other
> problems. Thank you.

I noticed that now the limit is 100 when improves readability, so this
one is good.

(...)

> >> +
> >> +u8 ax88796c_check_power(struct ax88796c_device *ax_local)
> >
> > Looks here like pointer to const. Unless it is because of
> > AX_READ_STATUS() which cannot take const?
> 
> It can. I changed other stuff in ax88796c_spi.[hc] to const too.
> 
> >> +{
> >
> > Please put file-scope definitions first, so this should go to the end.
> 
> I don't understand.

Functions and variables which (file scope) are static go to the
beginning of file. Ones visible externally (non static), go after them.

(...)

> >> +
> >> +	AX_WRITE(&ax_local->ax_spi, rx_ctl, P2_RXCR);
> >> +
> >
> > No need for empty line.
> >
> 
> Fixed.
> 
> >> +}
> >> +
> >> +#if 0
> >
> > Please comment why it is commented out.
> >
> 
> Always has been (-; This is how it came from the vendor I missed it when
> I focused on making things work. I will investigate it and either
> uncomment or remove it.

Then just remove it.

(...)

> >> +#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.

Best regards,
Krzysztof

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

Thread overview: 27+ 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
     [not found]   ` <CGME20200825170323eucas1p2d299a6ac365e6a70d802757d439bc77c@eucas1p2.samsung.com>
2020-08-25 17:03     ` [PATCH 2/3] ARM: dts: Add ethernet Łukasz Stelmach
2020-08-25 18:03       ` Andrew Lunn
2020-08-25 18:49       ` Krzysztof Kozlowski
     [not found]   ` <CGME20200825170323eucas1p15f2bbfa460f7ef787069dd3459dd77b3@eucas1p1.samsung.com>
2020-08-25 17:03     ` [PATCH 3/3] ARM: defconfig: Enable ax88796c driver Łukasz Stelmach
2020-08-25 18:51       ` Krzysztof Kozlowski
     [not found]         ` <CGME20200826051134eucas1p23a1c91b2179678eecc5dd5eeb2d0e4c9@eucas1p2.samsung.com>
2020-08-26  5:11           ` Lukasz Stelmach
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
     [not found]     ` <CGME20200825173041eucas1p29cb450a15648e0ecb1e896fcbe0f9126@eucas1p2.samsung.com>
2020-08-25 17:30       ` Lukasz Stelmach
2020-08-25 17:55         ` Randy Dunlap
2020-08-25 18:01   ` Andrew Lunn
2020-08-26  7:13     ` Geert Uytterhoeven
     [not found]       ` <CGME20200907174710eucas1p1b06f854222c255719a63c72b043ecda2@eucas1p1.samsung.com>
2020-09-07 17:47         ` Lukasz Stelmach
     [not found]     ` <CGME20200907173945eucas1p240c0d7ebff3010a3bf752eaf8e619eb1@eucas1p2.samsung.com>
2020-09-07 17:39       ` Lukasz Stelmach
2020-09-07 18:18         ` Andrew Lunn
     [not found]           ` <CGME20200908174935eucas1p2f24d79b234152148b060c45863e3efeb@eucas1p2.samsung.com>
2020-09-08 17:49             ` Lukasz Stelmach
2020-09-08 18:22               ` Andrew Lunn
2020-09-14 22:29         ` jim.cromie
2020-08-25 18:44   ` Krzysztof Kozlowski
     [not found]     ` <CGME20200826145929eucas1p1367c260edb8fa003869de1da527039c0@eucas1p1.samsung.com>
2020-08-26 14:59       ` Lukasz Stelmach
2020-08-26 15:06         ` David Laight
2020-08-26 16:07           ` Andrew Lunn
     [not found]           ` <CGME20200907180715eucas1p1c1e41bb1ddb5a401a4d9c8cb6117e1f6@eucas1p1.samsung.com>
2020-09-07 18:06             ` Lukasz Stelmach
2020-08-26 16:02         ` Andrew Lunn
2020-08-26 16:45         ` Krzysztof Kozlowski [this message]
2020-08-26 16:52           ` Krzysztof Kozlowski

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=20200826164533.GC31748@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).