From: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
To: Andrew Lunn <andrew@lunn.ch>
Cc: netdev <netdev@vger.kernel.org>,
Florian Fainelli <f.fainelli@gmail.com>,
John Crispin <john@phrozen.org>,
Bryan.Whitehead@microchip.com
Subject: Re: [RFC PATCH 09/16] dsa: dsa: Split up creating/destroying of DSA and CPU ports
Date: Fri, 27 May 2016 12:36:48 -0400 [thread overview]
Message-ID: <87fut35ufz.fsf@ketchup.mtl.sfl> (raw)
In-Reply-To: <20160527150744.GC20214@lunn.ch>
Hi Andrew,
Andrew Lunn <andrew@lunn.ch> writes:
> On Fri, May 27, 2016 at 10:33:49AM -0400, Vivien Didelot wrote:
>> Hi Andrew,
>>
>> Andrew Lunn <andrew@lunn.ch> writes:
>>
>> > -static void dsa_switch_destroy(struct dsa_switch *ds)
>> > +void dsa_cpu_dsa_destroy(struct device_node *port_dn)
>> > {
>> > - struct device_node *port_dn;
>> > struct phy_device *phydev;
>> > +
>> > + if (of_phy_is_fixed_link(port_dn)) {
>> > + phydev = of_phy_find_device(port_dn);
>> > + if (phydev) {
>> > + phy_device_free(phydev);
>> > + fixed_phy_unregister(phydev);
>> > + }
>> > + }
>> > +}
>> > +
>> > +static void dsa_switch_destroy(struct dsa_switch *ds)
>> > +{
>> > int port;
>> >
>> > #ifdef CONFIG_NET_DSA_HWMON
>> > @@ -445,17 +467,11 @@ static void dsa_switch_destroy(struct dsa_switch *ds)
>> > dsa_slave_destroy(ds->ports[port].netdev);
>> > }
>> >
>> > - /* Remove any fixed link PHYs */
>> > + /* Disable configuration of the CPU and DSA ports */
>> > for (port = 0; port < DSA_MAX_PORTS; port++) {
>> > - port_dn = ds->ports[port].dn;
>> > - if (of_phy_is_fixed_link(port_dn)) {
>> > - phydev = of_phy_find_device(port_dn);
>> > - if (phydev) {
>> > - phy_device_free(phydev);
>> > - of_node_put(port_dn);
>>
>> Why does dsa_cpu_dsa_destroy drop that of_node_put call?
>
> The of node reference counting is broken. The DT maintainers actually
> say not to care, the whole reference counting scheme is broken. Which
> is a bit sad really. There was a discussion about this a couple of
> months ago.
>
> Anyway, the reference is taken in dsa_of_probe() as part of the
> or_each_available_child_of_node(child, port). This reference has
> nothing to do with the port being a fixed link or not. So freeing it
> here is inappropriate. The correct place to free it would probably be
> in dsa_of_remove.
OK, good to know. Can you split that in its own patch (prefered), or at
least document that in the commit message?
>> > - fixed_phy_unregister(phydev);
>> > - }
>> > - }
>> > + if ((dsa_is_cpu_port(ds, port) || dsa_is_dsa_port(ds, port)))
>> > + continue;
>>
>> Why do we skip DSA and CPU ports here? The previous code didn't.
>>
>> > + dsa_cpu_dsa_destroy(ds->ports[port].dn);
>
> They are now destroyed by the newly added dsa_cpu_dsa_destroy(). I'm
> making the code more symmetrical and easier to re-use. The inverse of
> this function is dsa_switch_setup_one() and it also uses a helper
> function to setup the dsa and cpu ports, dsa_cpu_dsa_setups().
But dsa_cpu_dsa_destroy() is not called here. Shouldn't we drop (like
before) or at least invert the condition above?
Thanks,
Vivien
next prev parent reply other threads:[~2016-05-27 16:36 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-27 1:20 [RFC PATCH 00/16] New DSA bind, switches as devices Andrew Lunn
2016-05-27 1:20 ` [RFC PATCH 01/16] dsa: slave: chip data is optional, don't dereference NULL Andrew Lunn
2016-05-27 18:45 ` Vivien Didelot
2016-05-27 21:24 ` Florian Fainelli
2016-05-27 1:20 ` [RFC PATCH 02/16] net: dsa: mv88e6xxx: fix circular lock in PPU work Andrew Lunn
2016-05-27 1:20 ` [RFC PATCH 03/16] dsa: slave: Remove MDIO address from switch MDIO bus name Andrew Lunn
2016-05-27 1:20 ` [RFC PATCH 04/16] dsa: tag_{e}dsa.c: Remove dependency on platform data Andrew Lunn
2016-05-27 1:20 ` [RFC PATCH 05/16] dsa: Add a ports structure and use it in the switch structure Andrew Lunn
2016-05-27 1:20 ` [RFC PATCH 06/16] dsa: Move port device node into port structure Andrew Lunn
2016-05-27 1:20 ` [RFC PATCH 07/16] dsa: Remove dynamic allocate of routing table Andrew Lunn
2016-05-27 18:54 ` Vivien Didelot
2016-05-27 1:20 ` [RFC PATCH 08/16] dsa: Copy the routing table into the switch structure Andrew Lunn
2016-05-27 1:20 ` [RFC PATCH 09/16] dsa: dsa: Split up creating/destroying of DSA and CPU ports Andrew Lunn
2016-05-27 14:33 ` Vivien Didelot
2016-05-27 15:07 ` Andrew Lunn
2016-05-27 16:36 ` Vivien Didelot [this message]
2016-05-27 19:25 ` Vivien Didelot
2016-05-27 20:01 ` Andrew Lunn
2016-05-27 20:29 ` Andrew Lunn
2016-05-27 1:20 ` [RFC PATCH 10/16] net: dsa: mv88e6xxx: Only support EDSA tagging Andrew Lunn
2016-05-27 1:20 ` [RFC PATCH 11/16] net: dsa: Refactor selection of tag ops into a function Andrew Lunn
2016-05-27 19:35 ` Vivien Didelot
2016-05-27 20:11 ` Andrew Lunn
2016-05-27 1:20 ` [RFC PATCH 12/16] dsa: Make mdio bus optional Andrew Lunn
2016-05-27 14:55 ` Vivien Didelot
2016-05-27 15:18 ` Andrew Lunn
2016-05-27 16:38 ` Vivien Didelot
2016-05-27 1:20 ` [RFC PATCH 13/16] net: dsa: mv88e6xxx: Refactor MDIO so driver registers mdio bus Andrew Lunn
2016-05-27 19:45 ` Vivien Didelot
2016-05-27 1:20 ` [RFC PATCH 14/16] net: dsa: Add new binding implementation Andrew Lunn
2016-05-27 20:39 ` Vivien Didelot
2016-05-27 20:57 ` Andrew Lunn
2016-05-27 21:29 ` Florian Fainelli
2016-05-28 8:23 ` Richard Cochran
2016-05-27 1:20 ` [RFC PATCH 15/16] arm: dt: vf610-zii-devel-b: Make use of new DSA binding Andrew Lunn
2016-05-27 1:20 ` [RFC PATCH 16/16] dsa: Document new binding Andrew Lunn
2016-05-27 18:30 ` [RFC PATCH 00/16] New DSA bind, switches as devices Vivien Didelot
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=87fut35ufz.fsf@ketchup.mtl.sfl \
--to=vivien.didelot@savoirfairelinux.com \
--cc=Bryan.Whitehead@microchip.com \
--cc=andrew@lunn.ch \
--cc=f.fainelli@gmail.com \
--cc=john@phrozen.org \
--cc=netdev@vger.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.