Re: [net-next RFC PATCH 0/6] Add support for qca8k mdio rw in Ethernet packet
From: Vladimir Oltean <olteanv@gmail.com>
Date: 2021-12-08 00:04:40
Also in:
lkml
On Wed, Dec 08, 2021 at 01:47:36AM +0200, Vladimir Oltean wrote:
quoted
2) is harder. But as far as i know, we have an 1:N setup. One switch driver can use N tag drivers. So we need the switch driver to be sure the tag driver is what it expects. We keep the shared state in the tag driver, so it always has valid data, but when the switch driver wants to get a pointer to it, it needs to pass a enum dsa_tag_protocol and if it does not match, the core should return -EINVAL or similar.In my proposal, the tagger will allocate the memory from its side of the ->connect() call. So regardless of whether the switch driver side connects or not, the memory inside dp->priv is there for the tagger to use. The switch can access it or it can ignore it.
I don't think I actually said something useful here. The goal would be to minimize use of dp->priv inside the switch driver, outside of the actual ->connect() / ->disconnect() calls. For example, in the felix driver which supports two tagging protocol drivers, I think these two methods would be enough, and they would replace the current felix_port_setup_tagger_data() and felix_port_teardown_tagger_data() calls. An additional benefit would be that in ->connect() and ->disconnect() we get the actual tagging protocol in use. Currently the felix driver lacks there, because felix_port_setup_tagger_data() just sets dp->priv up unconditionally for the ocelot-8021q tagging protocol (luckily the normal ocelot tagger doesn't need dp->priv). In sja1105 the story is a bit longer, but I believe that can also be cleaned up to stay within the confines of ->connect()/->disconnect(). So I guess we just need to be careful and push back against dubious use during review.