dsa_switch_destroy(ds);
        }
 
-       dsa_cpu_port_ethtool_restore(dst->ds[0]);
+       dsa_cpu_port_ethtool_restore(dst->cpu_switch);
 
        dev_put(dst->master_netdev);
 }
 
                        return err;
        }
 
-       if (dst->ds[0]) {
-               err = dsa_cpu_port_ethtool_setup(dst->ds[0]);
+       if (dst->cpu_switch) {
+               err = dsa_cpu_port_ethtool_setup(dst->cpu_switch);
                if (err)
                        return err;
        }
                dsa_ds_unapply(dst, ds);
        }
 
-       if (dst->ds[0])
-               dsa_cpu_port_ethtool_restore(dst->ds[0]);
+       if (dst->cpu_switch)
+               dsa_cpu_port_ethtool_restore(dst->cpu_switch);
 
        pr_info("DSA: tree %d unapplied\n", dst->tree);
        dst->applied = false;
 
                                           uint64_t *data)
 {
        struct dsa_switch_tree *dst = dev->dsa_ptr;
-       struct dsa_switch *ds = dst->ds[0];
+       struct dsa_switch *ds = dst->cpu_switch;
        s8 cpu_port = dst->cpu_port;
        int count = 0;
 
 static int dsa_cpu_port_get_sset_count(struct net_device *dev, int sset)
 {
        struct dsa_switch_tree *dst = dev->dsa_ptr;
-       struct dsa_switch *ds = dst->ds[0];
+       struct dsa_switch *ds = dst->cpu_switch;
        int count = 0;
 
        if (dst->master_ethtool_ops.get_sset_count)
                                     uint32_t stringset, uint8_t *data)
 {
        struct dsa_switch_tree *dst = dev->dsa_ptr;
-       struct dsa_switch *ds = dst->ds[0];
+       struct dsa_switch *ds = dst->cpu_switch;
        s8 cpu_port = dst->cpu_port;
        int len = ETH_GSTRING_LEN;
        int mcount = 0, count;