net: dpaa2-switch: refactor prechangeupper sanity checks
authorVladimir Oltean <vladimir.oltean@nxp.com>
Wed, 21 Jul 2021 16:23:58 +0000 (19:23 +0300)
committerDavid S. Miller <davem@davemloft.net>
Thu, 22 Jul 2021 07:26:23 +0000 (00:26 -0700)
Make more room for some extra code in the NETDEV_PRECHANGEUPPER handler
by moving what already exists into a dedicated function.

Cc: Ioana Ciornei <ioana.ciornei@nxp.com>
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Acked-by: Ioana Ciornei <ioana.ciornei@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch.c

index 62d322e..23798fe 100644 (file)
@@ -2030,6 +2030,28 @@ static int dpaa2_switch_prevent_bridging_with_8021q_upper(struct net_device *net
        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)
 {
@@ -2050,18 +2072,11 @@ static int dpaa2_switch_port_netdevice_event(struct notifier_block *nb,
                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: