]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
dsa: move devlink_port_attrs_set() call before register
authorJiri Pirko <jiri@mellanox.com>
Sun, 24 Mar 2019 10:14:32 +0000 (11:14 +0100)
committerDavid S. Miller <davem@davemloft.net>
Sun, 24 Mar 2019 18:55:31 +0000 (14:55 -0400)
Since attrs are static during the existence of devlink port, set the
before registration of the port.

Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/dsa/dsa2.c

index 4558de672b4f2e55c14ea9c59852667d2aa91513..fe0a6197db9c5f8ab2e5ff4b2d2271dc212b6d76 100644 (file)
@@ -258,14 +258,36 @@ static void dsa_tree_teardown_default_cpu(struct dsa_switch_tree *dst)
 
 static int dsa_port_setup(struct dsa_port *dp)
 {
+       enum devlink_port_flavour flavour;
        struct dsa_switch *ds = dp->ds;
-       int err = 0;
+       int err;
+
+       if (dp->type == DSA_PORT_TYPE_UNUSED)
+               return 0;
 
        memset(&dp->devlink_port, 0, sizeof(dp->devlink_port));
 
-       if (dp->type != DSA_PORT_TYPE_UNUSED)
-               err = devlink_port_register(ds->devlink, &dp->devlink_port,
-                                           dp->index);
+       switch (dp->type) {
+       case DSA_PORT_TYPE_CPU:
+               flavour = DEVLINK_PORT_FLAVOUR_CPU;
+               break;
+       case DSA_PORT_TYPE_DSA:
+               flavour = DEVLINK_PORT_FLAVOUR_DSA;
+               break;
+       case DSA_PORT_TYPE_USER: /* fall-through */
+       default:
+               flavour = DEVLINK_PORT_FLAVOUR_PHYSICAL;
+               break;
+       }
+
+       /* dp->index is used now as port_number. However
+        * CPU and DSA ports should have separate numbering
+        * independent from front panel port numbers.
+        */
+       devlink_port_attrs_set(&dp->devlink_port, flavour,
+                              dp->index, false, 0);
+       err = devlink_port_register(ds->devlink, &dp->devlink_port,
+                                   dp->index);
        if (err)
                return err;
 
@@ -273,13 +295,6 @@ static int dsa_port_setup(struct dsa_port *dp)
        case DSA_PORT_TYPE_UNUSED:
                break;
        case DSA_PORT_TYPE_CPU:
-               /* dp->index is used now as port_number. However
-                * CPU ports should have separate numbering
-                * independent from front panel port numbers.
-                */
-               devlink_port_attrs_set(&dp->devlink_port,
-                                      DEVLINK_PORT_FLAVOUR_CPU,
-                                      dp->index, false, 0);
                err = dsa_port_link_register_of(dp);
                if (err) {
                        dev_err(ds->dev, "failed to setup link for port %d.%d\n",
@@ -288,13 +303,6 @@ static int dsa_port_setup(struct dsa_port *dp)
                }
                break;
        case DSA_PORT_TYPE_DSA:
-               /* dp->index is used now as port_number. However
-                * DSA ports should have separate numbering
-                * independent from front panel port numbers.
-                */
-               devlink_port_attrs_set(&dp->devlink_port,
-                                      DEVLINK_PORT_FLAVOUR_DSA,
-                                      dp->index, false, 0);
                err = dsa_port_link_register_of(dp);
                if (err) {
                        dev_err(ds->dev, "failed to setup link for port %d.%d\n",
@@ -303,9 +311,6 @@ static int dsa_port_setup(struct dsa_port *dp)
                }
                break;
        case DSA_PORT_TYPE_USER:
-               devlink_port_attrs_set(&dp->devlink_port,
-                                      DEVLINK_PORT_FLAVOUR_PHYSICAL,
-                                      dp->index, false, 0);
                err = dsa_slave_create(dp);
                if (err)
                        dev_err(ds->dev, "failed to create slave for port %d.%d\n",