kernel: use struct group to wipe psb6970 volatile priv data
[openwrt/staging/jow.git] / target / linux / generic / files / drivers / net / phy / psb6970.c
index af64704b16429e974dee6cb7fe2aa5f0097d783b..2587b9991384745ff5cad54524dc23e6a9e3aa43 100644 (file)
@@ -60,11 +60,13 @@ struct psb6970_priv {
        struct mutex reg_mutex;
 
        /* all fields below are cleared on reset */
-       bool vlan;
-       u16 vlan_id[PSB6970_MAX_VLANS];
-       u8 vlan_table[PSB6970_MAX_VLANS];
-       u8 vlan_tagged;
-       u16 pvid[PSB6970_NUM_PORTS];
+       struct_group(psb6970_priv_volatile,
+               bool vlan;
+               u16 vlan_id[PSB6970_MAX_VLANS];
+               u8 vlan_table[PSB6970_MAX_VLANS];
+               u8 vlan_tagged;
+               u16 pvid[PSB6970_NUM_PORTS];
+       );
 };
 
 #define to_psb6970(_dev) container_of(_dev, struct psb6970_priv, dev)
@@ -272,8 +274,8 @@ static int psb6970_reset_switch(struct switch_dev *dev)
 
        mutex_lock(&priv->reg_mutex);
 
-       memset(&priv->vlan, 0, sizeof(struct psb6970_priv) -
-              offsetof(struct psb6970_priv, vlan));
+       memset(&priv->psb6970_priv_volatile, 0,
+               sizeof(priv->psb6970_priv_volatile));
 
        for (i = 0; i < PSB6970_MAX_VLANS; i++)
                priv->vlan_id[i] = i;