if (enabled) {
                /* Enable VLAN filtering. */
-               tpid  = ETH_P_8021AD;
-               tpid2 = ETH_P_8021Q;
+               tpid  = ETH_P_8021Q;
+               tpid2 = ETH_P_8021AD;
        } else {
                /* Disable VLAN filtering. */
                tpid  = ETH_P_SJA1105;
 
        table = &priv->static_config.tables[BLK_IDX_GENERAL_PARAMS];
        general_params = table->entries;
-       /* EtherType used to identify outer tagged (S-tag) VLAN traffic */
-       general_params->tpid = tpid;
        /* EtherType used to identify inner tagged (C-tag) VLAN traffic */
+       general_params->tpid = tpid;
+       /* EtherType used to identify outer tagged (S-tag) VLAN traffic */
        general_params->tpid2 = tpid2;
        /* When VLAN filtering is on, we need to at least be able to
         * decode management traffic through the "backup plan".
 
        return size;
 }
 
+/* TPID and TPID2 are intentionally reversed so that semantic
+ * compatibility with E/T is kept.
+ */
 static size_t
 sja1105pqrs_general_params_entry_packing(void *buf, void *entry_ptr,
                                         enum packing_op op)
        sja1105_packing(buf, &entry->mirr_port,   141, 139, size, op);
        sja1105_packing(buf, &entry->vlmarker,    138, 107, size, op);
        sja1105_packing(buf, &entry->vlmask,      106,  75, size, op);
-       sja1105_packing(buf, &entry->tpid,         74,  59, size, op);
+       sja1105_packing(buf, &entry->tpid2,        74,  59, size, op);
        sja1105_packing(buf, &entry->ignore2stf,   58,  58, size, op);
-       sja1105_packing(buf, &entry->tpid2,        57,  42, size, op);
+       sja1105_packing(buf, &entry->tpid,         57,  42, size, op);
        sja1105_packing(buf, &entry->queue_ts,     41,  41, size, op);
        sja1105_packing(buf, &entry->egrmirrvid,   40,  29, size, op);
        sja1105_packing(buf, &entry->egrmirrpcp,   28,  26, size, op);