From: Ido Schimmel <idosch@idosch.org>
To: Vladimir Oltean <olteanv@gmail.com>
Cc: "David S. Miller" <davem@davemloft.net>,
Jakub Kicinski <kuba@kernel.org>,
netdev@vger.kernel.org, Florian Fainelli <f.fainelli@gmail.com>,
Andrew Lunn <andrew@lunn.ch>,
Vivien Didelot <vivien.didelot@gmail.com>,
Kurt Kanzenbach <kurt@linutronix.de>,
Hauke Mehrtens <hauke@hauke-m.de>,
Woojung Huh <woojung.huh@microchip.com>,
Microchip Linux Driver Support <UNGLinuxDriver@microchip.com>,
Sean Wang <sean.wang@mediatek.com>,
Landen Chao <Landen.Chao@mediatek.com>,
Claudiu Manoil <claudiu.manoil@nxp.com>,
Alexandre Belloni <alexandre.belloni@bootlin.com>,
Linus Walleij <linus.walleij@linaro.org>,
Vadym Kochan <vkochan@marvell.com>,
Taras Chornyi <tchornyi@marvell.com>,
Jiri Pirko <jiri@nvidia.com>, Ido Schimmel <idosch@nvidia.com>,
Grygorii Strashko <grygorii.strashko@ti.com>,
Ioana Ciornei <ioana.ciornei@nxp.com>,
Ivan Vecera <ivecera@redhat.com>
Subject: Re: [PATCH v2 net-next 02/10] net: switchdev: remove the transaction structure from port object notifiers
Date: Wed, 6 Jan 2021 19:42:02 +0200 [thread overview]
Message-ID: <20210106174202.GA1082997@shredder.lan> (raw)
In-Reply-To: <20210106131006.577312-3-olteanv@gmail.com>
On Wed, Jan 06, 2021 at 03:09:58PM +0200, Vladimir Oltean wrote:
> From: Vladimir Oltean <vladimir.oltean@nxp.com>
>
> Since the introduction of the switchdev API, port objects were
> transmitted to drivers for offloading using a two-step transactional
> model, with a prepare phase that was supposed to catch all errors, and a
> commit phase that was supposed to never fail.
>
> Some classes of failures can never be avoided, like hardware access, or
> memory allocation. In the latter case, merely attempting to move the
> memory allocation to the preparation phase makes it impossible to avoid
> memory leaks, since commit 91cf8eceffc1 ("switchdev: Remove unused
> transaction item queue") which has removed the unused mechanism of
> passing on the allocated memory between one phase and another.
>
> It is time we admit that separating the preparation from the commit
> phase is something that is best left for the driver to decide, and not
> something that should be baked into the API, especially since there are
> no switchdev callers that depend on this.
>
> This patch removes the struct switchdev_trans member from switchdev port
> object notifier structures, and converts drivers to not look at this
> member.
>
> Where driver conversion is trivial (like in the case of the Marvell
> Prestera driver, NXP DPAA2 switch, TI CPSW, and Rocker drivers), it is
> done in this patch.
>
> Where driver conversion needs more attention (DSA, Mellanox Spectrum),
> the conversion is left for subsequent patches and here we only fake the
> prepare/commit phases at a lower level, just not in the switchdev
> notifier itself.
>
> Where the code has a natural structure that is best left alone as a
> preparation and a commit phase (as in the case of the Ocelot switch),
> that structure is left in place, just made to not depend upon the
> switchdev transactional model.
>
> Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
> Acked-by: Linus Walleij <linus.walleij@linaro.org>
> Acked-by: Jiri Pirko <jiri@nvidia.com>
This looks good to me. I think that faking the prepare/commit phase made
it easier to review.
Reviewed-by: Ido Schimmel <idosch@nvidia.com>
next prev parent reply other threads:[~2021-01-06 17:43 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-06 13:09 [PATCH v2 net-next 00/10] Get rid of the switchdev transactional model Vladimir Oltean
2021-01-06 13:09 ` [PATCH v2 net-next 01/10] net: switchdev: remove vid_begin -> vid_end range from VLAN objects Vladimir Oltean
2021-01-06 14:12 ` kernel test robot
2021-01-06 14:12 ` kernel test robot
2021-01-06 17:08 ` Vladimir Oltean
2021-01-06 17:08 ` Ido Schimmel
2021-01-06 17:15 ` Vladimir Oltean
2021-01-06 17:26 ` Ido Schimmel
2021-01-06 13:09 ` [PATCH v2 net-next 02/10] net: switchdev: remove the transaction structure from port object notifiers Vladimir Oltean
2021-01-06 17:42 ` Ido Schimmel [this message]
2021-01-06 13:09 ` [PATCH v2 net-next 03/10] net: switchdev: delete switchdev_port_obj_add_now Vladimir Oltean
2021-01-06 17:43 ` Ido Schimmel
2021-01-06 13:10 ` [PATCH v2 net-next 04/10] net: switchdev: remove the transaction structure from port attributes Vladimir Oltean
2021-01-06 17:47 ` Ido Schimmel
2021-01-06 13:10 ` [PATCH v2 net-next 05/10] net: dsa: remove the transactional logic from ageing time notifiers Vladimir Oltean
2021-01-06 13:10 ` [PATCH v2 net-next 06/10] net: dsa: remove the transactional logic from MDB entries Vladimir Oltean
2021-01-06 13:10 ` [PATCH v2 net-next 07/10] net: dsa: remove the transactional logic from VLAN objects Vladimir Oltean
2021-01-06 13:10 ` [PATCH v2 net-next 08/10] net: dsa: remove obsolete comments about switchdev transactions Vladimir Oltean
2021-01-06 13:10 ` [PATCH v2 net-next 09/10] mlxsw: spectrum_switchdev: remove transactional logic for VLAN objects Vladimir Oltean
2021-01-06 18:10 ` Ido Schimmel
2021-01-06 13:10 ` [PATCH v2 net-next 10/10] net: switchdev: delete the transaction object Vladimir Oltean
2021-01-06 18:11 ` Ido Schimmel
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=20210106174202.GA1082997@shredder.lan \
--to=idosch@idosch.org \
--cc=Landen.Chao@mediatek.com \
--cc=UNGLinuxDriver@microchip.com \
--cc=alexandre.belloni@bootlin.com \
--cc=andrew@lunn.ch \
--cc=claudiu.manoil@nxp.com \
--cc=davem@davemloft.net \
--cc=f.fainelli@gmail.com \
--cc=grygorii.strashko@ti.com \
--cc=hauke@hauke-m.de \
--cc=idosch@nvidia.com \
--cc=ioana.ciornei@nxp.com \
--cc=ivecera@redhat.com \
--cc=jiri@nvidia.com \
--cc=kuba@kernel.org \
--cc=kurt@linutronix.de \
--cc=linus.walleij@linaro.org \
--cc=netdev@vger.kernel.org \
--cc=olteanv@gmail.com \
--cc=sean.wang@mediatek.com \
--cc=tchornyi@marvell.com \
--cc=vivien.didelot@gmail.com \
--cc=vkochan@marvell.com \
--cc=woojung.huh@microchip.com \
/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.