Message ID | 20200108050606.22090-1-f.fainelli@gmail.com |
---|---|
Headers | show |
Series | Broadcom tags support for 531x5/539x families | expand |
From: Florian Fainelli <f.fainelli@gmail.com> Date: Tue, 7 Jan 2020 21:06:04 -0800 > This patch series finally allows us to enable Broadcom tags on the > BCM531x5/BCM539x switch series which are very often cascaded onto > another on-chip Broadcom switch. Because of that we need to be able to > detect that Broadcom tags are already enabled on our DSA master which > happens to be a DSA slave in that case since they are not part of the > same DSA switch tree, the protocol does not support that. > > Due to the way DSA works, get_tag_protocol() is called prior to > ds->ops->setup and we do not have all data structures set-up (in > particular dsa_port::cpu_dp is not filed yet) so doing this at the time > get_tag_protocol() is called and without exporting a helper function is > desirable to limit our footprint into the framework. > > Having the core (net/dsa/dsa2.c) return and enforce DSA_TAG_PROTO_NONE > was considered and done initially but this leaves the driver outside of > the decision to force/fallback to a particular protocol, instead of > letting it in control. Also there is no reason to suspect that all > tagging protocols are problematic, e.g.: "inner" Marvell EDSA with > "outer" Broadcom tag may work just fine, and vice versa. > > This was tested on: > > - Lamobo R1 which now has working Broadcom tags for its external BCM53125 switch > - BCM7445 which has a BCM53125 hanging off one of its internal switch > port, the BCM53125 still works with DSA_TAG_PROTO_NONE > - BCM7278 which has a peculiar dual CPU port set-up (so dual IMP mode > needs to be enabled) > - Northstar Plus with DSA_TAG_PROTO_BRCM_PREPEND and no external > switches hanging off the internal switch Series applied, thanks Florian.