Messages in this thread | | | Date | Wed, 27 Mar 2024 13:35:54 +0100 | From | Andrew Lunn <> | Subject | Re: [PATCH net-next v3 3/3] net: ti: icssg-prueth: Add support for ICSSG switch firmware |
| |
On Wed, Mar 27, 2024 at 05:10:54PM +0530, MD Danish Anwar wrote: > Add support for ICSSG switch firmware using existing Dual EMAC driver > with switchdev. > > Limitations: > VLAN offloading is limited to 0-256 IDs. > MDB/FDB static entries are limited to 511 entries and different FDBs can > hash to same bucket and thus may not completely offloaded > > Switch mode requires loading of new firmware into ICSSG cores. This > means interfaces have to taken down and then reconfigured to switch > mode.
Patch 0/3 does not say this. It just shows the interfaces being added to the bridge. There should not be any need to down the interfaces.
> Example assuming ETH1 and ETH2 as ICSSG2 interfaces: > > Switch to ICSSG Switch mode: > ip link set dev eth1 down > ip link set dev eth2 down > ip link add name br0 type bridge > ip link set dev eth1 master br0 > ip link set dev eth2 master br0 > ip link set dev br0 up > ip link set dev eth1 up > ip link set dev eth2 up > bridge vlan add dev br0 vid 1 pvid untagged self > > Going back to Dual EMAC mode: > > ip link set dev br0 down > ip link set dev eth1 nomaster > ip link set dev eth2 nomaster > ip link set dev eth1 down > ip link set dev eth2 down > ip link del name br0 type bridge > ip link set dev eth1 up > ip link set dev eth2 up > > By default, Dual EMAC firmware is loaded, and can be changed to switch > mode by above steps
I keep asking this, so it would be good to explain it in the commit message. What configuration is preserved over a firmware reload, and what is lost?
Can i add VLAN in duel MAC mode and then swap into the switch firmware and all the VLANs are preserved? Can i add fdb entries to a port in dual MAC mode, and then swap into the swtich firmware and the FDB table is preserved? What about STP port state? What about ... ?
> +bool prueth_dev_check(const struct net_device *ndev) > +{ > + if (ndev->netdev_ops == &emac_netdev_ops && netif_running(ndev)) { > + struct prueth_emac *emac = netdev_priv(ndev); > + > + return emac->prueth->is_switch_mode; > + } > + > + return false; > +}
This does not appear to be used anywhere?
Andrew
| |