From: Andrew Lunn <andrew@lunn•ch>
To: Michael Walle <michael@walle•cc>
Cc: ath9k-devel@qca•qualcomm.com, UNGLinuxDriver@microchip•com,
linux-arm-kernel@lists•infradead.org,
linux-kernel@vger•kernel.org, linuxppc-dev@lists•ozlabs.org,
netdev@vger•kernel.org, linux-mediatek@lists•infradead.org,
linux-renesas-soc@vger•kernel.org,
linux-stm32@st-md-mailman•stormreply.com,
linux-amlogic@lists•infradead.org, linux-oxnas@groups•io,
linux-omap@vger•kernel.org, linux-wireless@vger•kernel.org,
devicetree@vger•kernel.org, linux-staging@lists•linux.dev,
"Gregory Clement" <gregory.clement@bootlin•com>,
"Sebastian Hesselbarth" <sebastian.hesselbarth@gmail•com>,
"Russell King" <linux@armlinux•org.uk>,
"Michael Ellerman" <mpe@ellerman•id.au>,
"Benjamin Herrenschmidt" <benh@kernel•crashing.org>,
"Paul Mackerras" <paulus@samba•org>,
"Andreas Larsson" <andreas@gaisler•com>,
"David S . Miller" <davem@davemloft•net>,
"Jakub Kicinski" <kuba@kernel•org>,
"Maxime Ripard" <mripard@kernel•org>,
"Chen-Yu Tsai" <wens@csie•org>,
"Jernej Skrabec" <jernej.skrabec@siol•net>,
"Joyce Ooi" <joyce.ooi@intel•com>,
"Chris Snook" <chris.snook@gmail•com>,
"Rafał Miłecki" <rafal@milecki•pl>,
bcm-kernel-feedback-list@broadcom•com,
"Florian Fainelli" <f.fainelli@gmail•com>,
"Nicolas Ferre" <nicolas.ferre@microchip•com>,
"Claudiu Beznea" <claudiu.beznea@microchip•com>,
"Sunil Goutham" <sgoutham@marvell•com>,
"Fugang Duan" <fugang.duan@nxp•com>,
"Madalin Bucur" <madalin.bucur@nxp•com>,
"Pantelis Antoniou" <pantelis.antoniou@gmail•com>,
"Claudiu Manoil" <claudiu.manoil@nxp•com>,
"Li Yang" <leoyang.li@nxp•com>,
"Yisen Zhuang" <yisen.zhuang@huawei•com>,
"Salil Mehta" <salil.mehta@huawei•com>,
"Hauke Mehrtens" <hauke@hauke-m•de>,
"Thomas Petazzoni" <thomas.petazzoni@bootlin•com>,
"Vadym Kochan" <vkochan@marvell•com>,
"Taras Chornyi" <tchornyi@marvell•com>,
"Mirko Lindner" <mlindner@marvell•com>,
"Stephen Hemminger" <stephen@networkplumber•org>,
"Felix Fietkau" <nbd@nbd•name>, "John Crispin" <john@phrozen•org>,
"Sean Wang" <sean.wang@mediatek•com>,
"Mark Lee" <Mark-MC.Lee@mediatek•com>,
"Matthias Brugger" <matthias.bgg@gmail•com>,
"Bryan Whitehead" <bryan.whitehead@microchip•com>,
"Vladimir Zapolskiy" <vz@mleia•com>,
"Sergei Shtylyov" <sergei.shtylyov@gmail•com>,
"Byungho An" <bh74.an@samsung•com>,
"Kunihiko Hayashi" <hayashi.kunihiko@socionext•com>,
"Giuseppe Cavallaro" <peppe.cavallaro@st•com>,
"Alexandre Torgue" <alexandre.torgue@st•com>,
"Jose Abreu" <joabreu@synopsys•com>,
"Maxime Coquelin" <mcoquelin.stm32@gmail•com>,
"Shawn Guo" <shawnguo@kernel•org>,
"Sascha Hauer" <s.hauer@pengutronix•de>,
"Pengutronix Kernel Team" <kernel@pengutronix•de>,
"Fabio Estevam" <festevam@gmail•com>,
"NXP Linux Team" <linux-imx@nxp•com>,
"Kevin Hilman" <khilman@baylibre•com>,
"Neil Armstrong" <narmstrong@baylibre•com>,
"Jerome Brunet" <jbrunet@baylibre•com>,
"Martin Blumenstingl" <martin.blumenstingl@googlemail•com>,
"Vinod Koul" <vkoul@kernel•org>,
"Nobuhiro Iwamatsu" <nobuhiro1.iwamatsu@toshiba•co.jp>,
"Grygorii Strashko" <grygorii.strashko@ti•com>,
"Wingman Kwok" <w-kwok2@ti•com>,
"Murali Karicheri" <m-karicheri2@ti•com>,
"Michal Simek" <michal.simek@xilinx•com>,
"Radhey Shyam Pandey" <radhey.shyam.pandey@xilinx•com>,
"Kalle Valo" <kvalo@codeaurora•org>,
"Lorenzo Bianconi" <lorenzo.bianconi83@gmail•com>,
"Ryder Lee" <ryder.lee@mediatek•com>,
"Stanislaw Gruszka" <stf_xl@wp•pl>,
"Helmut Schaa" <helmut.schaa@googlemail•com>,
"Heiner Kallweit" <hkallweit1@gmail•com>,
"Rob Herring" <robh+dt@kernel•org>,
"Frank Rowand" <frowand.list@gmail•com>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation•org>,
"Jérôme Pouiller" <jerome.pouiller@silabs•com>,
"Vivien Didelot" <vivien.didelot@gmail•com>,
"Vladimir Oltean" <olteanv@gmail•com>
Subject: Re: [PATCH net-next v4 1/2] of: net: pass the dst buffer to of_get_mac_address()
Date: Tue, 13 Apr 2021 02:55:53 +0200 [thread overview]
Message-ID: <YHTsGXbbr8mkifDo@lunn.ch> (raw)
In-Reply-To: <20210412174718.17382-2-michael@walle.cc>
On Mon, Apr 12, 2021 at 07:47:17PM +0200, Michael Walle wrote:
> of_get_mac_address() returns a "const void*" pointer to a MAC address.
> Lately, support to fetch the MAC address by an NVMEM provider was added.
> But this will only work with platform devices. It will not work with
> PCI devices (e.g. of an integrated root complex) and esp. not with DSA
> ports.
>
> There is an of_* variant of the nvmem binding which works without
> devices. The returned data of a nvmem_cell_read() has to be freed after
> use. On the other hand the return of_get_mac_address() points to some
> static data without a lifetime. The trick for now, was to allocate a
> device resource managed buffer which is then returned. This will only
> work if we have an actual device.
>
> Change it, so that the caller of of_get_mac_address() has to supply a
> buffer where the MAC address is written to. Unfortunately, this will
> touch all drivers which use the of_get_mac_address().
>
> Usually the code looks like:
>
> const char *addr;
> addr = of_get_mac_address(np);
> if (!IS_ERR(addr))
> ether_addr_copy(ndev->dev_addr, addr);
>
> This can then be simply rewritten as:
>
> of_get_mac_address(np, ndev->dev_addr);
>
> Sometimes is_valid_ether_addr() is used to test the MAC address.
> of_get_mac_address() already makes sure, it just returns a valid MAC
> address. Thus we can just test its return code. But we have to be
> careful if there are still other sources for the MAC address before the
> of_get_mac_address(). In this case we have to keep the
> is_valid_ether_addr() call.
>
> The following coccinelle patch was used to convert common cases to the
> new style. Afterwards, I've manually gone over the drivers and fixed the
> return code variable: either used a new one or if one was already
> available use that. Mansour Moufid, thanks for that coccinelle patch!
>
> <spml>
> @a@
> identifier x;
> expression y, z;
> @@
> - x = of_get_mac_address(y);
> + x = of_get_mac_address(y, z);
> <...
> - ether_addr_copy(z, x);
> ...>
>
> @@
> identifier a.x;
> @@
> - if (<+... x ...+>) {}
>
> @@
> identifier a.x;
> @@
> if (<+... x ...+>) {
> ...
> }
> - else {}
>
> @@
> identifier a.x;
> expression e;
> @@
> - if (<+... x ...+>@e)
> - {}
> - else
> + if (!(e))
> {...}
>
> @@
> expression x, y, z;
> @@
> - x = of_get_mac_address(y, z);
> + of_get_mac_address(y, z);
> ... when != x
> </spml>
>
> All drivers, except drivers/net/ethernet/aeroflex/greth.c, were
> compile-time tested.
>
> Suggested-by: Andrew Lunn <andrew@lunn•ch>
> Signed-off-by: Michael Walle <michael@walle•cc>
I cannot say i looked at all the changes, but the ones i did exam
seemed O.K.
Reviewed-by: Andrew Lunn <andrew@lunn•ch>
Andrew
next prev parent reply other threads:[~2021-04-13 0:56 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-12 17:47 [PATCH net-next v4 0/2] of: net: support non-platform devices in of_get_mac_address() Michael Walle
2021-04-12 17:47 ` [PATCH net-next v4 1/2] of: net: pass the dst buffer to of_get_mac_address() Michael Walle
2021-04-13 0:55 ` Andrew Lunn [this message]
2021-04-12 17:47 ` [PATCH net-next v4 2/2] of: net: fix of_get_mac_addr_nvmem() for non-platform devices Michael Walle
2021-04-13 0:57 ` Andrew Lunn
2021-04-16 3:24 ` Benjamin Herrenschmidt
2021-04-16 7:29 ` Michael Walle
2021-04-16 15:19 ` Rob Herring
2021-04-26 10:54 ` Michael Walle
2021-04-26 23:44 ` Benjamin Herrenschmidt
2021-04-28 8:09 ` Michael Walle
2021-04-13 21:40 ` [PATCH net-next v4 0/2] of: net: support non-platform devices in of_get_mac_address() patchwork-bot+netdevbpf
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=YHTsGXbbr8mkifDo@lunn.ch \
--to=andrew@lunn$(echo .)ch \
--cc=Mark-MC.Lee@mediatek$(echo .)com \
--cc=UNGLinuxDriver@microchip$(echo .)com \
--cc=alexandre.torgue@st$(echo .)com \
--cc=andreas@gaisler$(echo .)com \
--cc=ath9k-devel@qca$(echo .)qualcomm.com \
--cc=bcm-kernel-feedback-list@broadcom$(echo .)com \
--cc=benh@kernel$(echo .)crashing.org \
--cc=bh74.an@samsung$(echo .)com \
--cc=bryan.whitehead@microchip$(echo .)com \
--cc=chris.snook@gmail$(echo .)com \
--cc=claudiu.beznea@microchip$(echo .)com \
--cc=claudiu.manoil@nxp$(echo .)com \
--cc=davem@davemloft$(echo .)net \
--cc=devicetree@vger$(echo .)kernel.org \
--cc=f.fainelli@gmail$(echo .)com \
--cc=festevam@gmail$(echo .)com \
--cc=frowand.list@gmail$(echo .)com \
--cc=fugang.duan@nxp$(echo .)com \
--cc=gregkh@linuxfoundation$(echo .)org \
--cc=gregory.clement@bootlin$(echo .)com \
--cc=grygorii.strashko@ti$(echo .)com \
--cc=hauke@hauke-m$(echo .)de \
--cc=hayashi.kunihiko@socionext$(echo .)com \
--cc=helmut.schaa@googlemail$(echo .)com \
--cc=hkallweit1@gmail$(echo .)com \
--cc=jbrunet@baylibre$(echo .)com \
--cc=jernej.skrabec@siol$(echo .)net \
--cc=jerome.pouiller@silabs$(echo .)com \
--cc=joabreu@synopsys$(echo .)com \
--cc=john@phrozen$(echo .)org \
--cc=joyce.ooi@intel$(echo .)com \
--cc=kernel@pengutronix$(echo .)de \
--cc=khilman@baylibre$(echo .)com \
--cc=kuba@kernel$(echo .)org \
--cc=kvalo@codeaurora$(echo .)org \
--cc=leoyang.li@nxp$(echo .)com \
--cc=linux-amlogic@lists$(echo .)infradead.org \
--cc=linux-arm-kernel@lists$(echo .)infradead.org \
--cc=linux-imx@nxp$(echo .)com \
--cc=linux-kernel@vger$(echo .)kernel.org \
--cc=linux-mediatek@lists$(echo .)infradead.org \
--cc=linux-omap@vger$(echo .)kernel.org \
--cc=linux-oxnas@groups$(echo .)io \
--cc=linux-renesas-soc@vger$(echo .)kernel.org \
--cc=linux-staging@lists$(echo .)linux.dev \
--cc=linux-stm32@st-md-mailman$(echo .)stormreply.com \
--cc=linux-wireless@vger$(echo .)kernel.org \
--cc=linux@armlinux$(echo .)org.uk \
--cc=linuxppc-dev@lists$(echo .)ozlabs.org \
--cc=lorenzo.bianconi83@gmail$(echo .)com \
--cc=m-karicheri2@ti$(echo .)com \
--cc=madalin.bucur@nxp$(echo .)com \
--cc=martin.blumenstingl@googlemail$(echo .)com \
--cc=matthias.bgg@gmail$(echo .)com \
--cc=mcoquelin.stm32@gmail$(echo .)com \
--cc=michael@walle$(echo .)cc \
--cc=michal.simek@xilinx$(echo .)com \
--cc=mlindner@marvell$(echo .)com \
--cc=mpe@ellerman$(echo .)id.au \
--cc=mripard@kernel$(echo .)org \
--cc=narmstrong@baylibre$(echo .)com \
--cc=nbd@nbd$(echo .)name \
--cc=netdev@vger$(echo .)kernel.org \
--cc=nicolas.ferre@microchip$(echo .)com \
--cc=nobuhiro1.iwamatsu@toshiba$(echo .)co.jp \
--cc=olteanv@gmail$(echo .)com \
--cc=pantelis.antoniou@gmail$(echo .)com \
--cc=paulus@samba$(echo .)org \
--cc=peppe.cavallaro@st$(echo .)com \
--cc=radhey.shyam.pandey@xilinx$(echo .)com \
--cc=rafal@milecki$(echo .)pl \
--cc=robh+dt@kernel$(echo .)org \
--cc=ryder.lee@mediatek$(echo .)com \
--cc=s.hauer@pengutronix$(echo .)de \
--cc=salil.mehta@huawei$(echo .)com \
--cc=sean.wang@mediatek$(echo .)com \
--cc=sebastian.hesselbarth@gmail$(echo .)com \
--cc=sergei.shtylyov@gmail$(echo .)com \
--cc=sgoutham@marvell$(echo .)com \
--cc=shawnguo@kernel$(echo .)org \
--cc=stephen@networkplumber$(echo .)org \
--cc=stf_xl@wp$(echo .)pl \
--cc=tchornyi@marvell$(echo .)com \
--cc=thomas.petazzoni@bootlin$(echo .)com \
--cc=vivien.didelot@gmail$(echo .)com \
--cc=vkochan@marvell$(echo .)com \
--cc=vkoul@kernel$(echo .)org \
--cc=vz@mleia$(echo .)com \
--cc=w-kwok2@ti$(echo .)com \
--cc=wens@csie$(echo .)org \
--cc=yisen.zhuang@huawei$(echo .)com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
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