OSDN Git Service

net: dsa: mv88e6xxx: explicit entry passed to vtu_getnext
authorVivien Didelot <vivien.didelot@gmail.com>
Thu, 1 Aug 2019 18:36:34 +0000 (14:36 -0400)
committerDavid S. Miller <davem@davemloft.net>
Thu, 1 Aug 2019 20:43:08 +0000 (16:43 -0400)
mv88e6xxx_vtu_getnext interprets two members from the input
mv88e6xxx_vtu_entry structure: the (excluded) vid member to start
the iteration from, and the valid argument specifying whether the VID
must be written or not (only required once at the start of a loop).

Explicit the assignation of these two fields right before calling
mv88e6xxx_vtu_getnext, as it is done in the mv88e6xxx_vtu_get wrapper.

Signed-off-by: Vivien Didelot <vivien.didelot@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/dsa/mv88e6xxx/chip.c

index 1b2cb46..c825fa3 100644 (file)
@@ -1361,9 +1361,7 @@ static int mv88e6xxx_vtu_loadpurge(struct mv88e6xxx_chip *chip,
 static int mv88e6xxx_atu_new(struct mv88e6xxx_chip *chip, u16 *fid)
 {
        DECLARE_BITMAP(fid_bitmap, MV88E6XXX_N_FID);
-       struct mv88e6xxx_vtu_entry vlan = {
-               .vid = chip->info->max_vid,
-       };
+       struct mv88e6xxx_vtu_entry vlan;
        int i, err;
 
        bitmap_zero(fid_bitmap, MV88E6XXX_N_FID);
@@ -1378,6 +1376,9 @@ static int mv88e6xxx_atu_new(struct mv88e6xxx_chip *chip, u16 *fid)
        }
 
        /* Set every FID bit used by the VLAN entries */
+       vlan.vid = chip->info->max_vid;
+       vlan.valid = false;
+
        do {
                err = mv88e6xxx_vtu_getnext(chip, &vlan);
                if (err)
@@ -1441,9 +1442,7 @@ static int mv88e6xxx_port_check_hw_vlan(struct dsa_switch *ds, int port,
                                        u16 vid_begin, u16 vid_end)
 {
        struct mv88e6xxx_chip *chip = ds->priv;
-       struct mv88e6xxx_vtu_entry vlan = {
-               .vid = vid_begin - 1,
-       };
+       struct mv88e6xxx_vtu_entry vlan;
        int i, err;
 
        /* DSA and CPU ports have to be members of multiple vlans */
@@ -1453,6 +1452,9 @@ static int mv88e6xxx_port_check_hw_vlan(struct dsa_switch *ds, int port,
        if (!vid_begin)
                return -EOPNOTSUPP;
 
+       vlan.vid = vid_begin - 1;
+       vlan.valid = false;
+
        do {
                err = mv88e6xxx_vtu_getnext(chip, &vlan);
                if (err)
@@ -1789,9 +1791,7 @@ static int mv88e6xxx_port_db_dump_fid(struct mv88e6xxx_chip *chip,
 static int mv88e6xxx_port_db_dump(struct mv88e6xxx_chip *chip, int port,
                                  dsa_fdb_dump_cb_t *cb, void *data)
 {
-       struct mv88e6xxx_vtu_entry vlan = {
-               .vid = chip->info->max_vid,
-       };
+       struct mv88e6xxx_vtu_entry vlan;
        u16 fid;
        int err;
 
@@ -1805,6 +1805,9 @@ static int mv88e6xxx_port_db_dump(struct mv88e6xxx_chip *chip, int port,
                return err;
 
        /* Dump VLANs' Filtering Information Databases */
+       vlan.vid = chip->info->max_vid;
+       vlan.valid = false;
+
        do {
                err = mv88e6xxx_vtu_getnext(chip, &vlan);
                if (err)