return 0;
 }
 
+static int
+dpaa2_switch_prechangeupper_sanity_checks(struct net_device *netdev,
+                                         struct net_device *upper_dev,
+                                         struct netlink_ext_ack *extack)
+{
+       int err;
+
+       if (!br_vlan_enabled(upper_dev)) {
+               NL_SET_ERR_MSG_MOD(extack, "Cannot join a VLAN-unaware bridge");
+               return -EOPNOTSUPP;
+       }
+
+       err = dpaa2_switch_prevent_bridging_with_8021q_upper(netdev);
+       if (err) {
+               NL_SET_ERR_MSG_MOD(extack,
+                                  "Cannot join a bridge while VLAN uppers are present");
+               return 0;
+       }
+
+       return 0;
+}
+
 static int dpaa2_switch_port_netdevice_event(struct notifier_block *nb,
                                             unsigned long event, void *ptr)
 {
                if (!netif_is_bridge_master(upper_dev))
                        break;
 
-               if (!br_vlan_enabled(upper_dev)) {
-                       NL_SET_ERR_MSG_MOD(extack, "Cannot join a VLAN-unaware bridge");
-                       err = -EOPNOTSUPP;
-                       goto out;
-               }
-
-               err = dpaa2_switch_prevent_bridging_with_8021q_upper(netdev);
-               if (err) {
-                       NL_SET_ERR_MSG_MOD(extack,
-                                          "Cannot join a bridge while VLAN uppers are present");
+               err = dpaa2_switch_prechangeupper_sanity_checks(netdev,
+                                                               upper_dev,
+                                                               extack);
+               if (err)
                        goto out;
-               }
 
                break;
        case NETDEV_CHANGEUPPER: