• Vladimir Oltean's avatar
    net: dsa: sja1105: break dependency between dsa_port_is_sja1105 and switch driver · f5aef424
    Vladimir Oltean authored
    It's nice to be able to test a tagging protocol with dsa_loop, but not
    at the cost of losing the ability of building the tagging protocol and
    switch driver as modules, because as things stand, there is a circular
    dependency between the two. Tagging protocol drivers cannot depend on
    switch drivers, that is a hard fact.
    
    The reasoning behind the blamed patch was that accessing dp->priv should
    first make sure that the structure behind that pointer is what we really
    think it is.
    
    Currently the "sja1105" and "sja1110" tagging protocols only operate
    with the sja1105 switch driver, just like any other tagging protocol and
    switch combination. The only way to mix and match them is by modifying
    the code, and this applies to dsa_loop as well (by default that uses
    DSA_TAG_PROTO_NONE). So while in principle there is an issue, in
    practice there isn't one.
    
    Until we extend dsa_loop to allow user space configuration, treat the
    problem as a non-issue and just say that DSA ports found by tag_sja1105
    are always sja1105 ports, which is in fact true. But keep the
    dsa_port_is_sja1105 function so that it's easy to patch it during
    testing, and rely on dead code elimination.
    
    Fixes: 994d2cbb ("net: dsa: tag_sja1105: be dsa_loop-safe")
    Link: https://lore.kernel.org/netdev/20210908220834.d7gmtnwrorhharna@skbuf/Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    f5aef424
sja1105_main.c 95.3 KB